Ru: Recent Episodes

None

freelance React developer.

View Details

Note: This… story is at least two months old now, but I think it deserves to be on the internet for someone looking for reviews of this thing in India. I’ve just taken it out of my drafts to publish, and yeah, that’s it.


For the first time a couple of weeks ago (at least at the time when I’m drafting this), I left for Vietnam – my first solo trip and the first international trip as well.

A problem for me was I had only a regular sized suitcase – perfect for domestic trips, perfect for perhaps 10-14 days away from home as long as I do not carry any specialised gear.

This time, however, I did carry some specialised stuff – a pair of hiking shoes and a raincoat.

A rough visual guess would say I was out about 30% volume from the get-go. I needed something that would replace this and give me more space to stash 2 to 3 days worth of clothes that I no longer could in my suitcase.

First option was to consider carrying two suitcases: a small cabin luggage, and a regular sized check-in luggage. I quickly dismissed this. It is not practical for one person to safely, securely, and stress free carry two luggages. On top of, of course, a regular backpack.

I had been bombarded with Mokobara’s ads for months on Instagram. They sure know I like collecting bags of all kinds. I looked to see if they have anything that could help me.

Narrowing in.The Em Travel Backpack is a hit.

It’s supposedly a 45L backpack. How they measure it is still a mystery to me. Entering the raw dimensions into a volume calculator places the bag at 32.44 litres. Upon contacting their team, I was told they arrived at the 45 litres capacity claim in the following manner:

The team has gotten back to us with an update, the measurements are calculated using a different method, we calculated by filling the backpack with balls, and then fill those ball in a Jar to calculate the volume.

Mokobara’s customer support team.

Huh. Well, OK. I guess as long as the bag solves my issue. Let’s not be pedantic. We’re flying out in a few days, remember?

They are a brand who always have a discount on, which is equivalent to not having any discount on. Sometimes they have “extra” sales, which is where I grabbed this bag off their metaphorical shelf.

It arrived, I was happy, and I began to place things into definitive places. There is a joy in having marked spaces:

  • Hang your keys here!
  • Stash your passport here!
  • Clothes go here!
  • Liquids go here! It’s leak-proof!

Perhaps that was the allure for a part of my brain: a backpack that was neatly organised.

This is where I fucked up, though.

First few days.The bag has two striking problems for me:

  1. The shape is very rigid. This makes it great as long as you’re using it to capacity. At half capacity, it retains its big shape and becomes annoying to carry around.
  2. Perhaps my back is less forgiving, but I also did not enjoy carrying it around, starting at roughly 60-70% capacity. It just doesn’t feel right, no matter how far or short I pull/push the straps. It was always hanging “away” from my back (that’s the most visceral way I have of explaining this), putting more pressure on my shoulders alone than necessary.

These two reasons alone make it a less than ideal purchase for me.

What now?Well, I was able to return it for a full refund. I wasn’t sure if they’ll respect their “no questions asked” 30 day return policy. But they did. I made sure not to use the bag at all and keep it clean. They did ask me why, and I told them, but on the face of it, I think they’d have approved the return regardless.

I bought another bag from a local shop while in Vietnam, and this bag had just become dead weight to carry around until I reached home.

What did I learn?Sigh.

Marketing is marketing. Find out ways to figure out if something is a good fit for you after you look past the marketing.

Which brings me to: test things more thoroughly. While I visited their in-person store, I didn’t actually test the bag. With the amount of money that was quoted to me – as much as a big brand suitcase, I needed to be more diligent with my money and purchase.

Comment via email.

View Details

Out of nowhere, a couple of weeks ago, without ever installing any firmware update (at least intentionally), my Fitbit Charge 5 started:

  1. reporting incorrect battery numbers, swinging wildly from 40% to 90% to 77% and so on, and,
  2. turning off randomly with the only way to turn it back on being to plug it into a charger.

As a reminder, I bought this thing for $155 off Amazon back in April 2022. At the time, and I can’t speak for now, there weren’t any service centres present in India. I told myself I’m taking a gamble and I’d be happy if it lasts longer than a year. It has. And yet, I am unhappy.

Reports are coming in about a software update causing issues for a number of Charge 5 users, including even bricking (TechRadar, AndroidCentral). These are from July 2023 — a time where I did not face any such issues, which makes this all the more weird for me that it’s happening in January 2024, presumably not as a result of a software update.

A $155 piece of equipment being useless does not inspire confidence and Google’s response, and I highly doubt it applies to India, is abysmal (emphasis mine):

Fitbit, it seems, isn’t handling the issue properly for those affected. Those with broken trackers have been left out to dry. Support isn’t offering to replace the device, but rather just giving a 35% discount on new hardware assuming the tracker is still under warranty – the device just launched in 2021, but Fitbit does only offer a 1-year warranty from the time of purchase. But, even then, Fitbit should be offering a free resolution to that problem, given the broken device is being caused by an update from Fitbit directly.

https://9to5google.com/2023/07/11/fitbit-charge-5-battery-bricking-update/

Troubleshooting.So far, I have tried:

  1. Restarting the device from the device itself.
  2. Restarting the device using the charging cable (three 1-second taps on the button embedded on the power end of the USB cable)
  3. Changing the watch face
  4. Updating the firmware from 188.58 to 194.91 (the problem was reported on 188.61)

I’m currently in the process of draining the battery, which is a very involved, unforgiving, and annoying task given that the device randomly turns off and has no accurate number on its battery capacity.

Right this moment, as I opened the Fitbit app to look at the firmware version, the device went offline. Perhaps there is something there to look into for Google? Maybe a sync throws the device off?

Anyhow, I managed to get it from a reported 97% to 9% through the course of the night, using the always on display feature. Plug into the charger to turn it on, and the battery is 88%. As a battery preserving measure (<10%), the AOD seems to be automatically turned off. Perhaps a good sign that the hardware still has an accurate internal reading on the battery. Using the AOD also helps prevent the device from turning off. I am usually able to bring it back to life by tapping the screen a dozen times.

Let’s see when it drains completely and what it does next.

Alternatives.I don’t want to purchase a cheap, Chinese fitness band.

I also don’t want to necessarily invest in a “smart” watch – something I mentioned before. Who has time to charge a watch every single day? Impossible. This rules out Apple Watch.

Garmin is an option with its vivosmart 5 (₹16,990, ~$205), but it is more expensive than even the newly released Charge 6 (₹14,999, ~$180*). Probably Garmin vivosmart 5 is worth a try if at least the device will l last me three or, ideally, more years than that?

  • I also find it ridiculous how this sells for $160 plus sales tax in a very rich country, and $180 in a very poor country like India. Like-for-like, pricing, almost.

Comment via email.

View Details

The title pretty much sums up the entire post, but I’ll drop my two cents anyway:

  • It makes it clear what the purpose of that effect is. This means your colleagues spend less time figuring that out.
  • It’s going to force you to only deal with one concern per effect rather than bundling way too many things into one.

As someone who’s always reading new code at $DayJob, I have learned and realised over time that these are things that constantly frustrate me. It takes up unnecessary mental space while working through a problem. Of course until now, it didn’t click for me at all that this was something you could (or should) do.

I’m going to be investing a little bit of time every time I see this to update the code. Ultimately to make it easier for me, my colleagues, and whoever gets on to these projects in the future to reason about it.

Comment via email.

View Details

I chanced upon Garrit‘s toot today, which led me to Doug Belshaw‘s newsletter-blog. I do enjoy Doug’s blog but fail to keep up for a variety of reasons. A shout-out like Garrit did on his blog helped me find myself to it proper after what’s been a while. If we are talking life/career burnout, I am always in. Of course ... Continue reading →

View Details

I’ve made little noise about this subject, but I have. If you do not know, I had been itching to get a gaming computer. Using my family member’s laptop to game was inconvenient. Of course, apart from the fact that it barely ran any game I wanted to play because of poor heat management plaguing small form factors. Over the ... Continue reading →

View Details

I’ve been doing some AWS/serverless stuff at work recently. If you’ve been following me long enough, you know I switched paths about 6 months ago. A couple of hiccups here and there, but it’s been going well.

Today, and not for the first time, I picked up some education from an ESLint rule page.

no-await-in-loop tells us how to optimise our code and when not to use parallelisation. It took just two minutes of reading, too.

I love little educational moments like these – especially when they are sandwiched between the start and completion of a task.

Comment via email.

View Details

Once every few weeks, I randomly type in ‘tw’ into my address bar and hit return. Takes me to Twitter.com. I don’t know why I do this, because as far as intentional usage goes, it’s been months I’ve been on there.

I really do like it better on the fediverse. Feels more like a social place. It protects my mental health too because a ton of people use content warnings to give me the option to engage with things on my own terms that otherwise put together wreck my mental health quite quickly on any other platform.

When I do end up on Twitter.com, I see posts from friends and realise how much I miss seeing more of them around. I hit a like or two and leave. I know by now how quickly this can spiral into scrolling and doomful news and horrible interactions.

If you’re reading this, I’m waiting for you on the fediverse.

Comment via email.

View Details

It never really clicked to me how personal a keyboard is.

The way you push these buttons, the way you move your fingers, how much your fingers travel, how hard you push, where you find the apostrophes and where you hunt for the ellipsis to pause your sentence and your mind. Where you drop a semi-colon from while effortlessly knowing where to look for the currency you need to print on your screen.

I can never journal my day if it’s not my keyboard. The one I am familiar with. I can’t even do it on my phone with its touchpad… it has to be tactile, it has to be mine.

I need to know where to rest the palm of my hands when my mind pauses. For that depression in this space to feel familiar.

I need to be able to travel places in my prose as quickly as I do in my mind. I want a ‘tool’ — something I can wield. Not something that feels like a coarse brick.

It doesn’t have to be fancy. It just has to feel right. And anything can feel right to you.

Comment via email.

View Details

It’s funny this pattern keeps emerging over and over in our lives — complain about something, lose any built-up joy and expectation of it, and then come to like it and enjoy it gradually. For context, I was very critical of AirPods just a while back.

Of course I only use them in “controlled” environments, still, but they sound…pretty good? Spatial Audio isn’t so bad, not even ‘head tracked’ which I disliked so much all throughout. A big reason I don’t like those in-the-ear earphones is they disconnect you from the real world: a car honking, a loud bang etc. This is where this head-tracking stuff shines. It allows me to turn my head and have these real world experiences filter through pretty…naturally.

Switching between devices is easy too. The battery backup is fine for me.

That said, I almost lost one earpiece on a flight recently when it fell down and I couldn’t locate it. Anyone could have just…taken it. Thankfully, the passenger behind me was kind. (The same two people I had let walk ahead of me when boarding. How cute that it was them!)

It’s true that they are designed to be lost and designed to be wasteful — that’s what still worries me the most.

Comment via email.

View Details

Two things that frustrate me as a web developer when I see them on the wild web:

  • Being unable to toggle a tick box by clicking/tapping on its label.
    • A label has a much larger surface area for tapping/clicking and keeps things “easy” for everyone.
    • Not to mention it is accessible for people who use accessibility features.
  • Not having the right inputmode or type attribute on an input.
    • This breaks iOS auto-fill for one-time passwords received via SMS.
    • Suddenly I have extra mental load I may or may not have space for. It sure is work for me to use the number row on iOS since it isn’t perma-visible like on Android, and isn’t big and simple like the numpad can be.

I wish we lived in a world where we could care about things like these, but I can only sympathise with developers who have to put a rush on everything and are not even paid a living wage. I don’t feel right accusing anyone of shoddy work when they couldn’t care less… are not paid to care enough.

Comment via email.

View Details

Since getting the Fitbit, I’ve been trying to walk 250 steps or more every hour. It pings me 10 minutes before an hour is to finish if I haven’t already completed my 250+ steps.

Looking at my weekly averages, there are of course good weeks (5 of 8 hours on an average per day) and then there are bad weeks (2-3 of 8 hours on an average per day). I’ve been trying to build this habit for a really long time now.

I can start the day with a lot of determination, but something or the other during the work day stops me from “getting up.” Sometimes I’m so engrossed in my work that I don’t even remember the device vibrating to let me know I need to get up.

I try to listen to it, yes, but I probably need to do more. I don’t think I’ve ever had a day that was 8 of 8.

Still, this is infinitely better than my previous lifestyle. It’s a step up (that is an intentional double pun and I’m proud of it). I’ll take it.

Comment via email.

View Details

It’s interesting to me Will was able to move from Bear to Joplin and generally enjoys it as much as he did Bear.

