RSSAmplifier

Blog

Kshitij's Weblog

Recent content on Kshitij's Weblog

kxsh.devRSS feed ↗225 posts

Latest posts

Review: 2026 Week #29-#30 (July 13 - July 26)

My parents are visiting me in Berlin this summer. I took a couple weeks of vacation to spend time with them. Thus, I spent a lot of time away from my computer. They landed in Munich after boarding an overnight flight from Delhi. From Munich, we did a day trip to visit the iconic Neuschwanstein Castle . The weather was excellent, and my parents seemed to enjoy the natural beauty of Bavaria. On our…

Review: 2026 Week #28 (July 6 - July 12)

Watching the Quarter Final round of the ongoing FIFA World Cup 2026 messed up my sleeping schedule. I watched 3 of the 4 matches with friends over drinks so the investment was worth it for social reasons. I played beach Volleyball with friends on Saturday morning. Unfortunately, I injured my left shoulder and sprained my left ankle. So I had to skip a couple of runs this week.

Review: 2026 Week #27 (June 29 - July 5)

I got back from a friend’s wedding last weekend. Monday was mostly about physical recovery. Thanks to the weather, I ran every day this week for a total of 55k. The body is adjusting well thus far. On Saturday, I joined a couple of friends for Pickelball. Meanwhile, I am looking to set up a home theatre - OLED TV, Speakers (at least). Inclining towards LG C5.

Review: 2026 Week #25 (June 15 - June 21)

Ever time and energy consuming work continues. I took Friday off work, and spent some time in the evening revisiting Go. I watched the OG talk by Rob Pike announcing The Go Programming Language , and re-read the Effective Go after more than a couple of years.

Review: 2026 Week #24 (June 8 - June 14)

I picked up the Operating Systems: Three Easy Pieces on Friday evening. Read through a couple of chapters on CPU Virtualization and Concurrency. My solutions to the exercises and homework can be found in this Codeberg repo . Links If You are Asking for Human Attention, Demonstrate Human Effort by Tom Bedor Using LLM generated output can boost productively in a lot of scenarios. However, all of us…

Review: 2026 Week #23 (June 1 - June 7)

This week was a breeze! I spent a lot of my spare time working out and running. Started re-reading Safe Haven by Mark Spitznagel. Three Ways to Get Paid by Jason Zweig Rediscovered this beautiful piece.

Review: 2026 Week #22 (May 25 - May 31)

Monday marked the last public holiday for this summer. Despite the short work week, it was quite stressful. I participated in a Capture The Flag event organized by Cresta on Wednesday evening. Did not enjoy the experience as the atmosphere was quite competitive rather than collaborative. Tough luck Arsenal for the CL Final yesterday! How Bicycle Helmets Are Engineered to Protect Your Brain by…

Review: 2026 Week #21 (May 18 - May 24)

The weekend was pretty hot and humid. I had a hard time running. But I still got this week’s weekly mileage (44k) in the bag. Also on Friday evening, I picked up my new bike from Decathlon - Elops 500 Yellow. FULLY AUTOMATED COMPUTER MUSIC by TodePond Beautifully illustrates the point of automating ourselves out of joy. What is BusyBox? by Specular BusyBox is a collection of tools/binaries…

Review: 2026 Week #20 (May 11 - May 17)

It’s Pollen season in Berlin. They are swirling all around on the streets. I must have swallowed atleast a couple of them during the run this morning. I went to the Golang Meetup hosted by Talon.one on Wednesday. One of the co-organizers is an ex-colleague from OneFootball. So catching up on what has been up to. One of the talks was about the AutoPR project - wrapper around coding harness…

Review: 2026 Week #19 (May 4 - May 10)

Last chill week before the official Marathon training block. I attended the PostgreSQL May Meetup on Thursday for a couple of talks: One about datalake architecture using the pg_lake extension. Few neat PostgreSQL features such as Ranges. The vi family by lpar. Reference material on history the Vim text editor. Starting off from vi to vim to Neovim . Ticking Timebomb in Mac OS by The PrimeTime…

Review: 2026 Week #18 (Apr 27 - May 3)

May 1st is synonymous with street raves in Berlin. Grab beers from a Späti, find your friends, and be a part of the craziness. Event Sourcing Explained using Football by Metaphorically Speaking Core concepts related to Event Sourcing: Event Stream Projections Aggregate The peril of laziness lost by Bryan Cantrill Laziness is a virtue as it is born out of time constraints. LLMs lack this virtue.…

Review: 2026 Week #16 - #17 (Apr 13 - Apr 26)

