Tooling

Blub in the Unix Philosophy

I’ve always maintained a philosophical appetite for the tooling that I use.

One of the core tenets of the Unix Philosophy1 is that everything is a file…

Plan92 has caught my eye due to its more homogenous design than the usual unix you’re used to.

The footnoted-paper (~pre-mature book) is somewhat unhinged and doesn’t shy away from taking a jab at the Unix ecosystem and design.

Apart from the several points the author makes, what stands out the most for me is the idea of everything truly being a file: in hindsight, Unix only realizes a fraction of the principle.

Bells & Whistles

I’ve started spending some time per day without the usual modern software engineering tooling (LLMs, the Internet, etc) to explicitly maintain my cyber-deduction skills (in the context of Unix-based systems (BSDs, Linux, yet to explore Plan9), mostly because they power the majority of the global compute infrastructure).

It’s fun: init your journey with a man man (I’m an info info guy myself) and be extremely skeptical of your usual modus operandi, ditching all assumptions and tumbling down the rabbit hole.

I wrote an Emacs Package

Fabric1 is a collection of crowd-sourced prompts, exposed via a CLI tool. I used it for a while some time ago but never fully exploited it because I prefer Emacs.

Eshell buffers are an option, but I am principled in my tool usage and prefer to delegate longer-running CLI tasks to a combination of Alacritty and Tmux.

Maintaining my Emacs shell usage to ephemeral popups feels natural.

Gptel2 is a versatile LLM client that integrates smoothly into my workflow (buffer/text manipulation and management) without disrupting my thought flow.

I'm using Monitors again

I’m using monitors again and it’s like consuming caffeine after a long time (last recorded usage circa mid November 2024).

I guess I need to cycle my dosage so that I don’t end up being too dependent.

I’m enjoying it though.

EDIT: as of <2025-01-27 17:50:30 IST>, I’ve given up again

Contextual .gitignores

A while ago, I had the strong desire to partition some of my professional work logs into mutually exclusive git repositories: with Blacklists and Whitelists flipped.

I was aware that the .gitignore could ignore stuff; today I found out that I can also whitelist stuff via that.

checkout 1 this stackoverflow question

So if the first .gitignore looks like

asdf-pattern 
more-asdf
some-absolute-asdf
dir-asdf/

the second one would look like:

# blacklist everything first
*

# unignore the directories to capture nested existences
!*/

# then your usual unignores
!asdf-pattern
!more-asdf
!some-absoluete-asdf
!dir-asdf/

What I wonder now is if git would allow for a branch-contextual .gitignore (named with certain protocols) so that I don’t have to maintain two different repositories altogether.

I've given up on Monitors

I recently have moved on from using monitors and am working (professional and writing endeavours) only via a 13 inch laptop. It is definitely a different workflow than what I’m used to.

It has been around 10 days I’ve been doing this and here are some observations:

  • I’m able to focus better as I’m forced to enlarge my context maintaining capabilities; for I don’t have the luxury to look back and forth with just my eye movements.
  • I can work from anywhere. I change places and posture every 1.5 hours, 5 times a day.
  • Given I move between a couple of meets during the day, I don’t have to adjust to differing window management mannerisms as I only ever work on the same screen now.
  • I work in at most two splits now compared to the 5+ previously: it is all simpler and the monitor has started to seem like a vanity rather than essential accessory.
  • I don’t have to switch keyboards between my desk and meets: I don’t mess enough as much now.
  • I can start looking down upon people that are bound to monitors, thinking that they’re spoiled or aren’t minimal enough.
  • I’ve started preaching about the spartan-ish effects of working only via your laptop
  • I spend more time on screen, on my bed: consequently I’m writing more.

I definitely do miss reading papers and books on a larger vertically oriented screen but I’m going to stick to this for a while.

Stuck on an Island

There’s this saying :

If you’re stuck on an island and have the opportunity to build all of the software landscape again, the programming language you should choose is C. But the first thing you should write is a lisp interpreter.

I’m going to do that with Go.

As for the saying, I’ve heavily paraphrased (aka butchered) that and don’t quite recall the source so do excuse me for that.

A CLI Timer to save your soul

This is how I time my workblocks these days…

Prerequisites

Functions

single_beep() {
( \speaker-test --frequency $1 --test sine )&
pid=$!
\sleep  0.${2}s
\kill -9 $pid
}

morse(){
for i in {1..3};
do
        single_beep 400 $1
        \sleep 0.${2}s
done
}

sos() {
    morse 200 500
    morse 400 500
    morse 200 500
}

timer() {
    \sleep $1 && sos &
}

Usage

The above can be sourced in your shell rc.
I store it in a .bash_funcs where I have all my functions and source them in the end of my rc as source ~/.bash_funcs.

Building a Racket Based Operating System

EDIT : 0x22D2 : Fri Sep 27 03:51:30 PM IST 2024

  • I’m thinking I’ll proceed in common lisp
  • do read on for amusement though

As of 0x22CE (Mon Sep 23 06:48:40 AM IST 2024), These are the operating systems I’ve used:

  • Open Suse TumbleWeed
  • Fedora, CentOs, Rocky
  • Debian, Ubuntu, Kali
  • Arch
  • Windows XP,Vista,7,10,11

I recently moved away from Fedora 40 to Tumbleweed (I deleted some core python libraries that are essential for yum and dnf (I know, I’m an idiot))…

Thinkpad X13 Gen 4 AMD Ryzen Pro 7840U & Workflow Review

I recently shifted my operations to a thinkpad x13g4amd (Ryzen 7840U + 780M Radeon) and am using this transfer as an opportunity to realize and improve my work related habits.

GNU/Linux

All of my pipelines are based around Linux and the core GNU utils. I had to use windows for a while due to org-wide constraints but I’ve recently been given the signal to shift to linux.

I rarely used any windows native tools for my workflows and there was always a layer of linux emulation/virtualization (wsl, scoop, and the likes) upon which I conducted my usual operations. Given I use Debian at home, a non native linux experience was frustrating at best and depressing at worst. No more, do I have to confine myself.