I use and love Bear, and the closest I have to that with a more cross-platform-friendly constraint is Standard Notes, who also recently added regional pricing. Not to my surprise, though, as they were willing to offer economic difficulty discounts for a long time. All you had to do was drop them an email, but now it’s all automated.

Pricing page on Standard Notes’ website.Still, I’m not sure I can leave Bear just yet. I do have one eye on a migration to SN because Bear is, as Will mentioned, strictly Apple-only, and in the long-run, that is very much a “problem.”

What’s going to convince me SN is good enough is when their editors feel as polished as Bear’s do. My experience in the past with its editors has left me wanting for much more. Bear is also cheaper which is very high on my priority list right now.

https://wilw.dev/blog/2022/10/02/bear-joplin/

Comment via email.

View Details

The timeline. The reverse chronological timeline has been failing for me recently. As has the notifications tab for mental health reasons. I think I was a little afraid to admit it to myself, but it is. I log in a few times a day, read only a little bit (whatever is recently posted at the time), miss out completely on ... Continue reading →

View Details

I think my break is over. However, you will not find any personal posts (or personal side stories) from me anymore over here. Please follow my socials for those. Techie posts, though, are… okay. Strictly techie.

View Details

I’ve been on the fediverse/Mastodon since 2019 and have made some amazing friends. At the moment, I run SmallCamp, and help moderate Fosstodon along with a fantastic team and over 250 300 350 patrons. Part 1: looking like an actual person. People are much more welcoming when they can see who you are. Trust me — these two things really ... Continue reading →

View Details

I’m taking an indefinite break on this blog. It has been a long time coming… wrote a little about it on Fosstodon, too, a while ago. It’s a locked post so you might not be able to see it. With that said, I’m also done with my monthly reviews, which is something I wanted to be clear about. ~11-12 meaningful ... Continue reading →

View Details

I talked about not blogging as much in my June 2022 review. Internal monologue around that continues and I'm constantly finding myself wondering if keeping this blog is worth it.

View Details

Some numbers and my thoughts on NextDNS, a sort of ad-blocking service with a free tier.

View Details

Here's August in review. New workplace, coffee, future plans, and such.

View Details

No backups. No intention to have backups. What next?

View Details

Ok, the year is flying by — please stop? rain. A lot of rains this month. Not enjoying them as much as an adult as I did adolescent. I guess that also has to do with the state of things in a developing/poorer country. The infrastructure almost never copes with anything more than mild showers. energy. At this point in ... Continue reading →

View Details

In the metro cities and the airports of India — especially airports — I got real tired of seeing people sport their AirPods. I would think to myself every single time, “Hey, that looks so convenient!” I could not have been more wrong. I now wish I didn’t buy a pair at all. Generic downsides that will apply to most ... Continue reading →

View Details

Browsing reddit and came across this post on Ars Technica: Netflix adds “extra home” fee, will block usage in other homes if you don’t pay. Netflix is the most expensive subscription I have, even when I am splitting it with one other person, at a daily burn rate of ₹8. They pull something like this off in India, and it’s ... Continue reading →

View Details

I joined Mastodon, a part of the wider fediverse tooling, back in 2019. I didn’t realize there’s Pixelfed, Write.as, Plume, and so much more. It just seemed like an interesting place to be as I was putting a huge burnout episode behind me and looking to start things. As I approach 3 years on the fediverse, I am looking back. ... Continue reading →

View Details

Fangirling a couple of a movies by Makoto Shinkai.

View Details

A look back at June 2022 and a check-in of sorts.

View Details

I’ve been running around in circlesPretending to be myselfWhy would somebody do this on purposeWhen they could do something else? I want to believeThat if I go outside I’ll see a tractor beamComing to take me to where I’m fromI want to go home Chinese Satellite by Phoebe Bridgers.

View Details

This is a follow up to the post that added a convenience comment link. This time, we’re adding a small note if a post belongs to a category of our choice. I’m no PHP or WordPress wizard, so this is essentially a note to myself. The code too may be very garden variety, but that’s okay.

View Details

Celery’s Django docs use a conversion flag within an f-string: Apparently, that calls the instance’s __repr__ method instead of the usual __str__ method. What’s __repr__? RealPython.com writes: The __str__() and __repr__() methods deal with how objects are presented as strings, so you’ll need to make sure you include at least one of those methods in your class definition. If you ... Continue reading →

View Details

Before 2013/14, I didn’t have a smartphone. College was becoming very hard without WhatsApp groups. I had a tell-me-the-important-bits buddy who would relay anything important from these groups over to me by SMS or call or just in-person. 2014. Thanks to some side hustles, by early 2014, I was ready to at least partially pay for a smartphone. I narrowed ... Continue reading →

View Details

Disclaimer: this is not a sponsored post. But it is a short one. All I am doing is posting about a good experience in an ocean of poorly executed interviews. An appreciation post, if you will. When I was hunting for new work back in mid-to-late 2020, Steer73 came up. Set up by a friend on the Fediverse, really. They ... Continue reading →

View Details

Suddenly she realised that what she was regretting was not the lost past but the lost future, not what had not been but what would never be. F. Scott Fitzgerald

View Details

New round of donations, hopefully for the long term. 😊 I am now giving: $20/year to Snikket. This needs to happen, especially on the macOS/iOS side of the ecosystem. All of us would benefit from friendly, modern, yet open communication tools. $10/year to Darius Kazemi for working on Hometown. I am grateful for the work he does, and this is ... Continue reading →

View Details

I do not see a lot of a indie blog posts on this subject, so I’m trying to send out a short and sweet note out to the web I suppose. Something that wasn’t written five or eight or ten years ago… Odds are you will not encounter a GenericForeignKey early in your Django career. There are reasons to try ... Continue reading →

View Details

Just used Stylus to hide followers/following on all profiles in the Web UI on Mastodon. What it does: You can also hide the “Follows you” tag: My mind rests a little easy now while browsing around. 🙂

View Details

From Python 3 onwards, every class by default is an instance of the type class. Some more playing around if that’s your thing: I discovered this while reading through a Django snippet and re-writing some Python 2 code into Python 3. Who knew reading code helps you learn?

View Details

Been looking through a Django snippet lately and had to make sense of it all. A line by line analysis eventually lead to me an interesting discovery: you can create classes programmatically. Well, also, I learned a lot more, but this particularly seems worth mentioning. The built-in function type that tells you what an object’s type is? Call that function ... Continue reading →

View Details

Today I Learned that when fetching a value from a Python dictionary, you can set a default! A trivial example: That’s pretty neat! Seems like some other dict methods have this signature too. Ivan Sagalaev adds: You can also take out that key and value from the dict if you’re using .pop() instead of .get(). For example, it’s often useful ... Continue reading →

View Details

Time is literally just flying… Nothing special happened this month, I think. I moved from @celia to @ru on Fosstodon. This was a “soft” move as I did not move my followers like people normally do when shifting to a new Mastodon account. Later in the month, I was also promoted to a moderator on the community, almost overlapping a ... Continue reading →

View Details

Food tech (Swiggy, Zomato), taxi aggregators (Uber, Ola), and almost any platform that offers ratings do not go beyond the basic: allow stakeholders to rate and then display an average rating. It’s worse when there isn’t even a text box to fill — which is the primary implementation for many of these apps. While Zomato has separated out dining and ... Continue reading →

View Details

I’ve held off on buying a device that mines my health data, but a doctor’s visit recently prompted a change. I bought a Fitbit Charge 5 via Amazon. This could easily have been a Fitbit Inspire 2 and it would have met my needs. However, I wanted to be a little future proof. I considered an Apple Watch SE for ... Continue reading →

View Details

On the move. Like before, chasing stillness.In awe of human constructs and simple math.Finding a new place again, aren’t you.Doesn’t have to be where you come from.It’s home as long as you have no name.

View Details

I recently wrote about adding a convenience link to your posts and feed entry items so folks can comment/reply/discuss via email. Quickly and effortlessly. An alternative to this is using the specs as intended. While not a convenience link, it still lets readers (like me!) know where to get in touch with you without opening up your website and hunting ... Continue reading →

View Details

Inspired by Chris Wiegman and not having much else to do while I’m at home before my next move, I decided to start walking every day. It really helps that all I need to do is put my phone in my pocket/hand and start walking on the terrace. Bigger cities don’t have the luxury of space. Yesterday was a marvellous ... Continue reading →

View Details

Unfortunately, it seems macOS relies on indie apps to make it more than baseline usable. Here's what I use.

View Details

It's been an interesting, if difficult, month. Self-discovery continues.

View Details

I’ve been worrying where the roads I’m choosing will take me. All the time. For real. Sometimes waking up with as little as four hours of sleep. Because worry. Obviously. It’s been a long time without much movement. But also many changes, even where I’m standing and not much else. I hope I’m able to shake the stillness off. Here’s ... Continue reading →

View Details

Shopping at Cromā lead to an interesting experience with BigBasket. Hello, ruthless data sharing.

View Details

Not mine. Just the third I’ve been to. I was very tired and sleepy today. I’ve not been sleeping well lately. This was going to be as simple as putting on a presentable avatar, booking a taxi, sitting, laughing, and booking a taxi back. So I decided to go despite my condition. Of course, I had already paid money for ... Continue reading →

View Details

The weather has been…not brutal the last couple of days. That’s the best I can say — and only for the mornings and the evenings. I’m leaving Mumbai soon. With things that are happening in my personal life (that caused me to take off from Fosstodon and Twitter too!), I’m going out whenever I can. It’s nice to break monotony ... Continue reading →

View Details

Juhu Beach is a lovely place to come to and spend a few minutes at. Until next time, friend.

View Details

My move from Hetzner to Racknerd, along with simplifications because self-hosting is a headache.

View Details

I discovered that BookWyrm is built on Django (3.2). Immediately felt excited, since I could learn and grow by contributing and pushing the ActivityPub ecosystem forward. Already have 2 or 3 issues open…including a loose commitment to close one (simple) issue myself “in a few days.”

A lesser known fact is that GoodReads is owned by Amazon. I was surprised when I found out. Anyone I tell is surprised, too. So far, anyway. I want no part in this. GoodReads is just a nice to have — far from essential. BookWyrm is the future.

I should seek therapy. Why am I doing this? Prioritizing the good of the world before my own (sacrificial)? Validation? Some weird obsession I don’t understand? Lack of community nearby and attempts to find it online? Purely a rush in the head?

Side note: find me on BookWyrm.

Comment via email.

View Details

I’ve never owned a tablet in my life. I’ve also never owned even one Apple product in my life; let alone the current mark of four now with this tablet!

I got the cheapest iPad I could from Croma. I tried to steer clear of the marketing, and Nicholas helped me make sense of what is a good purchase to make.

Salesperson’s tricks. Another premium (!) authorized reseller almost led me astray by telling me that they don’t have the 2021 iPad 9th Generation (64 GB, Wi-Fi) in stock. Anywhere in the country! And it’s unlikely most vendors will… They had 256 GB in stock, but at that price, might as well buy the Air where “we have a 10% discount until stock lasts.”

Hmm. In a conversation lasting 1 minute, we went from something that costs ₹30,900 to something that costs ₹54,900. I mean it. It lasted 1 minute tops. Everything was fired at me in the hope that I cave in and buy what is being told to me.

Slick sales talk. Of course, I use the M1 chip on my MacBook Air and am confidently aware of how powerful it is — and that there’s no need to have one on a tablet… a tablet! Well, not for me, anyway.

Getting the Air would also mean a more expensive Pencil, and a more expensive AppleCare+. Smart talk, but I’m glad I was somewhat prepared to avoid it.

With the other recent purchases from Apple, I was also wary of making similar mistakes. I wanted the cheapest because I knew it would do the trick!

  • A13 is pretty good. A little dated, but how much has technology really changed (bar the release of the M1 lineup)?
  • 64 GB storage is okay — manageable.
    • If the only other option is 256 GB that bumps the price sky-high, skip skip skip.
  • A 10.2″ screen size is better than the Mini @ 8 point something inches.
    • Since the iPhone itself is 6.1 inches, what am I getting with an 8″ tablet?
    • Also, that display on the Mini is not comfortable. I demoed it at a store.
  • And while there’s a lightning port, I’ll live with it.
    • The iPhone is also a lightning port, as are the AirPods, so it’s not a huge dealbreaker.
    • The MacBook Air is the solitary device with a USB-C charger right now in my arsenal.

