Note: This was originally posted on the nilenso blog . 
 
 For a while now, I’ve been interested in exploring the capabilities of small language models . When my colleague Atharva introduced me to RLVR and GRPO for doing RL training without a human feedback loop, I wanted to know more. 
 In the previous post , we explored the workings of RLVR and GRPO. In this post, I’ll walk…
Education has always been associated with a good career, wealth, cultural and societal status. Do well in school to get into a good college, then do well in college to get a good job, and finally work hard to build a long career and become rich. Many of us go through these stages without understanding ourselves, our character, purpose or role in this world, all of which shapes who we truly are.
If you are new to Bangalore or have just got your license, here are a few key principles to keep in mind when driving in Bangalore. Following them is what separates a good driver from a truly great one. Look forward to all the compliments and thumbs up from your fellow passengers! 
 
 
 Adhering to traffic lights is strictly optional — think of them as gentle suggestions. If you…
Today I learned about John Cage, the composer, and listened to his famous but controversial 4'33 piece . If you haven’t heard of it before, this is Cage’s famous silent piece, premiered in 1952 at a concert in Woodstock, New York. You can watch it here . 
 I had a little context so I made a lucky guess that the point of the performance was the act of listening to it. But it was…
Learning a new programming language has always been a fun exercise. It often provides a new perspective for thinking about programs and reveals insights into the design decisions and trade-offs in terms of what is simple and what is easy . 
 My first introduction to the ML Family of languages was through the highly recommended Programming Languages course series by Dan Grossman . This course…
I’ve been using Cursor consistently for the past 6 months across different languages and stacks. Along the way, I’ve noticed a few patterns to make it much more effective for coding, planning, and documentation. 
 I make no promise of a 10x productivity boost at the end (there’s plenty of that on X.com, much to my annoyance). These are tried-and-tested mental models that have…
I’ve been exploring how small, open-source language models can fit into a local development setup to improve how I work day-to-day. There’s something satisfying about building a lightweight, responsive system that runs entirely on your own machine. This post is a practical guide to using tiny models with just enough tooling to throttle things locally, and run smarter without adding complexity.…
Developing a reading habit from early childhood is crucial. It fosters a lifelong connection with
books, which is increasingly important in a world dominated by passive consumption of short-form
content. Developing a reading habit today is hard work and challenging. 
 Traditional schooling does very little in this regard. Any reading is pedagogical and aligned with
some incentive:…
It’s been a while since I last wrote anything. I’ve had a few ideas, but I ended up procrastinating and avoiding the work. 
 Recently, I’ve been thinking of doing deliberate practice to improve my writing, and this provided a good enough reason to break out of the procrastination loop and start publishing again. 
 Before writing this post, I revamped my blog by updating…
I’m experimenting with embedding kifus of my games using gokibitz . It also shows you the comments, if any, that people have made per move. For example, here’s the kifu of a game I lost ( pretty badly IMO ). 
 
 I failed to balance territory with influence, which my opponent took advantage of, as you may have noticed.
My first conference talk presented at Functional Conf 2018 ! Yay! 
 I co-presented this with my colleague Udit . This talk is about our journey building a masterless multi-node distributed system in Elixir. It covers the problems we faced, how we dealt with them and the lessons learnt in the process. 
 
 I’m grateful to nilenso for providing me with the opportunity to work on…
I hadn’t thought about Go or even played it until recently, when a colleague of mine who worked at nilenso raved about the elegance of the game. He mentioned Cho Chikun’s book to be an excellent introduction when I enquired further. Given that we had the book in our library, I decided to give it a read. By the end of it, I was fascinated not just by the beauty and elegance of the game, but also…
Books 
 The Power of Habit 
 Quite an eye opener. Looking forward to re-reading this sometime soon. 
 Dreaming in Code 
 Highly recommended read for any software developer. 
 Clojure for the Brave and True 
 The Joy of Clojure 
 My love for Clojure has grown substantially, thanks to this read. 
 The Catcher in the Rye 
 In Other Words 
 Jhumpa Lahiri talks…
I wanted to be able to store interesting clojure snippets in an org file and
then execute and play with them without leaving the
file. In this post, I’ll illustrate the steps needed to achieve the same. I am
assuming that you’ve already setup Emacs with org-mode and cider. 
 First, start by installing the ob-clojure package: 
 M-x package-install
ob-clojure
…
Let’s look at how to build a simple stack-based language in Clojure. First, this
is how the input would look like: 
 push 8
push 4
+
push 3
*
 
 This would be equivalent to (in infix notation): 
 (8 + 4) * 3
 
 Here is a simple parser-cum-evaluator for the above input: 
 
 
 1
 2
 3
 4
 5
 6
 7
 8
 9
