A software abomination for y'all
-
In answer to a Quora question about the weirdest bit of code nobody touched because it just worked, I posted this answer:
Want to hear a real doozy?
I've been on this massive project for the past two years that has been around since the early 2000's. I haven't counted the lines but a million lines wouldn't surprise me. Half of it is in C++ using COM, and the other half is in C#. Most of it suffers from “written by old school C experts" syndrome.
There's a critical portion of the project that was originally created in a model based software engineering tool from the early 2000’s. One of the early attempts at “no code” development. Even then it couldn't be used in conjunction with the project, so it had to be exported.
And here's where it should probably offend your engineering sensibilities. Stop reading now if you're easily offended.
See, the only way this model based code could export to something else was as an SQL file, which file doesn't even define table relationships. It's well over 100,000 lines of SQL with no indication of how anything is related to other things.
And then that gets converted to C++ code through a Perl script.
Yep.
Not a joke.
Model based thing → SQL file → Perl script translation → C++.
The script takes like 20 minutes to run.
It worked. Nobody understood how. And sometimes things didn't work quite right, but since nobody could really touch any of that stuff, anything that didn't work right was “fixed" at a higher level. Duct tape solutions.
I had a budget of about a month's worth of time just for me to modernize it so it wouldn't be “nobody touches this" anymore. I was going through a whole lot of stuff in my personal life at the same time. I managed to first untangle the SQL and extract some meaning out of it, then put together a utility (not a script!) that could consume the SQL file and translate it into C#. I got about 90% there, with some of the syntax not quite matching up well enough to compile. But hey, it has a fully integrated build process and it only takes about 10 seconds to translate, so it would also come with the ancillary benefit of being able to stop using a Python script to build the project as it could all be done with MSBuild. Yup, Python script invokes Perl script to translate before invoking all the separate builds in the project.
So there it sits. This hideous monster that nobody dares to touch, but which the entire project depends on.
True story, not a joke.
And everybody bitches about the Python script to build the project, but at least that's maintained.
-
@Jake-VanWagoner said in A software abomination for y'all:
In answer to a Quora question about the weirdest bit of code nobody touched because it just worked, I posted this answer:
Want to hear a real doozy?
I've been on this massive project for the past two years that has been around since the early 2000's. I haven't counted the lines but a million lines wouldn't surprise me. Half of it is in C++ using COM, and the other half is in C#. Most of it suffers from “written by old school C experts" syndrome.
There's a critical portion of the project that was originally created in a model based software engineering tool from the early 2000’s. One of the early attempts at “no code” development. Even then it couldn't be used in conjunction with the project, so it had to be exported.
And here's where it should probably offend your engineering sensibilities. Stop reading now if you're easily offended.
See, the only way this model based code could export to something else was as an SQL file, which file doesn't even define table relationships. It's well over 100,000 lines of SQL with no indication of how anything is related to other things.
And then that gets converted to C++ code through a Perl script.
Yep.
Not a joke.
Model based thing → SQL file → Perl script translation → C++.
The script takes like 20 minutes to run.
It worked. Nobody understood how. And sometimes things didn't work quite right, but since nobody could really touch any of that stuff, anything that didn't work right was “fixed" at a higher level. Duct tape solutions.
I had a budget of about a month's worth of time just for me to modernize it so it wouldn't be “nobody touches this" anymore. I was going through a whole lot of stuff in my personal life at the same time. I managed to first untangle the SQL and extract some meaning out of it, then put together a utility (not a script!) that could consume the SQL file and translate it into C#. I got about 90% there, with some of the syntax not quite matching up well enough to compile. But hey, it has a fully integrated build process and it only takes about 10 seconds to translate, so it would also come with the ancillary benefit of being able to stop using a Python script to build the project as it could all be done with MSBuild. Yup, Python script invokes Perl script to translate before invoking all the separate builds in the project.
So there it sits. This hideous monster that nobody dares to touch, but which the entire project depends on.
True story, not a joke.
And everybody bitches about the Python script to build the project, but at least that's maintained.
paging @remi
-
-
@Tsaukpaetra said in A software abomination for y'all:
@Jake-VanWagoner said in A software abomination for y'all:
an SQL file
I'm immediately confused...
He's probably pronouncing it "S-Q-L", in which case "an" is appropriate.
-
@Mason_Wheeler said in A software abomination for y'all:
He's probably pronouncing it "S-Q-L", in which case "an" is appropriate.
Vvvvhatt?
You think that poor file was "es'kewelled
" instead of "seequelled
"?
Such a file maltreatment would deserve a severe punishment!
-
@BernieTheBernie said in A software abomination for y'all:
"es'kewelled"
At very worst, it was "eskyoowell'd'"
-
-
@Gribnit said in A software abomination for y'all:
paging @remi
I assume this is some weird reference to something I recently posted, but as usual it doesn't make sense and I don't get it.
ELI5 or GTFO.
-
@remi said in A software abomination for y'all:
@Gribnit said in A software abomination for y'all:
paging @remi
I assume this is some weird reference to something I recently posted, but as usual it doesn't make sense and I don't get it.
ELI5 or GTFO.
My guess: "this is not the @remy you're looking for".
-
@Zecc Ah, yes, could be. I'd almost forgotten we had a front page...
-
@Jake-VanWagoner said in A software abomination for y'all:
a model based software engineering tool from the early 2000’s. One of the early attempts at “no code” development.
Nah, that's at least the third of fourth generation of failed attempts at "no code" development.
I've seen them since the mid-80s, but the first attempts were probably much earlier than that.
-
@nerd4sale said in A software abomination for y'all:
Nah, that's at least the third of fourth generation of failed attempts at "no code" development.
I've seen them since the mid-80s, but the first attempts were probably much earlier than that.It's almost as if the difficult bit of programming isn't the actual writing the code down but rather in the understanding of what to write in the first place…
-
@dkf I miss Blakey sometimes.
-
@nerd4sale said in A software abomination for y'all:
@Jake-VanWagoner said in A software abomination for y'all:
a model based software engineering tool from the early 2000’s. One of the early attempts at “no code” development.
Nah, that's at least the third of fourth generation of failed attempts at "no code" development.
I've seen them since the mid-80s, but the first attempts were probably much earlier than that.I remember one from about 1990-ish, for doing hardware development. As I've mentioned before, hardware is designed by writing a model using a hardware description language (HDL) such as Verilog or VHDL. This graphical development tool was called Visual HDL, and it wasn't entirely no-code; in some cases, you had to write a few lines of VHDL to put into the boxes you connected together visually. We called it "Visual Hurdle", because it really didn't make the development process easier.
-
@HardwareGeek said in A software abomination for y'all:
@nerd4sale said in A software abomination for y'all:
@Jake-VanWagoner said in A software abomination for y'all:
a model based software engineering tool from the early 2000’s. One of the early attempts at “no code” development.
Nah, that's at least the third of fourth generation of failed attempts at "no code" development.
I've seen them since the mid-80s, but the first attempts were probably much earlier than that.I remember one from about 1990-ish, for doing hardware development. As I've mentioned before, hardware is designed by writing a model using a hardware description language (HDL) such as Verilog or VHDL. This graphical development tool was called Visual HDL, and it wasn't entirely no-code; in some cases, you had to write a few lines of VHDL to put into the boxes you connected together visually. We called it "Visual Hurdle", because it really didn't make the development process easier.
If you don't know what you're doing, no-code tools just make abominations. If you do, they're a hurdle to get through...and still often make abominations.
-
@HardwareGeek said in A software abomination for y'all:
@nerd4sale said in A software abomination for y'all:
@Jake-VanWagoner said in A software abomination for y'all:
a model based software engineering tool from the early 2000’s. One of the early attempts at “no code” development.
Nah, that's at least the third of fourth generation of failed attempts at "no code" development.
I've seen them since the mid-80s, but the first attempts were probably much earlier than that.I remember one from about 1990-ish, for doing hardware development. As I've mentioned before, hardware is designed by writing a model using a hardware description language (HDL) such as Verilog or VHDL. This graphical development tool was called Visual HDL, and it wasn't entirely no-code; in some cases, you had to write a few lines of VHDL to put into the boxes you connected together visually. We called it "Visual Hurdle", because it really didn't make the development process easier.
Why would you let someone who doesn't know WTF they're doing do hardware development?
-
@topspin said in A software abomination for y'all:
@HardwareGeek said in A software abomination for y'all:
@nerd4sale said in A software abomination for y'all:
@Jake-VanWagoner said in A software abomination for y'all:
a model based software engineering tool from the early 2000’s. One of the early attempts at “no code” development.
Nah, that's at least the third of fourth generation of failed attempts at "no code" development.
I've seen them since the mid-80s, but the first attempts were probably much earlier than that.I remember one from about 1990-ish, for doing hardware development. As I've mentioned before, hardware is designed by writing a model using a hardware description language (HDL) such as Verilog or VHDL. This graphical development tool was called Visual HDL, and it wasn't entirely no-code; in some cases, you had to write a few lines of VHDL to put into the boxes you connected together visually. We called it "Visual Hurdle", because it really didn't make the development process easier.
Why would you let someone who doesn't know WTF they're doing do hardware development?
Because IC development is now so complex that human beings literally cannot lay them out manually and have not been able to for decades.
-
@topspin said in A software abomination for y'all:
@HardwareGeek said in A software abomination for y'all:
@nerd4sale said in A software abomination for y'all:
@Jake-VanWagoner said in A software abomination for y'all:
a model based software engineering tool from the early 2000’s. One of the early attempts at “no code” development.
Nah, that's at least the third of fourth generation of failed attempts at "no code" development.
I've seen them since the mid-80s, but the first attempts were probably much earlier than that.I remember one from about 1990-ish, for doing hardware development. As I've mentioned before, hardware is designed by writing a model using a hardware description language (HDL) such as Verilog or VHDL. This graphical development tool was called Visual HDL, and it wasn't entirely no-code; in some cases, you had to write a few lines of VHDL to put into the boxes you connected together visually. We called it "Visual Hurdle", because it really didn't make the development process easier.
Why would you let someone who doesn't know WTF they're doing do hardware development?
Hey, it works alright for webdev doesn't it?
-
@Gąska said in A software abomination for y'all:
@topspin said in A software abomination for y'all:
@HardwareGeek said in A software abomination for y'all:
@nerd4sale said in A software abomination for y'all:
@Jake-VanWagoner said in A software abomination for y'all:
a model based software engineering tool from the early 2000’s. One of the early attempts at “no code” development.
Nah, that's at least the third of fourth generation of failed attempts at "no code" development.
I've seen them since the mid-80s, but the first attempts were probably much earlier than that.I remember one from about 1990-ish, for doing hardware development. As I've mentioned before, hardware is designed by writing a model using a hardware description language (HDL) such as Verilog or VHDL. This graphical development tool was called Visual HDL, and it wasn't entirely no-code; in some cases, you had to write a few lines of VHDL to put into the boxes you connected together visually. We called it "Visual Hurdle", because it really didn't make the development process easier.
Why would you let someone who doesn't know WTF they're doing do hardware development?
Hey, it works alright for webdev doesn't it?
-
@error_bot magic-8-ball
-
@error_bot magic 8 ball
-
@Gąska dude wrong site for blow
-
@Gąska said in A software abomination for y'all:
@error_bot magic-8-ball
503 Service Unavailable
anyway.
-
@topspin I think this confirms your claim.
-
@Gribnit said in A software abomination for y'all:
@topspin said in A software abomination for y'all:
@HardwareGeek said in A software abomination for y'all:
@nerd4sale said in A software abomination for y'all:
@Jake-VanWagoner said in A software abomination for y'all:
a model based software engineering tool from the early 2000’s. One of the early attempts at “no code” development.
Nah, that's at least the third of fourth generation of failed attempts at "no code" development.
I've seen them since the mid-80s, but the first attempts were probably much earlier than that.I remember one from about 1990-ish, for doing hardware development. As I've mentioned before, hardware is designed by writing a model using a hardware description language (HDL) such as Verilog or VHDL. This graphical development tool was called Visual HDL, and it wasn't entirely no-code; in some cases, you had to write a few lines of VHDL to put into the boxes you connected together visually. We called it "Visual Hurdle", because it really didn't make the development process easier.
Why would you let someone who doesn't know WTF they're doing do hardware development?
Because
IC developmentCSS is now so complex that human beings literally cannot lay them out manually and have not been able to for decades.
-
@boomzilla said in A software abomination for y'all:
@Gribnit said in A software abomination for y'all:
@topspin said in A software abomination for y'all:
@HardwareGeek said in A software abomination for y'all:
@nerd4sale said in A software abomination for y'all:
@Jake-VanWagoner said in A software abomination for y'all:
a model based software engineering tool from the early 2000’s. One of the early attempts at “no code” development.
Nah, that's at least the third of fourth generation of failed attempts at "no code" development.
I've seen them since the mid-80s, but the first attempts were probably much earlier than that.I remember one from about 1990-ish, for doing hardware development. As I've mentioned before, hardware is designed by writing a model using a hardware description language (HDL) such as Verilog or VHDL. This graphical development tool was called Visual HDL, and it wasn't entirely no-code; in some cases, you had to write a few lines of VHDL to put into the boxes you connected together visually. We called it "Visual Hurdle", because it really didn't make the development process easier.
Why would you let someone who doesn't know WTF they're doing do hardware development?
Because
IC developmentCSS is now so complex that human beings literally cannot lay them out manually and have not been able to for decades.27 levels deeps
-
@Gąska said in A software abomination for y'all:
@error_bot magic-8-ball
I forget if you needed the ! at the beginning for specific mentions.
@error_bot !magic-8-ball
but it's probably offline because auto-restart is hard...
-
@Tsaukpaetra said in A software abomination for y'all:
but it's probably offline
probably
Remind me, who's hosting that bot nowadays?
-
@Gąska said in A software abomination for y'all:
@Tsaukpaetra said in A software abomination for y'all:
but it's probably offline
probably
Remind me, who's hosting that bot nowadays?
I mean, the VM is still running and has connection. Beyond that I only do stuff if prodded.
-
@Tsaukpaetra said in A software abomination for y'all:
@Gąska said in A software abomination for y'all:
@Tsaukpaetra said in A software abomination for y'all:
but it's probably offline
probably
Remind me, who's hosting that bot nowadays?
I mean, the VM is still running and has connection. Beyond that I only do stuff if prodded.
-
@topspin said in A software abomination for y'all:
@Gąska said in A software abomination for y'all:
@error_bot magic-8-ball
503 Service Unavailable
anyway.
As previously mentioned, magic 8 ball is broken because the 3D rendering library
three
it uses made a breaking change to the API and to fix it.I'm not sure if this proves or disproves your point.
Filed under: Maybe I shouldn't point the dependency at the master branch on github.
-
@error said in A software abomination for y'all:
I'm not sure if this proves or disproves your point.
I'd say it proves my point from the other thread. Every developer worth their salt locks dependencies at specific versions, to avoid the exact problem you're experiencing.
-
@Gąska said in A software abomination for y'all:
Every developer worth their salt
not... in all cases. a partial lock to
major.minor.+
, for instance, for a library with known, published rules about what a build version can entail, is not uncommon.
-
@Gribnit pointing to the master branch on Github isn't uncommon either, but neither is the right way to go.
-
@Gąska oh, I'd say hauling down
master
is more common than a version range restriction.
-
@Gąska said in A software abomination for y'all:
@error said in A software abomination for y'all:
I'm not sure if this proves or disproves your point.
I'd say it proves my point from the other thread. Every developer worth their salt locks dependencies at specific versions, to avoid the exact problem you're experiencing.
Which simply causes the alternate problem of accumulating security vulnerabilities.
-
@Jaime if you don't update anything, sure. The idea is to regularly check what can be safely upgraded without breaking the project.
-
@Gąska said in A software abomination for y'all:
The idea is to regularly check what can be safely upgraded without breaking the project.
in javascript you say.
-
@Gribnit a bad workman blames his tools, or as we say in Poland, złej baletnicy majtki w dupę wchodzą.
-
@Gąska said in A software abomination for y'all:
@Gribnit a bad workman blames his tools, or as we say in Poland, złej baletnicy majtki w dupę wchodzą.
what's the phrase for "why's that guy using his shoe as a hammer?"
-
@Gribnit said in A software abomination for y'all:
why's that guy using his shoe as a hammer?
An almost-predates-the-front-page classic.
-
@Gribnit "pojebało go już całkiem".
-
@Gąska said in A software abomination for y'all:
pojebało go już całkiem
pithy. wants a Portuguese to take it up and compress it down to one word, but Polish is not so blessed as the Romance languages.
-
@Gribnit "go już całkiem" is optional - "pojebało" alone conveys the meaning as well, but doesn't quite have the same punch.
-
@Gribnit said in A software abomination for y'all:
pithy. wants a Portuguese to take it up and compress it down to one word, but Polish is not so blessed as the Romance languages.
What are you talking about?
-
@Zecc FONGUL
-
@topspin said in A software abomination for y'all:
@Tsaukpaetra said in A software abomination for y'all:
@Gąska said in A software abomination for y'all:
@Tsaukpaetra said in A software abomination for y'all:
but it's probably offline
probably
Remind me, who's hosting that bot nowadays?
I mean, the VM is still running and has connection. Beyond that I only do stuff if prodded.
Oof! :💥
-
@Gąska said in A software abomination for y'all:
The idea is to regularly check what can be safely upgraded without breaking the project.
ncu -u; yarn install; yarn build
Did the build succeed?(ncu is npm-check-updates. -u flag is upgrade all to latest.)
-
@error said in A software abomination for y'all:
@Gąska said in A software abomination for y'all:
The idea is to regularly check what can be safely upgraded without breaking the project.
ncu -u; yarn install; yarn build
Did the build succeed?This but unironically. (And with automated tests.)
-
@Gąska said in A software abomination for y'all:
The idea is to regularly check what can be safely upgraded without breaking the project.
It works well provided your CI workflows are not totally worthless.