Best Things and Stuff of 2023

I have occasionally written this type of a post inspired by Michael Fogus, so here I am doing it again for 2023.

Books Read

A lot

Best Technical Books Read

  • How to Open Source – A great little practical book about not just the how but also the why of contributing to open source
  • Impractical Python Projects – Don’t let the name fool you – the projects are very well designed and implemented. Got a lot out of this one
  • The Recursive Book of Recursion – Another great book. Digs deep, explains the concepts really well, and furnishes fully fleshed out examples

Best Non-fiction Books Read

Best Fiction Books Read

  • Crime and Punishment – truly a classic and a masterpiece. Dostoevsky is a master in psychological insights and character development

Favorite MOOC Courses Finished

Notable Professional Things Tried for the First Time

  • Finally fully transitioned to Neovim
  • ReactJS
  • LogSeq – a great personal knowledge management tool based on linked Markdown pages. The storage can be completely local to the user
  • Spring Framework and Spring Boot – for work
  • ChatGPT
  • Played Wordle for the first time
  • LocalStack
  • OpenAPI
  • Snowflake
  • MIPS Assembly
  • Doom Emacs – I gave up on Spacemacs and now use Doom for my Org Mode needs
  • Julia lang
  • Rust lang
  • Logic Pro X
  • StreamDeck
  • CSS Flexbox
  • CSS Grid
  • [Finance] Started treating investments as a legitimate side hustle

Notable Personal Things Tried for the First time

  • Truff black truffle olive oil
  • Used a dopp kit for carrying toiletries while traveling
  • Started dressing up a notch
  • Watched the Super Bowl live for the first time
  • Tiege Hanley skincare system
  • Mayweather boxing gym
  • Read some epic fantasy novels
  • Started using a Waterpik
  • Lifetime Fitness
  • Used an AirDyne, a SkiErg, and a curved treadmill
  • Supplemented with glutathione and berberine
  • A cashmere (only 15%) cardigan
  • Drove a Ford Mustang as a rental during car repair
  • Withings Body Comp
  • A Kiritsuke Japanese-style German-Italian kitchen knife
  • Saw the Titanic Exhibit in Las Vegas
  • Had foie gras
  • Eau Savage by Christian Dior
  • Got a Dutch oven
  • Got Spotify Premium
  • Drove a Volkswagen Jetta GLI as a rental while traveling
  • Drove a Mini Cruiser while traveling
  • Got a Roland FP-30X digital acoustic piano
  • Got Simply Piano and Yousician memberships
  • Thrival Recovery muscle release kit
  • Hypertrophy Coach app
  • Arnold’s The Pump Club app
  • Got a succulent plant
  • Tried various cheeses – roquefort, gorgonzola, fromager d’affinois
  • Uploaded YouTube videos for the first time
  • A dashcam
  • Zchocolat (yum!)
  • Saw the Sphere in Las Vegas
  • Had arancini for the first time
  • A turtleneck

Influential People / Celebrities Met

  • Sadly, none this year

Notable Alcohol Discovered

  • Glenmorangie Signet whiskey
Onwards to 2024!

Learning Just Enough to be Effective

It seems like there is increasingly more and more to learn out there. This is especially true in the software profession. I always feel like I am swimming in a huge ocean, trying to keep my head above water. And the ocean keeps getting bigger and deeper every day. But there are ways to tame this metaphorical ocean. I wanted to talk about a specific case in this blog.

As a long term Vim user, I avoided learning Emacs for the longest time. In fact, I had put it onto my To Don’t list for the longest time. Do not touch Emacs, you’ve already learned Vim. There is no need. Just use a variety of plugins and UNIX shell facilities with Vim and you’ll be fine.

And this worked for me for most of my work and personal life (although I do use Jetbrains products at work all the time). Still does. I still didn’t care about Emacs. Until I discovered Org-mode.

Org-mode is pretty nice. It allows for good management of TODO lists out of the box. The tags, labels, priorities, all make it a good tool. It’s free. Your data is yours forever. It works on all platforms. It has a coolness factor. It’s more than likely to continue in development and maintenance for a long long time to come, and won’t suffer the fate of a tool backed by a corporation because of political or financial reasons.