My needs. * Download and watch content (Netflix, Disney+ Hotstar, Amazon Prime, YouTube). * Draw for fun and some catharsis. + Learn some proper drawing as well in the long-run. * Read books via Apple Books, Amazon Kindle, and straight-from-the-author where possible. And where Kindle sucks, even PDFs. * Video calls with family. * Sidecar, so I have a little extra screen real estate that doesn’t involve buying and carrying a bulky monitor that’s not good for anything else.

So tell me again… why wouldn’t the cheapest iPad fulfil these needs?!

Ultimately, the cost. So I got one for ₹29,490 — a discount of ₹1410 on the MRP.

Apple Pencil cost me ₹8,500 — unfortunately the full price (and a pretty absurd one at that).

AppleCare+ cost me ₹6,850. The folks at Croma screwed up and what should have cost me (₹6,900 – 10%) ended me costing me nearly the full amount. This was after I insisted they’re doing something wrong that their AppleCare+ costs ₹5,900 while it’s listed for ₹6,900 on the official website.

Turns out they bought my AppleCare+ for 7th and 8th generation iPad, not 9th generation.

Lesson learned: buy AppleCare+ yourself after you buy the device.

I got a budget cover for it and have skimped on the screen protection. I’ll also be getting a ₹3,000 cashback from my bank within 4 months.

The total is at ₹41,840, or $551. God I hate how expensive tech is in India. Apple already is, but tech in general is anywhere between 30-40% more expensive than its US counterpart pricing. And we’re poorer! Boils my blood.

So do I like it? Yes. I’m actually reading books, consuming content, and enjoying phone calls with family, and even catching up on my Pocket reading list.

I reckon I’ll take the iPad and my phone instead of the laptop when going on quick, solo trips. Not having bought a keyboard for it also means I will simply not be able to do work. Which is the whole point of a holiday.

Consuming content on my laptop has always felt so odd to me. I’ve done it — it’s just never felt natural. With the iPad, things make sense… and I don’t know how to describe that.

Things you should know:

  • No Instagram or WhatsApp. What the hell are you doing, Facebook? I now have to resort to Google Duo or Signal for video calls. Virtually nobody uses FaceTime in India.
  • Speakers are stereo, but both the speakers are placed on the bottom side of the tablet. This feels… less than premium. I don’t enjoy this aspect at all. It’s stupid, really.
  • I also think the speakers are neither loud enough, nor high quality. Serviceable, but that’s about it.
  • The cameras are… okay. But I’m not complaining. I didn’t buy them for the camera. It is acceptable and I’ll take it.
  • Storage is tight, but enough. I don’t download my music (and only stream it), and my photos are also optimized (so no originals on this device).
  • Battery is good. Takes a while to charge, but seems to be good.
  • I was surprised at how effortless the setup was. Bring the iPhone near the iPad — boom! Download from a backup on iCloud — all set!
  • You need to get in a habit of un-pairing your Apple Pencil. The battery drains like crazy. When you need to use it, pair it then.

Overall, I like it. Between this and the Watch, I’m glad I got the iPad. It offers so much more utility for my use cases.

I’ll now hit the stop button on my ridiculous, nonsensical purchasing spree. I already hinted at it in the last post. I already had the iPad by then.

A quick note on that… I’ve made bad choices recently. I’ve gone and executed some unhealthy shopping in the last five months. I’m upset at myself, too. Sometimes I’ve dipped into my savings because “fuck it, you only live once.” How long am I gonna keep myself miserable?

I guess I was trying to make myself feel better because I’ve been saving up for years without spending. And the dam broke. I was always trying to find other avenues, healthier, and not feeling any better. Which is all in reverse — usually people go through this the other way around.

For now, it is indeed time to hit a huge, red stop button. And work to make sure my finances are in no worse shape than they are in today. Which is very much recoverable. Not the best, but completely salvageable.

Café talk. * I must also admit, I haven’t felt super comfortable posting about Apple and my purchases on here. Feels like I’ve been getting a side-eye and plentiful judgement. * With this post, I also updated my earlier post on how long should I use my new tech for.

Photo by Sayan Majhi on Unsplash.

Comment via email.

View Details

James Van Dyne just posted a response note and, much like him, I became curious too.

You got me curious about my mid-2014 Macbook Pro. I bought it Nov 21st, 2014. That’s 7 years 3 months, and 22 days ago. Or 2671 days. Cost was $2699 (before tax), which puts me right at $1.01 per day. 4 more weeks and I’ll hit that dollar / day mark!

https://jamesvandyne.com/2b2fa8ea-318f-4255-9bfd-a033c5d3344c

Let’s say the target for the phone and the laptop is $1/day — or roughly ₹75/day.

For the AirPods, I picked an arbitrary ₹20/day.

Where I have purchased AppleCare+, I am including it. Similarly, if I got a cashback from my bank, I am including that too as a credit to arrive at a net-sum-paid figure.

Considering that, my spreadsheet spits out the following.

2020 M1 MacBook Air. I should use it until 11 January 2027 — or roughly ~4.8 more years from today. I think this is achievable even if the laptop starts showing its age in its twilight years.

Originally, I did not plan on using it for more than 2 years (so that it would still have 1 year of AppleCare+ left) and selling it off for the next Air. That 1 year of AppleCare would be enough to help me find suitors that are willing to pay an OK price.

I think that’s less likely to happen now. It will cause a lot of financial strain either way.

2021 iPhone 13 Pro. Should be used until 13 October 2026 — or roughly ~4.6 more years from today. Considering iPhones get software support for 5 to 7 years, this should be okay.

Well, okay as long as I can take care of the device and Apple is generous enough to let me pay for a battery replacement.

2021 AirPods (3rd Generation). I am targetting for ₹20/day (or $0.26/day) and looks like these should be used until 23 November 2022 — or roughly ~0.7 more years from today.

I got it for about 1/3rd of the MRP — as I was able to sell my OnePlus Buds (bought recently) and an old monitor as well (bought in 2019 and sparingly used). These sales make the outlook much brighter on the AirPods than it otherwise really is.

If I considered the full price paid, we’d be looking at more than ~2.3 years of use — I just don’t think these things are designed for that kind of longevity.

2021 iPad (9th generation) At a target of ₹40/day ($0.53/day), I expect to use this until 23 January 2025 — roughly ~2.85 years from today. Sounds totally doable.

In the end… Yeah, I’ve gone overboard these last few months…

I definitely think the Pro model is nice, but I could have maybe stuck with a regular iPhone. As much as I love the Telephoto and the adaptive 120Hz display, perhaps I screwed up there financially. It was a luxury purchase and I wasn’t thinking straight… marketing can play so well on your mind.

I already know my next earphones are going to be wired — but the USB-C-or-Lightning-?! mess is concerning.

Comment via email.

View Details

A painting I saw that I wish I could buy! A painting I saw that I wish I could buy! Part 2. Coffee something frozen dessert. Tasty, and splitting between two for fewer calories was a great idea! Clove is a commonly added ingredient for tea in India. ‘Pani puri’ shots. White wine. A friend’s band is playing in the background. Decoration at a restaurant. The ceiling of a resto-bar decorated for an indoor carnival of sorts.

Comment via email.

View Details

I’ve been unsubscribing from intentional/side effect spam (as I like to call it) for months now. It’s almost non-existent now.

My transition to Fastmail (all my domains, plus wildcards) is also done now. I never open any other email client.

I can finally just rest. No more moving hosts. No more configuration. It just works.

I’ve also integrated convenience email discussion links to my posts and my RSS feed here on my site. As do many other people like Kev, Michael Harley, and Marcel Kapfer.

I’m hoping even more people adopt this workflow (you already have a guide for WordPress by Kev and myself!), as it’s so easy to just hit a link and start writing in seconds. I’m more likely to respond to a post because now the barrier to it is so less. No needing to provide context, as it’s already all set by the convenience link. No need to fill the To field. Signature is pre-configured. Post link is added too for posterity and easy reference.

Just write.

And a big part of “just write” is also I sometimes avoid saying “hi” or “hello,” depending on my mood and stress levels. Sorry if that comes across as rude!

I’ve had a mindset shift where I view emails as something in between traditional mail/letters and the modern-day instant messaging platforms.

  • To me, a thread is simply a conversation where nobody feels pressured to get back quickly, or judged if they take too long.
    • This is probably my favourite aspect.
  • Salutations and signatures are completely optional.
  • Tiny signatures are best.
  • Both plain text and HTML is great (at least in 1:1s and when used responsibly)!

Photo by Brett Jordan on Unsplash.

Comment via email.

View Details

Use and promote Linux because personal computing freedom is important. It’s okay to constantly restart my laptop and lose work & context. Oh, and call it what it is: GNU/Linux.

Dogfood your IndieWeb universe, because an independent social web is essential. It’s difficult and ever-evolving, but I must keep up with the standards and spend my time working quirks out and ironing bugs in my applications. Who has friends to meet anyway?

Use privacy-respecting apps and techniques because everyone has everything to hide. I must use inconvenient apps and convert my friends to these otherwise niche apps. It’s the only way forward.

Develop for the web because I must pay my bills. I may enjoy it, but it’s a job too. Network with peers, give talks, write tutorials, find work, negotiate. Otherwise, am I really a web developer? Will the first-world companies hire me?

Blog because I like interacting with you all and documenting things for my future self.

Pay artists their fair share via Bandcamp or buy from them directly, because the big streaming companies won’t do it. It’s okay — I’ll pay $15 for that album.

Reduce my environmental footprint because we’re all going to burn and die if I don’t do anything.

Use private communication (XMPP) because our most personal chats have been monetized, and it’s just wrong.

Self-host because data sovereignty is what further enables personal computing freedom. I must spend a few hours every month keeping everything working. And pay for the privilege, too.

Lose weight because our society is inherently fat phobic. I must spend my time and energy fighting my urges and dropping some kilos.

But make sure to take time out to relax and meet friends and go on vacations because burn-out is not fun. It affects everything, and I can’t be broke.

Research and plan for my survival options because of near-future geopolitical conflicts and domestic unrest. I must protect myself from that stress as best as I can.

Oh snap — did you hear about NFTs and cryptocurrencies? I must lend a hand in stopping this abuse of power and abuse of nature.

But nah, I can’t consider myself special — I must pay that $5/month or $15/album or $60 in donations every year. After all, everyone else does it too. So why can’t I?

Fork this project and upgrade it for my needs. Hack. I am a hacker, right? Right?

Set up a RAID for my ethically-sourced media collection. Casually throw a few hard disks in my actual, physical cart at some random electronics store (didn’t you hear — mom-and-pop stores are dying). Configure a home server. It’s just $100 or so and I have freed myself for life. 5% of my monthly income? 10%? Does it matter…?

But while I’m building that solution for my home, I shouldn’t forget there are wars and atrocities going on in the world every. single. day. I should look up some charities and see if I can volunteer.

Did you hear? Some cis, white, hetero, man has stirred the pot again, and now it’s up to me to give up the service. It’s the only way he’ll stop his abuse of power and authority and privilege. He actually listens to this language. He speaks it.

I’m also battling addictions. Maybe it’s alcohol. Maybe it’s something else. An addiction is an addiction. But it’s easy to find support, right? And get tired of switching therapists because none of them work? Spend that energy again and again and again and again and again.


Close some tabs.

It’s perfectly okay to do it. You’re human. Pick your best fights.

Virtual internet hugs. I need it. You need it. I didn’t focus on compassion and empathy in the list above — oh shit! I suppose I ran out of my spoons.

It’s been a fucked up time for everyone. 2019 has dragged on and on. Perhaps 2014 has dragged on and on. It could be whatever year that has dragged on and on. It was a year something that was very important to you was taken away or damaged or flipped by someone else. You’ve been fighting to live ever since. In that pursuit, you chose to give up something else. And I still respect you. I get you.

Virtual internet hugs, friend.

Photo by Teslariu Mihai on Unsplash.


Around the web. * https://inhji.de/notes/1647204166

Comment via email.

View Details

I recently began using Apple Music. There was something to say for a native mobile app and a native-in-progress desktop app.

Unfortunately, that is simply not enough on its own.

Here’s why Apple Music doesn’t cut it; and why Spotify does.

No Handoff or Continuity. Spotify nails its cross-play. I can control the volume and song on any device that’s playing Spotify from any device that has Spotify.

And just as easily, I can switch to the current device that has Spotify seamlessly.

Apple, who prides itself on complete vertical integration, is a big fail on this front. There’s no way to do any of those. I feel so limited.

