41554 blogs · [ { "id": "01a08795-e606-711b-9345-8d0e52123ab1", "title": "Training a small model to write better OCaml with RLVR and GRPO", "url": "http://kirang.in/post/training-a-small-model-to-write-better-ocaml-with-rlvr-and-grpo/", "published_at": "2026-05-17T18:30:00+00:00" }, { "id": "01a08795-e606-711b-9345-8d0e52ce1103", "title": "Epicurus and Alternate Education", "url": "http://kirang.in/post/epicurus-and-alternate-education/", "published_at": "2025-11-18T05:57:15+00:00" }, { "id": "01a08795-e606-711b-9345-8d0e52f3d29d", "title": "Driving in Bangalore: A Guide", "url": "http://kirang.in/post/driving-in-bangalore/", "published_at": "2025-10-12T17:57:12+00:00" }, { "id": "01a08795-e606-711b-9345-8d0e539c60e1", "title": "John Cage’s 4’33”", "url": "http://kirang.in/post/john-cage-silent-piece/", "published_at": "2025-09-25T19:30:00+00:00" }, { "id": "01a08795-e607-716f-a289-03f2863d6f3a", "title": "Learning OCaml", "url": "http://kirang.in/post/learning-ocaml/", "published_at": "2025-09-07T07:45:28+00:00" }, { "id": "01a08795-e607-716f-a289-03f286461347", "title": "Practical Patterns for Coding with Cursor", "url": "http://kirang.in/post/working-with-cursor/", "published_at": "2025-08-20T20:37:38+00:00" }, { "id": "01a08795-e607-716f-a289-03f287366ab4", "title": "Tiny Models, Local Throttles: Exploring My Local AI Dev Setup", "url": "http://kirang.in/post/local-llm-setup/", "published_at": "2025-05-06T04:47:09+00:00" }, { "id": "01a08795-e607-716f-a289-03f287c0510c", "title": "Every school should have library periods", "url": "http://kirang.in/post/school-library-periods/", "published_at": "2024-10-21T10:20:21+00:00" }, { "id": "01a08795-e607-716f-a289-03f2882b2b13", "title": "Uses This", "url": "http://kirang.in/post/uses-this/", "published_at": "2024-06-05T05:51:14+00:00" }, { "id": "01a08795-e607-716f-a289-03f288e4ab55", "title": "Revamp and Resume", "url": "http://kirang.in/post/revamp-and-resume/", "published_at": "2024-05-30T10:21:28+00:00" }, { "id": "01a08795-e607-716f-a289-03f289e28c9a", "title": "Exploring gokibitz for embedding Go games", "url": "http://kirang.in/post/exploring-gokibitz-for-embedding-go-games/", "published_at": "2019-02-19T19:21:50+00:00" }, { "id": "01a08795-e607-716f-a289-03f28ac2b498", "title": "The Road to a Masterless Multinode Distributed System in Elixir", "url": "http://kirang.in/post/the-road-to-masterless-multinode-distributed-system-in-elixir/", "published_at": "2018-12-14T18:30:00+00:00" }, { "id": "01a08795-e607-716f-a289-03f28ba2ca4c", "title": "What I Love About Go/Baduk", "url": "http://kirang.in/post/what-i-love-about-baduk/", "published_at": "2018-10-24T18:30:00+00:00" }, { "id": "01a08795-e607-716f-a289-03f28bda5dac", "title": "Stuff I did in 2016", "url": "http://kirang.in/post/stuff-i-did-in-2016/", "published_at": "2016-12-30T18:30:00+00:00" }, { "id": "01a08795-e607-716f-a289-03f28be94265", "title": "Setting up Org-mode to run Clojure code", "url": "http://kirang.in/post/setting-up-org-mode-to-run-clojure-code/", "published_at": "2016-07-17T18:30:00+00:00" }, { "id": "01a08795-e607-716f-a289-03f28c61b49a", "title": "My eshell prompt setup", "url": "http://kirang.in/post/eshell-prompt-setup/", "published_at": "2016-06-19T18:30:00+00:00" }, { "id": "01a08795-e607-716f-a289-03f28ca94bad", "title": "Creating a simple stack-based language in Clojure", "url": "http://kirang.in/post/creating-a-simple-stack-based-language-in-clojure/", "published_at": "2016-04-03T18:30:00+00:00" }, { "id": "01a08795-e607-716f-a289-03f28cc1f019", "title": "Using records in Clojure", "url": "http://kirang.in/post/using-records-in-clojure/", "published_at": "2016-02-23T18:30:00+00:00" }, { "id": "01a08795-e607-716f-a289-03f28db67318", "title": "Implementing Norvig's Spelling Corrector in Clojure", "url": "http://kirang.in/post/implementing-norvigs-spelling-corrector-in-clojure/", "published_at": "2016-02-02T18:30:00+00:00" }, { "id": "01a08795-e607-716f-a289-03f28ea347d7", "title": "Rationals vs Decimals in Clojure", "url": "http://kirang.in/post/rationals-vs-decimals-clojure/", "published_at": "2016-01-29T18:30:00+00:00" }, { "id": "01a08795-e607-716f-a289-03f28f656bea", "title": "Books I read in 2015", "url": "http://kirang.in/post/books_read_2015/", "published_at": "2015-12-28T18:30:00+00:00" }, { "id": "01a08795-e607-716f-a289-03f2901fee63", "title": "Concurrent Prime Sieve in Clojure", "url": "http://kirang.in/post/concurrent-prime-sieve-in-clojure/", "published_at": "2015-12-27T18:30:00+00:00" }, { "id": "01a08795-e607-716f-a289-03f290e190e4", "title": "Useful AWK one-liners", "url": "http://kirang.in/post/useful-awk-one-liners/", "published_at": "2015-12-14T18:30:00+00:00" }, { "id": "01a08795-e607-716f-a289-03f29187d74f", "title": "Setting up org-mode pdf export in OS X ElCapitan", "url": "http://kirang.in/post/setting-up-org-mode-pdf-export-in-osx-elcapitan/", "published_at": "2015-11-29T18:30:00+00:00" }, { "id": "01a08795-e607-716f-a289-03f292689032", "title": "Fetching data with a raw SQL query in SQLAlchemy", "url": "http://kirang.in/post/fetching-data-with-raw-sql-query-in-sqlalchemy/", "published_at": "2015-11-21T18:30:00+00:00" }, { "id": "01a08795-e607-716f-a289-03f292f12ec6", "title": "Different applications of reduce in Clojure", "url": "http://kirang.in/post/different-applications-of-reduce-in-clojure/", "published_at": "2015-11-14T18:30:00+00:00" }, { "id": "01a08795-e607-716f-a289-03f293c8dc4e", "title": "CS Reading: Computer Programming as an Art", "url": "http://kirang.in/post/cs-reading-computer-programming-as-an-art/", "published_at": "2015-07-30T18:30:00+00:00" }, { "id": "01a08795-e607-716f-a289-03f2940916d6", "title": "Setting up ACL in Mosquitto using Postgres", "url": "http://kirang.in/post/setting-up-acl-in-mosquitto-using-postgres/", "published_at": "2015-05-22T18:30:00+00:00" }, { "id": "01a08795-e607-716f-a289-03f294da2c2a", "title": "Emacs as email client with offlineimap and mu4e on OS X", "url": "http://kirang.in/post/emacs-as-email-client-with-offlineimap-and-mu4e-on-osx/", "published_at": "2014-11-12T20:36:44+00:00" }, { "id": "01a08795-e607-716f-a289-03f2952d4754", "title": "Integrating mogenerator in your XCode project", "url": "http://kirang.in/post/integrating-mogenerator-in-your-xcode-project/", "published_at": "2014-08-27T09:23:00+00:00" }, { "id": "01a08795-e607-716f-a289-03f2961b796d", "title": "Creating a Mutable Array data type in sqlalchemy", "url": "http://kirang.in/post/creating-a-mutable-array-data-type-in-sqlalchemy/", "published_at": "2014-08-08T18:30:00+00:00" }, { "id": "01a08795-e607-716f-a289-03f29709b9f6", "title": "Dealing with ISO 8601 dates in Python", "url": "http://kirang.in/post/dealing-with-iso-8601-dates-in-python/", "published_at": "2014-04-10T12:25:00+00:00" }, { "id": "01a08795-e607-716f-a289-03f297b1b600", "title": "Brain and Memory", "url": "http://kirang.in/post/brain-and-memory/", "published_at": "2014-03-03T07:49:00+00:00" }, { "id": "01a08795-e607-716f-a289-03f297fa0f0c", "title": "Testing your Galaxy S2 i9100 after flashing a new ROM", "url": "http://kirang.in/post/testing-your-galaxy-s2-i9100-after-flashing-a-new-rom/", "published_at": "2014-02-23T13:52:00+00:00" }, { "id": "01a08795-e607-716f-a289-03f2986f4a70", "title": "Documentaries I've watched", "url": "http://kirang.in/post/documentaries-ive-watched/", "published_at": "2014-02-20T13:53:00+00:00" }, { "id": "01a08795-e607-716f-a289-03f298b74393", "title": "My Automation Recipes", "url": "http://kirang.in/post/my-automations-recipes/", "published_at": "2014-01-29T13:43:00+00:00" }, { "id": "01a08795-e607-716f-a289-03f29961911d", "title": "Books and Short Stories I read in 2014", "url": "http://kirang.in/post/books-i-read-in-2014/", "published_at": "2014-01-15T18:58:00+00:00" }, { "id": "01a08795-e607-716f-a289-03f2997a1b5e", "title": "The Unix Philosophy - A Summary", "url": "http://kirang.in/post/the-unix-philosophy-summary/", "published_at": "2013-12-12T15:15:00+00:00" }, { "id": "01a08795-e607-716f-a289-03f29a20fb20", "title": "Installing PIL on Mac OSX Mavericks", "url": "http://kirang.in/post/installing-pil-on-mac-osx-mavericks/", "published_at": "2013-12-09T06:43:00+00:00" }, { "id": "01a08795-e607-716f-a289-03f29af5a01d", "title": "Writing good Classes in Python", "url": "http://kirang.in/post/writing-good-classes-in-python/", "published_at": "2013-12-02T03:08:00+00:00" }, { "id": "01a08795-e607-716f-a289-03f29b3e3f5f", "title": "Setting up Jenkins as a watchdog for your Python application", "url": "http://kirang.in/post/setting-up-jenkins-as-a-watchdog-for-your-python-application/", "published_at": "2013-11-28T14:49:00+00:00" }, { "id": "01a08795-e607-716f-a289-03f29be90895", "title": "What makes a great API?", "url": "http://kirang.in/post/what-makes-a-great-api/", "published_at": "2013-11-07T17:29:00+00:00" }, { "id": "01a08795-e607-716f-a289-03f29cc999f6", "title": "A guide to Visual Design", "url": "http://kirang.in/post/a-guide-to-visual-design/", "published_at": "2013-10-30T06:14:00+00:00" }, { "id": "01a08795-e607-716f-a289-03f29d96fd1e", "title": "An Eventful September", "url": "http://kirang.in/post/an-eventful-september/", "published_at": "2013-10-03T13:21:00+00:00" }, { "id": "01a08795-e607-716f-a289-03f29df93e55", "title": "Building an open-source Python application the right way", "url": "http://kirang.in/post/building-an-open-source-python-application-the-right-way/", "published_at": "2013-09-09T17:14:00+00:00" }, { "id": "01a08795-e607-716f-a289-03f29e51cb60", "title": "Familiarising yourself with a large codebase", "url": "http://kirang.in/post/familiarising-yourself-with-a-large-codebase/", "published_at": "2013-09-05T21:26:00+00:00" }, { "id": "01a08795-e607-716f-a289-03f29ea4e728", "title": "Deploying a Django application on Elastic Beanstalk using S3", "url": "http://kirang.in/post/deploying-a-django-application-on-elastic-beanstalk-using-s3/", "published_at": "2013-08-20T00:50:00+00:00" }, { "id": "01a08795-e607-716f-a289-03f29ef9b308", "title": "Web Typography checklist", "url": "http://kirang.in/post/web-typography-checklist/", "published_at": "2013-08-14T06:36:00+00:00" }, { "id": "01a08795-e607-716f-a289-03f29effb9bc", "title": "What is Python Month?", "url": "http://kirang.in/post/what-is-python-month/", "published_at": "2013-07-23T11:32:00+00:00" }, { "id": "01a08795-e607-716f-a289-03f29f95f665", "title": "JVM Profiling Disclosures", "url": "http://kirang.in/post/jvm-profiling-disclosures/", "published_at": "2013-05-21T21:25:00+00:00" }, { "id": "01a08795-e607-716f-a289-03f2a048e089", "title": "Installing pylibmc in ubuntu", "url": "http://kirang.in/post/installing-pylibmc-in-ubuntu/", "published_at": "2013-05-21T20:46:00+00:00" }, { "id": "01a08795-e607-716f-a289-03f2a0717be3", "title": "Type and Object in Python", "url": "http://kirang.in/post/type-and-object-in-python/", "published_at": "2013-05-21T20:29:00+00:00" }, { "id": "01a08795-e607-716f-a289-03f2a0a488e7", "title": "Make your open source project documentation suck less", "url": "http://kirang.in/post/make-your-open-source-project-documentation-suck-less/", "published_at": "2013-05-07T11:25:00+00:00" }, { "id": "01a08795-e607-716f-a289-03f2a116f27b", "title": "My Sublime workflow", "url": "http://kirang.in/post/my-sublime-workflow/", "published_at": "2013-05-04T08:14:00+00:00" }, { "id": "01a08795-e607-716f-a289-03f2a1a63853", "title": "Hello World!", "url": "http://kirang.in/post/hello-world/", "published_at": "2013-05-03T09:08:00+00:00" }, { "id": "01a08795-e607-716f-a289-03f2a2a3f8f4", "title": "Kiran Gangadharan", "url": "http://kirang.in/about/", "published_at": null } ] posts Claim your blog
Back to kirang.in
Blog · corpus.blog/blogs/kirang.in/posts

kirang.in

kirang.in

2026

2025

2024

2019

2018

2016

2015

2014

2013

Undated