Welcome to my blog, where I share my thoughts on anything and everything that catches my interest. While I make a living as a software engineer, I’m aiming to diversify my writing beyond tech talk. Of course there will be a lot of tech stuff I will write about but since this is a blog about me learning expect a mishmash of topics as I explore wherever my curiosity leads me in the moment. Among my various interests are how businesses and startups operate and become successful. I also follow various sports, mainly Formula 1 and rugby but I do enjoy reading about many others and particularly the business of different sports. I have a huge interest in transit and urban planning, learning about the ways we can change the environment around us for the better to make our lives better. I read quite a lot so expect some random book and article reviews or thoughts thrown into the mix. I love the quote “consume breadth, create depth” so that is what this blog is about. It is my way of expanding my own knowledge and gaining a deeper understanding of the world.
13k ARR for Obsidian Sync
13k ARR from an app that implements syncing for Obsidian! This service allows users to swiftly capture ideas and notes on various platforms, including web, mobile, and browser extensions, with features to highlight text, share links, and paste images or files. It is built to seamlessly integrate with Obsidian MD software, employing a dedicated plugin for syncing and processing notes, thus enhancing the overall note-taking experience for users who require an efficient and organized system for managing their digital information....
Discovery of France (book)
I picked up this book and started to read it without really expecting myself to get far. I started it on a whim where it got recommended through some random blog post I came across that I cannot even remember now where that was. I downloaded the kindle preview and started the first chapter. Soon thereafter I found myself enjoying it enough that I just kept on going and kept reading....
How big things get done (book)
We take for a given that big projects will go over budget and over time. The core idea of this book is that does not need to be the case. The main reasons given for projects not going according to plan are: bad plans in the first place, making changes as they go along and bad estimations on how long the plans will take to implement. Most of these can be overcome by proper planning....
Snowball (book)
I read this ages ago as a teenager and I didn’t like it as much as other people seemed to. It just portrayed this ultra capitalist guy playing the game so much better than everyone else he amassed an insane amount of wealth. And all for what because I don’t know. I’m not against capitalism just I think maybe that wealth could be put to good use rather than just shares of Apple....
Green Transition Should Be Years Not Decades
Sounds a bit like an excuse making process to me but according to JP Morgan via the Financial Times today, the green transition away from fossil fuels to renewable energy is going to take decades or generations so we shouldn’t get our hopes up. They cite things like the way places like Scotland set ambitious goals to reduce emissions by 75% by 2030 but have already given up. So according to them we should just let the natural process take its place and not worry too much about this being done anytime soon....
Software Quality
This is some findings from some google research into quality of software. They developed a theory of software quality which involved four types of quality which influence each other. The first two, process and code, are what developers usually think first about software quality. They focus on the health of the codebase and the engineering systems around it. The second two, system and product, are higher level metrics focused in on by executives and product managers....
Go chi router jwtauth
I’ve been using the golang chi router in one of my projects recently and for the most part it’s been great. I’ve just a simple router with a few routes so I’ve not pushed it to any advanced use cases but it seems simple enough and extensible enough it should get a long way there. The latest project I’ve needed to do was add Authentication using JWT to two routes. This seemed simple and straightforward as they provide a default JWT middleware implementation called github....
Rotating JWK
JSON Web Keys are what is used to generate and verify JSON Web Tokens. Here I will explain how best to rotate JWKs. If you’re coming from zero like me and building something that uses JWT to verify a request is what it should be then the first thing you’ll do is use a JWK to verify a JWT. Using the github.com/lestrrat-go/jwx library in go it can be done like this:...
Exponential Backoff and Jitter
If retries aren’t randomly distributed over the retry window, a small perturbation (e.g., a network blip) can cause retry ripples to schedule at the same time, which can then amplify themselves Using exponential backoff is great because if you keep retrying over and over without limits you’re eventually going to break something. Exponential backoff increases this retry period exponentially until you eventually give up. Jitter takes this one step further by adding a random difference between the retries so that if all requests fail at once, they are not all retried together after a short blip....
PR Reviews
Characteristics of a good change Reviews: As a reviewer you should know it’s not going to be a perfect change so don’t focus on it being 100% perfect. This means avoid nitpicking as much as possible. Focus on moving faster and changing things continuously rather than getting it perfect straight away. Instead know the change is just one part of a process and continuously improving the codebase will bring it up to a better standard....