Voice input for capture I tried using the FUTO keyboard for a while, but it’s not working as well as I would like it. And opening Orgzly and typing in a heading, and content seems like too much work. I created (using Claude Code) a script now that creates a voice note for me, which is pushed to my server and can be transcribed on my laptop using a local Whisper model. It doesn’t work…
Down with Flu I was down with the flu from Thursday. I suspect I may have caught something in the gym on Tuesday – the only workout that I was able to get this week. I’ve been getting better and hoping to get back to the gym, soon-ish. Replaced broken Uke string After months of letting the Uke remain in the cupboard with a broken string, I finally had the time to replace a broken…
I had a newsletter for this blog automatically created from the RSS feed and sent by Mailchimp, based on Julia Evans’ setup . I discovered this week, thanks to Ringo, that sign-ups no longer worked. Upon digging further, I found out that my Mailchimp account was deleted over a year ago. I missed a handful of email reminders from them to login to the account to prevent deletion. I…
Protests against the education minister I spent a lot of time this week following the happenings at the protests in Delhi (and other cities) against the education minister. I had a lot of fun looking at the creative ideas to protest by the Gen-Z. I’m a little sad all the creative posters, for instance, will be lost in the ephemeral feed of Instagram. It’d be interesting to see an…
SQLite: use GLOB instead of LIKE to hit the PK index Thanks to a fix by @mtelvers to Opam Repository CI, I learnt the difference between using LIKE and GLOB for fields with a primary key index. The TL;DR is that LIKE is case-insensitive by default and cannot make use of an index where as GLOB which is case-sensitive would. Programming as Theory Building by Peter Naur As a part of my continuing…
I’ve decided to start posting weeklies inspired by some folks from the OCaml and the Bangalore Indie Web communities. I spent a bunch of time over the weekend updating the setup of Orgzly Revived and Termux and my scripts for syncing everything between my phone and my laptop. I hadn’t bothered copying over my setup to my current phone since it felt too brittle after using it for a few…
My Linux machine crashed, while I was in the middle of a video call. I restarted quickly, and continued the discussion. Later, when I was trying to sync Elfeed updates onto the Elfeed Offline app on my phone, I found it acting weird. All the bazillion things needed to get it working were in place, but it was still complaining about the Emacs Elfeed server not being accessible. I tried opening…
I had a bunch of things running on my laptop – video call with screenshare, my Windows VM, Firefox with a lot of tabs, etc. And my laptop crashed! I didn’t have the time to dig into what, why and how. Later in the day, I discovered my Elfeed’s DB was gone – blown away. :( I’m guessing the crash happened in the middle of elfeed-db-save , and the data was lost.…
Elfeed-offline currently has a Dream web server which acts as a proxy server in front of Elfeed’s Emacs simple-httpd server. simple-httpd supports HTTP/1.1 protocol, while Dream provides transparent upgrading of connections to HTTP/2 — if the client can handle HTTP/2 and the connection is using HTTPS, it is transparently upgraded to HTTP/2. My proxying code was too simplistic in forwarding…
I want to read articles from my RSS subscriptions on my phone without signing up to a hosted service or running a public server. Elfeed , the Emacs feed reader, already lets me manage my subscriptions and read from within Emacs. It comes with an experimental web UI, but needs the server (running on my laptop) to be accessible whenever I want to read. My phone becomes useless the moment my laptop…
I’ve recently been working on Windows with a relatively involved git repository and ran into a bunch of issues. Setting these configuration values turned out to be very helpful! # Allow symlinks git config --global core.symlinks true # Don't automatically change file endings to \r\n (carriage return + line feed) git config --global core.autocrlf false # Use line feed for line endings git…
A couple of weeks ago, Shantanu and I were discussing Ubuntu upgrades – his upgrade was borked and he ended up re-installing his system. I was celebrating the fact that I never really had to throw away my OS installation entirely since I switched to Ubuntu after getting tired of Arch Linux in 2011-12 . And on cue, I had a really broken update on my dad’s laptop! It was really broken…
I use ox-hugo to write blog posts in org-mode and publish them using Hugo . I enjoy using org-mode for any writing that I do, including blog posts (when I am able to get myself to write them). After a long hiatus, I’ve been trying to get back to blogging, as this post might have given away. But, ox-hugo’s auto export seemed much slower than I remember it being. Each time I hit save on…
Keeping with last year’s tradition, this post comes when we are almost 1/5th through this year. 2022 projects Expense Tracker I built a personal Expense Tracker over the month of October using SQLite and Streamlit, because I wasn’t comfortable sharing my financial data with a 3rd party. I’ve tried to keep it simple, so it’s not a pain to use. But, I’ve also tried to…
A couple of months ago Heroku announced their plan to “Focus on Mission Critical” and shut down the free product plan. The ideas is to free up their developer time to focus on the important stuff instead of fighting abuse of the free plans. I’m surprised they invested in the free plans for so many years! My Heroku Apps I have a bunch of apps on the free (Hobby dev) plan, and only…
I’ve recently signed up for the Art of Clear Writing course by Amit Verma. It is still early days and I can’t comment on the course itself. But, the discussion after the first class reminded me of a talk I had given a couple of years ago – Write Prose, Not Just Programs. A friend, Vivek , had nudged me to do a talk on “Writing for Developers” and I ended up talking to…
TL;DR: I released my first Emacs MELPA package – ox-gist – An Orgmode backend to export and update sub-trees and buffers to GitHub gists. It was a great experience contributing to MELPA. Motivation I often share bits and pieces of my journal.org file with others, mostly for reading, some times for comments. The file contains different subtrees for each day with subtrees for different…
Some things I made in 2021: Earworm A static site generator to listen to audio (and video?) files in a directory. I use it to host a couple of simple websites for music files. It also happens to be the first package I uploaded to PyPI despite writing Python for many years. Ukulele Tutorials Aggregator Inspired by Ukealong.com , I set out to create an aggregator for Ukulele Tutorials for Indian…
TL; DR: I’m a video content creator on Instagram, and don’t tell me Instagram is user friendly. Being able to preview posts before making them viewable for everyone will go a long way, though. Introduction I’ve been using Instagram quite regularly from around the beginning of this year, posting about one video a week on an average. Previously, I used it primarily as a content…
This is a follow-up post to my last post, Deploying Hugo Drafts . Kaushal Modi, the author of ox-hugo (a tool that lets you compose in org-mode and use Hugo to export), let me know about the build options in Hugo. Have you looked at the new _build options: https://t.co/Nj8Uefis6Q . I haven't used them yet, but looks like they fit your use case. — Kaushal (@kaushalmodi) May 30, 2020 The build…
Update [2020-05-31 Sun 17:23] : I published a simpler workflow for this, using Hugo’s build options that I wasn’t aware of, because they are relatively new. A few friends and I run a weekly writing club similar to this . Once we have our drafts ready, we usually share them for reviews, etc. Previously, I used to use Nikola , and it’s default behaviour is what worked well for this…
Introduction Recently, a change that I contributed caused some downtime on the Zulip cloud (zulipchat.com). Here’s a user tweeting at us , about this. I shared this with some friends (who use Zulip) and they asked me to share more about what happened. I began writing an explanation, and it eventually turned into a blog post. The post tries to explain what caused the down-time, without…
I often help friends who are new to using git with using it. This blog post is going to serve as a single link to share with them, instead of trying to find individual links over and over. Understanding Git I got started with using git after using svn and hg for a few months. But, I would often be lost in the myriad of command line options, putting myself in situations I couldn’t come out of…
A couple of weeks ago, I spent some time building a couple of “automation tools” for myself. It is still early days to talk about their impact, but I have already noticed some changes, and have some thoughts to share. Thanks to the lock-down, I felt like I needed to do something to get more fresh-air and sunlight. I figured out a nice setup to work from my balcony, when I feel like it.…
A friend and I were trying to use the Django ModelFormSets in a project, and we ran into a subtle bug that took a little big of digging into the Django code to identify and work around. The Bug We weren’t really familiar with Django’s FormSet or ModelFormSet , when we started. We began by reading the documentation to get started. The Django docs had an example that looked…