Working Notes: a commonplace notebook for recording & exploring ideas.
Home. Site Map. Subscribe. More at expLog.
Continuing the theme of not having that much progress, I still have even more books coming in.
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.
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.
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.
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