Weeknotes #2

April 5, 2019

This week is a little less full than last week but there was still plenty of time for fun including a rewatch of Creed 2 and some minor tweaks to some of my projects.

Work

This week at work has had highs and lows!

The highs:

  1. I open sourced the first real project I worked on at Limejump, Hermit, a microservice to allow client applications to log to Humio. I don’t think anyone else is using it right now, but as the first real open source application at Limejump I’m counting it as a win!

  2. I led a platform wide meeting on how we do authentication at Limejump. Our existing authentication is part of a larger service and it’s clear that we need a smaller dedicated service, and some better abstractions to distinguish between the different entities that use our platform. It was refreshing to be part of an environment that lets me call that kind of meeting together, acknowledge we need to improve, and kick start an initiative to get things going.

  3. I can definitely feel my knowledge and understanding of Kubernetes, the orchestration system we use at Limejump, improve every day. Containers, and how they fit together, has been a bit of a learning curve but I feel like I’ve gotten a good enough grasp of it to get by and I’m beginning to understand the network side of things a little better.

  4. I got to fit in a mentoring session with Simon. Being able to draw on someone’s wisdom and knowledge from decades of working with people and software development is really invaluable. He’s challenged me to finish The Pragmatic Programmer by the next time we chat and I’m glad he has - the latter half of the book definitely has more interesting material in it.

The lows:

  1. My team definitely has some communication issues. It’s difficult to get visibility of what everyone is doing - a lot of us work from home a lot, or are part time, and it’s compounded by the fact our use of JIRA is imperfect to say the least. That said, there is definitely a glimmer of hope here - we’ve restructured JIRA, agreed to do a non-Slack standup each day, and scheduled retrospective and planning meetings. I’m feeling hopeful going into next week.
  2. A very specific communication error occurred that led to me building a key service in Go rather than Node. After a tough discussion, the service is going to be rewritten in Node. It was definitely a bit of a let down - I was looking forward to using Go and throwing away 1,000 lines of code is never easy! That said, all the learning and experimentation that went into that project is still valid and I’m definitely planning on using it for other services later down the line.

Projects and Learning

I’ve been keeping trying (and failing in places!) to keep track of what I read - it’s a lot more content than I thought I consumed, probably a few thousand words each day. There have been a few great articles this week, firstly there was a fantastic article on writing a high performance RaptorQ library in Rust, it has some really useful tips on how to benchmark and increase the performance of Rust code it opened me up to the world of fountain codes. I also really liked the deceptively titled article from CSS-Tricks Yet Another JavaScript Framework that takes a deep dive into the history of JavaScript on the web and why a long deprecated library stopped the web from moving forward.

Code generation has been on my mind a lot recently - I’ve been reading about it in The Pragmatic Programmer, using the roundtrip Feathers-Plus generator for the hush-hush startup I’m working on, and I used the unofficial Go Kit CLI for the now scrapped Go microservice. After battling with it in practise I’ve decided, pretty definitively that code generation is very easy to do wrong. Although in The Pragmatic Programmer it’s described as blissful shortcut to productivity, my experience has been pretty much the opposite. Go Kit’s unofficial CLI generates a fairly complicated architecture (too complicated!) and the Feathers Plus CLI is hugely opinionated in its mechanism for writing code to the point it locks you into a strait jacket that you’re unable to escape from. Whilst I’m not an expert on code-generation it feels like reusable generators should limit their scope as much as possible and one-time generators should focus on producing simple extensible code. I’d love to hear about public generators that get this right!

My personal projects haven’t progressed very much this week but there were a few wins. Firstly, last week I alluded to some issues with CircleCI publishing HugoToJSON to Github Releases - I’m glad to announce the issues are now resolved 🎉. While this deserves a more detailed account of the battle to debug the issue, in the end it was as simple as using a Docker image for the publishing step that didn’t ship with glibc. I’m ashamed to say I spent several hours tracking down that particular point of friction and would’ve never have got there without CircleCI’s ssh functionality.

I also switched my blog RSS from providing a summary of each post to providing the full text, sites that only provide a summary RSS are a pet peeve of mine and it felt pretty conflicting to not have this sorted myself.

Finally a last minute addition. As I was preparing this week’s weeknotes I ran into a bug with my ResponsiveImagetoShortcode tool choking on uploading a large number of images S3, so I implemented a pool based limiter for the function. It’s amazing how tricky JavaScript can become when dealing with a mixture of callbacks, promises, and async functions all at once. I also ran into a nasty bug because I was reading files as a string rather than a stream of bytes so I switched my S3 uploads to be stream based. I definitely need to carve out some time to rewrite the tool in Rust with some proper integration and unit tests.

Fun and Personal Bits and Pieces

This week was my friend Dom’s 21st birthday party and I have to confess I’ve never felt quite so removed from university culture this side of graduation. The event was heavily attended by CompSci students and the night mostly consisted of debating the merits of various developer philosophies and the value of/issues with various third year computer science modules at Royal Holloway. Those kinds of topics used to matter to me massively but a year on and I feel the opposite!

The Firefly marathon I described last week went ahead mostly as planned. Rather than finishing the series in one day, Joel and I had quite a lazy Saturday and did some errands and hung out as well as watching Firefly. By the end of the weekend we’d watched all but one episode and so at some point soon I’m sure we’ll finish off the series and get around to watching Serenity - which I have to confess I’m super excited to watch again.

This week was my first week back at the gym and after two weeks off it’s been hard getting back into it and I’m feeling a little sore (even a few days after) but I can definitely see the progress I’ve been making, this week I comfortably benched 35kg - a small improvement month on month but a huge leap forward from my initial abilities.

Next Tuesday is the official release date for Hearthstone’s new expansion Rise of Shadows and I’m really looking forward to it, it coincides with the new Hearthstone year and a number of powerhouse cards are rotating out and so I’m hoping for a more balanced meta, in the image of Journey to Un’goro. Whilst the action kicks off in earnest on Tuesday I’m hosting a pre-release event on Saturday and I can’t wait to open my initial batch of pre-ordered packs.

Finally on Friday evening Catherine, Joel, and I were joined by some friends from church to a sushi restaurant in Staines, a completely different experience to anything I’d normally try! 🍣 I loved the maki rolls but some of the nigiri was a little difficult to stomach, that said I’m feeling pretty confident that when I get to Japan I won’t starve.

Sushi at Sushnara. Preparing for my trip to Japan
Sushi at Sushnara. Preparing for my trip to Japan

Film Thoughts: Creed 2

Last Sunday I got to Creed 2 for the second time. Catherine and I are big Creed fans, primarily because watching the original movie was our first date together. 1 I immensely enjoyed Creed 2 both on the first and second viewing but I think that the movie pales when compared to its predecessor. Despite a strong plot and stellar performances from Michael B. Jordan, Sylvester Stallone, Tessa Thompson, and Phylicia Rashād the movie feels like it amounts to less than the sum of its parts. The Drago family feel flat and uninspiring, Adonis’ fall from world champion to broken man feels difficult to empathise with, and the fight sequences, outside of the opening fight with Wheeler, lack the tension and punch that the original Creed movie delivered. Whilst still a fantastic movie, Creed 2 definitely wasn’t as sharp as it could’ve been.

A strong movie end to end but lacking some of the magic the original had.

⭐️ ⭐️ ⭐️ ⭐️


  1. Not necessarily intended [return]
Last Updated: 2019-04-06 18:17