Posts

I'm using dev-containers and you should too

Image
A Dev Container is an entire, pre-configured development system encapsulated inside a Docker container. Unlike a production container that just runs compiled code, the Dev Container hosts your entire development lifecycle (coding -> testing -> debugging -> building). I used to manage a team of ~10 software developers working on multiple unrelated projects. Each project had its own tech stack and it's own undocumented build system installation procedure. Keeping up with the different tools of each project was extremely hard and I was stuck with the feeling that there must be a better way to handle this mess. Fast forward to 2022 - I joined the founding team of a small startup and it was time to put the lessons learned to the test. We wanted to create an organization where developers would be able to understand and change the entire codebase and not just their main domain. In order to do that, we needed to lower the gates between backend, frontend and any other infra in the...

Tricking our prehistoric brains to spot a bug a mile away

Image
Have you ever done something just because it was cool but it ended up being actually useful? When I started coding, The Matrix movies just came out and ever updating green text over black background was all the rage. I didn't have anything interesting to run in my terminal except vim so I ran  htop in one terminal while coding in the other.   I had a eureka moment while working on a multi-threaded application and all of a sudden the htop CPU bars were all flashing green and red. Something  felt  wrong, so I checked my recent changes and found a slow fork bomb hiding in plain sight. That's when it hit me, the same brain that was trained for millions of years to spot a snake approaching from the corner is now able to spot a bug a mile away! All I needed to do is feed those signals in the side of my screen  so my brain will do the  visual  anomaly detection in the background while I focus on the actual task. Fast forward 20 years to 2025 and I'm using ...

Can a 1.4GB LLM Be My Local Search Engine? (spoiler: yes)

Image
One of the main LLM use cases is often pitched as a search engine replacement and it got me thinking.. Can a small locally hosted LLM replace google when I'm on the go? TL;DR - Yes!  Though LLM stands for Large Language Models, some are surprisingly small. To get started, I installed Ollama , which makes tinkering with a huge number of open-source models incredibly easy. I wanted to find a model that's small enough so it can run smoothly on my laptop while being actually useful for coding. After some tinkering, I settled on qwen3:1.7b . The 1.7b version is only 1.4GB so it fits well in my laptop's RAM and it's good enough for real coding tasks! Now, I can just spin up a local LLM in my termial (!!) and ask it random stuff while coding:   For simple search tasks (and even a bit of debugging), it's as good as the full blown web based LLMs. It won't tell me today's news, but for quick code snippets, syntax and library definitions, it's perferct. (Sidenote -...

The ratchet technique - how to prevent new shit code from joining your code

Image
  There's a common problem that happens when new linters are added to an existing codebase. Let's say we have 50K rows of exeisting code and we want to add a new shiny linter that makes sure all module names are Harry Potter characters. We run the new linter for the first time and it finds 1337 linting violations . We want to prevent new code from violating these rules but we don't have the time to fix the old code  at the moment.  This is where the "Ratchet technique" comes in! We start by adding a CI merge gate workflow that counts the number of violations  (1337) and ensures the number never increases.  If someone commits new code that doesn't adhere to the new standard, the PR checks will fail. Old non-compliant code can stay bad until we have the time to fix it.  This method  halts code degredation  without any major refactoring.  Funny new behavior that was observed in the wild - developers will fix an old linter errors so they can add ...

Digital detox with a custom Android launcher

Image
Lately I find myself doom-scrolling way too much. Seems like it's a global pandemic so I searched for ways that will make my phone less appealing and stumbled upon this app: The design is super simple, nothing flashy, it's purpose built to making my phone look boring. Right after the initial installation, I found myself struggling with the limitation of maximum 8 apps in the home screen. I was aiming for ultra simplicity but I didn't want to sacrifice productivity in the process. Since the OLauncher project is open source ( https://github.com/tanujnotes/Olauncher ), I could tinker with it and up the number to a whopping 12 apps! 4 hour of random tasks: Install Android Studio Figure out the Kotlin code structure - last time I checked (~2012), android used Java Fix build errors Edit the code to allow 4 more apps - it's all const resources so instead of modifying it to use for loops and auto generate as many apps as the user wants, I followed the footsteps of the original ...

TL;DR Remote work key-points from GitLab handbook

Image
I'm trying to understand how to make my work more async and started reading about it from companies that seem to be working this way for a while now. These are the keypoints from Gitlab's thorough handbook  - it's my interpretation of the key concepts behind the handbook. Communicate with the intent for one reply, meaning that the sent message should contain all of the necessary information for the recipient to act upon it without back and forth questions. Unblocking yourself - Always have multiple tasks in the pipeline so when you get stuck waiting for one task to be reviewed, you can work on another. Refrain from using Slack because of it's instant-messaging like figure. Choose the correct medium for the job. sometimes a recorded short video is better than a wall of text. One source of truth (for gitlab it's gitlab) - I don't agree with that because different systems can organize data in different ways. Strong documentations Communicate your work preferences -...

Challenge - write at least once a week for a month

Image
 I already had a tech blog at 2018. It started out as a fun experiment but I ended up abandoning it because I was striving for perfection and that really is the root of all evil. So for this time, my main KPI is the amount of posts, not their quality, and if I manage to post at least once a week for a month, my reward will be to share this with friends and family. Wish me luck!