I am back in Berlin after an extended weekend trip to Portugal with the boys. Lots of alcohol and Pasteis de Nata. The big news of the week - Sub-2 hour marathon barrier has been broken by Sebastian Sawe and Yomif Kejelcha at London Marathon 2026. Tigst Assefa also set the world record for women’s marathon category. Congratulations to all the finishers! This is simply inspirational work. A…

Review: 2026 Week #15 (Apr 06 - Apr 12)

Apologies for the delay - time management skill issue. I will be AFK upcoming weekend. Alcohol in my blood after a month. I use the Untappd app on my phone to track my drinks. After about 10 weeks, I charged my TRMNL device on Sunday. The e-ink display product is extremely efficient to communicating static information. Once we have color display figured out, I can imagine a lot of billboards…

Review: 2026 week #14 (Mar 30 - Apr 05)

This week marks Easter with an extended 4-day weekend in Germany. Thus, its easier to schedule time for workouts and running. I went for the Parkrun at Hasenheide yesterday. Due to Daylights Savings Time, clocks moved an hour forwards last week. My sleep schedule demands more time to adapt. Claude Code Unpacked by Claude Code Unpacked The source code of Claude Code leaked to the public domain.…

Review: 2026 Week #13 (Mar 23 - Mar 29)

I went to cheer for my friends who ran the Berlin Half Marathon 2026 at my usual spot around the 17k mark - a out and back section of the course near the Cafe Moskau near Strausberger Platz. Cheering people on perservering through the physical pain is a positive sum game. It teaches me to be humble about my limited abilities, grateful for my health, and empathetic about people around me. Moreover,…

Writing My Resume in Typst

I ported my Resume from LaTex to Typst . This post is a review of my experience - motivation, and implementation details. Background A decade ago, I was a clueless Uni student. Today, I am just as clueless, but a working professional. Back then, I was introduced to the trade of software development. I was hooked. I wanted to figure out if I can build a career in this field. So I opened the Job…

Review: 2026 Week #12 (Mar 16 - Mar 22)

Sun is about to rise soon after I wake up. While I sit in my balcony sipping coffee, I feel the cool Spring breeze. Either I go for a run or hit the gym, before the day starts. Thanks to this, I have increased my mileage as I look to build a strong aerobic base for the upcoming season. Beside my gradually increasing anxiety about my role in the GenAI era, I am trying to stay positive and focus on…

Review: 2026 Week #11 (Mar 09 - Mar 15)

The world breaks everyone and afterward many are strong at the broken places. But those that will not break it kills. I came across this quote from Hemingway’s “A Farewell to Arms” while I was reviewing my notes. Project: Typst Typst is another markup language for typesetting documents a competitior to Latex. It’s primary selling point is speed. Zerodha Engineering wrote an…

Review: 2026 Week #10 (Mar 02 - Mar 08)

Things started to look a bit better this past week. I have restarted training at the gym. More importantly, the inclement weather allowed me to run outdoors after work. The most beautiful formula not enough people understand by 3Blue1Brown High dimensional geometry is as real and useful as 3 dimensional geometry. High dimensional geometry risks being counterintuitive. - Beautiful illustration on…

Review: 2026 Week #09 (Feb 23 - Mar 01)

I have been sick for the majority of the last 2 weeks - a virus going around. I took a few days off work to recover as I found it difficult to concentrate. A couple of days without digital media was refreshing. The downtime allowed me to read, and collect some of my thoughts on my role. As usual with any personal reflection, I ended up with more questions than answers. It boils down to this…

Review: 2026 Week #07 (Feb 09 - Feb 15)

The clouds cleared out this morning. Just enough to let the Sun shine through. The clear blue sky bring a sense of lightness Most of my time and energy was spent learning about the domain at work. I will be working mostly on the Debit Card product at TradeRepublic. Yesterday afternoon I completed a few tutorials on the Spring framework with Kotlin. I need to get familiar with the JVM for work.…

Review: 2026 Week #06 (Feb 02 - Feb 08)

First week at the new job was equal parts exciting and draining. I commuted to work every day - about 45 mins one way. I have a lot to learn about the domain as well as the tech used at the org. Beside work, I did not have much time to get up to speed with the outside world. I started re-reading Nonviolent Communication . Hope it comes in handy when collaborating with my new colleagues.

Review: 2026 Week #05 (Jan 26 - Feb 01)

On Thursday morning, I made it back to Berlin from India. My connecting flight from Munich was delayed by a couple of hours due to the snow. My body will need a bit of time to acclimitize to the cold weather. The streets are particularly slippery, and I have seen a few people sliding and tripping up. Unfortunately, the heating in my apartment is barely working. It’s just enough to heat the…

