Fun With AI Embeddings in Go

Update 9th January, 2024: Changed the title to “Fun With AI Embeddings in Go”

Before the end of last year, I visited San Francisco (SF) for a few weeks. It felt great meeting some old friends and ex-colleagues face-to-face after a long hiatus. There is something incredibly refreshing about being in the same room with the folks you’ve spent chatting to so much time over the past few years on Zoom or Slack. Real-life connections remain undefeated and I hope it will stay that way.

[Read More]
Go  go  embeddings  golang  Golang  ai 

Some [career] advice for engineers

This blog post is a collection of advice or rules I’ve learnt to live by as a software engineer.

It’s an accumulation of experiences I’ve gained through working for software organizations of various sizes.

Most of the advice in this post is aimed at software engineers, but some may be applicable to other roles and industries.

Understand the problems you are solving

This isn’t a revolutionary idea. But the very sad reality of life is that it still hasn’t been internalised by so many engineers and organisations that it’s worth reiterating. I can’t stress enough how important understanding the problems you are trying to solve is. I’ve seen countless hours and budgets wasted on “solving” problems that have been completely misunderstood and often actually made worse by taking the wrong action.

[Read More]

A Few Counterintuitive Ideas

UPDATE: 4th January, The way out of burnout

The beginning of 2021 marked the point when some of us were bracing with hope for the year that lied ahead. The year that we hoped to be “better” than the one that we were leaving behind. Little did we know we should have braced for impact instead.

For me personally, if 2020 was bad enough then 2021 wiped the last shreds of whatever mental resilience or energy I had left in me. I’m entering 2022 pretty much on some kinda pandemic cruise control. Time as measured by calendar days no longer matters, the majority of the human contact happens over bits and bytes and, yet, “things” can still get worse. They call it the “new normal”. Whatever. At least I’ve survived so I got that goin’ for me which is nice.

[Read More]

Getting Started With LDAP in Go

Recently I had to write a fair amount of Go code which interacts with Active Directory (AD) for one of my clients. AD uses Lightweight Directory Access Protocol (LDAP) [1] for client-server communication. LDAP is a very mature and powerful protocol to interact with directory services, though some of my friends argue that it’s a bit of a relic of past at this point. I disagree with this sentiment, but my explanation why would probably take a whole another blog post.

[Read More]

Build a Graph of Kubernetes API Objects in Go

Over the past few months, I have been rekindling my interest in graph theory. I’m not quite sure what has caused this shift in my mind as I didn’t play with graphs too much since I graduated many moons ago, besides the occasional interview preparation. Maybe it was my reading about all the new graph databases that have come to existence over the past few years, or maybe it was my interest in the Graph Neural Networks which also seem to have (re)gained a lot of attention in the research community or maybe, stimulated by the recent coronavirus outbreak, it was the result of my random thinking of the ever so increasingly interconnected nature of our world.

[Read More]

Happy 5th Birthday Kubernetes London

On 26th March Kubernetes London Meetup planned to host another event. It was supposed to be our 5th birthday so we had worked hard to make the event, to quote Kelsey Hightower, “Dope”. Unfortunately, it wasn’t to be as the coronavirus disrupted all levels of public life in a way our generation never experienced before.

This blog post is the long version of the short talk I wanted to give at the event to walk through some of the most memorable experiences I’ve had in the past 5 years as one of the Meetup organizers.

[Read More]

Swift ARKit Sun iPhone App for Londoners

If you happen to be one of the lucky people living in London you couldn’t miss we’ve had a bit of a sunlight crisis [not just recently]. Instead of the usual vitamin D deficiency which we are used to being brought to our attention during regular health checks things have been a little bit worse than that. First we got a visit by storm Ciara which was then shortly followed by storm Dennis. What do you do when the only sunlight you can get is watching David Attenborough documentaries on Netflix? You guessed it! You build an ARKit app in Swift which lets you put the fiery sphere [not just] in your room. Now you can get sunlight whenever you need it, wherever you are! Just tap the screen and off you go! You can find the full implementation of the app on GitHub.

[Read More]
iOS  swift  Swift  ARKit 

Breadth-first search using Go standard library

Just like many Go developers out there, I’m a big fan of Go standard library. Over the past few years I’ve been hacking on Go, I’ve discovered some real gems that not only made my life as a developer easier (no need to maintain unnecessary code), but they also made my code considerably more readable for others to follow. The last time I blogged I talked about how you can leverage Go standard library to generate weighted random draws.

[Read More]

WASM: Universal Application Runtime

WASM: universal application runtime

Last summer, fresh off my last freelance gig, I was catching up with my friend Asim, the founder of the widely popular microservices company, Micro at one of our favourite coffee shops in London. We would end up meeting almost every week talking about the presence and the future of technology. But that day our conversation turned into something that we had not talked about for a long time: Web assembly (WASM).

[Read More]

Weighted Random Draws in Go

When working on my last project I needed to find a way to draw a random number from a list based on some weight assigned to it i.e. given a list of numbers each of which has a weight assigned to it, I had to find a way to draw a number from the list based on the weight. The numbers which have higher weight assigned to them should be more likely to be drawn than the numbers with lower weights.

[Read More]