aesthetic-driven development No images? Click here Nothing big on the publishing front this week but the most contentious Regular Programming episode so far is out. I think me and Andreas disagree on types. On the life front, I've been reassessing some priorities and adjusting some things because I was overextending and feeling stressed about it. So my ambitions expand, expand, expand until something pokes a hole in the balloon and it deflates back to the core. Some repair is done and hopefully it expands more carefully next time. I'm fine, just annoyed. In that vein, no livestream today, primarily to put more time into my wife's birthday plans but also a little for the break. I really care about aestheticsI can see the appeal of almost anything if it has a cohesive story, a sort of robust throughline. If the thing knows what it is. This is part of how my gut feeling works in software. I certainly have preferences as to what I would do and how I like to work but even software concepts that are arguably opposites to my approach and viewpoint can have a certain appeal if they are consistently applied. At the surface level I really liked how clean Python is syntactically. Almost bare. Quite few symbols, minimal syntax enabled by the very contentious significant white-space. Indentation enforced by virtue of needing it for structure. And if we go one layer deeper much of the standard library and typical pythonic APIs you end up working with are quite expressive, convenient and lend themselves to brief clear code. A dynamic, high-level language that is expressive and has a syntax that, coming from PHP, felt incredibly clean and modern. If you came from Java or .Net I believe it would feel very concise and brief. Mysteries are few and far between when it comes to execution, it isn't Javascript. The culture of building pythonic libraries has also brought a very nice ecosystem in certain ways. I think overall Python present a very nice approachable cohesive high-level dynamic language. Where it started to fall apart for me was when you peel back the surface and the underlying implementation such as the GIL, how weird and quirky some less-obvious parts are, how error-prone the packaging system can be, how weird modules, packages and all that can be. And code written under pressure just drops all the pretention of clarity, beauty and can turn pretty messy. Some of the elegance faded. I wouldn't dismiss Python due to this. But it did show me that it wasn't end-to-end cohesive. Few things are in software. Python appealed to me at the surface. I spent a ton of time beyond the surface and now I can't see that part as well any more. I still like it okay. Good tool but the aesthetics I've mostly forgotten. Let's take an aesthetic I can't stand working in. Full on Java in Enterprise mode. Classes, Interfaces, Inheritance. Unit test all the things, 100% code coverage, every minute detail specified with a type and methods for all operations we could ever want to do on it. There is a type of corpcore aesthetic there. A big org. Everything and everyone will be replaceable, generalization is taken to the nth degree. You stack behemoth system on behemoth system. Complexities and general system all the way back to front. Endless exhaustive specific configuration. Almost no system takes that all the way. I'm not sure such a system is capable of progressing at a certain point. I don't like it as a work environment. But as a sort of artistic rendering of the enterprise as a metaphor in software it has a certain something. I'd LARP it for laughs but I wouldn't try living it. Another aesthetic of software that I don't personally aspire to but I can see beauty in is what you'll find with Elm, Haskell and arguably Rust. Where formality and correctness isn't to stay out of trouble with management or appeal to compliance but rather in service of pushing ever closer to perfection in computing. Build a thing which cannot do the wrong thing, which has no built-in undefined behaviors, where your mistakes are truly yours and the machine can take your well-specified code and run with it, optimize it, tooling can tell you in-depth things about it. In some ways everyone wishes that everyone else wrote their code in this way. I'll instantly admit to being generally to lazy to prefer this way of working. But I can see a beauty in it. I'm not sure it is for me but I get why it is for someone. I think some people doing Enterprise Java believe this is what they are doing with all of their Interfaces. In some ways they might be. But these languages are built to try to do some pure and perfect computing, minimizing and controlling interaction with the outside world. It brings to mind wizards, ivory towers and pure thought-stuff. I think there's definitely something to aspire to there. I like Javascript. On a good day. It's punk or something. People try to make it more Java, or more strict, or more something. Because it is unwieldy and weird and wonderful in many ways. But through an unreversable fluke of history this extremely unusual and very dynamic language ended up being the foundation of browser interactivity and that means everyone just has to deal with it. The language very much resists structure and typing. It has a respectable get-shit-done style and APIs that go with that. It is a mish-mash hodge-podge of collaborative art where individual people and corporations have to make things work together. These days the corporations seem to be driving but they can't undo anything. The language is almost entirely additive. I like almost none of the tooling but I respect the community and ecosystem for the immense level of no fucks given and pushing outward and onward. And the language itself is pretty neat to use right now. For me JS loses cohesion when it leaves the browser or brings the browser with it where it goes. So NodeJS for server dev is not something I find compelling though it was certainly impressive at one point. Electron and non-native web UI are likely a lost battle but I don't have to like it. I honestly can't decide if that's part of the punk aesthetics of the damn thing or if it is a bastardization of the web itself. Maybe both. Art is hard.
This is going long. So let's not go into Elixir. If you have thoughts you can reach me via lars@underjord.io or on Twitter where I'm @lawik. Thanks for reading, I appreciate your time and attention - Lars Wikman |