Home

Freelance full-stack software engineer

Hire Me!

I’ve been contributing to projects either as the solo coder or a technical lead on a small team. I bring value to my clients by helping them chose and implement software that serves their business.

Past projects include:

Across most projects we used:

Also a powerlifter (-75kg. 145kg squat, 100kg bench-press, 180kg deadlift).


,,,~,=Z,Z:::7=ZI7:~+~~~::,:::::::~:::::,,,,:::~+++II7777777777777777777777777777
?7:O,,:+??::=~OIZZZ7::=I+,:::::=+=,+,78+N:::7+=+++II7777777777777777777777777777
7+?O~7$?+7+=77Z?I+++=I?$+O=+++7ZI+ZOZO$$7DDD8===++?III77I77777777777777777777777
$I$?$+:=~Z++7=~=~~?~+?II+$N7O888DDNDODDZODMM8MN$M?IIII7IIII777777777777777777777
+$7$++:7::~+==+$+~=?=I7Z$ZOOO8DDDNN8DDD8O$$8DMDN?7IIIIIIIIII7IIII777777777777777
IZOZ=I==+=7===+:~+I:==$I88DO8D8DMNDMN8?O8ZDZ8ON87NIIIIIIIIIIIIII7IIIII7777777777
?:=+$ZIII~7~~+~,~~:+=7$Z~ND88ZONDNDNNODNO8OIZOIN8MOIIIIIIIIIIIIIIII7IIII77777III
ZOOOO$+++=I~+O??=?=II787DD8DNMNNDD8DDNZ7MOZO$ZMON8MM87IIIIIIIIIIIIIIIIIII7III7II
ZOZOZZZZ$IZ7?=+?~I~=O$DOD8NDDDNDD88D88Z8$$8Z?+7$NDNMN?OIIIIIIIIIIIIIIIIIIIIIIIII
Z7+ZOZ$$OI+7+?I?$I:=+D8DND888888OOZ??I7+ZZZZZ8OD77ODND8IIIIIIIIIIIIIIIIIIIIIIIII
$:~::~ZZOZZZZZZ$Z7$I7$MNND8OOOOI$7$7?I?II+IZ$$DZDZ:$:M$OIIII??IIIIIIIIIIIIIIIIII
~?++:=Z=Z7OZZZOZO?I~?ZMD8ZZ$Z$$?7I77?=~,:~:~:~~?7$O77ON8O?I?+IIIIIIIIIIIIIIIIIII
===+~=:II:$=7?ZZZI,,~~88ZZ$77$7II7II+~,~::::~:~~~~?$ZOONOO=7IIIIIIIIIIIIIIIIIIII
ZI=$:Z+=$7?O+O7=?I7,?IDZZZ777?I?++==:~,,::,:~~~~~~~IZIDD8+777IIIIIIIIIIIIIIIIIII
O8OOZ7Z$IZ:~~$=~I,+=Z$OZZ$7I?=~~~=~~::,,,::::~===:==?$8NMNZI?III?8NNIIIIIIIIIIII
ZOZIOOO8ZO$=:~~~$++7=DZZ$77I+=~~====~::::,,,:~=~=~+IZOD8DO87IIII88DOO$IIIIIIIIII
Z$I+Z?$Z~Z$O:=$I+I7~=8OZ$$$$II+==+++=~==~~,,~:~~~=I7O8DON8OIIII$M87?O?II?IIIIIII
7Z$=:~$I:~$$:.+7=7+I.OZII$Z$7$II???IIZOO$$I??===~=+I8D8DMD$?????IOMN77?$~:~II??I
$Z$7$I:~O?77ZO=~Z=~==O$ODD8DOOZZ$IZZOOOOOO$$II7I==+7$Z88Z8?????????78DOO8I?::???
8D87$$??:==+ZZ+?$ZZZZ$OOOOO8888O=,+O8DNNNMND8$+?=~~?7OO88???????????IOOO88Z:~~~?
ZDD8$$Z$Z8OZ+ZZZO8+:??$Z8DMMDNDI~,:7O8OOZ7???=~:~~~?7OOOZ$+?????????IZO8DD8O,M7+
$DDDDDO8$Z$?~~I7I~~?:~$8ZZO88OO+,::::::~:~::,:,:~~~=IIO?=Z???????????Z88888D=?OI
O$DDDD88$8O$??$$ZO~===OZOOOOZZ7=,::::,::::::,:::~===7,$Z+???+????????O888OOO~8ZI
=?Z$OZ8DD8$8$I7IZ$=~~=$ZZ$$I$?+~:::~~=$+~~~:::~~===+=:~~~:+?++??????+O8OO$=8=OZI
IZ+:ZZZZ$$DO887$Z77ZOZZ7?+?ZZ$7I+++=~=$ZZI=~~~~=+++===:::=++++++++++?$OO$+=OZO??
7,ZZ+?O7ZZZOO$N8I$$$7I$ZII$OZDZOZDDD$~:~IOZI++=++===~~:,:++++++++++++ID8Z+~?$+++
~.$7$OZ$ZZZ$7$IZ?+?+7ZZ$ZZOZO88888OO+~===+OZ?=?====~=Z7IZ++++++++++++ZO8ZDN??+++
:~?O$ZZZ7IZOZ=I??7I??$D$Z8OOOOOOO$=:~:~~+7$+7+$======O$OD++++++++++++ZO88DZ?=+++
$++7Z=ZOZ$ZOOZZ$?7Z77$Z+ZZOZZ888OZZ$ZOOZDDZ?++?===+=$$:7I++++++++++++OD87Z7I~+++
$$$OOOO$O$ZZZO8Z?O?IZO7Z$Z888OOI7???++~~~~??++++++++::~:++++++++++++8ZI:+~:I?+++
?O$$$7ZZZOOOZ$8D8Z??8O=ZIZOOZZZ$77$7??~~~~=+?????+?+,::~++++++++++=+OOO=$D==++++
O,ZI..7$OOOOZO$+ZOO888OZI$ZZZZZO8Z7I+=~=~==++???+II,,::~:O?++==~===?ODOOND?+?+++
ZZ$ZZ$ZOO$:ZZO88888$8888O8$ZZOOO?I?~~::~~==++?I$$?::,:,,888D=++====OODD8I?+7II7$
$Z$IO$??++==~:8DDDD8DO8D888~ZZ777??+=:~=+=?+I$Z$~~::,:IDDNMD8D$??++O8DDD7?+$7?$I
+???+++?++?++=+8NMMNDDODD88NZ$O$7$7???IIIZ$OOO7+=~~:::DNN,..8DDD8+?888?OZNN8OD88
7777IZIZZZZZZZ$ZZOMMD8O88888$OOO?OO$7OOOD888OI+==~~::8NND8..IDDDDDDD8$~DDMDN88ND
$Z77=~~OZ=:~O777$~NMMDOD888D7:M888O88D8OOOOOI?+===~~~NN:8DM...DDDDNNDNDDDN8NMNN8
77III?=~::~=~...,:.NMNND888D$$O$8Z7ZOOOOOOOII??++==~MN,..8DD...DNDDNNNDNNNN8DMNM
8O7??IZ?~:,, .....7NNMMMD887.:$ZO:.?ZOOOOO$$II??+==+DMD,..8D:...NDDDNNNNNNDDD8DM
OI7I?$$8I=~Z,......DNNNDN8D,?~?+?Z~,=ZOOOOZ$7II????8M.NN.,~DD...NDDNDDNNNNNDNND8
7$77?I$88$IO.......7D8D888D,?IOOZ$Z,+$ZOOOOZ$7IIIINMI,DND,~.D8...MDDDNNDDDNNDDDD
7$$$778ZNO$7::,,,,,I$O7NN8ZI$$8O8$8+=$$ZOOOOZ$77$NMM.,,MNO::DDN.. 8DDNDDDNNDDDDD
+ZZ$ZDONODD$+NZ~+8+IION$$~7ODO88?I?+NMMZZZZZOOZNMMMMN.,~DD,..DDN...DDDDDDDNDDDDD
NZ$$$OMO8OZN$I++~=DNDZ777II7$$O77$+$MMMMOOZOONNMMMMMND,~DN,..MDD....DDNDDDDNDDDD
M+Z777$$$77778MD$OZ7777D8ZI7777II=MMNMMMDNDMMMMM$MMMDD$~DD8..,DDD. .ODDDDNDDDDDD
888D887$7777DZO$Z877$7D8Z87$O$$+:~MMMMMMMMMMMMMMM$MNNN:,7DD...,D8M...8DDDDDDDDDD
DDDD:8777$$88D$DN7$$D8DD8$7ZZ77,=MM$MMMMMMMMMMMMM8MNMN.,=DDD...8DD....DDDDDDDDDD
DDDN87II7$8DNNZ$8$$NZZN8D87$$$D$:MMNMMMMMMMNMMMMMMNMNNN::DDD....DDD.  ODDNDDDDDD
DNN=D7II$88N7OOZZ$ZZ$Z$NDOZZ$$Z,,MOMMMMMMMMMMMMMMMMMNNN,::DDN  .8887  .888DDDD8D
NMMN7$ND8D88MN$NNOO8DNDDND78ON=~.MZMMMMMMMMMMMMMMNMNMNN.,,8DO. ..DDD   .888DDD8D
ND8$78ZZD$DD8NNNZ$ZZODDOZO8:::==,MNMMMMMMMMMMMMMMNMNNNN...88DD ..O88~. .8O88O8D8

Standardizing HTTP API testing

4 minute read Published:

This blog post is actually a draft for a standard operating procedure for my software development and consulting business. I’ve come across the task of writing tests for HTTP APIs for three or four times in the last couple of months. I’ve tried multiple ways of writing automated tests and this is the method I’ve converged on. TypeScript, Jest, and supertest appear to work well together and are sufficient to implement concise tests.

Surely I can repair this. I've seen it on YouTube!

3 minute read Published:

the-offender

I love good sound. I’ve been suffering with my poor bookshelf speakers for a while now. They simply don’t produce enough output at the bottom end of the spectrum. I don’t want to annoy neighbors. But I do want to feel the rhythm. I went to a Hi-Fi store to listen to a couple of speakers. I flirted with a pair of Polk Signature Series S55 floor standing speakers. But I didn’t want to open my wallet just yet. I remembered there is an old Genious SW HF 5.1 5000 system somewhere in the basement. But they were broken. The subwoofer is humming loudly even with no input. Armed with all the electronics knowledge from YouTube I gave myself a shot at repairing this.

Uncomfortable, but great decision

2 minute read Published:

You are reading a success story of avoiding premature optimization. I had to design an API for a service that receives some geographical data and returns the same data with additional information for each point of interest.