Review: 2026 Week #04 (Jan 19 - Jan 25)

AFK this week as I travel a bit with my family.

Review: 2026 Week #03 (Jan 12 - Jan 18)

I have put on sufficient weight to my mom’s approval. We celebrated Makar Sankranti by flying kites together with the family. My nephews have picked up this niche hobby quite well. They start scanning the afternoon skies to catch any drifting kites. Watching them upskill on kite flying encourages me to persevere in the challenges I face. I use the Anthropic API key in Opencode CLI as part of…

Review: 2026 Week #02 (Jan 5 - Jan 11)

Another relaxing week at home. Despite the uncharacteristic chilly weather, I cannot complain about the regular warm sunshine. After years of using the Moka Venus, I tried the traditional aluminium based Bialetti Moka on Monday. Brewing a cup of decent coffee on raw flame is still a work-in-progress. Few articles that I enjoyed reading: Think of Pavlov by Andrew Bosworth Do the same principle of…

Review: 2026 Week #01 (Dec 28 - Jan 4)

I travelled to India this week; mostly to spend time with my family, partly to escape a bit of the harsh Berlin winters. As I am not carrying my laptop with me, I spent most of the spare time reading Homer’s Odysseus translated to English by Emily Wilson. At home, I set up a new user account on my parent’s Mac Air for my dev env. These days I squeeze only about 1hr on this machine.…

Vim User Manual 12: Clever tricks

This chapter introduces few recipes for common editing tasks: Replace a word We can use the &ldquo;substitute&rdquo; command to replace all occurrences of a word with another. # Replace all occurrences of a word with another. :%s/from/to/g # Replaces all occurrences that start with a word. :%s/ \< from/to/g # Replaces all occurences that end with a word. :%s/from \> /to/g # Replaces all…

Topics in Mathematics with Applications in Finance

Chapter 2 through Chapter 6 introduce us to mathematical concepts that are of practical use in finance. Some of the topics discusses were: Linear Algebra Probability Stochastic Processes I snooze through them because: My focus is to learn simple practically useful finance topics. I&rsquo;m already familiar with these areas of university - thanks to my uni education. The presentation is extremely…

Vim User Manual 11: Recovering from a Crash

Vim provides resiliency against system crashes (either Vim crashes or the OS) through redundancy. This is achieved through the mechanism of &ldquo;swap files&rdquo;.

Vim User Manual 10: Making big changes

This chapter focuses on making either repeated changes or changes that affect a large amount of text. In a sense, this chapter compliments Chapter 4 . Macros Use . command to repeat just the preceding change. Use a macro to record and playback a sequence of commands. We need a register to record our macros. Here is how we do it: The &ldquo;q{register}&rdquo; command starts recording keystrokes…

Writing an Intepreter: Evalutation