No “download all.” You can configure Apple Music to download songs moving forward. That’s okay if you’re starting from scratch. However, I used SongShift to move from Spotify to Apple Music… and there’s no way for me to download all my music for offline playing in this situation.

Unless… I went to each album I have in my library and hit download individually. Given I am less of a ‘album listener’ now than ten years ago, this is not a solution at all.

Offline playing is very important to me because I don’t want to waste data streaming the same songs (cache only goes so far), or have songs cut off repeatedly because of poor data coverage.

Apple Music’s search is so broken on macOS. It just glitches out nearly every single time I try to use it. Search results won’t update; I’ll clean the query; now the previous query’s results show; and now it’s one step behind consistently. It just breaks, breaks, breaks.

Very frustrating.

Playlists. With Spotify, I would search for my mood and get something. With Apple Music, the community is simply not far enough. I don’t get to pick a nice playlist because, often, there’s just a handful of them, if at all.

Previous/next buttons kinda don’t work. This is such a basic feature: navigating songs. Yet, on the daily, the next/previous buttons despite being clicked offer no feedback, and randomly take upwards of 2 seconds to change to the next/previous song.

Of course, I’ve already pressed the button 2 or 3 times in that 2-second window because I don’t expect a $1700 phone and a $3 trillion company to screw this up. Cue 2-3 skipped songs at once, and navigating in the opposite direction of what I intended originally.

Off-topic: ethics. How do I feel ethically about this choice? I am not privileged enough to inconvenience myself for the greater cause. Pick your battles. I have mine, and fair pay music streaming is not one of them. It’s the only way to make meaningful change.

Conclusion. Let’s keep it simple: Spotify just works.

Discussion around the web. * https://obsolete29.com/posts/2022/03/12/good-morning-computer-cold-and-snowy-in-nashville/ * https://www.benji.dog/notes/1647067360/ * https://twitter.com/MereCivilian/status/1502573118376001540 * https://chrishannah.me/ru-singh-apple-music-vs-spotify/


Photo by John Tekeridis from Pexels.

Comment via email.

View Details

A tad bit breezy — walking around was fun. Caught while leaving a café. Veils and mirrors. Nongshim Shin Ramyun.

Comment via email.

View Details

Follow up to a similar post on Caddy. I am now, instead of self-hosting, using Cloudways — courtesy of a friend (hi!).

This meant moving all my redirects and rewrites from Caddy’s Caddyfile to Apache’s .htaccess.

My host is using Apache 2.4 and let’s assume I do not have access to the VirtualHost configuration. I’ll use the RedirectMatch directive here as it super similar to Redirect except for allowing RegEx.

RedirectMatch 301 ^/[0-9]{4}/[0-9]{2}/[0-9]{2}/(.*)/$ /$1/

RewriteRule, for whatever reason, does not seem to work on my host even when it should. I posted about this on SmallCamp, but to me, it looks like it might be different ways of doing the exact same thing. So I’ll settle with RedirectMatch for now.

Photo by Artem Podrez from Pexels.

Comment via email.

View Details

A while ago, I posted on Mastodon about how much I hate micro.blog’s feed items in Miniflux. Micro.blog is a paid, convenience wrapper for the IndieWeb.

My post complaining about micro.blog’s RSS feed. This quickly led to a discussion about how Miniflux is in fact one of the few feed readers screwing this up. An issue was opened, a pull-request was written, and a new patch version is out. In 18 days. Quite impressive!

Now this will make both micro.blog and IndieWeb feeds much nicer to read:

A screenshot of James Van Dyne‘s IndieWeb RSS feed as seen on Miniflux 2.0.36. Comment via email.

View Details

Web UI. Have you seen this around?

‘Comment via email’ link available towards the end of every post. Let’s implement it.

  • Create a new Hook Element.
  • Allow PHP execution.
  • Select the generate_after_entry_content hook.
  • For display locations, select All Singular.
  • Use the following snippet for the hook body.

<a href="mailto:<?php echo get_the_author_meta('user_email'); ?>?subject=Comment on '<?php echo get_the_title(); ?>'&body=Post link: <?php echo get_permalink(); ?>">Comment via email</a>.

And that’s it! Voila! Add some CSS sprinkles for pretty things. There’s surely a more vanilla way to do this, but I have GeneratePress with GenerateBlocks at hand, so that’s what I picked.

RSS feed. Finally, you want your readers to be able to use the convenience link too! Use the\_content\_feed hook and add to the feed content.

``` add_filter( "the_content_feed", "feed_comment_via_email" );

function feed_comment_via_email($content) { $content .= "

Comment via email.

"; return $content; } ```

Now let’s check it out:

Golden!

Comment via email.

View Details

It’s shocking how most places elsewhere screw up Maggi. Delhi mostly doens’t. Not this time.

Accidentally watched Nishant Suri – he won Season 1 of Comicstaan!

Been reading some Permanent Record lately. ^.^ Create, not consume. Roam, not commute. Comment via email.

View Details

Nathan wrote Anti-Social Media today. How fitting of a timing.

I agree on almost all fronts. Mastodon is pretty much the same as Twitter as far as dopamine kicks go. It’s a struggle for me too. We don’t need to pretend ethical automatically implies better in all respects.

On account of some recent events in my personal life as well as my ongoing struggle with depression, I have uninstalled Twitter from my phone and don’t use it for any more than 10 minutes in a week. If I have some very specific need that just cannot be fulfilled outside of Twitter. Only if.

In addition to this, I no longer use Instagram to consume — only create. As always, I turn off all Instagram notifications. I need to choose to go to the app; not the other way around.

Along with Twitter, I also took a break from my (public-facing) Mastodon account (Fosstodon). In the last week or so, I haven’t posted much tech content on my private Mastodon account (SmallCamp). 90% of it has been personal. Life updates, sharing lyrics to songs I like or I am listening to, sometimes photos from ‘IRL’, and the like.

All of these combined have caused a certain shift in my mind after a week. Perceptible, even if slightly. I’m in no mood to give this up.

Perhaps the next and final step would be to use even my private Mastodon account with no notifications — just like Instagram.

And, like Nathan, I hope to soon be in a space where I can journal — whether on a diary or on Bear.

So, if you’re looking for me. I’m here, just not there.

https://degruchy.org/2022/03/09/anti-social-media/

Comment via email.

View Details

Starter kit. I spent over a month work­ing on Smix Eleventy Starter, with help from some friends as well (Arpit, Darek). I greatly re­duced the de­pen­den­cies and de­faulted to a lot of core func­tion­al­ity with Eleventy and TailwindCSS that perhaps wasn’t as refined in 2019 as it is now.

For context, I had moved 80% of my knowledge and workflow and ideas from my own Eleventy static site in 2019… to Smix. I repeated that process now — this time keeping my own future needs in mind and building for that first — trying to reduce complexity. This time, Smix was to act as the foundation, rather than a feeder target from my site.

Fixing content and being back on Eleventy. Then, I spent a bunch of time work­ing on fix­ing the posts that Jekyll Exporter dished out. Took me a long time, even with the help of RegEx-based search and re­place. Just mak­ing sure every post go­ing back 7 years was good was a task. I’ve combed through it all. Go­ing back to WordPress feels a lit­tle stu­pid right now.

I like how the new site looks. It’s lean, fast, and personalized. At the ex­pense of my pub­lish­ing ex­pe­ri­ence — it’s so aw­ful af­ter hav­ing got used to WP over the last year or so. I just do not feel like writing anything.

Comparison. Both “systems” have their down­sides, of course.

For ex­am­ple, with WordPress, I had a bunch of plu­g­ins to dis­able func­tion­al­ity like its API, XML-RPC end­points, com­ments, and so on.

With Eleventy, not only is the pub­lish­ing process aw­ful, so are the build times on Vercel — 5 to 7 min­utes — which is largely down to eleventy-img.

I want to work on smix-kit to make some things easy, but is it re­ally worth it? I might be look­ing at a non-Word­Press CMS in the long term, but host­ing it is go­ing to be an is­sue. After all, a huge rea­son for mov­ing to a sta­tic site was sur­ren­der­ing my self-host­ing VPS and sav­ing some coins.

Recommendations. I’m open to (serious) rec­om­men­da­tions. Don’t send me one just be­cause it works for you. Please take a minute to think about my pri­or­i­ties and if what you like & pre­fer fits me:

  • Easy and to­tal them­ing (control over tem­plates and styles) with­out break­ing away from up­stream/​up­dates.
  • Using the lat­est CSS stan­dards and fea­tures (PostCSS).
  • Manage me­dia eas­ily, in­clud­ing be­ing able to crop and add sim­ple ef­fects to pho­tos.
  • Publish us­ing a web user in­ter­face. Markdown is wel­come.
  • Built-in sup­port for an RSS/Atom feed.
  • Well-maintained with a good out­look for a few years min­i­mum.
  • Free or costs up to $50 one-time.

KirbyCMS (Andy Bell is a big fan) seems in­ter­est­ing though it seems like it will be a lot of work on top of pay­ing about $70. I’m also not sure how sta­ble its plu­gin ecosys­tem is. Similarly, OctoberCMS, based on Laravel, seems in­ter­est­ing but so. much. work.

CraftCMS looks like it could fit the bill the most.

Conclusion. Any CMS leaves me open to the same is­sue again: host­ing costs.

It’s no won­der peo­ple run to hosted, man­aged, and free so­lu­tions like Substack, Medium, and Twitter threads.

Post cover photo by Elisa Ventur on Unsplash.

Comment via email.

View Details

I’m too depressed to write one. See you next month, hopefully, dear readers.

Comment via email.

View Details

I fully finished watching this video by Johnny Harris a while ago:

Several months ago, I was suspect. This time, though, I sat and watched the whole thing. I feel it is moral to quote the following from his video:

I’m not here to preach what’s right for your scalp; I’m simply telling you what’s right for my scalp.

I decided I’d take this for a spin. I hate shampooing anyway.

Two weeks; roughly. I did not track this, so I have no start date. I also work from home most of the time, so I’m not a target of the usual air pollution that’s rampant in India. Anyway, here’s what I noticed:

  • My hair was very oily, roughly the first week or so.
  • It got better.
  • It… reached a point where it wouldn’t get any better. It looked a little shabbier compared to when I would shampoo regularly.
  • Taking shower was fun again!

But my hair never seemed event-ready throughout this trial. That’s the kicker. :/

What when I actually shampooed? I shampooed today, and so that makes it the end date… for now. Here’s what immediately happened:

  • Hair seems soft, even shiny in its own peculiar way.
  • I lost a lot more hair while combing than I ever did with just a water wash. This has me worrying. I’m not even using a dirt cheap product off a supermarket shelf!

In the end. I might go back to no-shampoo, I think. I miss enjoying showers, and I definitely don’t want to lose a whole bunch of hair twice or thrice a week for no good reason other than looking “nice.”

The post Shampoos. appeared first on Ru Singh.

View Details

This post is in the context of a static site, but I’ll generally go over why I think webmentions are complex. This post is also a spiritual follow-up to my toot a couple of days ago.

If you’re new to IndieWeb, you can essentially replace the word ‘Webmentions’ with ‘interactions with other independent websites’ during the reading of this article.

First, let’s describe what one might want to achieve when implementing webmentions:

  • Receive interactions from IndieWeb enabled websites.
  • Send interactions to other IndieWeb enabled websites.
  • Moderate received webmentions.
  • Integrate their display into your site.

Outgoing webmentions. This is probably the simplest part of the equation. You must ensure that your content markup adheres to IndieWeb’s (ever evolving) standards, and make POST requests to websites you are interacting with.

This adds one moving part, but does not require that you have an endpoint yourself, or that you run a Micropub server (which will often include this functionality to make things easier for authors and publishers).

This means you can have the following types of interactions with very little hassle:

  • Mentions
  • Replies
  • Bookmarks
  • Likes
  • Reposts
  • RSVP

You can achieve this by running an npm binary such as @remy’s webmention package against your newly published post on a freshly generated site. Still a bit of manual work because you must wait for your site to be published, grab the URL, and then run the binary — but not impossibly inconvenient.

Incoming webmentions. This is where things start to get a little tricky. If by sending webmentions you added one additional moving part, receiving webmentions adds two additional moving parts (for a total of three now).

Now, you need:

  1. An HTTP endpoint capable of receiving and processing webmentions
  2. A moderation interface (while not required, heavily recommended)
  3. A build pipeline in your static site that is able to fetch this data and show them on pages and posts as required

