RSSAmplifier

Blog

Classic Logic

Recent content on Classic Logic

/RSS feed ↗53 posts

Latest posts

Keyboards

(I’m not sponsored by or affiliated to any keyboard manufacturers). The other day I happened to listen to a podcast where The subject of keyboards came up. The discussion was about whether they can put up with a terrible keyboard at work if they have a huge salary. Their answer depended on how terrible the keyboard is. The money itself was not the sole motivator. The discussion made me think…

Cancelling Netflix

I cancelled my Netflix subscription a month ago. I was barely watching anything over the last few years. It made no financial sense to keep the subscription. I signed up for Netlfix in early 2020 with the mobile-only plan that was available here in India. It was not full-HD but that was okay. This plan costs around ₹199 (less than $3 in 2020) per month. That amount was not insignificant to me back…

Summarizing a meeting using WhisperX

I was casually playing around with WhisperX and wanted to quickly document how I summarized a meeting. This is a toy example just to demonstrate to myself how this works. There was no actual meeting. I pulled a publicly available non-serious meeting audio from the internet. Basically you need a .mp3 file; the exact audio format does not matter. 1. Transcribe the meeting audio In a dedicated python…

In China, Macau, & Hong Kong

I recently returned from a sightseeing tour of China, Macau, and Hong Kong. I visited Beijing, Shanghai, Macau, and Hong Kong, in that order. As you’re probably aware, common internet things like Google (including search, GMail, Drive, Docs, Play Store, YouTube etc), WhatsApp, Facebook, Instagram, X, or anything else that you take for granted don’t work in China. Most VPNs are also…

Email Management

I use GMail for most (not all) of my email needs. I’m aware of the risks of getting spontaneously banned from it, but that’s not what I wanted to talk about today. In this post I’ll talk about how I have automated the handling of non-personal emails (ie., emails not sent by a human to me, such as newsletters, updates from various services etc). Initially I used to manually label…

Japanese Restrooms

Toilets in Japan are a contraption in itself. I literally dropped my jaws when I noticed the controls. First up, the seat is heated! I’ve heard of heated and ventilated seats in cars but this is the first time I’m seeing a heated toilet-seats. I realized that heated toilet-seat is exactly what you need on a frigid morning! Next is the wiping mechanism. At the press of a button a…

In Japan

Just landed at Narita International Airport in Tokyo, Japan 🇯🇵. This is a family holiday trip. I’ll spend nearly two weeks here. In addition to Tokyo, I’ll also visit Mt. Fuji 🗻 , Hiroshima, Osaka, Himeji, Kyoto, and Nara. Japan wasn’t ever in my bucket list so I’m pleasantly amused to find myself here. Looking forward to viewing the cherry blossoms…

MX Master 3 Recharge Log

One of my programmer friend’s only regret after buying the MX Master 2 (he saved a few bucks by not going for the MX Master 3 – that’s his choice) was that he didn’t buy it sooner. That, and this teardown article about the amount of engineering that went to it made me buy a Logitech MX Master 3 in August 2021. Praises have been sung for this fantastic piece of engineering…

Netflix Asks Me to Buy New Device

I have been a happy customer of Netflix for over two years even though I don’t even watch it enough to justify what I pay (and where I’m from Netflix is substantially more expensive than other streaming platforms). But I figured it’s fine. I usually watch Netflix via a ThinkPad running Linux, connected to an external monitor. I’m old school. Yesterday I decided to watch a…

Manual User Authentication in Laravel

Laravel comes with a flexible user authentication mechanism which I highly recommend. Occasionally though, you have a good reason not to use what comes with Laravel and instead roll your own user authentication mechanism. The Laravel documentation does a pretty-good job of documenting what I’m about to do. This post is just a concrete example. This is roughly what I’ll be doing. Define…

DFS Subtlety

I’ve been brushing up my algorithms knowledge during my free time. My preferred way to do this is working on Steven Skiena’s excellent Algorithm Design Manual . Depth-first traversal of graphs have struck me as being subtle. In this post I’m jotting down the subtleties involved in discovering back-edges, so that I don’t have to re-think it every time. Here’s a python…

Book Review: Atomic Habits

