jnkrtech
Functional programming, TypeScript, tooling. He/him. Views and opinions my own and do not reflect those of my employer.
I usually only follow folks with pronouns in bio.
Posts
What are people’s tools of choice for generating static documentation for TypeScript? Looking for something that will create linked markdown files based on classes with TSDoc annotations on all of the methods.
Programming can and should be fun, elegant, and beautiful. Developers, like every other profession, should demand good working conditions, and when the job is writing software this includes getting to make sure the software is pleasant to work with.
A certain portion of developers think that our field is so different that it is somehow unprofessional to make these demands. They are wrong. A different portion of developers feel that the existence of beauty in our field means that it is unreasonable for there to be blemishes and unpleasant parts as well. They are also wrong.
Common take:
“We shouldn’t need LLMs to produce boilerplate for us; we should just build and use languages with less boilerplate instead”
This has the same energy as claiming that design patterns are bad, because languages should just be more expressive… and then making a new language which ends up with its own set of design patterns.
Boilerplate is not necessarily bad! Maximizing the information density of code is not a good goal! APL has existed for decades. Perl has existed for decades. “Line noise” has incredible information density and is widely hated.
Trying to remove all boilerplate results in over-adherence to DRY, and tons of developers have experienced what it’s like for code to be maximally compacted to avoid any repetition. The result is inflexible systems with arbitrary abstractions, because the degrees of freedom have all been welded shut and because the abstraction boundaries were drawn around syntax rather than around semantics. At very high quantities boilerplate can cause a maintainability burden, but too much is usually better than too little. Quality of abstractions matters significantly more.
Static codegen tools and frameworks are nothing new, and they’ll always have their place regardless of the level of abstraction that languages are capable of.
*brief silence after talking about something completely unrelated*
Me: If we were playing Nijisanji charades, “KPop at the airport” would be a great thing to have to act out.
Spouse: …
Me: I have ADHD.
Maybe a long shot: does anyone in the #Seattle area want a free motorcycle? 2009 Kawasaki Vulcan 500, 30k miles. It’s been sitting in my garage for 5 years and its battery is dead but it ran fine before that. I’m moving soon and need it gone in the next 5 days; hoping I don’t have to have it scrapped.
If you want it you’ll need to bring your own battery or a tow truck. I have proof that it was registered in Washington when I first brought it here but I don’t have a damn clue where its title is. (Probably lost in the last 4 moves.) The WA DMV site says I can sign a form in front of a notary to still do the sale: https://dol.wa.gov/vehicles-and-boats/vehicles/buying-and-selling-vehicle/sell-vehicle
Boosts greatly appreciated.
New blog post is up! This one is about a technique for mostly-mechanically removing recursion from mostly-arbitrary recursive functions. https://jnkr.tech/blog/removing-recursion
I’m searching for examples for a blog post. Does anyone have unusual examples of mutual recursion in the wild?
This is something that probably sounds obvious to some folks and unhinged to others, but I think it’s worth saying anyway: “workers who don’t adopt AI will get left behind” is right-wing propaganda. It’s more than just a surface-level advertising message. It makes the unstated assumption that workers are all in a state of conflict, racing against one another in competition for acceptable employment. This is the literal opposite of class consciousness! All workers should be aiming for a world where we don’t have to fight each other to earn a chance at a decent life.