…
When to use: 
 
 Fixed set of keys in multiple map instances 
 Defer until you have protocols 
 
 Pros 
 
 Created quickly 
 Less memory overhead 
 Key lookup performance same/faster when compared to equivalent hash-maps 
 Can implement protocols 
 Generated class has a type that can be used to dispatch methods using multimethod 
 
 Cons 
…
I wanted to try something small in Clojure as an exercise, and so I decided to
implement Norvig’s spelling corrector 
(which is an elegant Python implementation btw). Being a clojure newbie, it was a bit frustating to
figure out an idiomatic solution, but I think I’ve managed a decent
implementation. It was fun! :) 
 
 
 1
 2
 3
 4
 5
…

 Use rationals if accuracy is your main concern. For example, operations on
decimals are not associative. 
 
 
 
 1
 2
 3
 4
 
 
 ( let [ a 1.0 e50 
 b -1.0 e50 
 c 17.0 e00 ]
 ( = ( + ( + a b ) c ) ( + a ( + b c )))) ; => false 
 
 
 From the above example, one can infer that decimals are subjected to Floating
Point…

 Zen Pencils: Cartoon Quotes from Inspirational Folks 
 
 Recommended for: Everyone. This should definitely be on everyone’s reading
list. No excuses. 
 
 The Age of Reason 
 
 Recommended for: folks who’ve never put serious thought into the writings in
religious scriptures. This book teaches you the need for thinking for
yourself. 
 
…
While watching the
 Go Concurrency Patterns talk by
Rob Pike, I came across a
 Concurrent Prime Sieve implementation in Go which
Rob had claimed to be beautiful concurrent code. Curious enough, I checked out
the example and decided on implementing it in Clojure. 
 Let’s begin by creating an infinite sequence generator(starting from 2): 
 
 
 1
 2
…
While reading
 Masterminds of Programming I
came across the interview with Alfred Aho and his thoughts about the design of
the AWK programming language. I’ve always known about the existence of awk, but
have never really felt the urge to dive in. Then I came across this sentence: 
 
 If I had to choose a word to describe our centering forces in language…
Basic TeX 
 Download and install Basic TeX package from here . 
 Set System Path 
 The package will be installed at /Library/TeX/texbin/ , so it
must be added to your PATH like so: 
 
 
 1
 
 
 export PATH = $PATH :/Library/TeX/texbin
 
 
 Run which latex to ensure that the path has been set correctly. 
 Install Dependencies 