While the first requirement can be a simple binary you run on a self-hosted server, or use perhaps a hosted service (such as webmention.io), you are now reliant on beyond just the parts you include in your site repository.

The second requirement can either be an extension to the first one, or a standalone application itself that interacts with the first binary. Which means…building an API and a frontend. You must also make sure to exclude invalid webmentions (maybe someone else implemented a markup on their content that doesn’t exactly work 100%).

The third requirement is for your site to fetch webmentions data from your own endpoint, cache it (so your site doesn’t go back in time because webmentions are unavailable), and build out a few templates for each webmention type.

You could also use serverless functions in place of the first requirement (building a receiving endpoint), but you’re going to need a store of some sort either way (aka a database, whether file based or relational).

Projects like webmention.io feel like a proof-of-concept rather than a polished experience iterated upon over the years.

What if I’m not using a static site? Things should become easier as you could engineer for fewer moving parts. This is where projects like GoBlog by Jan-Lukas Else and Tanzawa by James Van Dyne become good examples.

My ideal implementation. An application that is maintained and has tests — as well as is easy to self-host using Docker/Podman/Heroku. The application:

  • must be a single website,
  • checks my static site for new URLs routinely,
  • prompts me to send webmentions if it finds any,
  • runs a webmention receiving endpoint,
  • has a moderation interface built in,
  • is able to junk invalid webmentions, and,
  • has an endpoint for my static site generator to consume where it throws the final JSON data free of any errors, invalid webmentions, spam, unapproved webmentions, and so on.

This would be a companion service/app/website to any static site that has microformats2 markup. Because it’s a single place for webmentions for your site, it would usher in more adoption from developers who are shifting to or recommending static site generators to their colleagues and so on in the recent years. Instead of three moving parts, you add one that is convenient and gets-it-all.

Conclusion I’ve been thinking about integrating post types and outgoing webmentions in my Eleventy starter kit. This post was written when I think I achieved a good-enough clarity on what to do.

Webmentions appears to have a varying level of complexity depending on what you want to do. Nonetheless, one-sided conversations are not fun. However, they are the easiest to implement.

The post Why I think webmentions are complex. appeared first on Ru Singh.

View Details

This post is in response to Kev Quirk’s On Burnout.

I heavily resonated with it and thought I’d list a few small things that somewhat appear to work for me. I also must add that I too do not know if it is burnout, depression, anxiety, something else, long-COVID, medications, COVID-precautions-related burnout, quarter/midlife crises… I just do not know.

Like Kev, I took a whole week off recently. There simply was very little to no work that was being done. In a dramatic fashion, I took some time off to try to “organize” and “fix” my life. Rookie mistake, maybe?

Both of us also had COVID-19 recently. Who knows? There is some preliminary data indicating it can exacerbate depression and anxiety in patients who were already suffering from it.

I would say having a patient employer/boss can also make a huge difference while you work through something like this.

And for the word of advice…

  • Setting aside small gifts as a treat if I finish X task by Y time. Take great care to keep X small and win-able for a few days, minimum. I usually prefer a couple of pieces of chocolate.
    • This does require discipline because you’re not allowed to have it if X doesn’t complete by Y. No, you cannot just have it because you’re an adult now, and you do what you want. No.
  • Be your own rubber duck. You’re not exactly debugging anything. It just helps for me to speak out what I’m supposed to do next, or what I am doing at the given moment. This helps me overcome some detachment from work.
  • I also promise myself I’d finish at least This One Small Thing any given day. That takes a lot of pressure off me for that day. Then it feels easier to go beyond.
  • I’ve also started adhering to Screen Time on my phone. All my shopping and social media apps are on it. No more “Remind in 15 minutes” or “Ignore limit for today.” I feel like it’s been rewiring my brain recently, and I can sense it.

Lastly, I’ve been constantly reminding myself that sometimes you just have to be at it for long enough that the “phase” passes over. This is where habits come into play.

My therapist recently asked why I was taking my medication even if I didn’t want to. I said, “I guess it’s habit?”

Her response?

“Let’s just use the habit, then.”


None of this really helps with the underlying feeling, but it helps me get by and function at a somewhat acceptable level. I think that’s equally important.

The post “On burnout.” appeared first on Ru Singh.

View Details

Ugh. Names. First of all, I will refer to Bear as #BearApp or bear.app or any such variations. Bear by itself, although the correct name for it, is way, way too generic.

I mean, cmon.

Next time someone develops a language (I'm looking at you, Go and Rust) or architecture (I'm looking at you, Metal) please forego the clever names and just name it a random 8-digit hexadecimal string so we can all Google it.

— Moishe Lettvin (@MoisheLettvin) February 7, 2022

Needs. Over the years, I have indeed relied less and less on my “notes.” There was I time I wanted everything to be documented. Viewable. Sharable. That was a younger version of me, and boy was she not thinking straight.

The elder version, the now me, does not think this to be necessary. All I really make notes for are:

  • Therapy
  • Journal
  • One-off notes while I work through something… anything, really, such as:
    • A task at work that might be getting a little complex.
    • Writing a draft blog post on the go.
    • Quickly noting down some info that will only be needed one or two times in the then-upcoming week/next days.

Essentially, apart from therapy and as a journal, my notes app is just a scratchpad. I don’t need to keep all such notes around forever. The more content there is, the more chances that a note will become stale, a link here and then there will be broken, and so on. Kind of like code!

Competition. StandardNotes. I used to like StandardNotes when it was early in its development and high hopes from it. They’ve been adding polish to their website, their apps, and I like that… but…

Now they are both expensive and not very expensive, and the free version is nothing more than a glorified sync-enabled text editor. Well, yes, everything is encrypted, and that’s amazing — but at what cost?

Apple Notes. A little too basic, and not polished enough. It might work for 90%, but I guess I find myself in the 91th percentile.

Evernote. No.

Simplenote. I never really liked how they treated their Markdown editors, and I don’t know if the situation has improved. It’s free though, so, it might be a decent rival to something like Apple Notes.

Joplin. If I remember correctly, Electron based desktop app. No.

Bear! There you are. Bear.app cost me ₹999 per year through the Apple App Store. That’s about $13.29/year, slightly cheaper than the $15/year that is offered on its own website I think. Regardless, I’ll take it.

My biggest concern is that this locks me into iOS/macOS since Bear.app does not have any apps for any other platform — not even the web! Future me says “God damn it, past Ru!”

That limitation was what actually kept me from trying Bear.app for years.

I seem to enjoy their Markdown editor, it looks nice for sure and works well. The themes are polished. You can add images and interlink notes. Exporting as PDF or raw Markdown is a nice touch. Tags can be made to show nice icons instead of just a “#” if you choose so. For example, a mind icon for a #therapy tag.


There we go. I am enjoying this so far. I don’t feel the need to move everything from all my other apps because of my needs, as I explained above. Moving my previous journal notes should be easy — they’re all Markdown!

The post I am not scared of a Bear! appeared first on Ru Singh.

View Details

Of course, I still build websites. Let me explain the title a bit.

Websites have morphed into applications over time. Not something I am entirely happy about, but I suppose the web was always going to head in that direction after Web 2.0. Everyone would want to be the owner of a platform. I would go so far as to say there’s a certain kind of power trip or an ego boost from yelling at offline people, “Hey! I run a community.”

I digress.

Here’s what gave me a kick when I started out — as a hobbyist over 10 years ago. I don’t think much of it holds true today.

Instant feedback. Write HTML.
Ctrl+S for save.
Alt+Tab for switching to the browser.
Ctrl+R for reload.

It was all that simple. Three steps.

Narrow scope. Since web applications weren’t a thing, you could complete projects fairly quickly and it wouldn’t be so hard to maintain even for a single person. The biggest parts of your job were creativity, designing, and fighting browsers. At least on the frontend side of things.

The landscape today, to put it plainly, is fucked.

Participation in a global network. Honestly, a big, big one. Grab some HTML, CSS, and JavaScript files, put them on a hard disk that someone is renting to you (this was a very tangible process), and everyone around the globe could enter a few letters to reach something you made. Everyone!

I suppose the novelty has worn off a little with time and abstractions.

Predictable deadlines. Thanks to narrow scopes, predicting how long a project would take wasn’t a wild, wild, wild, wild guess. Along with of course, many teams having similar stacks and pipelines.

Now? Everything is a language to a language. HTML is abstracted. CSS is abstracted. JS is abstracted. The number of technologies that can be used to build for the web, essentially, has shot up.

Inclusivity. Inclusivity was perhaps an accident. You were writing and building for everyone because of the server-client architecture at the time. Computation was done server-side, right? You never assumed all of your audience had powerful computing devices.

The post Why I used to build websites. appeared first on Ru Singh.

View Details

I’m currently on a mental health break from almost everything. Assuming this post makes it through on the 1st, feel free to congratulate me on teh massive effort.

COVID-19 infection. As unfortunate as it was, my new year started with a positive COVID-19 infection. It was brutal for a couple of days in between. Honestly, yeah, I’m thankful I made it through.

Embracing the Apple tall-walled garden. I now have the full array of basic devices — a mobile phone, a lightweight laptop, and wireless earphones that alternate between the two.

A list of apps I’ve been using:

  • Photos (in conjunction with Google Photos)
  • Podcasts
  • Notes
  • Mail (as a viewer for Fastmail)
  • Reminders
  • Contacts
  • Calendar
  • ~~Maps~~
  • iMessage
  • Music (currently trialing this against Spotify)
  • Pages
  • Numbers
  • Siri

Yeah, it’s a lot. Some apps (psst, it’s primarily Music and Siri) feel suboptimal. Which I find incredibly hard to believe for a 3 trillion dollar company.

New SmallCamp member! This month, we also welcomed a new member to SmallCamp. I got in touch with current donating members and friends alike to check up if our funding will be good for another year — and delightfully, it is! A second shout out to Andy Alderwick.

I’m currently battling with how Mastodon handles multilingual profiles — this new member she writes in both English and French; how Mastodon does that is probably a part of a new community guideline somewhere down the line.

Python/Django mentor. I also reached out to the Fediverse to find a mentor for a client project that I’m really struggling to finish. I know it’s not all of it, but one big factor is also the fact that I’m literally working alone. A couple of you are really keen on it — I’m sorry I haven’t been able to move the needle, but I promise I will this month, once I’m back at work.

Static site again? I gave it a couple of tries (11 Jan, 27 Jan, 28 Jan), but I think I’ll stick with WordPress. I didn’t realize it’s about to be a year, and I have to say, how little I’ve touched code once I had my personality reflecting on the site is a LOT less than what I did with my (old) static site.

A lot of things don’t make sense to me in WordPress land, and it’s smack in the middle of this huge transition into something else, and I won’t lie — I’ve been tempted to move away to a lot of other platforms like Ghost or Substack which are more focussed on blogging. In the end, WordPress comes out to be the best compromise.


See you next time!

The post January 2022 in review. appeared first on Ru Singh.

View Details

Granted, I’m not in the best space to be asking this question, but I am starting to wonder if routines are not my thing anymore. At least right now. For me. Those qualifiers are important!

An unusual end to last week. Normally, I work Monday through Friday, and don’t bother with work on the weekend at all.

How this doubt over the routine life was cast was when I spent some time on Sunday interacting on one of the work chat rooms. Followed by me setting things up for a nicer Monday: configuring my user on a server and such.
Before this, I spent Friday sobbing and instead Saturday working… in bursts. Mentally through-out the day. Three to four hours at night, only separated by a quick dinner break.

I’m going to try and be chaotic — that’s what this feels like — for a while. The chaos might help me appreciate routine more; you know, get back into gear.

I have had success with it though. All my life, I’ve believed in routines of some sort — strong or perhaps as just a loose guide. And for the most part, it has done me well.

There’s Doug Belshaw whom I know to be a big fan of routines. He justifies it way better and more comprehensively than I could ever build an argument against. Anyway, that’s hardly the objective here.

What do you find works best/better for you — routine or freewheeling? Perhaps both depending on where your headspace is?

The post Are routines not all that they’re made to be? appeared first on Ru Singh.

View Details

Since roping myself into the Apple “ecosystem” recently with an iPhone and a MacBook, I sat down and started contributing to Apple Maps.

I actually do like the app experience a little better than Google’s, but that’s of course nothing without accurate data.

My experience thus far. So I started contributing in a bid to improve the situation, especially for India. Some shockers along the journey have been…

Where are all the Apple stores?! Its own resellers are sometimes entirely missing. This is so embarrassing. As a company, I would want to make sure all my stores exist, have the latest info, and correct pins on my own Maps product.