And yet, learning Emacs is notoriously steep. The amount of time that people can potentially spend customizing their Emacs setups can be extremely large. The old saying that people who use Emacs do everything in Emacs is true. And as an established software developer who also wants to do other things in life, I did not want to invest that much time. It wouldn’t have been a good investment. All I wanted to get out of it was Org-mode.

Emacs is an ocean. My fancy was just a little floating island in this ocean, i.e. Org-mode. Even org-mode can be too large and has a lot of functionality. I just wanted a little piece of the island. Something that I would use every day.

I know it’s possible to emulate some org-mode functionality inside of Vim or Visual Studio Code. But it is not the same thing™. Emulation is never the whole thing. Anybody who has experienced Neovim can tell you a Vim plugin inside IntelliJ or Visual Studio Code just feels like an incomplete, inadequate experience.

The solution was a targeted Udemy course that taught me just enough to be effective. Just enough org-mode and Emacs. And now I use Org-mode within Emacs all the time at work and also in personal life — for managing TODO lists and projects, as well as archiving finished projects — with fancy tags, labels, completion percentages, and priorities. And yet I remain a loyal Vim (now, Neovim) user, and also a Jetbrains user when the task at hand needs a bulldozer rather than a Swiss Army knife.

A good rule to live by. I’m a lifetime learner. Learning is a daily activity for me. A part of my job. It’s always worth your while to learn new things. Sometimes that new thing might be too similar to what you already know, and then you question whether it’s worth your time to learn it, and indeed it might not be worthwhile to learn everything about that particular new thing. In those cases, learn just enough to be effective.

Consuming YouTube Effectively

I remember a time when I’d search for something on YouTube and would be surprised not finding anything meaningful on the topic at hand.

The times have changed.

These days, pretty much everything is available on YouTube. And not just any videos, but videos created by self-proclaimed (and peer-verified) content creators who

(i) happen to be experts in their chosen areas and

(ii) enjoy educating others about their chosen realm. This latter often turns out to be a very effective visual aid, often being a hands on demonstration of anything from coding to woodworking to yard work to chemistry to investing and beyond.

All that is extremely valuable to anybody who wants to learn anything deeply in any newly spawned area of interest. All that is indispensable to a would-be polymath who wants to learn it all.

Yet, by one statistic (I forget the source), the amount of video content uploaded onto YouTube in a single day would require a human being to sit and watch for 65 years end to end in order to complete one watching. Leave alone assimilating and utilizing.

So what do we do?

Several things.

(i) Give up the desire to consume it all. It is physically impossible. Choose the videos with the highest ratings, the best vibes, etc. Feel the Joy of Missing Out (JOMO) on missing out the others rather than FOMO

(ii) Skip and skim. Look for summaries in the descriptions, or some helpful comment in the comment section that summarizes the highlights concisely

(iii) Use private playlists on YouTube.

The third point above brings us the topic of this blog.

The kind people over at YouTube have facilitated this feature on the platform so that anybody can create personal playlists (I don’t know if there is a limit to how many playlists an individual could create or how many videos there could be in any one playlist). These playlists can be kept private. Nobody has to know what you watch. Any random visit to YouTube during the day could mean saving interesting videos into these playlists. The contents of these playlists could be consumed in a principled manner, in a regular cadence. These regular consumption sessions could be managed via a habit tracking app, which reminds the user to repeat the habit weekly.

Some examples of such playlists could be – Finance, Fitness, Fashion, Interior Design, Productivity, Software Engineering, Entertainment, Relaxing, etc. Your imagination is the limit. Some playlist names could even be more specific, such as Finance::Informational and Finance::HandsOn.

Finally, a time limit may be imposed on these consumption sessions so that you don’t overstep how much time you’re willing to invest in this specific type of self education i.e. video consumption. The YouTube mobile app helps track the amount of time spent on YouTube across all your devices, on a per-day as well as weekly basis.

I’ve found this combination of private playlists and weekly cadence tasks to be the reason why I’ve been able to maintain a high amount of regular YouTube consumption while getting something meaningful out of it. The intentionality and rigor behind it makes the learning happen, so that YouTube is not just a mode of entertainment but rather an extension of a self education curriculum.

Best Things and Stuff of 2022

I have occasionally written this type of a post inspired by Michael Fogus, so here I am doing it again for 2022.

Books Read

A lot

Best Technical Books Read

  • Python Testing with pytest – A great little practical book which took me time to consume properly, but was very well worth it in getting me started with pytest, which seems to be the best testing framework for Python at the moment
  • Python Workout – I did get a workout working through this book, especially the challenges