I normally shy away from self-help books because they rarely work for me, but I decided to give Atomic Habits by James Clear a shot because it was recommended to me over a year ago by an esteemed colleague of mine, and he was a living example of how the ideas from this book transformed his life. The first 50 pages present the core idea of Atomic Habits – our habits and small changes (however…

XKCD Post Counter

It was a lazy Sunday afternoon and I was going through XKCD . I wondered how many posts XKCD has in total. The neat thing about XKCD is that their URLs are clean, and all their new posts get a number that’s one higher than the previous post. The site itself is very minimal and straightforward; apparently no weird frameworks doing magic. I randomly typed https://xkcd.com/5000/ , and it gave…

Number Lock Brute Force

While cleaning his wardrobe a family-member discovered his old bag with a built-in number lock. He forgot the number and was contemplating detroying the lock to open it. The lock had only two 10-digit combination; 100 possible numbers – brute force is feasible! The lock opened on 55 . This lead me to contemplate the design of the bag and the number lock. Why would anyone design a number lock…

How to setup OpenProject via Vagrant

I had to set up OpenProject locally on my machine for certain tinkering I’ve been doing. I chose to install OpenProject inside a Vagrant box to keep my native machine clean. Went along with hashicorp’s Ubuntu 18.04 LTS box rather than an official release because the former was already in my machine which meant I did not have to do any additional downloads. Installation and…

Laravel Artisan Command to Create Custom Classes

Here are the steps to create an artisan command that will generate custom classes and interfaces that follow a pre-determined template. For Laravel projects I write utility classes and interfaces to abstract away the logic; these files go into subdirectories within app/Utilities/ (of course it can be anything). Let’s say you want to write FooUtility for something. My usual workflow is this:…

Vagrant Hiccups

(This is not a criticism against Vagrant; it has been a useful tool which I would continue to use it and encourage others to use as well.) This post is a note of the minor hiccups I faced while setting up Vagrant, and the steps I took to solve them, so that I can refer this later if required. This will be a living-document which I’m hoping I would have to update only rarely.

7000 Years From Now

I don’t remember how I got there, but while having a virtual conversation with friends in a Signal group, I wondered how life in the year 7534 would be like. Will there be cars? Will people be teleporting instead? Would America still exist? Would people have conquered other planets? Or would the entire earth as we know it be destroyed by then? As I’m typing this, I realize 7534 is only…

Working with Homestead

Homestead is a convenient way to work with Laravel . It keeps the native OS installation uncluttered with packages such as MySQL, Apache, Laravel, Composer, and so forth. This post is a quick-start to set up a new Laravel project using Homestead. It covers: Mapping project directory from your host machine to your virtual machine Creating a new Laravel project Making the Laravel project accessible…

Reboot

It’s been unacceptably long since I last blogged. I won’t even bother making up an explanation. However, I’m planning to get blogging again. By now I have forgotten how Hugo worked. So I’m going to have to get up to speed on that. This post is actually just to see if the whole build pipeline for this hugo site still works. Honestly at this point I have no idea how that…

Build OpenGL Projects Using Gradle

This article is primarily written as a note to self so that I can refer to this years later if the need arises. Also, this ain’t a tutorial on OpenGL or Gradle . I’m an expert at neither. I’m just documenting what worked for me. This article assumes you have some familiarity with OpenGL. There are excellent resources for learning more about both of these, such as the OpenGL Wiki…

Open Source: Contributing Back to the Community

It’s no secret to people who know me personally that I’m an open-source enthusiast. However, I haven’t been contributing back to the community as much as I should have. Till now, my focus has been on fixing bugs in existing programs. It all started when I tried contributing to the Linux kernel several years ago. In retrospect, I was biting way more than I could chew. It took me…

XV6 System Call

XV6 is a UNIX-like operating system that’s used in my OS class (and other OS classes across the world) for pedagogical purposes. Creating system calls in XV6 is something I do frequently as part of my assignments, and in this article I’m documenting how to do that. Let’s say I want to implement a system call called square that returns the square of of its int argument. (This is…

Things You Should Know About Mobile Networks

Here are some things about mobile networks that I learnt the hard way. While I was in India during the summer, I purchased the Nokia 6.1 * smartphone. It is an Android One device. In India, your phone and your carrier are two separate independent things. Unlocked phones are the default there. That means, to change your phone, get yourself a new phone and put in your old SIM card. To change your…

Mozilla 101

It’s been a while since I’ve started contributing code to the Mozilla codebase. Because I frequently nuke and re-install everything on my primary computer (due to other experiments that have nothing to do with Mozilla), I’ve decided to write myself a reference I can quickly refer to when setting up the local version of Firefox. All of the following were performed on Debian-based…

Moving to Hugo

I hereby announce that I have moved from Jekyll to Hugo. I originally moved to Jekyll from Wordpress in the summer of 2015 because static sites made sense for my specific use-case. Also, WordPress provided more features than what I need, and because I wasn’t using a self-hosted version, I felt like I couldn’t get the ultimate control that I wanted. However, to take full advantage of…

About

Hey, My name is Arjun and I’m a software developer in Kochi, India. Professionally I work mostly as a web developer doing PHP and Laravel, but I have knowledge of other areas of the tech-stack as well. I sometimes contribute to open-source projects, such as Mozilla Firefox. Recently I’ve been experimenting with functional programming languages such as Haskell, StandardML, and Elm.…

Desktop Entry for Matlab

This article is not about Matlab itself; I just used it as a test example to demonstrate how you can create a desktop entry in Gnome. However, if you are interested in using Matlab, I highly insist you try GNU Octave . The syntax is highly compatible with Matlab, and I was able to do on Octave everything I was supposed to do on Matlab, without any hassles whatsoever. Octave is free and…

Automatic Markdown Table Generation

Because I had nothing better to do on a Saturday night, I decided to create a list of books I’ve ever read, to post on my personal blog. I know what you’re thinking. I wanted to include a sequence number, title of the book, and its author. The title would also double up as a link to its amazon page. Because this is a structured data, a table made more sense than an ordered (or…

Capture Packets Using T-Shark

DISCLAIMER Snooping on real internet traffic is illegal in most countries. It is your responsibility to follow the appropriate rules of your locality. I cannot be held responsible if you do something wrong. I did the following activities from a controlled virtual environment. Did you know that you can poke around network traffic using tshark? According to the official tshark man page :…

First Impressions with Go

The upcoming assignments for my networks class require fair amounts of socket programming. C is a double edged sword. Java is too verbose for my tastes. Python, despite all its beauty, is slow. And Haskell is not allowed for the networks assignments. It was time to pick up a new language. After contemplating on many alternatives, I finally settled on Go (aka golang). It is Simple to learn…

Tree Implementation in Haskell

Let’s implement a binary tree in Haskell. 1 2 3 data Tree a = Leaf a | Node ( Tree a) ( Tree a) deriving ( Show , Eq ) The above defines a Tree that takes a value of type a . Because we have not explicitly specified any datatype (such as an Int or a [Char] , for instance) and instead defined it in terms of a which can stand for any type, this tree is capable of handling values of any…

UNM New Arrival Guide

Disclaimer: This is UNOFFICIAL. I’m just documenting how things were like for me. It may have changed. I cannot be held responsible if anything goes wrong after following this post. (An unofficial guide for students from Amrita Vishwa Vidyapeetham planning to study at the University of New Mexico ). If you’ve been admitted to UNM, congratulations! I studied at UNM twice: as an…

Using JUnit with Eclipse

Recently, I set up Eclipse * to work with JUnit , and it took more effort than I anticipated. I’m recording the steps here so that I – or anybody else – can refer to it later if the need arises. Here’s the environment I used: OS Debian 9 64-bit JDK openjdk version “1.8.0_141” Eclipse Oxygen Release (4.7.0) JUnit version 4.12 Hamcrest version 1.3 The above…

Introducing JekPost

As much as I love jekyll , one thing I found really annoying about it was the post creation ritual itself. You had to name the file a certain way and type in a bunch of metadata at its top for the whole thing to work. Cumbersome and repetitive. That’s when I decided to write a script to simplify the post creation process. It’s actually been a year since I wrote JekPost. It was…

At the Google Play App Excellence Summit

Google Play App Excellence Summit was held on August 1st at Bengaluru, India. Entry to the program was free if you were invited (only invitees were allowed to attend). I arrived at the venue – Sheraton Grand Hotel – by 8:30 am. The place was already crowded with enthusiastic developers from all over the country despite me arriving an hour ahead of schedule. Breakfast was included; too…

Introducing Snap Event

My first Android app Snap Event was published to the Google Play Store a few days ago. Snap Event creates calendar events from photographs of the event’s poster. The app is by no means perfect, but it’s functional and is a proof of concept that the idea works. Motivation People say the best way to learn a new programming language or a framework is to do a project with it. Sure you need…

A Case for Smart Washing Machines

The residence hall I live in offers washing and drying facilities to wash and dry our clothes. There is one dedicated room for the washers and dryers. In the rest of this article, I will be calling this room the “laundry-room”. The washing and drying takes approximately 30 and 45 minutes respectively, depending on the mode you choose. Of course, once the washing is done, you have to…

Getting a US student visa

Just wanted to write down the process of obtaining a US visa. None of this is legal advice. I’m just posting my own experience. Consult the official US govt websites for most accurate and uptodate information about visas. People seem to have wrong ideas about the whole process and what happens at the consulate. And for student visa atleast, there is no need to hire a consultant or agent. I…

Send Emails Using Code

Figuring out how to send emails using code is something that has been in my to-do list for sometime. And well, it has finally made it to the top of the stack, and here I am tackling the issue. Turns out, sending emails using code is pretty easy and straightforward. Yay! Please do note upfront that this was more of a learning exercise for me to learn how to fire off a bunch of emails to a bunch of…

Fedora 24 Impressions

Though it hasn’t been long since I’ve switched to Fedora as my everyday OS, I’ve become a huge fan of it. Ubuntu was consistently giving me problems (like, freezes for instance), and that’s when I had decided to make the switch. (However, I reckon the problems I’ve been facing with Ubuntu are more of a Unity problem than an Ubuntu problem). Never had any deal-breaking…

The Hacker Way to Download an Entire Tree of Webpages

(" Hacker " as defined in The Jargon File ). Have you ever wanted to download an entire tree of webpages onto your computer so that you can check it out later, offline? Why might you want to do this? Let’s say you’re traveling on an airplane without an internet connection, and you as a developer want to work on that Android app you were developing back when you were in the ground. If…

Getting Started With GraphLab Create

As part of a machine learning course I’ve been taking on Coursera , I had to get some packages installed. Since I couldn’t find a one-stop webpage covering all the instructions, I had to go back and forth multiple webpages. And then, after I’ve installed the whole thing, it took me a while to figure out how to run it. And so, in this single post, I try to explain everything to…

Keyboard Shortcuts To Toggle WiFi

Being developers, nearly all of us prefer minimal use of the mouse (or touchpad). Now I don’t know about you, but there are cases when I don’t frequently have to browse the internet, and during those times I prefer to turn off my WiFi. At the very least, it would save some power. But then, there are some cases when I just have to momentarily turn on my WiFi, only to turn it back off…

In America

Just landed at Seattle-Tacoma International Airport, in Seattle, USA. I’ll be spending my upcoming semester here in America as part of a student-exchange program; very excited! Just 5 months ago, America wasn’t even in my radar, and now here I am!

Connecting to MySql Database from VisualStudio

As I discovered the hard way, setting up Visual Studio to connect to a MySql database can be tricky. And becuase I had to go through pages and pages of StackOverflow for what turned out to be a trivial solution in retrospect, I figured I’d pen down the whole process. Note that, I had Windows 8.1 installed as a VirtualBox guest OS in Linux. Install Visual Studio (if you haven’t already)…

Connecting to BluetoothDevice using phone's native settings

It took me more than an acceptable amount of time to figure out how to make use of an Android phone’s built-in connectivity program to connect to a remote bluetooth device, and then get the reference of that BluetoothDevice in your app (in your MainActivity, for instance). And I’m kind of guessing I wasn’t the only on earth trying to do the same thing. The official documentation…

Rebooting Fedora!

Remember when I told you about my brief experience with the Fedora? Or perhaps you don’t, coz I had written about that in my older blog . Anyways, to put a long story short, I had switched from a solid Ubuntu installation to Fedora 22, only to switch back to my good old Trusty Tahr in less than 72 hours! Fedora was just too bleeding edge for me! However, I’m proud to say that…

Introducing ShScript Creator

This one is a tribute to all the shell programmers out there. Of late, I’ve been having to deal with a lot of shell-scripts, mostly as part of my academic pursuits. And it’s fun you know, when you really get to know the power of shells..! However, despite all the fun, I was somehow irritated at having to write down the hashbang everytime I create a new script. And on top of that, I…

Memory Organization in PIC Microcontroller

(This post is currently undergoing revisions) I’ve been working with the PIC microcontrollers lately, and I kind of figured I might as well document what I’ve been learning. The microcontroller I’m talking about in this post is the P16F877A , and keep in mind that whenever I’m referring to “PIC”, I’m talking about this particular microcontroller. The PIC…