Dense areas. Dense areas are very difficult to map. Apparently, even submitting correct locations does not guarantee that the pin is ultimately placed where you requested for it. I have noticed this repeatedly and cannot explain why this is.

The review process. The review process seems quite arbitrary. I have a bunch of edits sitting in “Submitted” while others are approved much sooner. If these are not going to be accepted, I’d like to hear why and have it rejected quickly, so I can re-submit a better report. The turn around time on average is… not pleasant.

Integration with my contact card. Home and Work are super difficult to set up. Google wins hands down in this department.

“OMG, stop, Ru!” Even if it is one evil corp against another (Google), I do believe having two good products (Google Maps, Apple Maps) is a valuable ask. I’ve contributed for decades to Google Maps, briefly to OSM, and now to Apple Maps. Of course, all unpaid.

As customers, I think the more credible options we have, the better. They can be big tech.

Where Apple stands, especially in India, I am not sure if I want to keep contributing. I simply don’t think the higher management cares.

Thoughts? Let me know over email, Mastodon, or Twitter.

The post Apple Maps. appeared first on Ru Singh.

View Details

Through my site analytics, I just learned that Mike wrote a small post in response to my recent MacBook post:

Not really very Pro of you, Apple. Hello, Air.

Instead of relying on analytics, relying on Webmentions is far more straightforward in theory.

I’m still itching for a single, all-purpose IndieWeb tool that just works and looks great. Shout out to Tanzawa again, which I’ve been keeping a keen eye on and will continue to do so. Here’s pushing you on, James!

The post This is where IndieWeb did shine. appeared first on Ru Singh.

View Details

Tested positive on Monday, was feeling off right from Sunday morning. It’s been hell so far. Today, I’m neither sleepy nor awfully tired to be typing this out.

I had my vaccines about 6 months ago. Booster shots in India are only now entering the system. I wish this had started at least a month ago, if not earlier. It’s spreading like anything here…

The worst symptoms have been back-ache and chills. It’s no joke. Take care everyone.

The post I have COVID-19. 😭 appeared first on Ru Singh.

View Details

I hinted in my December 2021 review that my transition to an Apple laptop seems imminent.

December 2021 in review.

But this soon? Yes! I’ve had the M1 MacBook Air for two days. And I love it.

Why not the MacBook Pro? Awful sales policy. After I received no support whatsoever from Apple or its Premium/Authorized Resellers in India, I decided to not give over $4000 of my money to Apple, and try to look for a more budget option within the ARM variants.

My biggest concern with my original pick (MacBook Pro with the M1 Pro) was whether I needed the 16 GB memory variant or the 32 GB, and whether I could make do with 14.2″ or I needed to go big on the 16.2″ variant. Officially, Apple dislikes its Indian market segment for some reason (they don’t offer any returns or exchanges). I quote from their sales policy:

Products purchased at Apple Store in India cannot be refunded or exchanged.

If you believe that your new Apple product is defective please contact Apple Store Customer Service to discuss your options.

Apple India Sales Policies as on 2022-01-01.

I assumed they might make an exception if I spoke to them, and the paper policy might be to deter obvious frauds. Of course, they didn’t make any exception. I was told to “make a decision before buying because there’s no way for you to upgrade your memory or get a new laptop in exchange. We simply don’t.”

Air versus the Pro 13. I finally went with the MacBook Air, with 16 GB of memory and 512 GB of disk space. I also opted for the extra GPU core, although I’m told it doesn’t really make much of a difference. It’s just a nice to have so I can hopefully run this machine for two or three years.

At this point, it’s already over a year old, and it might have been better to wait for the M2 Air, but waiting for new tech is an endless cycle. Assuming something is announced/released in late-2022 or even mid-2022, the chip shortages are expected to continue, and getting my hands on one would have delayed it to early 2023. Why wait a whole year? I’m frustrated today, might as well replace today.

That said, the M1 Air I feel was priced a bit more on the lower end because it was the start of a big bet.

MacBook Pro 13 on the other hand isn’t a massive upgrade over the Air, and even includes a Touch Bar which is on the way out. I wanted no part of that.

Not difficult to move on from. The M1 MacBook Air runs about $1770 — still significantly more expensive than the US counter-part which is at $1449, but a way more affordable piece than the MBP14/16 with at least half their price if not more.

If this went sideways, selling an Air would be indefinitely easier than a Pro. If it worked out, I could live with it for two to three years.

My experience with the Air. Apart from the Monterey download bugging out twice, and a Messages’ interaction causing the whole system to crash while on Big Sur, everything has been flawless.

Web development. I’m quite surprised by how well macOS manages memory: running Docker has been no issue for my workload! ARM supports seems okay at this point. I was able to install NodeJS and Python using asdf.

I haven’t had a proper work day on this machine yet, but I’m expecting it to be fine.

The two-year transition period. Rosetta 2 works so transparently I don’t even notice what is native vs. translated, and everything is still very fast!

There are some apps that do feel slow, like Standard Notes, which is indeed translated. On the iPhone, their app is really fast, and I hope to see that on the desktop as well once they release an ARM variant of their app.

Battery life. 31 December was the last due date for filing income taxes here in India for the April 2020 – March 2021 period.

On day one, I charged the laptop to 100% and went about my work… browser tabs, YouTube videos, lots of research, working with PDF files, chatting intermittently, and so on. And I lost about 3% through these three to four hours. I almost felt like the battery toggle is simply bugged out or lying to me. Impossibly good.

The little things. * Touch ID works great. I don’t think it’s too small. Not yet anyway. * Wake up is instant — I’ve never owned an Apple laptop/desktop before. I’m extremely happy with this. * The speakers are an upgrade — they’re not the best there is, but they are good. * Turning on and connecting to the mobile hotspot all from a single click on the Wi-Fi menu is amazing. So convenient. * I actually like Spotlight so far. * Preview with Space Bar is amazing. How have I lived without this for all my computing life?

Display. I thought I’d hate the glossy display after using and preferring a matte screen for the last seven years. That’s not the case. The colors pop.

The bezels are clearly thicker than my XPS — which is four years old and has kept up with all the technology madness that has happened in the last few years. Do they bother me? Not yet.

Keyboard. Compared to the XPS, this isn’t a huge step-up, but I prefer the MacBook keyboard already. The keys feel…a little less heavy on my fingers, a little more tactile.

The backlight under the keys doesn’t bleed out like the XPS, and feels better and easier on the eyes.

Weight and cooling. It’s fan-less, weighs just 1.29 kg and about 1.46 kg with its 30 watts charger. I’m worried how I’m ever going to go back to the 1.8s and the 2.0s.

It can get a little warm at times, but not to a point where it’s unusable.

Final word. So there you go…

If you are a professional web developer but not reliant on running dozens of Docker containers, even the 16 GB memory variants should hold up well. This was one thing that was very hard to find on the internet. People are split between the 16 and the 32 because web development can mean different things to different professionals.

The best thing you can do of course is find someone from whom you can borrow their 16 GB laptop with the M1/M1 Pro, and that will leave you feeling confident walking into an Apple/reseller store.

I am really enjoying my first introduction to iCloud, macOS, Air, and the ARM architecture — I would 100% recommend this to a Windows/Linux user. Try it, and go back if you wish to after. Take the experience in, so you can take it back to the work you do.

Featured image by AppleInsider.com.

The post Not really very Pro of you, Apple. Hello, Air. appeared first on Ru Singh.

View Details

This has been a difficult month in terms of getting work done — any work done. The featured image you see is from one of my café outings to work in a new, different, and slightly more social environment. That really helped, I think.

Here’s the rest of it.

Finishing up my email sorting. Since I moved to Fastmail, I had procrastinated on finishing up the sorting process. This mostly involved back-labelling thousands of emails, so they’re more accessible.

Heading towards Inbox Zero: here’s what my Fastmail web interface looks at this time. After waiting months for the drive to strike, I followed Nicholas Danes‘ footsteps and removed labels completely from my inbox. I do have a couple of rules to keep very frequent emails from alerting me on the desktop or on my phone, but other than that, I’m going to keep this vanilla.

I currently only have less than 10 emails in my inbox, while everything else is in archive. They sit there because I need to take action (reply) on them, that’s really it.

Moving to elementary OS 6.1. I think I’m just bored with GNOME and Pop!_OS at this point. I’ve been using it since 2018/19, and it had been rock solid stable for most of that time.

Lately I have to say it’s been less so. Not sure if that’s on account of GNOME going through major changes, or System76 deciding to throw its weight behind its own desktop environment, or something else entirely.

Enter elementary OS. I’ve been tooting about it. For the most part, I really like it. I think another reason for me to move was to feel excited about things again — and have that rub into my work which was really difficult mentally this month to keep up with.

A few things that still don’t seem very polished/error-free:

  • Sometimes the Wi-Fi menu shows blank SSIDs. Lots of them.
  • Sometimes the calendar in the date-time dropdown can glitch and both previous/forward buttons take me backwards.
  • AirPods 3 don’t “work” at all — apart from being connected and technically working. I can barely hear anything, and of course the mic is a flop. On Pop!_OS, I had moved to Pipewire which really helped matters. I simply don’t want to do that here anymore. Or on any Linux OS anymore.
  • Sometimes Dino’s notifications can throw the workspace and window focus off.
  • Firefox is yet to support the new freedesktop dark mode standard. It’ll take time is my guess.
  • Can’t set a custom keyboard binding for PrintScreen (a single key).
  • Cannot change the intensity of night light. Bummer.
  • I’ve also been unable to get Emote working properly.

All in all, my move to macOS is imminent. Failing that, probably a high-end Windows machine — maybe a Dell XPS again? I just want to get work done without being frustrated.

Cutting expenses, again. WordPress. I am also cutting expenses, mostly digital. I have considered moving to a static site again since it’s free, but I doubt I can move back to that workflow. And moving all my posts over? SEO? Media? Shudders.

XMPP. I’ve had to cancel my minor recurring donation to Snikket. I hope the project pushes the envelope for XMPP — it’s literally my only hope, to be very honest. Either Snikket succeeds, or XMPP stays a barren, niche protocol.

Misc. I’ll also ditch BunnyCDN soon, along with Google One and more. Although their prices are pretty affordable on paper, even for Indians, it’s still an unnecessary expense.

P.s. I’m trying to collect some donation promises for Metatext. Chime in?


That’s all for this month, and year. Oh, and happy new year to everyone! Stay safe and practice Covid-appropriate behavior — the Omicron variant is everywhere.

All rights reserved for the featured image.

The post December 2021 in review. appeared first on Ru Singh.

View Details

Yes, the same one that has those three cooktops-like camera bulges. Yes, with the ancient looking notch. Yes, from a company that has numerous deep and highly problematic issues.

I bought an iPhone 13 Pro.

Why move away from Android. This thought was seeded a long time ago. I was constantly feeling frustrated with both the consequences of being pro-privacy and owning an Android phone — in tiny ways that added up.

Google also seems to have gone very funny with Android 12‘s design language. Usually I’ve enjoyed their fun-loving, colorful designs, but this is a little too…weird?

Anyway, I realized I don’t really care for all the benefits of Android anymore. My phone also ran out of its software support cycle (3 years), so it was time to move on by the end of the year. When I had asked the Fediverse earlier, seems like Pixel was the most recommended phone. Pixel 6 hasn’t launched in India. Yet.

Getting an iPhone felt like this middle-ground. A half-evil solution to living my life more care-free while being spied upon by fewer companies.

Between Google and Apple, I trust the latter more. Relatively. I could have gone for a high-end Android, and I’m sure it would have met all my needs very well.

It was time to explore something new. I’m guilty of liking it. Too much.

Why the Pro variant. I think the regular variant is pretty good. No concerns around battery life, there. The size is okay. But the refresh rate? That’s not cutting it…

Mini is great too, but I was worried I would not be happy with the battery life and the bog-standard 60Hz refresh rate once again, in 2022 (nearly there, now, aren’t we?)

The Pro Max is huge (6.7″) and heavy (238 grams) — a direction I wasn’t particularly excited about.

That left me with the Pro — neither too small, nor too big. Pricey, a little too heavy still at 203 grams, but checking some boxes that I expect from a phone in this day and age:

  • A fluid display (ProMotion, 10-120Hz refresh rate), and,
  • The extra (3x) telephoto lens that doesn’t feature on Mini or the regular variants.

