Category: Articles

  • Stage Manager on Ventura Has Made Me More Focused and Less Stressed

    By automatically taking care of window management, Stage Manager eliminates information overload and allows me to focus on the task at hand.

  • Bet­ter Hindi Typ­ing on Win­dows Using De­vana­gari QW­ERTY

    If you want to start using Devanagari QWERTY on your Windows computer right away, visit https://github.com/s3thi/devanagari-qwerty and follow the instructions in the README. For more context, read on. My Preferred Keyboard Layout for Typing Devanagari For nearly a decade, my preferred method for typing Hindi has been a keyboard layout called Devanagari QWERTY. This layout maps each Latin…

  • In­side My Anx­ious Brain

    I wrote the following text two years ago while lying motionless on my bedroom floor. My anxiety was the worst it had ever been, leaving me unable to perform even basic everyday tasks like brushing my teeth or taking a bath. I forced myself to write this down because I wanted to remember what it…

  • Rust is Hard

    Lowering my expectations of how good I’ll ever get at writing Rust.

  • Emacs Sparks Joy

    Emacs is a tinkerer’s dream, a creative outlet that provides endless hours of entertainment and joy.

  • Cooking (North) Indian Food

    While health officials have said that COVID-19 doesn’t spread through food, especially if you heat it properly before consuming, I haven’t felt comfortable ordering food from restaurants since the government announced the lockdown in March. This means Ankush and I have been cooking all our own meals for the last two months. I’ve cooked for…

  • GoAccess

    CloudFlare recently informed me that this website was getting thousands of hits every day, which is an unusual occurrence. I pulled up Google Analytics to figure out where all that traffic was coming from, only to be informed that I was getting three to four hundred daily visitors at most. This felt a bit suspicious,…

  • E-Commerce Case Study: Building Faster Listing Pages on abof.com (Part 3)

    This case study was first published on the Alaris Prime blog on January 4, 2017. You can read the original case study here. Part 1 of this case study was a general overview of how the Alaris Prime team rebuilt abof.com to load almost instantly even on flaky mobile connections, and part 2 was an account…

  • E-Commerce Case Study: Building Faster Listing Pages on abof.com (Part 2)

    This case study was first published on the Alaris Prime blog on October 6, 2016. You can read the original case study here. If you haven’t read the first part of this case study, I suggest you go check it out before diving into the second part. It’s a quick read that explains in detail…

  • E-Commerce Case Study: Building Faster Listing Pages on abof.com (Part 1)

    This case study was first published on the Alaris Prime blog on June 8, 2016. You can read the original case study here. abof.com (pronounced ae-boff dot com) is an online fashion store that’s part of Aditya Birla Group’s e-commerce strategy. Earlier this year, the company brought in the Alaris Prime team along with Ciju…

  • Seven Languages in Seven Weeks, Week 2: Io

    Designed by Steve Dekorte, Io is a small, embeddable programming language that borrows its prototype-based object model from Self, its purely object-oriented nature from Smalltalk, and its homoiconicity from Lisp (although, unlike Lisp, it doesn’t use s-expressions to represent programs). The language is such a mind-expanding experience that I have now spent way more than…

  • Seven Languages in Seven Weeks, Week 1: Ruby

    In an attempt to get back into programming language theory and implementation—a hobby I’ve neglected since I started working full-time—I recently started reading Bruce Tate’s Seven Languages in Seven Weeks. These are my notes and observations from my first week of study. In week 1, Bruce introduces Ruby, drawing attention to its dynamic nature, expressive…

  • WordPress is Maximum Cool

    If you dig into my post history on this blog, you’ll find I’ve written a lot about blogging platforms. When I started writing a blog, back in the day before memes and Snapchat, I got myself an account on WordPress.com because that’s what you did in those times. Well, okay, you could also set up…

  • create-react-app and the Pit of Success

    On May 18, the create-react-app team announced the release of v1.0 of the project. As always, a bunch of new features made it into the release, notable ones being a new version of Webpack, support for turning your app into a PWA using the ServiceWorker API, and support for bundle splitting using dynamic import()s. If you…

  • Migrating from Jekyll to Medium

    I recently migrated my self-hosted Jekyll blog to Medium. I have no specific reason for choosing Medium, except that it’s in vogue in the communities I follow. I don’t have strong opinions about blogging platforms. What follows is a quick account of how I made the transition. Step 0: Set Up a Medium Publication This…

  • Build a Sampler with Angular 2, WebAudio, and WebMIDI, Lesson 1: Introduction to the WebAudio API

    As I usually do after wrapping up a long-term consulting project, I recently took a long break from work to level-up my programming skills. On my list of technologies to muck around with were Angular 2, TypeScript, and RxJS. I like to have a small, fun project to hack on when I’m learning a new…

  • Book Review: The Essence of Camphor by Naiyer Masud

    The Essence of Camphor is a collection of short stories by Naiyer Masud, considered one of the foremost Urdu short-story writers in India. This collection contains English translations of ten of his stories. This is not the sort of book I would have picked up on my own. It was Pratul who urged me to…

  • 2013: Year in Review

    The Good The Bad The Ugly The Highlights Unlockments Achieved What Next? There were several goals that I couldn’t achieve in 2013. I’d like to tackle them again this year. Besides these leftover goals from last year, I have some new goals for this year. Have a happy new year, folks. Make it one worth…

  • Loading Spinners With AngularJS and Spin.js

    Spin.js is a tiny JavaScript library that helps you create beautiful loading spinners on every web browser up from IE6. It is highly customizable, fast, and has zero dependencies. I’m using it in my AngularJS application to display loading spinners inside my ng-views while my REST API responds with the data the view needs to…

  • Simulating a Slow Internet Connection

    I am currently working on a single page web application written with AngularJS that communicates with a REST API written with Django and Tastypie. Since I run both the client and the server locally on my machine, every HTTP request that my AngularJS application makes receives a response from the REST API in tens of…

  • An Introduction to CMake

    GameDev.net recently published a four-part series on writing cross-platform build systems with CMake. The series first covers the very basics of CMake, followed by a tutorial on how to add unit-tests to your codebase using googlemock. Parts 1, 2, 3, 4. (Edit: with the release of CMake 2.8.11, a fifth part was recently added.) I…

  • All About Iteration

    Bob Nystrom’s two-part blog post about iteration in programming languages includes perhaps the clearest explanation of coroutines I have read so far. It begins with an exploration of how iteration is implemented in mainstream programming languages, and goes on to talk about internal and external iterators, the yield statement in C# and Python, the callstack,…

  • Tastypie and Timezones

    If you use Tastypie with Django’s timezone support turned on (i.e, you have USE_TZ = True in your settings.py), you will notice that Tastypie helpfully converts all dates and times in your resources to the timezone specified in your TIME_ZONE setting before returning them. If you care about internationalization, this is not the behavior you…

  • Travel Light

    Year 2011. Lines of elisp in .emacs: 145. Lines of configuration in .vim: 115. Year 2013. Lines of configuration in .vim: 0. Lines of JSON in Sublime Text configuration: 0. This is so much better.

  • WordPress: Under Siege

    As I mentioned in my last post, I recently switched my website from my homegrown Django blogging app to WordPress. Before installing WordPress on my VPS, I installed it on a VM so I could test the waters before jumping in. I created an Ubuntu 12.04 VM using VirtualBox and gave it a gigabyte of…