Latest entries – 2025

Entries are shown in reverse chronological order.

  • Today, I launched a new version of my online journal on my subdomain https://journal.rohitfarmer.com, one I had been thinking about for some time. I will still keep my https://ctrl-c.club/~swatantra, but will remove the journal section. This whole new website is generated by a static site generator (SSG) that I created specifically for this journal with the help of ChatGPT. It is impressive how much you can achieve using ChatGPT if you have a basic understanding of programming and can clearly explain what you are trying to build. In the new system, instead of editing the HTML directly, I write the entries in Markdown, which are then converted to HTML by a single Python build script. There are other components that I will describe in detail in a blog post once I have added more features to the system or have used it enough to confirm that it is working. If it is successful, I may release the code publicly for others to use. That will be really cool to publish an SSG that I have created from scratch.

  • I am really enjoying the new build setup for this journal website. I am now feeling motivated to publish the code in a more generalized form for people to use. It's going to be opinionated and tailored to what I want from this website, but others may find it helpful as well.

  • Happy Thanksgiving, America. For the past seven years, we have been celebrating Thanksgiving at either our friends' or our family's house. This year, because two of us weren't well, we stayed at home and, for the first time, cooked the traditional meal ourselves. Since I was better than others, I took charge of cooking most of it, and I managed to roast turkey breasts, heat a piece of ham, make mashed potatoes from scratch, cook stuffing, shred chicken, make veggie rice, and make tomato salad. My wife made the cranberry sauce. I am very pleased with how I managed to cook everything while the turkey and ham were in the oven. Though we missed celebrating with our family this year, it was a good experience organizing our own Thanksgiving meal.

Our 2025 Thanksgiving meal spread.
Our 2025 Thanksgiving meal spread.

  • After lunch, we watched the movie "Jingle Bell Heist" on Netflix. It's an okay one-time watch. Usually, there is one good Christmas movie every year, but I haven't seen any good ones out yet, at least not on Prime or Netflix. I know the second part of Wicked is out, and we have to see that in the movie theater.
  • I took a day off today and managed to go to the gym in the morning. I usually go on Mondays, Wednesdays, and Fridays from 6 to 7 am, but this week I missed Monday because I was too tired to get up on time. Getting up at 5:30 am is hard, but that's the only time when I can go to the gym. I have tried going to the gym after work, but it never worked for me. Even though mornings are hard, that's the only time that seems to be working so far.
  • Today, I realized that grocery prices have really gone up. I never used to pay attention to how much I was paying for groceries because my family is small, so we do not have much consumption. But today, I shopped for Thanksgiving lunch, and yes, the quantity and variety were more than I usually shop for, but it did feel like prices had gone up. We will still be okay, but I can see how it might affect many families, especially around the holiday season.
  • I am constantly considering whether to continue writing on this pubnix website or move my journal to my own subdomain. I like the idea of sharing spaces, but I do not see many people actively using this server. I also do not know how long this server will be around. I don't care much about losing the data, since everything is version-controlled on GitHub, but now that I'm publishing the RSS feed, if people start following, the address to this journal will change if I move to my subdomain in the future. This is why most pubnixes aren't very active: people start building things, and once the project matures, they move the project to their own domain. So, nothing long-lasting exists on these public servers.
  • Yesterday, I used my new mechanical keyboard all day, and it's fantastic! The keys are very smooth, and the backlighting effects are great.
  • Today is cold, and around 1 p.m., it started raining. I really dislike the combination of cold weather and rain. It reminds me of my three and a half years in the UK, where I had to walk to and from my lab year-round in the miserable cold and rain. Aside from the weather, I loved everything else about my time in the UK.
  • I re-wrote quite a few scripts today for my latest analysis on the PhIP-Seq project. Specifically, I changed the transformation from log10 to log2 for both heatmaps and the paired t-tests.
  • My journal club is in two weeks, and I have to pick a paper to present. I am not a great fan of journal clubs. Although it's a routine part of academic life, I have always found it cumbersome and done under pressure rather than willingly.
  • I am going on leave from tomorrow for the rest of this week. It's Thanksgiving week in the USA, so most people take days off around Thanksgiving. I have been feeling a bit stretched lately, and I need this break.