There’s a good chance my next phone is a Mini though, whenever that will be, for its smaller size and light weight. For the current generation, that’s 5.4″ and 140 grams (!).

A quick review. Positives. * Holy shit this phone is fast! * The display is gorgeous. * The call log is a wonderful bit of thing that I don’t think I’ve ever seen or heard anyone talk about. I was as surprised as delighted. It collects all your Uber, WhatsApp, Telegram, Duo, FaceTime, voice calls and so on into one log — brilliant. * Links from iMessage show up in Safari. Actionable. Very nice! * Siri is smart to understand a command like “Start a video call with James on WhatsApp.” I know Siri isn’t amazing, but it’s after years of restraint that I’m taking part in the voice-assistant economy, and it’s helpful for these little things. * The camera and video quality are miles and miles above what even premium Android smartphones offer — at least for day to day use. Would only feel unfair if this wasn’t the case, given it costs 2 to 3 times as much.

Downers. * No dual/parallel apps. I am having to use WhatsApp Business to communicate over my public phone number. * Scrolling/extended screenshots aren’t available outside of Safari. * Dual SIM is actually eSIM + nano SIM. Not a big deal once you sort it out, but again, made my transition a bit harder than I’d have liked. * No fingerprint reader. Masking up is still going to be a thing, and it’s annoying when outside to be using Face ID or a passcode. * Charger or earphones not included. The talk about being pro-environment is bullshit. * Background photo syncing is limited to just Apple Photos.

Adding the AirPods (3rd generation). More recently, I sold my OnePlus Buds (the mics did not work so well for me) and my external monitor (I wasn’t using it so much). Combined with a bank offer, I was able to make a net investment of ₹6,100.00 and get these AirPods — sightly less than 1/3rd of its retail price.

I’m very happy with the audio, though there was nothing wrong with OnePlus Buds either. But especially the mic quality is really nice. No longer do I have people shouting at me that they can’t hear me or that I am not audible enough. Note that this isn’t the case with the person I sold it to – they are able to chat just fine. Likely a very subjective thing.

The fit is also slightly better than the Buds, which is very subjective again.


I have been enjoying the hardware and the operating system a lot, is all I really have to say. Most things do just work. It’s just a phone to me now. And that’s exactly what I wanted my next step to be. I’m exhausted.

Until next time.

The post I bought an Apple device… appeared first on Ru Singh.

View Details

Been a while I got a chance to write. I went home in late October and only returned late November. It was a decent trip, overall.

We celebrated Diwali after years together as a family. Later in the month, I cleaned up some old stuff that was collecting dust. It was good to have some memories flashing back in my mind. I also went for dinner with family.

For the most part, this month, I knew I’d be switching off from all of SocMed (due to personal reasons). That included Fosstodon, SmallCamp, Twitter, this blog, and pretty much everything except the bare minimum of my day job.

And lastly, I ordered a new phone. I’ll write about this later , most likely in December, but you know how these things work out. It’s probably the my-new-phone feeling, but it’s gotten me to journal a bit more. I like that, but let’s see if it sticks.

The post November 2021 in review. appeared first on Ru Singh.

View Details

I’ve been using YNAB since 2017, I think. Ever since I started making my own living, essentially. It had been evading me for years because of its hefty price at the time, so I was excited to dig my feet in. Young and energetic — and I still am, just with different priorities now — it was not a tussle to manage it all.

While it does so for its US and Canadian users, YNAB does not offer a bank sync for me, and I don’t think it ever has. I rarely ever need the customer support too.

Thanks, Nicholas, for that cheesy title!

Unfortunately, no matter what you need or don’t, you pay the same price: $83.99. There are no tiers.

It is a perfect product, really…

  • It receives frequent fixes and enhancements, and the occasional new feature — across all platforms.
  • They build a web app that has a polish and focus that shines well above its competitors.
  • It is built on the solid “zero-budgeting” method.
  • Customer-support doesn’t BS.
  • A good community, even if much too Americentric.

However, its primary market is college graduates finding it cumbersome to shake their debt off. Getting rid of debt is what they focus on most. That’s not me.

I live in the third-world, I am debt free, and although I did split $84 two ways for an effective price of $42/year, it just felt like a waste at this point with neither my friend using it nor me. We were both tired of the manual input process (bank sync of course is not available in India).

Toshl. Manually inputting everything caught up with me finally.

Why am I paying $42 a year to annoy myself every day and every week? Surely this can be automated… and it could, but not without quitting YNAB and switching to Toshl.

With Toshl comes a totally different paradigm of looking at your finances. And it would work well for people who earn for themselves and spend for themselves.

I don’t know about you — but eating out with friends, borrowings in either direction, a running balance with your roommate/flatmate — that’s just life and Toshl cannot accommodate this at all.

A screenshot of the “Splitwise” page on my now-abandoned sync website. Having paid for a month’s trial, I gave it a real go. I even took the chance to build myself a Flask-based sync tool from Splitwise to Toshl (they do sport an API).

Yet, without building a complete replacement for their frontend using the API, it was simply not viable for me.

None of their “Budgets” were accurate because Toshl has separate categories for incomes and separate categories for expenses. It cannot count back income, refunds, and receivables in a category like YNAB does since it is not shared between expenses and incomes.
To elucidate this, say you went out for lunch with Jane who owes you $10 because you paid for it in full. Toshl notices the $20 charge, syncs it, and you have a new expense in the F&B expense category. To reflect the “real” balance for the F&B budget, you’d have to count $10 back from Jane. However, the budget only takes into account expenses. So when the $10 from the Splitwise sync tool reaches Toshl and adds itself to a F&B income category, the budget doesn’t update.
As the month goes on, your budgets reflect less and less of reality.

Makes sense?

A big ask… yet I decided I would build this, and then binned it. I cannot be paying $35/year for essentially an API that might change any time and a bank sync, and then to write+maintain my own business logic on topic of it.

Notion/any spreadsheet application. I have built a super simple table on Notion instead now. I calculate my total balance manually a couple of times a month, subtract for reserve funds (such as The Emergency Fund, Moving Fund) and any major expected expenses, expected income until my contracts run out, and expected regular expenses until my contracts run out, as well. This way, I reach a zero, and it works.

Here’s a preview sheet I made:

I also track my overall balance over time to double-check that my net worth is indeed increasing.

You could just as easily use a spreadsheet:

Benefits. It has several benefits for me:

  • Free. I save $35-84 per year. This adds up over time.
  • Low stress. No need to spend 10-15 minutes per day entering transactions or being out of sync with real life when you skip a few days.
  • Budgets are hints, not accounts.
  • By tallying up accounts once or twice a month, you can keep yourself in check.
  • I do not lose the ability to track my balance over time.
  • I am reasonably able to predict short-term expenses and prepare for them (the next 6 months or so).

I like this system.

What do you use to budget?

The post YouNeedABudget (YNAB) just doesn’t make cents… for me. appeared first on Ru Singh.

View Details

Moving away from YNAB, I think. Going to use Flask, SQLite, and SQLAlchemy to build a sync between two apps I use and will use.

No git, no Docker, no OAuth. Keeping it simple — it’s going to be just for my use anyway.

Also going to take it real slow. Like, real slow.

Log Continuously updated.

2021-10-05 * Be able to connect to both the services via a personal access token and render a Jinja2 template with my name from each service.

2021-10-06 * Use template inheritance in Jinja. Awfully similar to Django Template Language. * Handle 4xx errors. Need to read up more on this, still, but not a priority. I imagine 5xx errors would be similar.

20201-10-xx * TODO.

The post New personal project in Flask. ✨ appeared first on Ru Singh.

View Details

Upcoming: a small trip. I’m heading to the northern part of the country next month, and am really excited about this small trip. It’ll be my first proper travel since… March 2020, basically. It’ll be so nice to see friends and family again.

I have also saved up for it for a long time, so I hope I don’t mind spending it in the hour of want.

Work. Pushed out a huge update to our marketing site. Hitting a near-perfect 100 on Lighthouse now. Especially a big improvement for the blog pages that I am proud of.

I really wanted to take this project on to:

  • Get my employer to look like they belong at the level they are operating at now.
  • Be able to quickly make hiring posts that can act as the single source of truth, instead of relying on third parties.
  • Deliver a culture picture to people not working here (yet).
  • Take complete ownership and deliver something good. Just for my own sake (confidence!).
    • This is the second project I’ll deliver in the timeframe of the last few months. Post this, I expect a bit of hiatus in terms of hard delivery, since the rest of the projects are not so straightforward.
  • Friendlier copy and design updates to bring them from 2015-2019 into 2020-2021.
  • Better SEO on their blog pages. Make it not just machine-friendly, but also human-friendly.

Although I haven’t written any SEO posts on my site (and don’t think I will), I’m also getting exposed to things on that front, and it’s cool to learn both about marketing and SEO.

Meta/site updates. * Added my Bandcamp link as well as a couple of sites you can use my referral links at to sign up on. * Added a table of contents for longer posts/pages. * Updated my uses page (a bit of design updates like featured image, plus some re-organization, plus making sure it’s not too out of date). * Continuing to add to my public gratitude journal. * Added a CDN!

Well, that’s it. See you next time!

The post September 2021 in review. appeared first on Ru Singh.

View Details

After trying to implement my own tip on this site, I learned something new about WordPress.

Tip: Block images from appearing in a Google Images search.

I could see that a /robots.txt response was coming through, but from where? This threw me off plenty, as I could not find the file anywhere at all on the file system.

What finally helped me move in the right direction was the constant wondering — even while trying to sleep at night — about how a plugin could modify files not in its scope!

The answer was it couldn’t. So, WordPress must be doing the heavy lifting. And it is!

The robots.txt file is generated by WordPress using hooks. Specifically, the robots_txt hook.

So you’d hook into it like so:

``` /* * Disallow Google Images from indexing my pictures. * Normally you'd use $public to decide whether * to hide something at all. If search engine * indexing is disabled, we're really not doing * anything by updating the robots.txt file. / function protect_privacy_my_photos( $output, $public ) { $output .= "\nUser-agent: Googlebot-Image\nDisallow: path/to/image.jpg"; return $output; }

/* * Hook name: robots_txt * Function to call: protect_privacy_my_photos * Priority: 20. Core WordPress is generally 10. * Arguments to function called by WP: 2. / add_filter('robots_txt', 'protect_privacy_my_photos', 20, 2); ```

Join the discussion on Mastodon, Twitter, or write me an email.

The post Updating a robots.txt file with WordPress. appeared first on Ru Singh.

View Details

I recently had to execute a command that I did not want the shell to save in its history.

bash After a little searching, I finally understood what this little variable HISTCONTROL does. Definitely seen it around, never bothered with it; one of those things.

As long as it is set to either ignoreboth or ignorespace, anything starting with a space will not be saved to history.

echo "Hello world!"

The command will still execute as normal, but that extra space makes a difference. Continue reading with an authoritative article on LinuxJournal.com from 2009.

zsh Thanks to rzg for pointing out the zsh-equivalent: HIST_IGNORE_SPACE.

setopt HIST_IGNORE_SPACE

Join the discussion on Mastodon, Twitter, or write me an email.

The post Cleverly skipping statements from being saved to history in your shell. appeared first on Ru Singh.

View Details

Like several friends (Nicholas, Chris, Jan-Lukas, Kev), I have been going through a process of figuring out my device/development/sort-of-entertainment setup. It’s interesting in the sense that we did not embark on this together as a conscious decision. It has been worthwhile reading blog posts on this from them (and more folks elsewhere)!

Just a couple of days ago, I reinstalled Pop!_OS with the idea & belief that I will make this work, and it will be my main OS.

But first…

History time! I have been a Linux user from 2015 to 2017 — this was my distro hopping phase. You name it — Manjaro XFCE, Lubuntu, Kubuntu, Linux Mate, Budgie, Ubuntu, and a couple more. For the most part, I was using some XFCE based distro since my memory was limited to just 4 GB, only upgraded to 8 GB for a short while before I gave the laptop away. I also had a lot of time and interest in tweaking. XFCE was perfect for this.

Briefly, I used Windows as an exception in early 2018 when I got a new laptop. At this point, WSL was not usable, and I got a little bit tired of carrying out my freelance work with cmder. Everything that I needed did work — except for symlinks. Vagrant and cmder carried the bulk of my needs on their shoulders, as Docker was not at all a part of my workflow at the time, or my clients’.

So then, I moved to Pop!_OS since it supported my Nvidia hardware out of the box and System76 advertised it as built for developers to be productive out of the box. I was delighted. And starting to feel settled.