The evaluation process of an interpreter defines how the programming language being interpreted works. Evaluation is the step which makes our AST meaningful. We encode the language specification in the interpreter. Thus, each intepreter has some room for &ldquo;interpretation&rdquo; to choose compute stategies. Ex: CPython is an interpreter of the Python programming language (or &ldquo;guest…

Vim User Manual 09: Using the GUI

Our terminal emulator is the default client when we run Vim. However, we can also choose to different GUI clients together with Vim. Neovide 1 is one such graphical Neovim client written in Rust. I have not tried it but I&rsquo;m curious to know when it might be a handy tool. We can configure our GUI client with a set of Vim options like guioptions . The MS-Window and X-Window systems use…

Are we stuck with the same Desktop UX forever?

The industry leaders are not leading the way for a better Desktop UX. Ex: Apple with &ldquo;Liquid Glass&rdquo;. Chronology: Xerox Star -> Macintosh -> Windows 1.0 -> Ubuntu Our current desktop environments have evolved through shameless (even proud) copying from existing systems. What if we don&rsquo;t have anything left to &ldquo;copy&rdquo;? The existing ecosystem is working as a…

Vim User Manual 08: Splitting windows

This chapter introduces the window management capabilities of Neovim. We can concurrently render multiple files (or buffers) in a combination of windows and tabs. Tabs allow us to declutter the viewport from complicated windows. I have not used Vim&rsquo;s Diff mode yet, but I definitely think investing time in this will be beneficial to augment the code generated by AI Coding Agents. Commands Use…

Vim User Manual 07: Editing more than one file

Vim allows us to edit multiple files in the same editing session. It does so with commands to jump from one file to the other. This is powerful as almost every project (software, knowledge base, manuals) is a collection of independent files with links between them. Personally, I almost always prefer a fuzzy-file finder tool like Telescope. But it is good to know the underlying mechanisms. The…

CPU Wars: Intel, Arm, NVIDIA, AMD & the Future

A clear and concise walk through the evolution of the Instruction Set Arch (ISA) in the CPU marketplace. Takeaways x86 arch (shared by Intel and AMD) dominates the Desktop and Server CPU marketplace. ARM arch dominates the Embedded and Mobile CPU Marketplace. RISC-V is expected to mature and grow in the Embedded and Mobile space. Processor requirements are evolving with demands for GPUs, TPUs.…

Retrospective: Advent of Code 2025

We only had 12 daily challenges this season. Regardless, I taught myself a bit of Kotlin. My approach was to follow functional design patterns as much as possible. Basically, pure functions and immutable data objects. I believe I need to solve more problems to get comfortable with Kotlin - perhaps a web service. My daily schedule involved waking up around 0600 - when the day&rsquo;s puzzle was…

Vim User Manual 06: Using syntax highlighting

Neovim automatically detects the &ldquo;file type&rdquo; of the currently opened file. It then loads the correct syntax highlighting for this file type. We also need to ensure that our terminal emulator of choice supports colors. Check the value of TERM env var about this. # On Ghostty $ echo $TERM xterm-ghostty # On Terminal.app $ echo $TERM xterm-256color We can explicitly specify the syntax we…

Advent of Code: Day 12

Wow! I could not even figure out a brute force approach to the problem. I am extremely curious about how intuit a solution. Please reach out if you figure something fun.

Vim User Manual 05: Set your settings

One of Vim&rsquo;s superpower is to customize it to our liking. In order to do so, we need to understand the tools Vim provides us: Mappings Packages Plugins Options A mapping enables us to bind a set of Vim commands to a single key. We can define these keyboard shortcuts as we see fit for our usecase. A package is a set of files that we can add to Vim. We have 2 kinds of packages based on how…

A Code Centric Journey Into the Gleam Language

Good pitch about Gleam. I have not build any web services with Gleam yet but now I&rsquo;m intrigued. Lustre + Squirrel look like promising tools to experiment with.

Advent of Code: Day 11

I could barely solve part 1 today. After modeling the problem as a graph, I needed to depth-first traversal. The algorithmic complexity of my solution for Part 2 was exponential.

Vim User Manual 04: Making small changes

This chapter presents the mechanisms that enable us to move text around within the same buffer and make corrections such as replacements . Vim provides 3 basic ways to change text: Operator-Motion Visual Mode Text Objects Operator-Motion It allows us to manipulate text that we can move over. Of course, we need to use one of the predefined text manipulation operator: d : Deletion c : Change y :…

Size of Life

Beautfiul illustrations to go with the relaxing background score. Keyboard accessibility is great too.

Advent of Code: Day 10

Similar story as yesterday. I was able to solve the first part eventually through a complicated approach, namely a BFS. But this approach did not work with part 2. So I make peace with 1 star again.

Advent of Code: Day 09

Part 1 lends itself nicely to bruteforce solution. I could not solve Part 2. My approach: Draw the polygon outline. Fill the polygon. Find the biggest rectangle with all the points colored (either red or green). My solution is stuck on filling the polygon on the actual input. Hopefully, I am able to solve this before the end of the AoC this year on Friday.

Vim User Manual 03: Moving around

This chapter is about moving the cursor within the current buffer. Commands General Use CTRL-G to find more information about where you are in the file. Use % to move between matching parenthesis ( (), {}, [] ) General Horizontal Movements Use w to move the cursor forward one word . Use b to move the cursor backward to the start of the previous word . Use e to move to the next end of a word. Use…

Vim User Manual 02: First Steps in Vim

Vim is a Modal editor - Normal, Insert, Command, and Visual, that is, the same editor behaves differently depending on the mode it is in. I prefer to use the Neovim statusline shows the current mode. In Normal Mode, we type commands. In Insert Mode, we type text. Vim displays the tilde ( ~ ) characters to indicate lines not in a file. Aside: The legendary programming limerick: &ldquo;A very…

Vim User Manual 01: About the Manuals

Vim provides 2 docs: The User Manual The Reference Manual I will be reading The User Manual (for now). The first chapter introduces the Vim Tutor, and navigation between documents with hyperlinks. It&rsquo;s still not clear to me what are good usecases for building hyperlinks using this approach. Commands Use CTRL-] and CTRL-O to jump around hyperlinks (aka &ldquo;tags&rdquo;) in a Vim Buffer.