A lesson that the world seems to repeatedly reinforce is that quests to create something complicated with rigid adherence to pure/dogmatic/'perfect' abstraction end up this way.
The systems I've seen that don't jack knife themselves into oblivion grow like weeds and age like a forest. There's a perfect kind of messy where each little module takes takes root, being tested by the ecosystem and growing or dying.
Contrary to what many think, I don't think spaghetti nightmares happen in this mode unless code becomes functionally immortal by means other than battle testing.
Sometimes this happens because somebody's ego forces any woodbe gardeners to litigate all attempts at tending. Sometimes it happens because the pressure to X rises too high and it extinguishes all the controlled burns.
I remember wanting to feel like the thing I made was absolutely crystalline. Seeing how that ends has made me appreciate the organism.
drewcoo 19 days ago [-]
> quests to create something complicated with rigid adherence to pure/dogmatic/'perfect' abstraction end up this way
Never been a gamemaster, then? A GM/DM/whatever-M would know how to deal with that. It's a "solved problem" in meatspace.
> Contrary to what many think, I don't think spaghetti nightmares happen in this mode unless code becomes functionally immortal by means other than battle testing
I don't think contrary-wise, but I really don't know what you mean. At all. I've re-read several times. You sound like you've seen things we people would not believe . . . attack ships on fire off the shoulder of Orion . . . C-beams glittering in the dark near the Tannhauser gate . . .
> I remember wanting to feel like the thing I made was absolutely crystalline. Seeing how that ends
This seems like a problem of a programmer who does not understand the domain. FWIW, that's not new ground either. You're standing on the shoulders of giants. Consider that Admiral Hopper's contribution to computing, the person oft-claimed as inspiration for women in computing, after a lifetime, that contribution was . . . COBOL. Things go wrong. It's ok. We can fix it. It's only software!
spicyusername 18 days ago [-]
I find that one drawback of building your software by knitting together existing frameworks or libraries is that their design choices, interfaces, and abstractions are fixed (and typically not in a way that they are going to fit together seamlessly).
This results in the need for glue-code, sometimes lots, and when you encounter architectural problems, you are much more constrained in how you can resolve them.
Sometimes that constraint is more than offset by the time saved writing the code, sometimes not.
Unless it's something really obvious or standard, these days I tend to start off with a "write it myself" mindset, until I really know I need something off the shelf, which is definitely the reverse of how I was when started my career and had a "just use a library" mindset.
NooneAtAll3 19 days ago [-]
> I gave this module its own immutable state. The state could be modified
this made me chuckle a bit
d3VwsX 19 days ago [-]
I am not sure in what way the state described is immutable at all? It just seems like mutable state hidden behind some access methods?
dragonwriter 18 days ago [-]
Yeah, the author seems to be using “immutable” for state that is merely encapsulated rather than actually immutable.
bentt 18 days ago [-]
As a game developer for many many years, as soon as someone says “business logic” I know they are from the other side of the tracks.
A lesson that the world seems to repeatedly reinforce is that quests to create something complicated with rigid adherence to pure/dogmatic/'perfect' abstraction end up this way.
The systems I've seen that don't jack knife themselves into oblivion grow like weeds and age like a forest. There's a perfect kind of messy where each little module takes takes root, being tested by the ecosystem and growing or dying.
Contrary to what many think, I don't think spaghetti nightmares happen in this mode unless code becomes functionally immortal by means other than battle testing.
Sometimes this happens because somebody's ego forces any woodbe gardeners to litigate all attempts at tending. Sometimes it happens because the pressure to X rises too high and it extinguishes all the controlled burns.
I remember wanting to feel like the thing I made was absolutely crystalline. Seeing how that ends has made me appreciate the organism.
Never been a gamemaster, then? A GM/DM/whatever-M would know how to deal with that. It's a "solved problem" in meatspace.
> Contrary to what many think, I don't think spaghetti nightmares happen in this mode unless code becomes functionally immortal by means other than battle testing
I don't think contrary-wise, but I really don't know what you mean. At all. I've re-read several times. You sound like you've seen things we people would not believe . . . attack ships on fire off the shoulder of Orion . . . C-beams glittering in the dark near the Tannhauser gate . . .
> I remember wanting to feel like the thing I made was absolutely crystalline. Seeing how that ends
This seems like a problem of a programmer who does not understand the domain. FWIW, that's not new ground either. You're standing on the shoulders of giants. Consider that Admiral Hopper's contribution to computing, the person oft-claimed as inspiration for women in computing, after a lifetime, that contribution was . . . COBOL. Things go wrong. It's ok. We can fix it. It's only software!
This results in the need for glue-code, sometimes lots, and when you encounter architectural problems, you are much more constrained in how you can resolve them.
Sometimes that constraint is more than offset by the time saved writing the code, sometimes not.
Unless it's something really obvious or standard, these days I tend to start off with a "write it myself" mindset, until I really know I need something off the shelf, which is definitely the reverse of how I was when started my career and had a "just use a library" mindset.
this made me chuckle a bit