Working Notes: a commonplace notebook for recording & exploring ideas.
Home. Site Map. Subscribe. More at expLog.

2023-11-05

Continuing the theme of not having that much progress, I still have even more books coming in.

Books

This week I picked up Linkers and Loaders on Olivier's recommendation. The book is from '99, but so far it's been extremely helpful in filling in gaps in my understanding of just what LD_PRELOAD, LD_LIBRARY_PATH, ldconfig, etc. do with significantly more concrete examples. Understanding "runtimes" has also been helpful.

Videos

Stumbled onto a new video by Antirez on building a minimal IRC server: Smallchat. I really enjoy these kinds of projects, as a way to teach / learn different types of programs. Every one of these I see I want to reimplement in Python/Hy to explore and learn.

Smallchat is no different, and it sets up a server that can be connected to over telnet.

Python

Continuing on last week's theme, I've been exploring how conda sets paths in the installed environments and I have to admit to being a bit surprised at how much is patched into binaries. conda-pack does a good job figuring things out, but it seems remarkably painful, and I have to wonder why path resolution needs to be so complicated.

I'm also playing with Textual on the side, again using Hy because I often want to create a GUI to display results, but generally can't be bothered to build one. Building command-driven guis seems like the best way for me to stay sane.

Misc.

I've been thinking about the value of developer experience, and even choice of programming languages. Over time, I'm becoming more cynical on the value added by the last mile of improving tools or languages.

There are things that are essential: access to a devserver, how you simulate a test vs production environment, something to run tests -- but then once the big things are taken care of the rest seems to be ... bikeshedding. unittest vs pytest or vim vs emacs -- perhaps this is a function of reading [[Kill it With Fire]] but familiarity seems to overwhelm the rest of the choices. Whichever toolset resonates with you is fine; the cost of switching outweighs the value provided by an alternative tool.

The clear winner from that approach is to lean in harder into the unix approach of building composable tools; having files as an abstraction works a bit too well for the most part. I wish there was something similar for building User Interfaces that composed just as well -- perhaps that's why HTML/JS/CSS became the default UI standard -- websites have some support for composition.

Open Source also trumps custom tools in the same way; though open source tools may not be particularly coherent across itself which can be tricky.

Kunal