Best Non-fiction Books Read

  • Peak Performance – great practical advice on how to live our lives to our full potential

Best Fiction Books Read

Favorite MOOC Courses Finished

Notable Professional Things Tried for the First Time

  • Pharo – a SmallTalk-like modern OOP language
  • Udemy – an educational platform
  • Domestika – an educational platform
  • Windows 11
  • Final Cut Pro – a video editing software for macOS
  • GraphQL – a schema for building APIs
  • WSL 2 – Linux on Windows
  • 5G
  • KDE Plasma Desktop
  • AWS KMS
  • Thonny – a lightweight IDE good for debugging simple lines of code
  • Google Cloud
  • Apache Kafka
  • ReplIt – code in the browser
  • Mockito – next level testing
  • macOS Sidecar – extend your screen real estate onto your iPad
  • React – component-based Web development library
  • TKinter – Python GUI
  • Drop LOTR keyboard
  • gRPC – lightweight remote procedure calls
  • ProtoBuf – a lighter-footprint JSON
  • Grafana – create and manage amazing graphical dashboards to keep track of all kinds of data
  • Digital Ocean – a simpler AWS
  • Adobe Stock Photos
  • Exercism – learn and level up in coding for free
  • Balsamiq – Wireframing for Web developers
  • Prometheus – track everything you want to on computers
  • Kubernetes
  • The Helix editor – tries to be a good love child of Vim + Emacs out of the box
  • FontAwesome
  • Org Mode
  • Cursor Pro – easily show people what you’re trying to show them on the screen

Notable Personal Things Tried for the First time

  • T-Bills
  • ESC Sounds headphones
  • Rotring Rapidograph pen
  • Staedler Pigment Liners
  • A MIDI Keyboard Controller with the Melodics app
  • Weightlifting Belts
  • Weightlifting Knee Wraps
  • Polish food
  • HBO Max
  • Saw an allergist
  • Ate pheasant
  • Jeni’s Ice Cream
  • Ford EcoSport (rental)
  • Sun shades for my car
  • Nespresso Virtuo Plus
  • The Venetian in Las Vegas
  • Symbolism
  • A trampoline
  • Flonase
  • Dairy Queen
  • PictureThis app to identify plants, trees, and flowers
  • An air fryer
  • Theragun for easy massage and upkeep of my body
  • Theraface for easy massage and upkeep of my face

Influential People / Celebrities Met

  • Jen Thompson – weightlifter, wife, mom, an awesome person in person, and pound for pound the strongest bench presser in the world

Notable Alcohol Discovered

Onwards to 2023!

My Software Engineering Tenets

Through the course of my career, I’ve developed a set of tenets, or core values, for myself that I like to remind myself of every day before easing into the flow of work. It has to do with motivation, as well as identity sculpting – sculpting who I am through thoughts and through consciously working toward incorporating these tenets into my day to day life.

  1. I build things. If working on a legacy system, I build things that help work with or test the system.
  2. I innovate to improve my customers’ and co-workers’ lives. I provide value to them. I serve them. I produce impact.
  3. I solve business problems for my customers, and bring their ideas to life.
  4. I automate to make mine and my co-workers’ lives easier.
  5. I strive to improve the strategic design of the system when implementing features; I don’t just apply tactical quick fixes that increase complexity and entropy.
  6. While coding, I try to work incrementally, adding one small change and keeping tests/systems running.
  7. I get early input, work in the open, and contribute incremental bits
  8. Every line of code that I write is my message to other smart people of posterity. Not only do I want to help them carry this work forward, but also I want them to appreciate how elegant a piece of work I did.
  9. I spend the majority of my time in the Eisenhower Matrix Q2, aka long term important tasks that are not urgent.
  10. I prioritize relentlessly and always work on the most important tasks available.

Thursday Night Football on Amazon

I don’t ever talk about work on here, and mostly corporate work doesn’t see the light of day or doesn’t see the public eye like this, but this is an exception, because it’s publicly visible now. I contributed heavily to the automated system that produced the team vs team and the background images (and only images, not the streaming content or anything else) that you see on Amazon now concerning Thursday Night Football, some of the games from which are to be broadcast soon. Swipe to see screenshots and search for Thursday Night Football on Amazon to see more images.

