Writing
Notes on code, craft, attention, and the examined life.
Essays and field notes on software, craftsmanship, and the practices that keep attention alive.
- The Knowledge Operating System A graph of five hundred interlinked notes taught me that capture and linking are not enough — knowledge needs structure to be documented, referenced, …
- How the Water Holds The water holds your body. It holds your attention. It holds what you carry. Notes on healing, disruption, and what a 4k swim through salt and tide …
- The Poverty of Language and the Search for Emotional Precision Language compresses rich subjective experiences into symbols that others must reconstruct, making misunderstanding inevitable. Storytelling addresses …
- The Fear Tax Fear in the workplace is not a motivator. It is a tax. Leaders who let it persist — or quietly benefit from it — are paying that tax with their team's …
- Keep the Friction AI is best at removing exactly the friction where craft, focus, and satisfaction used to live. Refusing it is a pose; there is no exit. The real move …
- What I Got Wrong About Discipline, And You Might Too For years, I thought discipline was simply working hard and striving to improve. Only recently did I realize that true discipline is the resilience to …
- Introducing ruby-upgrade-toolkit A Claude Code plugin for Ruby and Rails upgrades. Phased commits, real estimates, project-specific rules. Audit, plan, fix, verify, commit.
- Slow Down to Speed Up Why getting faster has always required slowing down first — and why the cycle never really ends. Lessons from the cube, the pool, and the codebase, …
- The Matrix Has No Exit The Matrix got the diagnosis right and the cure wrong — there is no Morpheus, no red pill, no city beneath the city, only the simulation we already …
- Embrace the Wobble How Falling Fuels Your Success
- Building a Scalable Ingestion Pipeline With Rust How to build a scalable ingestion pipeline with Rust
- Positive Effects of Exercise on Mental Health Exercise is also a form of meditation, has tremendous positive impact on mental health
- Neovim as a Java IDE Neovim has come a long way today from it’s original goal of being able to support asynchronous jobs. Today it comes packed with a ton of useful …
- How to Speak Collection of my notes from the lecture titled 'How to Speak' by Patrick Winston
- Generic Callbacks in Rust In a recent project, we developed an ingestion pipeline in Rust. We wanted to execute asynchronous tasks in response to messages received from SQS, as …
- DIY remote controlled pan & tilt CCTV using Raspberry Pi RPi CCTV in Action : A simple web interface to control the RPi CCTV : What you need to build this (hardware) : Raspberry Pi(1) (1)Preferably Raspberry …
- SSH Config Trick Update2 : As I have been informed now, there has recently been support added for including external files in the ssh config. Refer …
- Text Editor Choice & Peer Pressure I am a VIM user and have been for quite a long time(1) (1)~7 years . I am both a vim plugin author and also like to believe I have helped a lot of …
- Template with Context using ERB Recently, I was required to build a template rendering component that should render within a dynamic context, i.e. it would have methods / variables …
- Slack old school style Slack has gained a lot of popularity in recent times as a tool for inter-team communication and for the right reasons. It offers a lot of features …
- WebRTC Broadcast WebRTC is fun! I recently gave a quick session on WebRTC at Bangalore Ruby User Group (BRUG). Following are the slides of my presentation. WebRTC from …
- Pristine – ZSH Theme A while back I posted about Amuse my prompt theme for ZSH targeting oh-my-zsh. Since this was a much appreciated theme, I would like to share another …
- Google open sources it’s machine learning system I am a huge proponent of open source technologies and having worked predominantly in various web technologies in the course of my career, I mostly …
- Grow your brain! Learning is key in brain development. Of course what aspects and how much of brain function improve as a result depends on the mode / type / content …
- Find huge files in linux Switching to SSD’s for better performance and compromising on disk space can be a tough decision to make. Though nowadays with the prices of …
- Google Code Jam 2014 Qualifiers Google Code Jam has always been a competition I have cherished, simply because the problems they post are brilliant and the closest to reality as …
- VIM Custom TabLine Hi guys, VIM has an option tabline that one can use to configure how the tab line would look like. Back when I used to use gvim, I could very easily …
- Creating Custom Scratch Buffers in VIM The other day I wanted to open a scratch buffer to write some temporary code and the pass it on to a repl to test it out, the idea was that I could …
- VIM – Filter Quickfix List If you are used to using the quickfix list in VIM there are times when you want to filter certain things out of the quickfix list to narrow it down to …
- VIM – Toggle Ruby Hash Syntax Ruby 1.9 introduced a new json style ruby hash syntax. Although we can use this to define static hash objects and puts a limitation on the key we can …
- VIM for Multiple Projects in separate Tmux windows My development environment setup consists of several tools, however the 2 most used and essential tools that have a great impact on my workflow are …
- ActiveRecord like where for array of hashes in ruby Edit : Updated the code as per the suggestions made by Masklinn. Recently I was working on Issue#1 of my Soulmate Rails gem, which is a very simple …
- VIM Markify Recently I picked up some minor configs for ruby from Time Pope’s vimrc. Here’s the code : autocmd FileType ruby \ if expand('%') …
- VIM Better FoldText Update 3: Improved the code for extraction of fillchar from fillchars option and taking foldcolumn into account. Update 2: Fixed the regex for …
- VIM Table Mode UPDATE 2: Released v 2.0 of the plugin. Check github for details. UPDATE : I have added more features to the original plugin, showcasing some core …
- Amuse – ZSH Theme Amuse is a simplistic theme I built for the popular shell ZSH that I use. Features : Shows git prompt with additional support for dirty (! in red) and …
- Vim Railscasts Colorscheme VIM in my muscle memory is one of my popular posts, the day I published it, I attracted over 3,200 unique views in a single day, mostly from Hacker …
- Soulmate Rails UPDATE : I released the first stable version 0.2.1, it should be usable as is without any issues. One of the most common things to do in any standard …
- Tmux Powerline Special Characters Issue Tmux is a terminal multiplexer like Screen on steroids. It is faster, slicker and much more easily extendable than screen. For why you might want to …
- Ubuntu on Macbook Pro As I have mentioned before ([Magician Chrome makes RAM disappear][1]), I had been facing several issues with Mac OSX. I use vim extensively, and so I …
- Magician Chrome makes RAM disappear Recently I have been experiencing a very weird issue on my Macbook Pro, I have Lion v10.7.4, with a decent configuration : 2.8 GHz Intel Core i7 …
- VIM in my muscle memory I have been an ardent VIM user for almost 4 years now, and it’s been a while since I have been wanting to write this Blog. My motivation is not …
- Artificially Intelligent Spyware There has been tremendous advancement in the domain of Artificial Intelligence (AI) and Machine Learning (ML) in the recent years. Although people …
- Getting started with Ruby – TOC Hi, I have written a series of articles (in several parts) in an attempt to guide beginners to get comfortable with Ruby. This article is my attempt …
- MongoMapper Plugin – Versionable There was a requirement at one of our projects here at Artha42 Innovations Private Limited that our Mongo Mapper documents have inherent versioning so …
- Calculating Hashes Showcasing how to calculate hashes in Java, C# and Ruby! Java : public String getHash(String message, String algorithm) { try { byte[] buffer = …
- Getting started with Ruby – Part 6 After having covered most of the basics of Ruby, lets get started on an actual problem, just like I had promised in my previous article – Getting …
- Getting started with Ruby – Part 5 Hi in my previous article Getting started with Ruby – Part 4 I covered Hashes & blocks. Today I will take you through the various forms of loops …
- Getting started with Ruby – Part 4 – Hashes & Blocks In my previous article Getting started with Ruby – Part 3 I started with Collections and covered basics of Ranges & Arrays. Like I mentioned …
- Getting started with Ruby – Part 3 – Collections, Ranges & Arrays In my previous article Getting started with Ruby – Part 2 I introduced you all to Ruby & its philosophy and I started out with data type classes …
- Getting started with Ruby – Part 2 – Introduction & Philosophy Hi again, this is part 2 of my series of articles to help beginners getting started with the Ruby programming language. At this point of time I would …
- Getting started with Ruby – Part 1 Before we get started with Ruby, let me first give you a brief on who I am, I am Dhruva Sagar, a software engineer having a little over 4 years of …
- Moving to Ubuntu I have worked on quite a few Linux distros, Redhat, Knoppix, BackTrack, PHLAK, ubuntu, etc. But most of the times I did that only to explore the realm …
- Cleaning data on my computer I remember my first computer which I had when I was in about 4th standard(1) (1)About 15 years back if I remember correctly . It was a real source of …
- Calculating a MD5, SHA1, SHA256, SHA384, SHA512 Hash in C# Following up on my Creating a Hash in Java post, here I am giving another implementation through a simple function for calculating a Hash in C#. …
- Calculating a MD5, SHA1, SHA256, SHA384, SHA512 Hash in Java Hi, today I will show you with examples how to evaluate Hashes in Java programming language. I hope this information comes in useful for many people. …