Focus mode - A "kutty" chrome extension

By now you’ve seen a lot of stuff being built using ChatGPT. A lot, Jerry. A LOT. I’ve built a few apps and extensions as well, but this is the first I’m writing about. Over the last 3-4 years, “building” software on any scale has seen quite a radical shift. Here’s an image to scale - So when I first tried to build a Chrome extension for a company hackathon in 2022, I took around 12 hours, pulling an all-nighter. I looked up documentation, Stack Overflow answers, sample blogs and trudged through the whole process - The way god intended it. And finally completed…something. The end result was something that did the job I wanted but it looked absolutely horrendous and I had to hand-wave over the UX because I had no time before the presentation. ...

January 29, 2025 · 4 min · Abhiram R

I want to run LLM Models locally. What do I do?

One of the most sought after things to learn right now is about how to set up your own local LLM server and how to use LLM models locally. With the arrival of some things like Ollama and LM Studio etc, it has become very easy. Ollama is an orchestrator that lets you serve up models locally, models like Llama 3.1, Qwen-2.5, Phi, whatever models you have on HuggingFace. These are available to be served up and many more. ...

January 3, 2025 · 3 min · Abhiram R

Making your first blog with mkdocs

Now, why do this? What’s wrong with Medium and Substack and Blogger and Wordpress and all the tens of websites out there? Nothing. You could totally just create a blog there and publish. That’s why Content Management Systems exist - so you could focus on the content and not on the management . But if you’re like me and want some more control over how you publish your blogs, customize them etc. , you will find this and the other upcoming articles in this category interesting. ...

November 16, 2024 · 4 min · Abhiram R

Reading DDIA - Part 2

Chapter 1 - Reliable, Scalable and Maintainable Applications In [[Reading DDIA - Part 1]] , I read about Reliability. The next section is Scalability . First let me talk about the assumptions I made about the term Scalability, what I understand from it prior to reading Martin Kleppman’s thoughts on the topic - What is a scalable system? My thoughts prior to reading the section - Scale refers to how does a system grow. Growth can be needed for multiple reasons - ...

September 25, 2024 · 5 min · Abhiram R

Reading DDIA - Part 1

(Here’s the preface in case you missed it - [[Reading DDIA - Preface]]) Chapter 1 - Reliable, Scalable and Maintainable Applications This chapter’s goal is to effectively give us a high level overview of what this book is fundamentally about - Thinking about data systems along the axes of : Reliability Scalability Maintainability What is a reliable system? My thoughts before reading the section : A system that is available to return results/outputs that are expected of it when it is employed. If I’m accessing an API, if the API is available 99 out of 100 times, then its reliability is 99% If a server is available for 23 hrs 45 minutes per day then its availability is 23.75/24 = 98.9% But is availability == reliability? Let’s see. A reliable human is someone who does something that he says he will do or is expected to do every time. Similarly a reliable system is one that returns the expected results every time that they are used. An ATM is reliable if I can withdraw money from it in the denominations that I want, when I want it. For example, the ATM in Puttenahalli , JP Nagar is perpetually unavailable. Everytime I go there, the system is under maintenance. It is 0% reliable. Let’s read the chapter. ...

September 23, 2024 · 3 min · Abhiram R

Postgres (post 1)

Installing Postgres locally and connecting to it from Python First of all, what is Postgres and why do I care? Over the course of our working with data, we come across a lot of ways of storing data - cache, in-mem, files, file based databases, SQL databases, NoSQL databases etc. Each option has a specific set of usecases that are best satisfied by said storage mechanism. Postgres DB is one such storage mechanism - specifically an Open Source, Relational Database. ...

August 1, 2024 · 4 min · Abhiram R

Custom CSS Jupyterlab Ext

Jupyterlab is a definite improvement on the older IPython notebook interface - both in features and in appearance. There is now even an in-built “Dark Theme” that can be enabled. But is that all? As we know, Jupyterlab is a browser based app and is ipso facto, written on a base of HTML, CSS and Javascript. So if we want to change the appearance over and above what we get out of the box with jupyterlab, we can. Now, it is possible to make any CSS changes by hacking into the internals of the notebook, but thanks to a nifty Jupyterlab extension by Adam Wallner, we don’t have to. ...

December 10, 2019 · 3 min · Abhiram R

Git Jupyterlab Ext

Disclaimer : Extensions in Jupyter-lab are still very much experimental. But this one seems to be working fabulously so far. jupyterlab-git is an extension that lets you stage and commit changes to notebooks made right from within the Jupyterlab interface. This is best installed within the confines of a virtual environment, as is anything experimental. Installation steps - a) Ensure that you have the latest version of jupyterlab (=1.2.0 at the time of this writing) and NodeJS(=12.13.0 at this time) ...

October 31, 2019 · 1 min · Abhiram R

Unix Commands I Use

I keep Googling commands for some of these situations regularly - General - 1) To find files one level below your current directory - I was trying to find which repos in my set of folders have a setup.py file. So, this is what I’d use. find . -maxdepth 2 -iname setup.py 2) To find what process is running on port 2181 - sudo lsof -n -i :2181 | grep LISTEN ...

December 24, 2018 · 1 min · Abhiram R

Memory Monitor Widget Using Python

I use Ubuntu 16.04 and I’ve been searching for a good memory monitoring desktop widget to no avail. I found a couple of taskbar widgets but none that would tell me the free memory left in addition to the used/swap/cache memories. So I decided to write my own (with loads of help from the Internet of course). Component 1 — The widget I didn’t know how to do this. Thankfully Stuart Langridge had already done this for me. I tweaked the override_background_color parameter to get a red background for my widget and the size of the widget itself to be 400*20 so it would be a nice small strip rather than a big blob of a rectangle. ...

June 5, 2018 · 2 min · Abhiram R