<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
     xmlns:content="http://purl.org/rss/1.0/modules/content/"
     xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
     xmlns:atom="http://www.w3.org/2005/Atom"
     xmlns:dc="http://purl.org/dc/elements/1.1/"
     xmlns:wfw="http://wellformedweb.org/CommentAPI/"
     >
  <channel>
    <title>tjeb.nl</title>
    <link>http://tjeb.nl/blog</link>
    <description>This is my site. There are many like it, but this one is mine.</description>
    <pubDate>Fri, 06 Aug 2021 11:32:57 GMT</pubDate>
    <generator>Blogofile</generator>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Don't use the X725 for your Raspberry Pi</title>
      <link>http://tjeb.nl/blog/2020/09/28/don-t-use-the-x725-for-your-raspberry-pi</link>
      <pubDate>Mon, 28 Sep 2020 22:44:51 CEST</pubDate>
      <category><![CDATA[raid]]></category>
      <category><![CDATA[backup]]></category>
      <guid isPermaLink="false">Lb1ZUsDKQumvHvbYOIKVkBulUz0=</guid>
      <description>Don't use the X725 for your Raspberry Pi</description>
      <content:encoded><![CDATA[<p>Leaving the previous post up as a warning for future me's.</p>
<p>Don't follow it. Do not use the X725.</p>
<p>As it turns out, it can (and will) at some point fry the SD card, leaving you with a bricked NAS. From the looks of it, chances of this are highest when it loses main power, which you'd think would be the main point of a battery-backed UPS system.</p>
<p>It is not a question of whether this will happen, but when. For me it was a few months. Luckily, this was only the SD card; the RAID array and the Pi itself were fine.</p>
<p>Anyway, since being able to have remote and timed startups and shutdowns, I have no converted the system to one with an official PoE-Hat, and a PoE switch that can be controlled remotely. It wakes up every night for backup tasks, and then nicely goes to sleep again.</p>
<p>So far, amazingly, without destroying the SD card :)</p>]]></content:encoded>
    </item>
    <item>
      <title>Custom RAID NAS with Raspberry Pi</title>
      <link>http://tjeb.nl/blog/2020/02/28/custom-raid-nas-with-raspberry-pi</link>
      <pubDate>Fri, 28 Feb 2020 22:44:51 CET</pubDate>
      <category><![CDATA[raid]]></category>
      <category><![CDATA[backup]]></category>
      <guid isPermaLink="false">cEkAbu7uFitK7pmkWrKN49Dfo-E=</guid>
      <description>Custom RAID NAS with Raspberry Pi</description>
      <content:encoded><![CDATA[<p>Edit: <strong>WARNING</strong> Do not follow the advice in this post. Do not get the X725.</p>
<p><img src="/img/x725.jpg" alt="Raspberry Pi with X725 board" title="Raspberry Pi with X725 board"/></p>
<p>Recently, my old NAS system died on me, and I was in the market for something else. The only thing I use it for is backups, so I don't really need much in terms of fancy NAS features like seamless streaming and a web-interfaces.</p>
<p>One thing that had been annoying me for several years (on several ready-made NAS boxes) though was the software in general: either it was propietary, or it was Linux-based but modified for the NAS hardware. In both cases the manufacturer stopped updating it, and -if at all possible- updating the firmware and OS was a major hassle.</p>
<p>So I was wondering: why not get a bare RAID enclosure, and make a NAS from a Raspberry Pi?</p>
<p>My system would have the following hard requirements:</p>
<ul>
<li>RAID-1 support, with other RAID types as a bonus</li>
<li>IPv6 support</li>
<li>Accessible through ssh</li>
<li>Ability to automatically go to sleep or shut down when not in use (both because of power saving and because RAID enclosures are noisy)</li>
</ul>
<p>Points 1, 2 andd 3 are easy: Raspbian (and many other operating systems) have decent software RAID support, and of course fully support IPv6.</p>
<p>Point 4 however, was an issue: Not only does the Raspberry Pi not have a real way of shutting down, it also doesn't support wake-on-lan, which would be the easiest way to power it up again.</p>
<p>But there's nothing some additional hardware can't fix.</p>
<p>One way to overcome that would be to power it through a smart power hub, and simply enable/disable power as needed. But there would be a drawback: simply cutting power is dangerous when doing file-system intensive things, such as backups. I wouldn't want to shut it down halfway through a write operation.</p>
<p>But I found something else: The <a href="http://www.suptronics.com/miniPCkits/x725.html">Suptronics X725 expansion board</a>. This provides 3 things:</p>
<ul>
<li>Option to fully shut down the raspberry pi</li>
<li>Wake-on-Lan</li>
<li>UPS functionality with a few batteries</li>
</ul>
<p>That third one is a bonus that makes this a better solution to the smart power outlet option: not only can we have controlled shutdowns, we can also have them when the power is out! Although, the most useful thing for this would be to prevent data write errors in case of a power loss, which in the current setup wouldn't actually work, since the RAID enclosure has its own power supply (without UPS, atm).</p>
<p>The documentation on the X725 is a bit on the sparse side though; it has several bold-lettered but not-so-clear warnings about how to blow up your hardware. So let's start with that.</p>
<p>With the board placed on the Pi, there's three ways to power the board and the Pi. USE ONLY ONE OF THEM.</p>
<ul>
<li>The USB-3 socket on the Pi itself</li>
<li>The micro-USB socket on the board</li>
<li>The power plug socket on the X725</li>
</ul>
<p>On thing that makes this a bit scary it that there are 2 micro-usb ports on the board. The usb power socket is the one on the long side (it has the helpful text "2A CHG" next to it.</p>
<p>So what's the other micro-usb for? It's for the second network interface. Since the Pi can't do wake-on-lan, this board adds a network interface that does support it, but it works through usb.</p>
<p>With that, I have a system that is low-powered, well-supported by software, and able to wake up in the middle of the night to perform backups, then go to sleep again.</p>
<p><img src="/img/x725_raid.jpg" alt="Raspberry Pi with X725 board on top of RAID enclosure" title="Raspberry Pi with X725 board on top of RAID enclosure"/></p>]]></content:encoded>
    </item>
    <item>
      <title>LED clock</title>
      <link>http://tjeb.nl/blog/2013/11/28/led-clock</link>
      <pubDate>Thu, 28 Nov 2013 22:44:51 CET</pubDate>
      <category><![CDATA[making]]></category>
      <category><![CDATA[3d printing]]></category>
      <category><![CDATA[projects]]></category>
      <guid isPermaLink="false">ZMGWTm5sNdEH3wWnTewlkocNbok=</guid>
      <description>LED clock</description>
      <content:encoded><![CDATA[<p>Another project nearing comple^h^h^h good enough to hang on a wall:</p>
<p>A LED-based clock, with light as hands.</p>
<p><img src="/img/ledclock/colors_small.jpg" alt="The Clock" title="The Clock"/></p>
<p>It all started out when I found the awesome <a href="http://www.adafruit.com/index.php?main_page=adasearch&amp;q=neopixel">NeoPixel</a> line of products
from Adafruit, one of the more interesting ones being the <a href="http://www.adafruit.com/products/1138">60-LED strip</a>.</p>
<p>I picked one up (because you know, because), and the best thing to use
it for for now was a clock. I had an <a href="http://www.atmel.com/devices/ATTINY84.aspx">ATTiny AVR</a> lying around, and wanted
to make something to replace my pretty boring standard clock.</p>
<p>Luckily I had a 3d printer to print a clock case at exactly the right
size, so I 'only' had to make something to set the time, show it, and
if possible, adjust colors etc.</p>
<p>Of course it wasn't as simple as that. For starters, the led strip
didn't work out of the box. When supplied with some power, it would
light up randomly for a fraction of a second, then go dark again. My 
first guess was that it didn't get enough power (a full 60 LED with 
controllers for each led can take a bit of power that may not be 
supplied fully by a small chip such as an ATTiny), but as it turns 
out, it simply came with wires soldered on the wrong side of the 
strip.</p>
<p>Luckily it's not that hard to resolder with the right connections, 
so once I had discovered that, lighting up the right LEDs was quite 
simple. Except for one, the last one on the strip. But 59 out of 60 
is good enough for now.</p>
<p>It turned out to be more of a challenge to actually show the time 
with only one AVR that doesn't have a very accurate internal 
oscillator, and worse, one that can easily run out of program stack 
space and start behaving eratically.</p>
<p><img src="/img/ledclock/testing_button_small.jpg" alt="Testing the ATTiny with a rotary encoder button" title="Testing the ATTiny with a rotary encoding button"/>
<img src="/img/ledclock/.jpg" alt="" title=""/></p>
<p>After some measurements, tweaking, and rewriting, it still doesn't 
serve as a clock very well; it runs fine for about 24 hours, but 
then it goes haywire and needs a reset.</p>
<p>But it does look mighty fine. It can show the time in different 
colors, and the second hand is completely optional.</p>
<p><img src="/img/ledclock/purple_small.jpg" alt="Purple hands" title="Purple hands"/><img src="/img/ledclock/yellow_small.jpg" alt="Yellow hands" title="Yellow hands"/></p>
<p>Plans for v2 are in the works. Starting with an RTC, and I'm 
thinking about adding a light sensor to automatically adjust its 
brightness.</p>
<p>But first I need to figure out where to hide the electronics then. I guess I really do need to figure out how to make custom form PCBs at some point.</p>]]></content:encoded>
    </item>
    <item>
      <title>Philips Hue rf remote control</title>
      <link>http://tjeb.nl/blog/2013/10/01/philips-hue-rf-remote-control</link>
      <pubDate>Tue, 01 Oct 2013 23:47:36 CEST</pubDate>
      <category><![CDATA[making]]></category>
      <category><![CDATA[3d printing]]></category>
      <category><![CDATA[projects]]></category>
      <guid isPermaLink="false">ipiYH2Sw2zbQ2m4FoKlvCSgAlVk=</guid>
      <description>Philips Hue rf remote control</description>
      <content:encoded><![CDATA[<p>The <a href="https://www.meethue.com">Philips Hue</a> lights are awesome, but it
can get a bit tiresome to start that phone app, probably wait for the
wifi to connect, and then select your scenario.</p>
<p>TBH, the app serves pretty wel to configure scenarios, but I am not 
a really big fan of its interface.</p>
<p>I want buttons! Actual, physical buttons.</p>
<p>I also wanted to do <em>something</em> with RF anyway to see how it works.</p>
<p>Combine those to, and you get a remote for your Hues!</p>
<p>The receiving end it currently still just a breadboard and an 
Arduino, plugged into a computer running a python control script, 
but version 1 of the remote is finished.</p>
<p><img src="/img/hue_remote/remote_and_receiver_small.jpg" alt="Remote and Receiver" title="Remote and Receiver"/></p>
<p>As you can maybe see, it has 5 buttons, for 5 scenarios (one being 
'off'), and one slider to set the brightness.</p>
<p>Here's the 'normal' scenario, and dimmed:</p>
<p><img src="/img/hue_remote/normal_small.jpg" alt="Normal light" title="Normal light"/><img src="/img/hue_remote/dimmed_small.jpg" alt="Dimmed light" title="Dimmed light"/></p>
<p>And for those emergencies, all lights set to red:</p>
<p><img src="/img/hue_remote/red_small.jpg" alt="Red light" title="Red light"/></p>
<p>I may post a larger build report later, with more details (and 
perhaps some code), but for now I'll leave you with some keywords; 
ATTiny84, Cosa libraries, lots of wires (I really need to figure out 
how to make custom pcbs), and the case was printed on an Ultimaker.</p>
<p>On to v2 ;)</p>]]></content:encoded>
    </item>
    <item>
      <title>Dodecahedron speaker</title>
      <link>http://tjeb.nl/blog/2013/07/05/dodecahedron-speaker</link>
      <pubDate>Fri, 05 Jul 2013 21:32:15 CEST</pubDate>
      <category><![CDATA[making]]></category>
      <category><![CDATA[3d printing]]></category>
      <category><![CDATA[projects]]></category>
      <guid isPermaLink="false">47vxneU14_QuqPOCYkuHUxemLnY=</guid>
      <description>Dodecahedron speaker</description>
      <content:encoded><![CDATA[<p>This project has been finished (well, finished-ish, as always) for 
quite a while now, but I just realized I never got around to writing 
it up. In fact, I already extended it, but that's something for a 
different post.</p>
<p>Way, way before I even had a printer I saw 
<a href="http://www.instructables.com/id/A-Dodecahedron-Speaker-for-Desktop-Printers/">this</a>
Instructable. And immediately fell in love with it. It had never 
left my mind as a want-to-build-at-some point thing, and some time 
ago I finally got around to doing it.</p>
<p>But of course mine is completely different ;)</p>
<p>For starters, I did not want 'just' a speaker, I wanted one that had 
an integrated amplifier, much like those computer speakers you see 
everywhere. I wanted it to have a standard jackplug so it could play 
from most devices, and I wanted it to have physical power and volume 
buttons.</p>
<p>After doing some (well, hours of) online browsing for parts, I 
settled on a parts list, with which I shall not bore you, and got to 
designing the shell parts. As my parts would have different 
dimensions and properties than the ones used in the Instructable, I 
had to design everything myself. Which of course is 90% of the fun. 
Even with the countless failed attempts.</p>
<p><img src="/img/speaker/speaker_design1.png" alt="One facet" title="One facet"/><img src="/img/speaker/speaker_design2.png" alt="The entire speaker" title="The entire speaker"/><img src="/img/speaker/speaker_design3.png" alt="Volume button" title="Volume button"/></p>
<p>(Okay I lie, only some initial designs were made at this point, 
somewhere along the line I changed them completely but I don't have 
screenshots of the earlier attempts. Also the button came after 
everything was done and built. But hey, what's a little temporal 
randomization among friends.)</p>
<p>The parts arrived and it was time to do some serious soldering, first the speaker parts.</p>
<p><img src="/img/speaker/build1.jpg" alt="Parts and mess" title="Parts and mess"/></p>
<p>And once that was done, I could test the amplifier and all components.</p>
<p><img src="/img/speaker/build2.jpg" alt="Test setup" title="test setup"/></p>
<p>(this actually has music coming out of it but that's a bit hard to capture in an image)</p>
<p>Satisfied that it was working, I could assemble the main dodecahedron part:</p>
<p><img src="/img/speaker/build3.jpg" alt="Dodecaparts" title="Dodecaparts"/></p>
<p>And then it was time to make the big print, solder everything else together and shout and curse it all into one big shiny package:</p>
<p><img src="/img/speaker/finished1.jpg" alt="dodecaspeakerfinished" title="dodecaspeakerfinished"/></p>
<p>It is awesome, if I say so myself, even though I did make a number of mistakes:</p>
<ul>
<li>I 'forgot' to ground it (so depending on what is connected, it can have background static)</li>
<li>I only included simple speaker parts and forgot to add ones that are suitable for low sound waves, so it's not really suitable for loud music with a lot of bass (but yes, it can be VERY loud).</li>
<li>I did not include a shiny "i'm on" led.</li>
<li>The dial has no numbers, so it does not go to 11.</li>
</ul>
<p>But hey damnit, I have built my own dodecaspeaker!</p>]]></content:encoded>
    </item>
    <item>
      <title>Das BlinkenSphere</title>
      <link>http://tjeb.nl/blog/2013/03/30/das-blinkensphere</link>
      <pubDate>Sat, 30 Mar 2013 17:08:29 CET</pubDate>
      <category><![CDATA[making]]></category>
      <category><![CDATA[3d printing]]></category>
      <category><![CDATA[projects]]></category>
      <category><![CDATA[arduino]]></category>
      <guid isPermaLink="false">-qFg1BWM4baMAkqOlq9rmLBQLXY=</guid>
      <description>Das BlinkenSphere</description>
      <content:encoded><![CDATA[<p><em>zo relaxen und watschen das blinkensphere</em></p>
<p>My latest weekend project was to find a use for an Arduino that (due to
some recent electromechanical fail on my part) could only be powered over
USB.</p>
<p>After a few false starts, and with a lot of ideas left to implement, the first prototype is ready:</p>
<p><strong><em>Das BlinkenSphere</em></strong></p>
<p><img src="/img/blinkensphere/blue_small.jpg" alt="Das BlinkenSphere" title="Das BlinkenSphere"/></p>
<p>It's a little sphere-like object that now sits quietly on my desk and
emits a soothing color-of-choice.</p>
<p>By default, it's blue, because, you know, everything must be blue these days.</p>
<p><img src="/img/blinkensphere/shield_small.jpg" alt="Work in progress - the shield" title="Work in progress - the shield"/></p>
<p>But of course, just having some colored light isn't any fun, or any use, so
it's controlled by my computer; It has a direct client to set it to any
(rgb) color, but the most direct use is the 'bs_run' command; any command
prepended with 'bs_run' will make it orange for the duration of the
command, and either red or green when the command finishes (respectively
when it succeeds or fails).</p>
<p><img src="/img/blinkensphere/orange_small.jpg" alt="Running something" title="Running something"/></p>
<p>So now I can let those long compilations or test runs do their thing, and
no longer have to regularly check if they are done; the light will inform me.</p>
<p><img src="/img/blinkensphere/red_small.jpg" alt="Ohnoes it failed!" title="Ohnoes it failed!"/><img src="/img/blinkensphere/green_small.jpg" alt="Success!" title="Success!"/></p>
<p><em>Cast your light upon us, for the code is dark and full of errors</em></p>
<p>I also built in support for light sequences and transitions, but still need
to write client control code for that (and find any use for it).</p>
<p>Now I need to find something to compile.</p>]]></content:encoded>
    </item>
    <item>
      <title>Custom restrictor plates for arcade joysticks</title>
      <link>http://tjeb.nl/blog/2013/02/19/custom-restrictor-plates-for-arcade-joysticks</link>
      <pubDate>Tue, 19 Feb 2013 23:38:52 CET</pubDate>
      <category><![CDATA[making]]></category>
      <category><![CDATA[3d printing]]></category>
      <category><![CDATA[arcade cabinet]]></category>
      <guid isPermaLink="false">FboiWH0zpRLVcc_lzKzFozdMhi0=</guid>
      <description>Custom restrictor plates for arcade joysticks</description>
      <content:encoded><![CDATA[<p>The joysticks I got for my arcade cabinet
(<a href="http://www.arcadewinkel.nl/joysticks/balltop-arcadefighter-stick-rood">http://www.arcadewinkel.nl/joysticks/balltop-arcadefighter-stick-rood</a>)
were fine, but I wasn't entirely happy with the restrictor plates that came
with it. They worked fine in 4-way mode, but the 8-way mode was simply a
square and that doesn't work nicely in most circumstances.</p>
<p>So I was looking around for replacement plates (preferably ones with octagons or maybe even smarter restriction holes), but couldn't really find any. And then I realized I have an f'in 3d-printer.</p>
<p>So I took out one of the existing plates, measured it, and fired up openscad to create new ones.</p>
<p><img src="/img/restrictor_plate_scad.png" alt="Restrictor plates scad" title="Design of the plate"/><img src="/img/restrictor_plate.jpg" alt="Restrictor plates" title="Restrictor plates. Original on the left. Custom printed one on the right."/></p>
<p>If you want to build it or see more pictures, you can get it at <a href="http://www.thingiverse.com/thing:52225">thingiverse</a></p>
<p>I'm starting to worry, I may run out of things to tweak on my cabinet soonish. Then what will I do with it.</p>]]></content:encoded>
    </item>
    <item>
      <title>Arcade cabinet marquee art</title>
      <link>http://tjeb.nl/blog/2013/02/13/arcade-cabinet-marquee-art</link>
      <pubDate>Wed, 13 Feb 2013 09:58:52 CET</pubDate>
      <category><![CDATA[arcade cabinet]]></category>
      <guid isPermaLink="false">4Fe_REYtQ7Dmg8X7Po7ZPLt15s4=</guid>
      <description>Arcade cabinet marquee art</description>
      <content:encoded><![CDATA[<p>The vinyl for my custom marquee arrived! Thanks to <a href="http://www.drsticker.nl/">drsticker</a> for helping me choose vinyl type, and of course for the printing service :)</p>
<p><img src="/img/marquee.png" alt="marquee" title="Marquee"/></p>
<p>So the final cabinet looks a little something like this:</p>
<p><img src="/img/cabinet_finished.png" alt="Full cabinet" title="Full cabinet"/></p>]]></content:encoded>
    </item>
    <item>
      <title>Building an arcade cabinet</title>
      <link>http://tjeb.nl/blog/2013/02/06/building-an-arcade-cabinet</link>
      <pubDate>Wed, 06 Feb 2013 20:25:24 CET</pubDate>
      <category><![CDATA[making]]></category>
      <category><![CDATA[arcade cabinet]]></category>
      <guid isPermaLink="false">rO1aODGDtODwC7ZYQgKYJ5iIsnA=</guid>
      <description>Building an arcade cabinet</description>
      <content:encoded><![CDATA[<p>Over the past few years, the idea had already surfaced a few times, but I
never actually got myself to start this little project. But a few days into
January, the bug suddenly hit me hard, and I couldn't resist anymore: I
wanted to build my own arcade cabinet.</p>
<p>Every nontrivial endeavour starts out with a little bit of research, and
luckily the idea wasn't exactly original; there are a lot of tips and
howtos, as well as some very strong opinions on How It Must Be Done to be
found online.</p>
<p>Now one of the tips given most often is not to start from scratch, but to
get an existing cabinet an repurpose it to your needs. It is less work, and
much cheaper than going at it yourself.</p>
<p>But hey. Where's the fun in that?</p>
<p>Despite not having any significant woodworking skills (and, now that I'm
done, to be honest, apart from some common sense needed to keep your
fingers attached, you don't really need to be that advanced at it for a
project like this), I wanted to build my own; partly because it is fun (or
at least, that was what I hoped, and I was right), and partly because
strangely enough, I don't really like most cabinet designs. IMO they are
often too big and too flashy, especially if they are intended to be placed
in a home instead of an actual arcade.</p>
<p>So after some basic research (there are lots of good tips on
<a href="http://www.arcadecab.com">ArcadeCab</a>, and a couple of initial designs, I
went out to the local hardware store, got a bit of wood and some tools I
did not have already. And I was off!</p>
<p>I shall not bore you with a step-by-step guide, there are enough of those
on the Internet already, but here are a few pictures:</p>
<p><img src="/img/cab_side_board.jpg" alt="Side board" title="Initial cuts for one of the side boards"/> <img src="/img/cab_control_panel_part.jpg" alt="Control Panel" title="Control Panel with about half of the buttons drilled out"/></p>
<p>The whole process took a couple of saturdays (sorry for the noise,
neighbours!), and a lot of obsessing over How To Do It, but I'm quite happy
with the results:</p>
<p><img src="/img/cab_almost_done.jpg" alt="Almost done" title="Getting there! Just a few finishing touches"/> <img src="/img/cab_marquee_v1.jpg" alt="Marquee" title="And the initial version is done, with a simplified marquee while the printshop is working on the final version"/></p>
<p>Some observations and lessons learned:</p>
<ul>
<li>Building Stuff Is Fun.</li>
<li>I'd do lots of things completely different if I were to do it again.</li>
<li>Routers (of the woodworking, not the packet switching kind) are awesome!</li>
<li>Covering a room with plastic to paint big pieces of wood feels pretty awkward if you have just watched two seasons of Dexter.</li>
<li>The people at <a href="http://www.arcadewinkel.nl">arcadewinkel.nl</a> are great.</li>
</ul>
<p>Again, I am pretty happy with how it turned out!</p>
<p>Now I only need to find a place to put it.</p>]]></content:encoded>
    </item>
    <item>
      <title>Curriculum Vitae of Jelte Jansen</title>
      <link>http://tjeb.nl/CV/Extended</link>
      <pubDate>Tue, 05 Feb 2013 00:00:00 CET</pubDate>
      <category><![CDATA[uncategorized]]></category>
      <guid isPermaLink="false">http://tjeb.nl/CV/Extended</guid>
      <description>Curriculum Vitae of Jelte Jansen</description>
      <content:encoded><![CDATA[<h2 id="cv-of-jelte-jansen">CV of Jelte Jansen</h2>
<h3 id="personal-information">Personal Information</h3>
<ul>
<li><strong>Name</strong>: Jelte Jansen</li>
<li><strong>Date of Birth</strong>: February 7th, 1979</li>
<li><strong>Sex</strong>: Male</li>
<li><strong>Nationality</strong>: Dutch</li>
</ul>
<h3 id="profiles">Profiles</h3>
<ul>
<li><strong>LinkedIn</strong>: <a href="https://www.linkedin.com/in/jelte-jansen-6727351">Jelte Jansen</a></li>
<li><strong>Twitter</strong>: <a href="https://twitter.com/twitjeb">@twitjeb</a></li>
<li><strong>GitHub</strong>: <a href="https://github.com/tjeb">tjeb</a></li>
<li><strong>Website</strong>: <a href="https://tjeb.nl">tjeb.nl</a></li>
</ul>
<h3 id="experience">Experience</h3>
<ul>
<li>
<p>Programming languages</p>
<ul>
<li>C, C++, Go, Python, Perl, Ruby, Java, Javascript, Lua</li>
</ul>
</li>
<li>
<p>Hands-on experience in protocol implementation</p>
<ul>
<li>DNS, DNSSEC, TCP/IP, HTTP(s), AS2, AS4, PEPPOL, SMTP, S/MIME, PKCS#11</li>
</ul>
</li>
<li>
<p>Operating Systems developed for</p>
<ul>
<li>Linux, BSD, Solaris, Windows, OS X</li>
</ul>
</li>
</ul>
<h3 id="employment-history">Employment History</h3>
<ul>
<li>
<p>2018-present: <strong><a href="https://ionite.nl">Ionite</a></strong></p>
<ul>
<li>Description: Consultancy, technology development, and services regarding electronic invoicing</li>
<li>Function: Freelance</li>
<li>Tasks: Consultancy, protocol development, services development</li>
<li>Specifics:<ul>
<li>Advice and technical support for <a href="https://simplerinvoicing.org">Simplerinvoicing</a>, regarding AS2, PEPPOL, EN-16931, NLCIUS, SMP, SML</li>
<li>Advice and technical support for the <a href="https://peppolautoriteit.nl">NPa</a>, regarding AS4, PEPPOL, EN-16931, NLCIUS, SMP, SML</li>
<li>Developed the NLCIUS <a href="https://github.com/peppolautoriteit-nl/validation">Schematron validation files</a></li>
<li>Developed and maintains the <a href="https://peppol-test.nl">NPa Peppol Test Tool</a></li>
<li>Developed and maintains the <a href="https://peppol-senders.nl">NPa Senders Directory</a></li>
</ul>
</li>
</ul>
</li>
<li>
<p>2013-present: <strong><a href="http://www.sidn.nl">Stichting Internet Domeinregistratie Nederland</a></strong></p>
<ul>
<li>Description: Foundation that administrates the .nl country-code top-level domain</li>
<li>Function: Research Engineer</li>
<li>Tasks: Technical Advisor, Internet protocol research and development</li>
<li>Specifics:<ul>
<li>Technical project lead of <a href="https://spin4home.nl">SPIN</a></li>
<li>Technical project lead of <a href="https://valibox.sidnlabs.nl">SIDN Valibox</a></li>
<li>Involved in protocol design and standardization (IETF, RIPE)</li>
<li>Technical Lead SimplerInvoicing (SI-UBL and PEPPOL transport) (2017-2018)</li>
<li>Prototype Development for new protocols and services, this ranges from brand new services, such as the Domain name Surveillance system (<a href="https://www.sidn.nl/a/internet-security/dbs?language_id=2">www.sidn.nl/a/internet-security</a>), to extensions of the PEPPOL Transport network (<a href="http://www.peppol.eu/about_peppol/openpeppol-communities">www.peppol.eu</a>)</li>
<li>Member of the Privacy Board at SIDN, as a technical expert</li>
<li>Editor for Privacy &amp; Informatie (<a href="http://www.uitgeverijparis.nl/tijdschriften/tijdschrift/4/Privacy-Informatie-P-I">www.uitgeverijparis.nl</a>) (2016-2018)</li>
<li>Program Committee Member for RIPE Meetings (<a href="https://meetings.ripe.net">meetings.ripe.net</a>) (2015-2017, 2018-2021)</li>
<li>Member of the Board of Advisors for SIDN Fund (<a href="https://www.sidnfonds.nl">https://www.sidnfonds.nl/excerpt/</a>)</li>
</ul>
</li>
</ul>
</li>
<li>
<p>2009-2013: <strong>Internet Systems Consortium</strong> <a href="http://www.isc.org">www.isc.org</a></p>
<ul>
<li>Description: Non-profit public benefit organization that produces and distributes quality Open Source software, and provides professional services based on that software.</li>
<li>Function: Software Engineer</li>
<li>Tasks: Software design, Software development, Protocol engineering, Scrum Master, member of Best Practices board</li>
<li>Specifics:<ul>
<li>Design and development of the <a href="BIND 10">http://www.isc.org/bind10</a> software.</li>
<li>Involved in standards work at the Internet Engineering Task Force <a href="http://www.ietf.org">http://www.ietf.org</a></li>
<li>Scrum master. Since ISC is a very distributed company, with small teams consisting of people working all over the world, this involved applying the Scrum methodology as befits our team, which posed a unique set of challenges.</li>
<li>Represented my engineering team at a best practices board, where common practices from different teams were combined and formed into a set of company-wide best practices for software engineering.</li>
</ul>
</li>
</ul>
</li>
<li>
<p>2004-2009: <strong>NLnet Labs</strong> <a href="http://www.NLnetLabs.nl">NLnetLabs.nl</a></p>
<ul>
<li>Description: Foundation to develop, implement, evaluate, and promote new protocols and applications for the Internet.</li>
<li>Function: Developer</li>
<li>Tasks: Research, development, protocol engineering, application testing, systems maintenance</li>
<li>Specifics:<ul>
<li>One of the two original developers of the <a href="http://www.NLnetLabs.nl/ldns">ldns</a> DNS library, a C library
to simplify DNS programming. It supports RFCs like the DNSSEC documents
(RFC4033-4035). Apart from being a general library, this contains several
specific tools, amongst which:<ul>
<li>Simple Resolver and debugging tool (drill)</li>
<li>DNSSEC signer (ldns-signzone)</li>
<li>DNSSEC validator (drill)</li>
<li>DNS traffic analyzer (ldns-dpa)</li>
<li>DNSSEC zone walker (ldns-walk)</li>
</ul>
</li>
<li>With ldns, created an example and interoperability testing implementation for the DNSSEC extension NSEC3 (<a href="http://www.rfc-editor.org/rfc/rfc5155.txt">http://www.rfc-editor.org/rfc/rfc5155.txt</a>)</li>
<li>Involved in the creation and validation of several RFCs, most notably RFC4033-4035, RFC4648 and RFC5155.</li>
<li>Developer and maintainer of a second iteration of NLnet Labs' and RIPE NCC's DISTEL Testlab, a test setup for performance and regression testing of DNS authoritative servers. Created a way to do basic classifications of differences between server implementations. Reimplemented the control and configuration tools of the testlab in Python.</li>
<li>Provided assistance with the design and code reviews of NSD 3, an authoritative name server.</li>
<li>Provided assistance with the design and code reviews of Unbound, a validating recursive name server</li>
<li>Involved in the first iteration of the OpenDNSSEC software suite. Mainly responsible for the initial signing engine, and transparent abstraction from HSM devices.</li>
</ul>
</li>
</ul>
</li>
<li>
<p>2000-2004: <strong>First8 B.V.</strong> <a href="http://www.first8.nl">www.first8.nl</a> (part-time)</p>
<ul>
<li>Description: ICT Company specialized in creating inter- and intra-net applications</li>
<li>Function: Software Engineer</li>
<li>Tasks: Design and development of Java-based Internet applications</li>
</ul>
</li>
<li>
<p>1998-2000: <strong>InterNLnet B.V.</strong> <a href="http://www.internlnet.nl">www.internlnet.nl</a> (part-time)</p>
<ul>
<li>Description: Internet Provider</li>
<li>Function: Helpdesk for an Internet provider.</li>
<li>Tasks: Provide technical help to customers with their network and Internet connections</li>
</ul>
</li>
</ul>
<h2 id="other-functions">Other Functions</h2>
<ul>
<li>2019-present: <strong><a href="https://www.ripe.net/participate/meetings/ripe-meetings/pc">RIPE Programme Committee</a></strong><ul>
<li>Description: Planning and presentation selection for <a href="https://ripe.net">RIPE meetings</a></li>
<li>Function: Member</li>
</ul>
</li>
<li>2017-present: __<a href="https://www.sidnfonds.nl/over-het-fonds">SIDN Fonds Advisory Board</a><ul>
<li>Description: Review project proposals and funding requests, general advice for SIDN Fonds</li>
<li>Function: Member</li>
</ul>
</li>
<li>2016-2018: <strong>Editor for Privacy &amp; Informatie (<a href="http://www.uitgeverijparis.nl/tijdschriften/tijdschrift/4/Privacy-Informatie-P-I">www.uitgeverijparis.nl</a>)</strong><ul>
<li>Description: Review submitted articles on Privacy in the information sector, write news and opinion articles</li>
<li>Function: Editor</li>
</ul>
</li>
</ul>
<h3 id="publications">Publications</h3>
<ul>
<li><a href="https://www.sidnlabs.nl/downloads/7FokYsWdEqs3rC3I9d0xOb/89b5f986185bb15d4e57bd22824c882f/Protecting_Home_Networks_From_Insecure_IoT_Devices.pdf">Protecting Home Networks From Insecure IoT Devices</a></li>
<li><a href="https://www.sidnlabs.nl/downloads/4IC8UhUP5VTuwlLc952S7Z/e23f6091d572078ba569b32d70978e3a/Whois_data_verstrekken-P_I_2019-2.pdf">Whois-data; domeinnamen, persoonsgegevens en de openbaarheid daarvan</a></li>
<li><a href="https://www.sidnlabs.nl/downloads/fsS3ZYrpTZKOHJL_EJxRGw/8ce8ad4d7a914b7e4ca005ad36102c91/resilience-dns_comnet.pdf">Resilience of the Domain Name System: a case study of the .nl domain</a></li>
<li><a href="https://www.sidnlabs.nl/downloads/jK-ApC10TLqGf6iKbNZNYQ/8bb09c6fcc25c3b6f8fe9b8517bce5b8/SIDN-TR-2017-002.pdf">SPIN: A user-centric Security Extension for In-home Networks</a></li>
<li><a href="https://www.sidnlabs.nl/downloads/tYuNKs1ET6qH2aM469muHg/88caeff502fa973c8e726b4d37c1f109/Voorpublicatie_PI_2016.pdf">Ervaringen met privacybeheer voor DNS-‘big data’-toepassingen</a></li>
<li><a href="https://www.sidnlabs.nl/downloads/mYloNOiYS2Sr715wYzzovA/ae970c59ce1675ac0ff705444810cf6d/SIDN-TR-2016-001-EN.pdf">Experiences with privacy management for DNS 'big data' applications (Translation of original article)</a></li>
<li><a href="https://www.sidnlabs.nl/downloads/yBW6hBoaSZe4m6GJc_0b7w/2211058ab6330c7f3788141ea19d3db7/SIDN_Labs_Privacyraamwerk_Position_Paper_V1.4_ENG.pdf">A privacy framework for ‘ DNS big data ’ applications (translation of original paper)</a></li>
<li><a href="https://www.sidnlabs.nl/downloads/lK0STRqrThap1R78KMAs9A/f6d08dd1ba1b2610f101b25e7e244d89/PEI_2014_6_Hesselman.pdf">Een privacyraamwerk voor ‘DNS big data’-toepassingen</a></li>
<li><a href="http://tools.ietf.org/html/rfc5702">RFC 5702</a></li>
<li><a href="http://www.internetdagarna.se/arkiv/2008/www.internetdagarna.se/images/stories/doc/13_DNSSEC_Key_maintenance.pdf">DNSSEC Key maintenance</a></li>
<li><a href="http://nlnetlabs.nl/downloads/publications/hsm/index.html">An Introduction to the use of HSM</a></li>
<li><a href="http://nlnetlabs.nl/downloads/publications/dnssec/dnssec-effects.pdf">Measuring the effects of DNSSEC deployment on query load</a></li>
</ul>
<h3 id="education">Education</h3>
<ul>
<li>High school: Gymnasium Beekvliet</li>
<li>University: University of Nijmegen (now known as Radboud University)<ul>
<li>Master's degree in Computing Science</li>
<li>Graduated on Security and Development</li>
<li>Aia Master award for master thesis <a href="../../Publications/slicing_midlets.pdf">Slicing Midlets</a></li>
</ul>
</li>
</ul>
<h3 id="other">Other</h3>
<ul>
<li>Several personal projects can be found on <a href="http://www.tjeb.nl/Projects">http://tjeb.nl/Projects</a> and <a href="http://www.tjeb.nl/blog">http://www.tjeb.nl/blog</a><ul>
<li>One notable personal project is <a href="http://tjeb.nl/Projects/Mailbox_Alert">Mailbox Alert</a> (<a href="https://addons.mozilla.org/en-US/thunderbird/addon/mailbox-alert/">AMO link</a>), an addon for Thunderbird with over 16.000 daily users.</li>
</ul>
</li>
<li><strong>1999 - 2001</strong>: Chair of Thalia, the student association for Computing Science at the University of Nijmegen</li>
<li><strong>2000 - 2001</strong>: Treasurer of 'Stichting Beet', a student association encompassing the technology studies at the University of Nijmegen</li>
<li><strong>2001 - 2002</strong>: Chair of 'Stichting Beet'</li>
</ul>]]></content:encoded>
    </item>
  </channel>
</rss>
