Blog Archive 2025 14 October 2025 Artisanal shims for the bitter lesson age 25 September 2025 What are popular AI coding benchmarks actually measuring? 17 September 2025 The common sense unit of work 15 September 2025 The quality of AI-assisted software depends on unit of work management 5 September 2025 My Quarterly System Health Check-in 12 August 2025 Why Does AI Feel So Different? 23 June 2025 How I keep up with AI progress 29 May 2025 AI-assisted coding for teams that can't get away with vibes 27 May 2025 Experimenting with Self-Hosted LLMs for Text-to-SQL 15 May 2025 Exploring RAG based approaches for Text-to-SQL 12 May 2025 MCP explained without hype or fluff 8 May 2025 A database optimisation story 6 May 2025 Tiny Models, Local Throttles: Exploring My Local AI Dev Setup 30 April 2025 Text-to-SQL with GenAI: A Practical Exploration 30 January 2025 My GenAI workflow for building a voice assistant 13 January 2025 I built an AI prototype that can participate in our internal meetings 2 January 2025 A ‘systems thinking’ approach to saving lives from heart attacks and strokes 2024 30 December 2024 Thoughts on tldraw computer 24 December 2024 Good enough data 13 September 2024 A caution against ephemeralization 5 March 2024 We, the Citizens and Systems Thinking 13 January 2024 Leaky Bucket Rate Limiting 2023 10 November 2023 Spreadsheets and Small Software 7 October 2023 A Software Analogy 20 March 2023 FOSSMeet 2023: The brazen indifference for Free Software, because people think Something Else is more important. 2022 8 November 2022 small-stalk: Beanstalkd in Clojure 7 August 2022 Everyday Recipes for Cooking Noobs 2020 2 January 2020 Offline-first apps are appropriate for many clinical environments 2019 4 October 2019 Training, the Simple way 4 September 2019 From wings to cups 1 February 2019 India has a Three-Body Problem 2018 13 August 2018 Fast Sudoku Solver in Haskell #3: Picking the Right Data Structures 11 July 2018 Fast Sudoku Solver in Haskell #2: A 200x Faster Solution 28 June 2018 Fast Sudoku Solver in Haskell #1: A Simple Solution 23 May 2018 Finances in an Employee-Owned Technology Co-operative 9 April 2018 Designing for Open Source Software 2017 1 October 2017 Writing a Simple REST Web Service in PureScript - Part 2 29 September 2017 Writing a Simple REST Web Service in PureScript - Part 1 12 September 2017 Gunak — Designing with the Indian Government 5 May 2017 Designing for Rural India — Part 1 6 April 2017 Black Mirror*, or a review of the review process at a software co-operative 14 February 2017 nilenso policies: by the people, for the people 2016 16 May 2016 "I have cramps." 12 May 2016 Threading macros in clojure 1 March 2016 Suggestions: Conferences and festivals 16 February 2016 HOWTO: Bicycle Commute in Bangalore 20 January 2016 How do Vipassana centres in India differ? 2015 6 December 2015 Bangalore 2030 30 June 2015 How to Co-op: Salaries & Reviews 23 June 2015 Patient Charts 11 June 2015 Emergent-Continuous Design 9 June 2015 How To Recycle 22 January 2015 Drugs, meditation, warnings. 2014 19 November 2014 Huh? A software cooperative? 6 November 2014 Welcome, gratitude. 24 January 2014 Functional Programming 101 - With Haskell 2013 30 October 2013 How to Disable the Google Hangouts Menu Bar Icon on OS X 16 September 2013 Octopress, Planet.rb and the Nilenso Blog 15 September 2013 gimp tito 10 September 2013 Android Development - Harnessing powers of MVP 8 September 2013 You probably shouldn't be nesting your CSS 3 September 2013 Building an offline survey tool for Rural India 13 August 2013 Encrypt Your Emails on OS X 11 July 2013 Pow Over HTTPS 10 July 2013 Using RoboGuice to Inject Views Into a POJO 24 June 2013 Recursive Postgres Queries 9 May 2013 Turning Your Local Git Repo Into a Remote 1 May 2013 Writing Custom RSpec Matchers 28 April 2013 YAML Serialization for Delayed Job 12 April 2013 Changing the Server Timeout on EngineYard 7 April 2013 Use Lambdas for Date-based Rails Scopes 5 April 2013 Using Swipe.js to swipe between pages of a web app 13 February 2013 An Atheist's Glimpse of God 2012 25 March 2012 zero to emacs in under 5 minutes 2011 20 June 2011 GSoC - 1 & 2 26 May 2011 GSoC 2011 - 0 17 May 2011 "Open Containing Folder" for EoG and gedit 2008 10 June 2008 Tech Leaderisms. 9 June 2008 The C# expatriate: Tips for settling in Java. 22 February 2008 Rock the shortcuts. 6 February 2008 Outdone. 6 February 2008 Devcamp Bangalore, Barcamp Pune! 3 February 2008 Testing strange web applications using Selenium? Take note. 3 February 2008 How to be succinct.