Want to wade into the snowy surf of the abyss? Have a sneer percolating in your system but not enough time/energy to make a whole post about it? Go forth and be mid: Welcome to the Stubsack, your first port of call for learning fresh Awful youāll near-instantly regret.
Any awful.systems sub may be subsneered in this subthread, techtakes or no.
If your sneer seems higher quality than you thought, feel free to cutānāpaste it into its own post ā thereās no quota for posting and the bar really isnāt that high.
The post Xitter web has spawned soo many āesotericā right wing freaks, but thereās no appropriate sneer-space for them. Iām talking redscare-ish, reality challenged āculture criticsā who write about everything but understand nothing. Iām talking about reply-guys who make the same 6 tweets about the same 3 subjects. Theyāre inescapable at this point, yet I donāt see them mocked (as much as they should be)
Like, there was one dude a while back who insisted that women couldnāt be surgeons because they didnāt believe in the moon or in stars? I think each and every one of these guys is uniquely fucked up and if I canāt escape them, I would love to sneer at them.
(Credit and/or blame to David Gerard for starting this. Merry Christmas, happy Hannukah, and happy holidays in general!)


I think Iām with Hauntedās intuition in that I donāt really buy code generation. (As in automatic code generation.) My understanding was you build a thing that takes some config and poops out code that does certain behaviour. But could you not build a thing instead, that does the behaviour directly?
I know people who worked on a system like that, and maybe thereās niches where it makes sense. Just seems like it was a SW architecture fad 20 years ago, and some systems are locked into that know. It doesnāt seem like the pinnacle of engineering to me.
Unfortunately, the terms ācode generationā and āautomatic code generationā are too broad to make any sort of value judgment about their constituents. And I think evaluating software in terms of good or bad engineering is very context-dependent.
To speak to the ideas that have been brought up:
āmaking the same or similar changes at some massive scale [ā¦] suggest[s] that you could save time, energy and mental effort by deduplicating somewhereā
So there are many examples of this in real code bases, ranging everywhere from simple to complex changes.
Giving a complex example here is⦠difficult. Anyway, I hope Iāve been able to illustrate that sometimes you have to use ācode generationā because itās the right tool for the job.
āMy understanding was you build a thing that takes some config and poops out code that does certain behaviour.ā
This hypothetical is a few degrees too abstract. This describes a compiler, for example, where the āconfigā is source code and ācode that does certain behaviourā is the resulting machine code. Yes, you can directly write machine code, but at that point, you probably arenāt doing software engineering at all.
I know that you probably donāt mean a compiler. But unfortunately, itās compilers all the way down. Software is just layers upon layers of abstraction.
Hereās an example: a web page. (NB I am not a web dev and will get details wrong here) You can write html and javascript by hand, but most of the time you donāt do that. Instead, you rely on a web framework and templates to generate the html/javascript for you. I feel like that fits the config concept youāre describing. In this case, the templates and framework (and common css between pages) double as de-duplication.
@jaschop
āBut could you not build a thing instead, that does the behaviour directly?ā
Back in the day NeXTās Interface Builder let you connect up and configure āliveā UI objects, and then freeze-dry them to a file, which would be rehydrated at runtime to recreate those objects (or copies of them if you needed more.)
Apple kept this for a while but doesnāt really do it anymore. There were complications with version control, etc.
I have always felt like NeXT/OS X Interface Builder has serious āpath not takenā energy, but the fact that OpenStep/Cocoa failed to become a generalized multiplatform API, as well as the version control issues for the .nib format (never gave much thought to that, but it makes sense) sadly doomed it. And most mobile apps are glorified web pages, each with their own bespoke interface to maintain ābrand identity,ā so it could be argued thereās less than zero demand there for the flexibility (and complexity!) that Interface Builder could enable.