This is the third year in a row I've put together a sort of annual retrospective, mostly focussing on software dev but also some other related bits that I think readers might find interesting.
The 2022 Projects
Last Year's Ideas
I finished the 2021 post with a few specific aims for the year ahead: Learn a new programming language, refactor the call stats project and keep up the drum practice.
Learning a new language didn’t particularly play out as expected. I spent a few evenings working on some pet projects in Go, but never took it further than that. Instead the ‘new’ language ended up being JavaScript, specifically using node for some server side stuff. This came about as the JavaScript libraries and frameworks for Websockets and SIP are ace, which is what I’m after for upcoming VoIP Toolbox features. Right Tool For The Right Job™.
The call stats project did get a refactor. Near the beginning of the year the original PBX platform I had integrated with was decommissioned, so beyond just a refactor I was trying to see if I could make something more generic. I did a proof of concept for pulling call data out of Microsoft’s logs but ultimately decided not to pursue it for now. Possibly something to pick up in the future.
Drumming more was a success. I mostly managed regular practices as part of a weekly routine, although it became a lot more sporadic in the tail end of the year. Committing to play at some events was a big win - easier to focus when there is a real date to aim at, and playing with other musicians is way more fun than playing alone.
Software Projects
I worked on two new mini projects outside of the day job. The SIP DNS Lookup tool and its successor VoIP Toolbox. Both examples of building the tool you want to use.
SIP DNS Lookup basically takes a domain name and tries all the typical queries that a SIP client or server would make. This isn’t too hard to do on the command line if you already know the queries and are semi comfortable with a DNS lookup tool, but I wanted to share the results, which is where the web app comes in to its own. The core of this site materialized relatively quickly when I realised that DNS over HTTPS was readily available and the site didn’t need a server-side component. Great success.
Carrying on the SIP tools theme, I decided to combine my existing SIP tools in to one place and build out more features from there. Checking for packet errors was next on my feature list. Conveniently it was also something I reckoned could be achieved client side only. I merged SIP Diagrams, SIP DNS Lookup and packet checking to create VoIP Toolbox.
The packet checking isn’t quite as useful as I’d hoped. Throwing helpful errors for bad packets is a little hard. I will look to revisit this, especially if I create a server component for VoIP Toolbox as that would really open up the SIP parsing options.
Writing Blog Posts
I don’t track views on this blog, but from what I can tell between a crude bandwidth graph and Google Search Console, the most viewed post of 2022 was A Small Stripe Fraud Story.
jes submitted it to HN and it eventually ended up on the front page for a while which was fun. Stripe even reached out off the back of that post which was a nice gesture.
I had a very loose aim to post 12 times last year but managed a little under at 10. Not too bad, especially when the year prior was 7 posts (or even lower still in 2020 at 3 posts).
I did actually draft over 12 posts in 2022 but couldn’t quite get them all to a standard that seemed worth publishing. My challenge is drafts tend to suffer a sort of bit rot. Each day that passes without further work on a draft post seems to significantly reduce the likelihood I’ll actually finish it and hit publish (or git commit/git push as the case may be).
In 2023 the aim remains the same, try and post something interesting approximately every month.
Hardware - Of Mice and Macs
I’ve made two main hardware changes over last year: new mouse, new MacBook.
Enter MX Master Mouse
I’ve been a long time user of the Microsoft Sculpt keyboard/mouse combo, however the mouse buttons started intermittently failing and that got me considering alternatives. I can’t complain though, the hardware has had daily use for well over 5 years.
Several people have recommended the MX Master mouse series to me. The mouse wheel is pleasing to use. I appreciate that it has a built in rechargeable battery and is still usable whilst charging. Prior to this I had a USB wired mouse on standby just for the occasions when the batteries ran flat. I also appreciate the Bluetooth connectivity. Remembering to transport a USB dongle around a few times each week has always been a hassle.
I did try install the Logitech software to configure custom mouse settings per app. I remember thinking at the time how useful it was going to be but I’ve not used it once since.
For 2023 I’d love to replace the aging Microsoft Sculpt keyboard. I’m basically after the same upgrade as per the mouse: ergonomic design, Bluetooth support and a built-in rechargeable battery.
MacBook and USB C
The big hardware change has been the replacement of my 2013 MacBook for a 2021 model. I wrote an entire blog post about that so won’t go in to much detail here. Six months later it’s still working out well, USB C for easy plug and play between desk setups continues to be great.
A few smaller honourable mentions for hardware changes:
- Our 2nd gen Google Chromecast gave up so it's been swapped for a 4th gen model. This is closer to a smart TV replacement than just a casting dongle now that it has Google TV OS and a remote control. Particularly well timed as our Samsung Smart TV from 2014 is not quite so smart anymore - various apps have dropped out of support and stopped working altogether.
- I was gifted a new rubber duck for the office, which has come in very useful for countless software development challenges.
- I was also gifted a Leatherman Multi Tool which I was very excited about. It has lived up to the hype.
Reading
Books
After enjoying Masters of Doom in 2021 I continued my id Software phase and read The Game Engine Black Book for both Wolfenstein 3D and Doom.
The Wolfenstein 3D book is particularly interesting. The hardware limitations at the time (early 90s/386 era) were very restrictive yet a decent 3D shooter game was created. The book gives really clear explanations for the techniques id Software came up with to achieve this.
Deep Work by Cal Newport is probably the most impactful book I read last year. I read it over a week whilst on a laptop-free holiday which probably explains in part the lasting influence. I am still revisiting my brief book notes as a gentle reminder to try some of the suggestions. The recommendation I come back to most often is ‘Focus on the Wildly Important’. I find myself recalibrating around that often, especially when there are lots of ‘urgent’ tasks each vying for attention.
Other honourable mentions for books:
- The Man Who Solved The Market - I do enjoy a good finance book.
- Various Dicken's books: Nicholas Nickleby, Master Humprephy's Clock, The Old Curiosity Shop and A Christmas Carol. I inherited a vintage set of Dicken's books and I've been gradually working my way through the set.
- William Armstrong: Magician Of The North, a deep dive after visiting Cragside.
- The Three Founders of the National Trust
Reading Blog Posts
A handful of posts that I particularly enjoyed in 2021:
- The Surprising Truth About Pixels and Accessibility - Which CSS units should I use?
- Tips on how to read RFCs
- The Science of Interviewing Developers
- Everything must be paid for twice - If you buy it you have to store it, move it, maintain it, use it etc.
- Go Deeper Not Wider
- A Pragmatic Programming Quick Reference - Some of the wisdom from The Pragmatic Programmer, not a full list of the Tips at the end, at least not from the 20th anniversary version I have, but all the core ideas are there.
Ways of Working
2022 was the year I started making regular use of the ‘Do Not Disturb’ status. This was bought about partly by the Microsoft Viva insights emails, which suggest times for ‘Focus Work’. This focus time goes on your calendar and will automatically change your status to ‘Do Not Disturb’ for the duration of the event.
Another small change is placing my phone on the desk screen side down. I have been surprised how effective this is. The back of my phone doesn’t grab my attention. If I start wondering about possible notifications then seeing my phone upside down is jarring, which nudges me back to the task at hand. Seems strange typing that out. It is an exercise for the reader to try this for at least a few days in 2023 when struggling for focus.
Picking up on the previous mention of Deep Work, I’ve tried to simplify my tech surface area. Getting rid of some legacy gear, consolidating VPS instances and moving apps/sites where possible to managed hosting (e.g. WooCommerce to Cloudways).
Travel
2022 saw the most travel in years, I even went abroad for the first time since 2018.
I visited Cragside, which I’ve been keen to see for as long as I can remember. It is the other end of the UK from where I’m based so involved a fair bit of planning and driving, but was definitely worthwhile. It was the first house to be lit with hydroelectricity, and that was in 1870! Loads of cool stuff to see and the scenery in that part of the world is truly stunning.
Whilst the day job is remote first, the team get together approximately every quarter. In the summer meet up we went over to Bletchley Park for an afternoon. I’d been before as part of a competition presentation whilst working for Netcraft, but didn’t get much time to look around. That would have been approximately 2013. Visiting again in 2022 it appears there is way more on offer. I’m hoping to go back at some point in 2023 for another visit.
Tech Plans for 2023
I plan to put some effort towards trying out better software tooling. Inspired in part by John Carmack’s chat about IDEs, it’s not something I’ve purposefully experimented with for a long time despite a potentially high ROI.
Regarding web projects, I think it is very likely VoIP Toolbox will go from a client-side only app to also having a server component. This will allow live send/receive/analysis of SIP packets over the network. Starting point here is likely an OPTIONS server/client, heading towards some more advanced automation if that proves useful.
Finally, the office hardware I use is very likely to change. An upcoming house move means I need to sort a different desk, plus I’d like to revisit my home network gear which hasn’t really had any attention in 5+ years (if not longer!). It is not a hindrance in day to day work, but I’m aware that my sole backup for some devices is a legacy Synology box, plus the network doesn’t perform well under multi-device load. Room for improvement and a house move could be the ideal time to sort that.