E-ink and TOTP++

E-ink (or E-paper) displays are so cool! I love them! I got one recently, and decided to use it for my TOTP project, instead of the very basic OLED that I’d put. While at it, and since this was a bigger display — I decided to fill-up the rest of the space with something. The post-Covid reopening of my office paved the way for that something!

Since this was my first week (first few days, to be precise) at work, and since they have a new location now — I was apprehensive about the travel time (both to and fro). And, it so happens that TomTom offers pretty useful Traffic APIs — not just for routing, but for real-time traffic updates as well!

E-ink display showing TOTP & Travel times

So, I decided to give it a go, and after a little bit of dabbling to find the geo-coordinates (lat,lon) of my usual route — managed to arrive at the right set of params for the API call!

Once this was in place, I used the rest of the space on the display to show the O2H and H2O travel times.

…and here’s ze video proof!

Video showing E-ink with display updates

Making TOTP fun (ok, less boring!)

So TOTPs are irksome in that one needs to pull out the phone, open the app, and then enter the code at the prompt. Now, the naysayers may say: “ah, well, you could install a command-line utility, or use an online one”, to which I’d say: “Suit yourself!”. For me, it would still require me to have to type or execute or, as I was doing, open something like Google Authenticator on the phone!

Guess what, the humble Pi comes to the rescue here as well!

Continue reading Making TOTP fun (ok, less boring!)

RPi resurrection – Pt. III – Plex Media Server

The third good use one could put the Pi to, and use it thoroughly is as a Media Server. And that’s where Plex comes into the picture! I know, it’s nothing new — since probably the inception of RPi, there have been numerous such apps and OSs which have done the same — XBMC ports, Kodi, and likewise. But I have had mixed experiences with them — beyond the initial “aha!”, the experience wasn’t what one could “delightful!” in the long run. I think the biggest hassle for me was loading the media, to start with. This was followed by other aspects, like account management, supported formats (or the lack of it), and what not.

Continue reading RPi resurrection – Pt. III – Plex Media Server

RPi resurrection – Pt. II – NFS

The second good use you could put your Pi, more so if you have unused external HDDs lying around, is to make an NFS out of it! I’ll spare mirroring the details here, there are many good references on how to go about creating a Samba server. For example, this one.

Since my laptop’s storage is limited, oftentimes it started complaining, as soon as any space-consuming operation started. At that point, I often had to make some hard life choices! :), you know, of the “shall I keep the big file or zap it!” kinds.

Continue reading RPi resurrection – Pt. II – NFS

RPi resurrection – Pt. I – Pi-hole

Couple months ago, got to know about the Pi-hole project. It’s an ad-block server that can you can configure at the network level. That is, it can be configured as the DNS in your home router.

Of course, the benefit of network-wide ad-blocking is that it does its job in all of your home devices. If however, your router does not allow configuring a DNS — then you’d have to configure the DNS on a per-device level. While it may sound painful, but trust me, it’s worth it!

Continue reading RPi resurrection – Pt. I – Pi-hole

“Apology-based computing”

I came across this phrase sometime back, and was instantly intrigued by it. So, like any good samaritan, let me share what I could make of it for the larger good of humankind! While I present my assessment, I’ll also highlight aspects that make it very viable in most of the computing contexts. We will also delve into how this phrase, at some level, dabbles with the aspects of modern day computing like eventual consistency, the tradeoff between performance and correctness, and Amdahl’s law.

First, let’s get to understand what the phrase means.

Continue reading “Apology-based computing”

Microsoft++

Although, maybe, I am obligated to be loyal to AWS for various reasons (my work is AWS-centric, plus the fact that it facilitated my foray in the cloud), but still, over the short span of time that I have been in this field — I am getting increasingly impressed with Microsoft. Their documentation on aspects like cloud design patterns, microservices, etc., is simply impeccable — to say the least!

Moreover, since I am a huge fan of MOOC websites like Coursera, edX, etc, not very long ago, I came across a very nice course on edX, being offered by Microsoft, called Architecting Distributed Cloud Applications, which, again, I loved!

Apart from cloud-specific courses, they have a lot of other, general CS courses in the offing, which are also pretty good.

Overall, I think MS has come of age under Mr. Nadela, and is delivering how it should. Kudos to the teams, who keep such useful artefacts updated, as well as open to the world.

After all, the age of silos is long gone, and collaboration is the key!

Hosting a WordPress blog on AWS (for free!)

Much of what I write is a compilation of what I found on the Internet, esp. Pēteris Ņikiforovs’s post. I am indebted to him, as I heavily benefitted from his post while trying to get WP working. However, since that article is a bit dated, and cannot be used verbatim — I decided to jot this post down.

It is assumed that one would be having the domain name handy (e.g. myblogsite.com or foobar.io), before proceeding with the installation. In this post, let’s go ahead with foobar.io.

Continue reading Hosting a WordPress blog on AWS (for free!)

Streaming (only) audio using an old AppleTV (and a few nuances, thereof)

Oh, the ever-unsettled human!

In this age of wireless everything, I chose to stay ‘wired’ for a long time, especially when it came to music. Reason: although I don’t (can’t) claim to be an audiophile, I do appreciate hi-fidelity (hi-fi) music. Hi-fi audio is soothing even at high amplitudes, and I think good tracks deserve a listening, and not just a hearing! In other words, I am not a .mp3 guy, but more of a .wav (or .flac, if you please) person. Uncompressed/lossless audio rules!

My audio rig is a simple (non-wireless) amp and a pair of monitors, and it pretty much serves my purpose.

Continue reading Streaming (only) audio using an old AppleTV (and a few nuances, thereof)

The ‘L’ in SOLID

Uncle Bob‘s aptly coined SOLID Design Principles form the basis of a robust software application. Today, I want to talk about one of those principles, the Liskov’s Substitution Principle (LSP) because it’s easy to deviate from, and a few conscious design choices can prevent us from doing so.

In the simplest terms, LSP suggests that:

Any change that makes a subtype not replaceable for a supertype, should be avoided.

Suppose, we have a class hierarchy like so:

alt-base-heirarchy

At the first glance, the relationships here seem fine, but if we carry out an IS-A test, the issue becomes obvious: that Tea isn’t necessarily a CaffeinatedDrink (for instance: there’s decaf!).

Continue reading The ‘L’ in SOLID