Today, I bought my first mechanical keyboard, it's a KeyChron V3 TKL Knob Version. It's a wired, open-source, programmable keyboard. I still have to figure out how to program it, etc. However, I tried it on Windows and Mac, and it worked right out of the box. It's also my first backlit keyboard, so the RGB lighting is strange to me. There are multiple patterns to choose from. Right now, it's lighting up only the keys that I am using. It's a hefty keyboard with more height than I am used to, and there is no wrist pad. So I will have to buy a wrist pad separately, else it will start hurting me very quickly. Also, after using Kinesis split keyboards and Microsoft sculpt, going back to a non-ergonomic keyboard feels weird, and I can already feel the strain in my wrists. I will try it for a few days with the wrist rest pad and see if I still like it. I do like the smoothness of key strokes, the sound, and the tactile feedback. This keyboard is definitely better than Microsoft sculpt for working with vim editor.

KeyChron V3 TKL Custom Keyboard Knob Version
KeyChron V3 TKL Custom Keyboard Knob Version

When I started writing my journal on this website, I thought it could be a good use of this Pubnix space, because I do not have any other use for it. I sometimes use this server to chat on IRC using Weechat, but it's rare. However, after writing a few entries and publishing them as an RSS feed, I am tempted to move it from this server to Netlify under my subdomain. I can still keep it HTML and CSS only, as it is right now, so I do not have to compile it as I do for my main website, which has started taking quite some time due to the number of blog posts. Let's see, I will spend some more time here and then decide if it's worth moving it to my subdomain and serving it via Netlify.