Go here now for the details.

Maintain Color-Coded TODO Lists in Vim

Many Vim enthusiasts use Vim for pretty much all text manipulation in their daily lives. However, the plain text nature of this fantastic and powerful editor sometimes leaves a little left to be desired. For example, it would be nice to have your editor color code certain items in your TODO list for you, e.g. one color for items that are done in your list, another (hopefully a more provocative one) for those that aren’t done. I recently discovered a trick how to kind of make that happen in Vim, and I am sharing that here.

The first thing you need is some type of a marker in front of your rows that you want highlighted, so that Vim has a way of doing a RegEx matching against them. E.g.

[TODO] Write a blog post
[DONE] Goof off
[Nice to Have] Read a book

Here I have marked my rows with [TODO], [DONE], and [Nice to Have]

Next up, you need to invoke the following command in the command line mode:

:highlight MyGroupTodo ctermbg=red guibg=red
:let m1 = matchadd(“MyGroupTodo”, “^\[TODO.*”)
:highlight MyGroupDone ctermbg=green guibg=green ctermfg=black guifg=black
:let m2 = matchadd(“MyGroupDone”, “^\[DONE.*”)
:highlight MyGroupNTH ctermbg=cyan guibg=cyan ctermfg=black guifg=black
:let m3 = matchadd(“MyGroupNTH”, “^\[Nice to Have.*”)

coloredListsVim
Here is a screen capture of what it looks like in my current color scheme. Keep in mind that the appearance might be different based on what color scheme you currently have enabled, and you might have to change the colors of the matches to better suit your tastes and your color scheme. Furthermore, you can put these highlight and match commands in your .vimrc so that you don’t have to keep doing it over and over.

Being a visual person I appreciate colors and the ease of distinction that they provide. If that’s you, and you use Vim, then this is how you can do it. Look up :h match inside Vim for more detail. Notice that, in contrast to the example in the Vim help, I have used more specific regular expressions so that the entire line is highlighted – you might or might not want that.

A Sample use of Omnifocus for Ultimate Productivity

I have a lot of different interests, and I would like to keep improving my skills in all those areas relentlessly, for various professional and personal reasons.

I have spent a lot of time improving my productivity system that can enable me to actually make concrete, sustained progress in all those areas. Omnifocus is my tool of choice that I’ve settled upon now after trying a handful of other options. I basically follow Rachel Andrew’s suggestion (based on David Allen’s Getting Things Done), but over time I have further refined my system based on what I see/read online and what I discover about my own process and habits through weekend reflections.

My current system is as follows. Every week I’d set up weekly goals, evenly spread across areas such as tech reading, non-tech reading, health & fitness reading, problem solving practice through TopCoder and CodeWars, online courses, physical fitness goals, paperwork, goals related to improving my natural language skills, etc. etc. In the past I used to have some time set aside for all these activities every day, but it wasn’t feasible to attack all of them every day, and a lack of concrete goals resulted in me always missing things and falling behind. Then after struggling with getting everything done for a couple of years, accumulating piles of backlogs, and further inspired by Arnold Schwarzenegger (he has talked about his habit of setting goals a lot at a lot of places, in his books and during interviews), I switched to a goal oriented approach, and eventually switched completely to only using that, which in my case means setting weekly goals in all the areas I would have tried to hit every day earlier, and then try to accomplish those goals at any time during the week.

The advantages of doing this seem manifold to me – first, you have something concrete to show for it at the end of the week (e.g. finished reading this book, added that feature to that codebase, deadlifted these many pounds) rather than saying that you spent 60 hours doing ‘some stuff’ during the week. Second, it is relieving to know that there is nothing that has to happen every day, but rather that you have the freedom to accomplish the goals whenever you get/find time.

This is where Omnifocus comes in. To facilitate the above, I have set up folders, projects, and action items for all these individual goals. Some of them are one-time, some of them repeat with a given frequency (daily, weekly, monthly, quarterly, etc.). I try to use no other lists but only Omnifocus for recording/tracking everything. If I have an item that I am not sure about, or don’t know what project/context that item belongs to, I’d put it in the Omnifocus inbox, to be sorted out later. The weekly goals are reflected as flagged items in Omnifocus, which I can view all together using the context view. I use deadlines sparingly, as suggested by this post, but admittedly some items do have deadlines, and some have to be done regularly (so they implicitly have deadlines or dates associated with them). The items that are overdue or have concrete deadlines get my attention first, and then I move on to working on the flagged items set as  my weekly goals.

In addition to all of the above I have been learning to use Omnifocus contexts more effectively. For the longest time I had contexts in it that might as well just have been projects on their own – e.g. ‘coding’, ‘admin work’. But I realized that it’s better to use the location/place where you’ll get those items done reflected in the contexts. Now I have moved on to using contexts like online, offline, at-home-only, requires desk, outside, treadmill (yes, because I can watch videos from Lynda or Coursera on a treadmill!). I find it so much more effective because being able to knock out similar tasks that can all be done at a given place, in blocks of time, without context switching, is so much easier and more efficient. Finally, I also have one context called most-important-items, which helps me focus my energies on a handful of items (mostly three) at a given point in time. I got this idea from this post.

Our lives are becoming more and more information heavy, and there is a great opportunity to live a very ‘rich’ life in terms of the various things we can do. If we are organized, we can do so easily, effectively, and in a sustained manner.

Best of 2016

As is the tradition of many technologists, I am writing about some of the best things that I discovered or did in 2016. This post is a little bit late, but I discovered a lot of great things in 2016 that I believe deserve to be shared.

Total books read: 50

Best non-technical books read
Michio Kaku – The Future of the Mind: It’s nice to know what science could bring to our lives. Dr Kaku is a visionary and while I find many of his predictions very ‘out there’, he is very comprehensive in his style and claims, which makes his books a delight to consume

Best technical books read
Kenneth Reitz & Tanya Schlusser – The Hitchhiker’s Guide to Python: Best Practices for Development. While not for the beginner, if you use any modicum of Python at your day job and have been churning out code in Python for a while, I highly recommend grabbing a copy. It walks you through some of the best practices as well as the best known and highly used libraries out there, which is a must have in your toolbox

Best technical videos consumed
Kent Beck’s ‘livestorm’ about convex and concave software projects

Best new technologies discovered and used
Docker: containerization is very hot right now
WebSocket: A technology for maintaining full duplex communication between peers
Nginx: A powerful and scalable Web server

Best new languages discovered and used
Lua: A lightweight but very powerful ‘glue’ language

Best new hardware acquired and used
Pok3r keyboard (it has clear keys; and I am not sure whether I like it better than my DAS keyboard with blue keys, but it’s still pretty nice), Steelcase Gesture (finally got onto the bandwagon of expensive ergonomic ‘programmer’ chairs), Amazon Echo

Best new apps discovered and used
Productive (iOS) – a nice way to build habits – you can select one of the built-in habits or add your own, and you can select icons, frequencies, etc. It’s also nice to be able to view stats on the individual habits to see how well you’ve been doing
CleanMyMac (macOS) – does a good job of cleaning up extraneous files left over by installers and the system itself

Best new fitness videos consumed
Fittest on Earth (Netflix) – an incredible, candid look at the Crossfit lifestyle

Best new workout technique discovered and used
Zottman curls – a comprehensive arms exercise that targets both the biceps and triceps

Best new nutritional supplements discovered and used
Creatine and magnesium. I can’t believe I’ve lived this long without these. Definitely game changers

Areas of Technology that I Find Interesting

New areas of technology emerge all the time, and they change the educational and workforce-related landscape along with them. Here’s a compilation of some technologies I’ve been hearing about that speak to me and that I’d love to be able to contribute more toward.
1. Inexpensive space travel- something along the lines of SpaceX’s mission, so that we can become an interplanetary civilization, enabling our posterity to better handle unforeseen calamities and issues that might arise on Earth in the future owing to population growth, fossil fuels running out, etc.
2. Doing big data analysis and data science on data from the environment, and being able to use that analysis for the betterment of the environment.
3. Controlling robots or avatars through our brains, in order to be able to navigate areas impossible for humans to tread, such as radiation heavy areas or deep space. Dr Michio Kaku’s book The Future of the Mind provides an excellent explanation for this use case.
4. Alzheimer’s research. In the book mentioned above there’s a lot of discussion about active research happening toward controlling the growth/ decay of the human brain and what we can do about it.
5. Doing big data analysis and data science on data from the fields of astronomy and cosmology, and being able to use that to explore new territories or provide answers to long-standing open questions in astronomy and cosmology.

What’s next?