For extended periods between 2018 and 2021, I have been happy with a dual boot of Windows and Pop!_OS, with the latter being my primary (when I say primary, think 99% of the time).

Excelling. Pop!_OS does excel at a few things:

  • Freedom.
  • Brilliant font rendering on my MDPI display (fares worse on LoDPI).
  • Just works with my Nvidia hardware.
  • Stable as heck.
  • Their custom additions are nice, even though I don’t use them much (such as tiling).
  • I booted Fedora to test GNOME in there and was surprised to see no dark mode. Maybe Pop!_OS have built this out on their own from Ubuntu’s beta? Either way, amazing.
  • Window and workspace management is superior.

Falling short. With that out of the way… here are some things I immediately felt the lack of on Linux/Pop!_OS/GNOME after returning to it post my Windows+WSL2 experiment.

An official desktop client for WhatsApp. Now and then — not too often — I need to make a video call or two. On Windows and Mac, this is possible with WhatsApp for Desktop.

The web version of WhatsApp doesn’t support this, so none of the unofficial desktop clients can do anything about it on Linux. Booting into another OS for one video call is a crazy idea.

A cropped screenshot from WhatsApp for Desktop on Windows 10, showing voice and video call options for a chat. Apple users in India don’t tend to have Signal or Google Duo (my other preferences). This was the case with the person I had scheduled a call with yesterday.

First-class clipboard and emoji helpers. I am surprised Windows leads here — not only are both of these available natively (!), the clipboard manager is also capable of understanding images and shows a preview in the clipboard dropdown.

Windows clipboard manager showing a picture copied to clipboard with a preview. Pop!_OS/GNOME doesn’t. I use and have to use GNOME extensions. The clipboard manager I use doesn’t understand the concept of photos in clipboard. It also doesn’t do an automatic paste — very clumsy to use.

Emojis are also nicer to use on Windows. And has been around a while. I came across a design for it on GNOME, but no idea if and when that will see daylight. It was last edited in 2017. I am guessing they did release it, but it does not work outside GTK apps.

A calculator that’s feature-packed, functional and pretty. I can literally get currency conversions with live exchange rates. Or even convert between different units of distance, volume, and so on.

I can convert either from USD to INR, or INR to USD. No need to open a browser and a search engine. Granular volume control. Windows goes from 0-100 at a step of 2.

Pop!_OS has something like ~10 volume configuration in total? It’s easy to hit a spot of “too loud, too quiet” and resort to changing volume both at the system level and at the application/website level.

Dell’s proprietary battery management utility. My laptop is over 3 years old and has only a 16% wear level. That’s fantastic and has only been possible because I keep it plugged in and between 50-60% as much as possible.

The dashboard screen of “Dell’s Command Power Manager.” Dell’s battery management utility makes this easy on Windows. With any Linux OS, I would either need to go to the BIOS or into Windows — both inconvenient for a small change.

Fade transition between brightness changes. I have a laptop I paid a ton of hard-earned money for. It feels nice to have cool, stupid stuff like this.

Streaming Amazon Prime in HD. Amazon locks out Linux devices from being able to stream in HD. I don’t see a future where they will allow this. Sadly, “content” does tend to get split between many, many streaming providers.

Just yesterday, my room-mate wanted to watch something on my laptop together — and I literally felt anxious. If it were something that was on available on Prime, I would have had to ask her to bring her laptop and watch whatever on it. And put mine to sleep. And re-arrange the space a little.

Not ideal.

Also, quite ironic by Amazon.

Quickly resizing images. This is not a core feature, but quite handy, and now I use it all the time.

Image Resizer, made available through PowerToys. It’s as easy as right-clicking an image file, and selecting “Resize image.”

Some imagemagick trickery could probably achieve this for me on Linux…but it can’t beat the friendliness of Image Resizer.

Dedicated devices? I am considering buying a mini PC just to run Linux on it and dedicate it as my work computer. That makes sense to do because I already have a monitor, a wired keyboard, and a wireless mouse. However, it doesn’t sit so well either with me for a few reasons:

  • Two devices.
  • It’s expensive.
  • Less portability.
  • Already too many savings goals to bother with one more…

Wrap-up. Of course, on a scale of how much something annoys me, these range from a simple, mild inconveniences to “I should go back to Windows.”

For now, within a couple of days, I am back on Windows. It does a lot of things wrong, too — but it seems to be working for me right now.

Let’s see where this journey takes me in the coming years.

As of 24 September 2021, I’m back on Pop!_OS LTS as my full-time.

Discuss on Fosstodon, Twitter, or write me an email. Photo by Yash Menghani on Unsplash.

The post Spent a few months on Windows — here’s what I miss on Linux/Pop!_OS. appeared first on Ru Singh.

View Details

Motivation I was advised, long-ago, that having dates in permalinks help a search engine determine how fresh the page is. With certain meta tags, my guess is they are no longer necessary.

And who doesn’t like clean links?

Goal Say your permalinks are like so:

/2021/09/13/block-images-appearing-in-search/

And now you have decided to move to a date-less permalink, like so:

/block-images-appearing-in-search/

If you self-host WordPress and use Caddy, here’s what I did.

Configure Caddy. I use a named regex path here (matcher). Then I ask any matches to be redirected (directive) to the fourth capture group in the regular expression. That is the post slug.

```

Redirect to date-less URIs.

@wordpress_date_permalink path_regexp date_slug /([0-9]{4})/([0-9]{2})/([0-9]{2})/(.*)/ handle @wordpress_date_permalink { redir * /{http.regexp.date_slug.4}/ } ```

When I decide I no longer want to go back, I’ll make this a permanent redirect.

Configure WordPress. Log in to your WordPress Admin panel, and update the permalink structure. From the sidebar, find Settings > Permalinks.

The Permalink Settings page. Reload Caddy. We have our server configured, WordPress updated. Now quickly reload Caddy, so it can start redirecting to prettier links.

sudo systemctl reload caddy

Extra: Clear your local and/or CDN cache if you cache HTTP headers as well.

Note on SEO. With WordPress, at least, I do see the following two meta tags on an article:

<meta property="article:published_time" content="2021-09-13T09:37:01+00:00" /> <meta property="article:modified_time" content="2021-09-13T09:38:54+00:00" />

Those are apparently Facebook’s Open Graph tags. My guess is we’re okay since it is also the most understood object data structure.

Discuss on Fosstodon, Twitter, or write me an email.

The post Redirect to date-less permalinks on WordPress with Caddy. appeared first on Ru Singh.

View Details

Google Search docs basically has a page on preventing your images from appearing in their image results.

Essentially, image uses a separate crawling bot, and you block the image URLs used in your robots.txt file.

User-agent: Googlebot-Image Disallow: /images/hank-the-dog.jpg

I thought this was pretty cool and worth sharing. You could do this for your personal images on your own site! That’s a solid use case.

The post Tip: Block images from appearing in a Google Images search. appeared first on Ru Singh.

View Details

Kev recently posted about Core Web Vitals and WordPress.

Frankly, since moving to WP, I haven’t put any effort into speed. I didn’t care much, to be honest, about a couple of seconds.

Finally, I decided to sign up for BunnyCDN.

Measuring performance. Of course Kev’s blog post motivated me to check my PageSpeed insights and the two biggest bottlenecks were:

  • Request chaining: The font was requested from within a CSS file.
  • Initial server response time: Just bad; terrible for mobile.

I self-host this site, so that’s understandable re: the server response time — 2 to 3 seconds for desktop, and about 8 seconds for mobile.

Coming out on the better end. After hooking things up (integration with WordPress was super-easy with their plugin), and even making use of their storage box with replication, my server response time is <1s for both desktop and mobile. All this shows beyond the numbers – pages feel fast… incredibly fast.

Sometimes I even score a 100 for desktop! Taking this opportunity to have my favorite font back is also a cherry on the top.

Hopefully, the kind of traffic I get doesn’t make a big hit on my card. While it looks cheap on the tin, I am after all paying in USD while earning in INR. Nothing is cheap!

Discuss on Mastodon, Twitter, or email. Photo by NASA on Unsplash.

The post I’m trying out BunnyCDN. appeared first on Ru Singh.

View Details

A decent month overall. It’s always raining and a little gloomy. I like it, though.

Finished a second contract I had undertaken, and I’m super glad to have that be done. I want to write a couple of blog posts, but I’ll have to check with them first.

Still contributing around a bit even though I said I wouldn’t.

My reddit consumption, at least for now, has reduced thanks to a fantastic tool.

Anyway, here’s the overview for the rest of it.

Creative work and blogging?! I’ve been doing a bunch of UI work. This takes away all of my creativity reservoir, and then I don’t feel like writing here at all. Or maybe it’s just this grind in a pandemic-like setting.

I don’t know. Probably both. A bit of both.

Dishing out blog posts is hard. Almost on a whim, I decided to end my participation in the #100DaysToOffload challenge.

Work gear? The WSL2 “experiment” is going well — I have settled into it and think it works for all my use cases. I’ll be sticking with it.

I also cleaned my laptop fans and replaced the Wi-Fi (and bluetooth) card. Yay me! And you! That’s a better Wi-Fi card with a free upgrade to Bluetooth 5.1. I love that some parts are replaceable on this machine.

Really makes me reconsider if I want a Mac ever at all! Especially given everything I’ve started to absorb from my peers…

  • Outdated GNU utils.
  • Impossible to replace hardware.
  • Buggy core software, a departure from the company’s standards of the past.
  • High repair cost and poor support in India.
  • Not great for development (homebrew is terrible is what I’ve been told, and to an extent, seen)
    • Linux fares better here, and I am already comfortable with it.

I suppose a bunch of these are up for arguments. Let me know if you have any thoughts. At this time, I think I can only absorb and not debate.

Anyway… with those two fixes, I’ve potentially given my laptop another year or two of life and usage. Maybe even more.

Oh — and I really like that Windows 10 doesn’t flicker and do weird things when I unplug/plug in my external monitor. I thought this was really cool. It was definitely a thing last time I was on Windows.

I do miss Linux every day, still, for its own reasons. With Windows 11 being a weird OS, I think my return to Linux is imminent in a few years again, when W10 reaches end-of-life.

The email “project.” I’m finally done. It cost me about USD 13 to get this over the line, but it’s done and for that I am happy. I’m starting to see benefits and hopefully once the organization part of it is also fully complete, email will feel nice to use again. After a decade.

From 13 inboxes to 1 or 2. Imagine the relief!

Anyone who tries to reach me on my old emails can do so for about a month or two more. I think that’s enough time. I haven’t passed these ones around a lot anyway.

Meta. List of small changes and updates. * Nicer (and clearer) home page. * New avatar. * Updated a few old posts, such that they are no longer drafts + New Miniflux release. + Thoughts on Migadu and Fastmail. + Naming networks in a docker-compose file. + Configure git to use a specific SSH key for a repository permanently. * The blog page is also easier to skim through now. * I found out Jetpack Stats was adding some JavaScript/image tracking stuff, so I disabled that promptly. Go sign up for Plausible!

Email subscriptions — yay or nah? Also, I am considering disabling email subscriptions since I haven’t gotten even a single one until now. It’s been a while. Perhaps I am just not that popular?

Join the discussion on Mastodon, Twitter, or write me an email. Featured image by Anna Atkins on Unsplash.

The post August 2021 in review. appeared first on Ru Singh.

View Details

I thought it was an interesting challenge. Fourteen people have finished it as at the time of writing this. From the look of it, a ton of people participate/d, so that’s a solid win for those fourteen.

The whole point of #100DaysToOffload is to challenge people to publish 100 posts on their personal blog in a year.

Posts don’t need to be long-form, deep, meaningful, or even that well written. If there are spelling and grammar mistakes, or even if there’s no real point to the post, so what? What’s important is that you’re writing about the things you want to write about.

The 100 Days To Offload website, retrieved 2021-09-01.

I’m pretty damn happy with my personal count of 43 posts (!) starting end of January 2021 and finishing August 2021.

I don’t know if I’d have hit 100 in another 5 months. Probably? Maybe not?

That’s besides the point.

I want to start focusing a little on quality again. And write when I want to, instead of feeling forced to do it every three days or once a week. Keyword being ‘feeling’ — it’s not you, it’s me.

What now?

Maybe I’ll take a break for a few weeks. I don’t know. We’ll see.

Join the discussion on Mastodon, or write me an email. Photo by Tobi from Pexels.

The post An end to #100DaysToOffload. appeared first on Ru Singh.