…
The following is a sane way of fetching data using a raw SQL query in
SQLAlchemy: 
 
 
 1
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 
 
 
 query = 'select * from books where author=:author' 
 
 from sqlalchemy import text
 result = yoursession . execute(text(query), { 'author' : 'Neil…
I’ve just started learning Clojure using
 Clojure for the Brave and True and solving
problems on 4Clojure . While doing so, I’ve noticed
that a lot of problems that seem tricky can be quickly solved using clojure.core/reduce . 
 This post is an effort to document some snippets to demonstrate how useful reduce can be. 
 Reverse a collection 
 
 
 1
…
Paper: Computer Programming as an Art 
 Author: Donald E.Knuth 
 In this paper, Prof Knuth tries to highlight what Art and Science
mean, and how history has often failed to understand it. He talks
about the etymology of “Art”. He mentions how we used science and art
in the same sense in the earlier times, and how the differences slowly
started evolving to the…
Lately, I’ve been playing around with Mosquitto and MQTT in
general. Something that is essential to prevent unauthorized access to
topics is some sort of an access control mechanism. In this post, I’ll
illustrate the necessary steps for setting up an ACL(Access Control
List) using Postgres and mosquitto-auth-plugin . 
 Install Dependencies 
 sudo apt-get install…
Introduction 
 For something as trivial and important as email, it annoys me that I
feel uncomfortable with any client I use. I’ve tried the Gmail
interface, Mail.app, Airmail and Mailbox, but somehow I haven’t found
myself entirely comfortable using any of these. What I’m looking for
is a client that is easy to shoot up, quick to navigate between…
Every iOS app you build would require some sort of storage functionality
within the device itself, especially if it caches data fetched from the
network. Core
Data ,
an object graph management framework developed by Apple will mostly
likely be your choice in this regard. In that case, a tool like
mogenerator is indispensable.
The problem with using the ARRAY datatype in sqlalchemy is that it’s
immutable. This means it isn’t possible to add new data into array once
it has been initialised. Unfortunately, I couldn’t find any
good solution to create mutable arrays until I came across this snippet
by Michael Bayer, the author of sqlalchemy himself: 
 
 
 1
 2
 3
…
Brain is one of the most complex organ in our body; and by complex I
don’t mean it’s ability in controlling various functions of our body,
rather it’s ability to randomly store and retrieve humongous amounts of
information in no time.
After a bit of boredom and a morbid desire to play with KitKat ROM’s for
my Galaxy S2, here I was, pulling through the day without realising how
much time I poured into getting the latest Cyanogenmod 11 nightly
working on my phone. It took patience, some restarts, some flashings,
some more restarts, and a plethora of network bandwith wastefulness, to
finally get my phone…
Send text files from Dropbox to Evernote http://zpr.io/gwfA 
 Create a Wordpress Draft Post from Evernote - http://zpr.io/gwfu 
 Send link of a newly created Gist to
Evernote - http://zpr.io/gwfb 
 Save my starred GitHub repositories to
Evernote - https://ifttt.com/recipes/143039 
 Add Evernote link for YouTube videos to watch
later - https://ifttt.com/recipes/143040…

 The Yellow Wallpaper by 
Charlotte Perkins Gillman 
 The Old Man and the Sea by 
Hemingway 
 How to Read Faster and Recall More by Gordon Wainwright 
 The Raid: A Volunteer’s Story by Leo Tolstoy 
 Moonwalking with Einstein by 
Joshua Foer 
 Surely You’re Joking, Mr Feynman by Richard P. Feynman 
 


 Rule of Modularity : Write simple parts connected by clean
interfaces. 
 Rule of Clarity : Clarity is better than cleverness. 
 Rule of Composition : Design programs to be connected to other
programs. 

If you’ve probably tried installing PIL(Python Imaging
Library) on OSX
Mavericks(version 10.9), you’re likely to have failed in doing so. After
searching for a while, I found the solution that worked for me.
This post is the highlight of Raymond Hettinger’s talk “ Python’s Class
Development
Toolkit ”
at PyCon US 2013. 
 Things to keep in mind while writing Classes: 
 
 Inherit from object() 
 Instance variables for information unique to an instance 
 Class variables for data shared among all instances 
 Regular methods need self to operate on…
In order to facilitate an efficient collaboration amongst developer
teams, it is very important to keep the development workflow as simple
and straightforward as possible. Version Control is one tool that helps
with this. Continuous Integration is another one. Below, I’ll illustrate
the steps needed to configure a basic Python application with
 Jenkins , a CI server that…
We are slowly moving towards a completely api-fied world. All the common
services that we used to find so hard to deal with a few years back,
have become super easy thanks to introduction of API’s. Today, every
other person/business out there is developing an API to make an XYZ
service more awesome (and gain some developer love). Hence, it is
important to understand the…
Making something complex so simple is really hard. And this holds true
even for visual design. It’s easier to screw up visual design and create
a mess, than you think. That being said, I’ll highlight a few points
about good visual design practices that I’ve learnt below:
Looking back at September, it’s probably been one of the most happening
months for me in this year. Well, at least technically. I will try and
recollect some bits from the eventlog here.
If you love Python and love open source like I do, you’d probably be
open sourcing something new every day/week/month. Sure that there are
quite a lot of articles online that tell you the best practices of
writing Python code, testing, packaging, distributing etc, I haven’t
really found a good article that highlights what are the best
practices/conventions to be…
I’m sure that a lot of developers find it harder to read existing code
and understand the ideals behind it, rather than writing it from
scratch, themselves. I too have this same problem, and so started
looking around online as to how people have dealt with it. I’ve compiled
some good answers from various sources, below: 
 
 Try and understand at a high level,…
This post was born out of the pain to get a sample django application,
configured properly, using Amazon S3 for serving static files, to run
on AWS Elastic Beanstalk. I encountered many errors on the way, but
finally managed to get a full fledged application running successfully.
I am gonna try and highlight the key steps here to help you get your
project up and running in no…
The following is a note-to-self checklist for web typography: 
 
 Use web-safe fonts 
 Use font-stacks 
 Limit to 2 or 3 fonts 
 Ensure good letter and word spacing 
 Take care of line-height 
 Make sure content is aligned (check line breaks) 
 Set proper typographical hierarchy 
 Differenciate hyperlinks appropriately 
 Resolve conflicts of contrast 
…
PyCon India , the premier conference in India
on using and developing the Python programming language is conducted
annually by the Python developer community, and represented by the
Python Software Society of India. The conference attracts the best
Python programmers across the country and abroad.
Well, I’ve never actually given importance to the term ”profiling” till
a few days ago. The real deal was that I was just too lazy to actually
run a profiler and then to try interpret the stats and hopefully find
the bottleneck in the code. So to avoid all this hassle, I tried to be
careful while writing code to make sure I don’t leave any open doors for
memory leaks or poor…