I have been seeing increased activity from Singapore on my website. After every update, I got more hits from Singapore than from any other country, even though I do not have any friends in Singapore who might be interested in reading my blogs. I spent quite some time today analyzing the nginx logs with ChatGPT's help and figured out that those are likely bots searching for git directories and other routinely targeted endpoints. I already have fail2ban running on my instance, configured only for SSH, but I have now enabled it for nginx using one of its default settings. I will monitor for a few days and see if it reduces the hits from Singapore, before doing anything specific about the IPs.

  • It's my wife's birthday today, but we're both working and the kids are at school so that the celebration will be in the evening. We have taken a day off tomorrow because our preschooler has her Thanksgiving party at her daycare, and she wants us to be there.
  • I am so tempted to write a blog post in response to Kev's blog post Why Do You Need Big Tech for Your SSG?, which I eventually will, but today was a tiring day, and now I am too drained to think. I spent the whole day debugging an R script. It was an unexpected error, but it took so long to spot. I am glad that I did not give up and finished it today itself. Now I can start plotting figures with a fresh mind when I come to work next.
  • I have started dabbling in PHP for one of my future projects. I do have some PHP scripts running on my main website, but they are all written by ChatGPT. For the project I am planning, I need a better understanding of basic PHP, MongoDB, and some JavaScript to put everything together.
  • I am halfway through listening to the audiobook The Buy Nothing, Get Everything Plan. It's okay so far. The main takeaway for me so far is the addition of the Refuse to Reduce, Reuse, and Recycle philosophy. The portion where I am right now talks a lot about repurposing household items for alternative uses. Which is interesting, but a lot of it is already available on YouTube and blogs. The main reason I like the buy nothing project is its central idea of not buying but sharing stuff and getting to know your neighborhood - the community aspect.
  • Now these journal entries are also being listed on my main website - just the latest 5.
  • I am doing well, keeping up with the blog posts that I have subscribed to via RSS in the Capy Reader app. I am trying not to leave posts unread, as that overwhelms me and I stop reading altogether. So if there are unread posts I can't read, I mark them all read to get a clean slate. If I am really interested, I can always go back and read them. But at least I am not seeing any unread posts glaring at me.
  • I made some changes to the way I was making these journal entries. Previously, they were in between the consecutive "h4" tags, which were okay at the time. But then I decided to export the entries as an RSS feed via a Python script, and I realized it's not future-proof because I won't be able to use the H4 tag for anything else. Therefore, I updated the design to include each entry within an "article" tag and asked ChatGPT to update the Python script to generate the RSS feed using the "article" tags. I also updated the deploy script to first tidy the HTML using the Tidy command-line tool in Linux, export the RSS feed, and then rsync the files to serve the website. It's working well now.
  • For quite some time, I have been thinking about how to use this space, and now it seems the best way is to use it as an online journal where I can write unstructured, longer pieces that are neither a tweet nor a blog post. I am not expecting anyone to follow these entries, but if they want to, they can do so via RSS. RSS will also be helpful, as it lets me use my RSS reader to go back and read a previous entry.
  • I am also enjoying using Google Cloud Shell to SSH to my remote computers from anywhere using a web browser. It also adds an extra security layer, because now I am not connecting from my local machine but from an instance on Google Cloud.
  • The weekend was crazy. We decided to reorganize our house to give our kids their own room without our home office in it. We moved the office to our bedroom and gave the kids the master bedroom with all their toys, clothes, and school stuff. Now that all the kids' stuff is contained within their room, I hope it will not be scattered all over the house. We currently live in a two-bedroom apartment that is getting small by the day for the four of us.
  • I am adding this point to test whether, if I update the list on the same date, my RSS reader will update the entry. Okay, the entry has been updated with the new content, but the post still shows as read.
  • Today, I moved my Mastodon account from @swatantra@fosstodon.org to @rohitfarmer@fosstodon.org . I liked the word "swatantra," which means free in the sense of freedom, but it also resembles a female name in Hindi. Plus, when I chose this name, I thought I would stay anonymous on Mastodon, but it never happened, so today I decided to migrate to another account with my full name, since it's already on all my other social accounts. Also, I was worried that someone might impersonate me, although the chances of that happening are still there, just in a different instance. Also, whenever anyone replied to my post and tagged @swatantra, it never felt like the message was addressed to me.
  • The US government shutdown is over, and everyone is back on campus. I was working the whole time, so coming to work was the same to me. However, throughout the shutdown, parking was effortless to find. On some days, I used to be the only person on my side of the garage floor. Now it's back to the same. If I do not arrive by 8:45, I will not get my desired parking spot. Fortunately, I am good at being on time to work. However, it's good to have some leeway in case of situations.
  • Kev Quirk recently wrote an article about "what happen after we die" and today I read another article resonating with Kev's on Alex White's blog . Both these gentlemen wrote their pieces from an atheist perspective, which summarizes that there was nothing before birth and there will be nothing after death. I am a Christian, and I am feeling inclined to write something about my views on "what happens after we die". However, I am not sure if it will go well with my audience—especially my family. I have already written some hard stuff lately - they might feel I am spiraling into something.
  • It's the benefits enrollment period in the US, and every day for the past two weeks, I have been receiving 20 or more spam calls asking me to sign up for a state-sponsored plan. Fortunately, they are all from Missouri because my phone number is from there, but I do not live there anymore and do not qualify for any Missouri state benefits; therefore, it is easy for me to disconnect most of them. I also do not have any friends remaining in Missouri who would call me.
  • Today, I published the video of my paddle-camping trip to Assateague Island on the Outdoorsy Indians channel. It was supposed to be a fun trip, but due to the government shutdown and bad weather, we couldn't get the permit to go backcountry camping, so we cut it short and returned home before the storm intensified. Nevertheless, we enjoyed the trip and were able to improvise and avoid ruining the whole trip. I had high hopes for this trip's YouTube video, but it didn't turn out the way I wanted. Most of the shots while I was paddling are from a single angle. Due to high winds and keeping up with the group, I didn't get enough time to change my camera angles. I also lost my selfie stick, which I had been using for variations. It was not a substantial financial loss, but it did kill the mood and the overall quality of the project. Though I am getting better at handling unexpected circumstances and not letting them ruin my projects, I still have more to learn.
  • Today is my oldest daughter's science fair, and she has prepared a model of our solar system. Last year, it was the volcano model with vinegar and soda.
  • The office is so quiet today. It's scary sometimes, but it's also helping me calm down and concentrate on work, with occasional breaks and updates to this website. I have lately gotten obsessed with writing here; it's less time-consuming than updating my main static website, which requires compilation for every update, and it's also not a formal place where I need to be careful about the quality and content of what I am writing. I am also getting it de-indexed from Google, so it doesn't appear in search results. This page sometimes feels like a void where I can scream and nobody will hear. But of course, it is live on the internet, so people can still find it if they want to.
  • Today, I received at least 20 spam calls by midday, all asking me to enroll in some health insurance. It's enrollment season in the US, and it seems spammers get hyperactive this time of year. It's good that my smartphone lets me know it's likely a spam call, so I don't need to pick it up. Also, since my phone number is from Missouri, all the calls I am receiving are from a Missouri number. I lived there for only a year, and everyone I knew there has already moved to other places, so nobody should be calling me from there. Also, whenever I pick up the call, it's always an Indian guy on the other end, and when I ask them to speak in Hindi, they pretend they don't understand.
  • This government shutdown is taking a toll on me, and even though I am allowed to work, it's so depressing to come on campus and concentrate on work. Uncertainty is hard to deal with.
  • I recently read this blog post "The Stockdale Paradox: A Philosophic Principle for Tough Times" and it was really helpful, especially for the tough times that at least I am going through. I hope all of this will be over soon and my family and I can praise God for His blessings.
  • I am using Google Cloud Shell to SSH to ctrl-c.club and edit these pages. It's the first time I found a good use of a cloud shell. Conveniently, I can use it to SSH from anywhere without a dedicated terminal on my device. However, since the 5GB persistent storage gets recycled after some time of inactivity, I can't configure it for any other purpose than SSH'ng to this machine. Unless I decide to use the cloud shell regularly.
  • Yesterday, I wrote a blog post on "Tools That Just Work," reviewing and praising the apps on my phone and computer that do one thing, do it well, and quietly make my days smoother. After writing the blog post, I realized that over the past couple of years, I have routinely moved away from big-tech, cloud-based, centralized apps to more FOSS and locally managed apps. The idea of keeping all our data and apps synchronized across our devices is a trap that leads us to sign up for centralized apps that require account creation. Even though we usually use one device for most activities, for example, I only use my phone to listen to podcasts and read blog posts via RSS. So why do I need an app that asks me to create an account to synchronize my data across multiple devices? I don't even need to worry about losing my podcast subscription list if I lose my phone, since I can periodically back up OPML files from my app that list all the artists I'm subscribed to. I will write another blog post to elaborate on this point.
  • Today we watched the K-pop Demon Hunters movie on Netflix. We didn't have Netflix, so even though we knew it was a new craze among young girls, we didn't watch the film. We played all the songs many, many times. However, yesterday we witnessed the craze at our kids' Halloween parades at school: almost half the elementary school girls were dressed as Rumi from the movie, including the school principal. We decided to sign up for Netflix and watch the film. It was great, and we realized we had missed the opportunity to dress our girls as one of the characters. Next year, we will pay closer attention to trends leading up to Halloween.
  • After the movie, I spent an hour or so in the afternoon with my youngest daughter, who is 4 now, at Cabin John Regional Park in Maryland, hiking on the gravel road and tossing rocks in the creek. It was the first time that she showed interest in an outdoor activity with me without throwing any tantrums or getting tired right away. One of the things I learned is that to keep her engaged, I have to change locations every 15-20 minutes and stop for snack breaks. She can keep on going if she's being fed and relatively engaged in different activities. I guess that is universal, but surely I did notice that for her today.
  • Today I wrote a blog post about RSS . What it is, how to use it, and why it matters. The main reason was to include its link in my blog post's footer, where I ask people to follow my blog through RSS. Many people might not know what RSS is, and the link right underneath may give them a primer. We should keep mentioning and writing about tools, technologies, and our beliefs on our websites, not necessarily as experts, but as witnesses. The more people see us using and talking about it, the more willing they will be to adopt it.
  • I also included a meta tag in all the pages of this website for search engines to not to index and follow this website. I do not want this website to be private, but also not openly available. Users of Ctrl-c.club will still be able to see my website pages being updated and general audience can reach this website through it's link mentioned on my main website. I want people to first visit my main website before reaching this one, so if someone Googles my name then they should only get the URL of my main website in the search results.
  • I am halfway through the audiobook "Be Water, My Friend" by Shannon Lee. It's a book about Bruce Lee's teachings, written and narrated by his daughter, Shannon. So far, it has been great. However, as I listen to audiobooks in my car while commuting to work, I may have to get the paperback and re-read it to fully absorb the concepts.
  • Today, I spent some time updating the NeoVim setup on this server. The HTML editing parts seems to be working fine, but I am having issues with R and Python execution. After trying for hours and asking, ChatGPT, Gemini and Lumo I gave up on getting Python and R working. At one point ChatGPT couldn't even get me a config file that I can use to write HTML without unnecessary complex tweaks and endless errors and warning popups. So I reverted back to my original setup with a few updates. For now it seems to have enough functionality to keep editing this website. I love using Neovim editor, but sometimes it can be a pain to get it running properly.
  • One of my friends argued, against the vaccine mandates, that we should be allowed to refuse what we do not want to put in our bodies. I agree with that at the food level, but not for vaccines. The argument to support vaccine mandates is the same as the law behind drunk driving. Yes, you are allowed to get drunk, but not drive while intoxicated, because you might cause an accident and kill someone else. So, yes, in theory, you are allowed not to get vaccinated, but then don't go out in public and pass on the infection to someone else who might die of the disease. And this argument primarily supports medical interventions against communicable diseases. If you have cancer, then nobody will require you to go and get chemotherapy, because your cancer can not spread to other people.
  • Today I read the blog post "Smartphones are not the enemy" by Kev Quirk, which he wrote in support of Thomas Tigby's original post. I support the arguments these gentlemen make that the new dumbphone revolution is just a fad, and that smartphones themselves are not addictive; it's how and what we use them for. If you are hooked on apps based on the attention economy, you are doomed to doomscrolling. There are easier ways to manage phone addiction than moving to a dumb phone or an overly priced minimal phone. I have switched off all notifications except instant messengers and phone calls, and uninstalled Facebook and many other related apps. My phone usage is for making calls, texting, maps, camera, banking, gym sign-in, day care sign-in, Mastodon, RSS, and audiobooks. And none of these things are addictive to the point of despair.

  • Kev posted his blog link on his Mastodon account to which someone replied "kinda like guns, right?". To which I replied "the consequences of gun violence are irreversible and can affect uninvolved parties. Smartphone usage only affects the primary user and can be reversed. Additionally, if you refrain from installing attention-grabbing or addictive apps, basically all of Meta's products, then a smartphone is no more destructive than a dumb phone. Smartphone usage is like food. Salad is always there, but people still choose deep-fried." Link to the comment thread https://fosstodon.org/@swatantra/115446321630383212

  • I wasn't expecting to read about James Bond Stoicism, but here it is, and now I want to read the books. Movies are great, but since I am trying to read the books behind all my favorite films, this should be on my list. James Bond Soicism
  • I am having such a hard time concentrating today. My brain seems to be mushed with all the worries and the distractions around me.
  • We had a small Diwali party in our office today and around 12 people turned up. We had a great time eating and chatting. Everybody likes Indian food here.
  • I am trying to find a straight forward image hosting solution that I can use to display images on this website. I may end up uploading images directly to the server and then minimizing the size using Image Magick.

Today, I updated this website to complement my primary website. On my main website, I post long-form, polished blog posts, and it includes my CV and work-related documentation. This website is more like my online junk journal, where I can post whatever I find interesting without worrying too much about the format or the intended audience. It is also an attempt to utilize Ctrl-C more regularly. I like the idea of pubnixes, and more people should use Tildeverse to make the internet less siloed by big tech and more interesting.

I was reading on NPR today that 9/16/25 is a pretty special date. Not only does it line up perfectly with the Pythagorean theorem (3² + 4² = 5²), but it's also made up of the squares of three consecutive numbers—3, 4, and 5. So 9 is 3², 16 is 4², and 25 is 5². I am not a math nerd, but it's cool to bump into something like this.

After a long hiatus, I have resumed listening to audiobooks in my car since I started commuting to work daily. The best part is that I borrow audiobooks from my local Montgomery County, Maryland library. In the past three weeks, I finished listening to Analog Church/Christian by Jay Y. Kim and am now listening to The Revenge of Analog by David Sax. Public libraries in the USA are a blessing and a massive resource that few people tap into.