The Bloat of a 'Blank Project': 1991 vs. 2021
Description
A two-panel comparison meme that highlights the increasing complexity of software development. The top panel, labeled 'Blank Project In 1991', shows a screenshot of a classic blue-screen, text-based IDE, likely Borland's Turbo C++ or Pascal. The main editing window is completely empty, representing a truly blank start. The interface is minimalist, with simple menu options like 'File', 'Edit', 'Run'. The bottom panel, labeled 'Blank Project in 2021', shows a modern, dark-themed IDE, resembling Android Studio or IntelliJ IDEA. In stark contrast, the 'blank' project is anything but empty; the file explorer on the left is populated with a deep hierarchy of dozens of auto-generated files and folders. This includes build scripts (Gradle), configuration files (.gitignore, proguard-rules.pro), and extensive directory structures for source code, resources, and multiple types of tests. The meme humorously critiques the massive amount of boilerplate, configuration, and dependency management overhead that is now standard before a developer writes a single line of application code
Comments
155Comment deleted
In 1991, your first compile error was your own typo. In 2021, your first compile error is a transitive dependency conflict from the boilerplate
1991: New project hands you an empty .bas file; 2021: New project fires up Gradle, indexes 700 transitive deps, and quietly warns there’s already a log4j CVE in your HelloWorld
Back in '91, we complained about having to write our own linked lists. Now we spend three days configuring the toolchain before we can write 'Hello World' - and somehow we've convinced ourselves this is progress because at least the semicolons are automatically inserted
In 1991, 'blank project' meant you could start coding immediately. In 2021, 'blank project' means you've only run the scaffolding tool and now have 47 configuration files, 300MB of node_modules, and still haven't written a single line of business logic. Progress is when your 'Hello World' requires a CI/CD pipeline, three linters, a bundler, a transpiler, and a 12-step build process - but hey, at least it's type-safe and tree-shakeable
1991 blank project: one cursor, zero regrets. 2021: npm init spawns a dependency graph deeper than your call stack on prod OOM
In 1991 you pressed Run; in 2021 Run first builds the build system, resolves 1,200 transitive deps, and then reminds you there’s no main() yet
Blank project in ’91: a cursor. Blank project in 2021: a monorepo, Dockerfile, k8s YAMLs, a Gradle wrapper, and your first CVE before Hello World
OMG, The Antediluvian Era ❤️!! Comment deleted
Android) Comment deleted
i mean its still achievable, just use a text editor and a terminal. i honestly prefer that way Comment deleted
cabal new wil still generate a shitload of files Comment deleted
what's cabal new? Comment deleted
a command to setup a haskell project Comment deleted
that's not what i'm talking about though Comment deleted
im talking about editing a file or two with a text editor, and compiling it with like make or something Comment deleted
yeah that's pretty much only possible in c/c++ nowadays Comment deleted
are you sure about that? lol Comment deleted
i mean, you can compile rust projects with rustc and haskell onse with ghc, and java or whatever ones with javac, but name a person who actually does that Comment deleted
i do, on the rare occasion i work with java Comment deleted
idk about java much, maybe it may make sense there Comment deleted
i dont really see any reason to do anything else Comment deleted
your build system may automatically find and install the deps you need, run test and benchmarks for you Comment deleted
that just sounds like a bunch of stuff that i dont really have control over then Comment deleted
depends on the actual build system Comment deleted
for example: cmake sucks, it's unexpressive ugly blah blah blah, i use make for my c++ Comment deleted
rusts cargo is good bc it lets me manage my deps mostly how i want, and you don't fight against it all the time, so i use it Comment deleted
true but i prefer having a minimalist codebase Comment deleted
and its a bit hard to achieve this when theres a bunch of automated stuff going on Comment deleted
yeah that's true, but you don't have to have a complete full hardcore setup most ow the time, just source tree and the build tree Comment deleted
im not sure what you mean by full hardcore Comment deleted
writing every single test, every single benchmark, every single piece of doc, using all linters, sanitizers, all that Comment deleted
why not just write code Comment deleted
bc literally noone cares about your code without docs, bc tests give you validation that you've written actually good code, and brnchmarks will test the speed of your code (if that's important to you) Comment deleted
so you're telling me that build systems can automatically figure out what your end goal is, and design bug tests, and performance tests? Comment deleted
no, they don't write tests, but they automate them Comment deleted
so they automate automation? that sounds complicated Comment deleted
and how's are they automating automation? Comment deleted
they detect where your tests are and run them? idk Comment deleted
but where's the "automating automation" part? Comment deleted
you still have to write tests, but you can expect them to execute them automatically Comment deleted
(that's why all the empty folders are there) Comment deleted
and it's much easier to just add the deps to your dep file and go :!cargo run or whatever than to install everything yourself Comment deleted
C/C++ vs Android(Java/Kotlin) Comment deleted
Mmmm maven))) Comment deleted
also i don't think a build system can automatically write documentation Comment deleted
it can assrmble it from comments n code Comment deleted
but you're still writing it Comment deleted
yes, but not in latex or markdown, but in comments to my code, and the doc program thing will automatically hook up the types involved and add links for easy navigation, assemble the whole thing into a nice conceivabe structure Comment deleted
i see this as only being useful if your code is too big Comment deleted
what's "too big" anyway? Comment deleted
when it's so big that you have trouble traversing the code by yourself Comment deleted
well, you don't write the docs for yourself, but for the users of your lib Comment deleted
and docs are needed always Comment deleted
it's not too hard to type out what your code does Comment deleted
mine for me? yes. Your for you? maybe yes, idk. Mine to you or your to me is a 100% no. Comment deleted
im trying to figure out how it's different then just putting the name of a test script after make run or something Comment deleted
you're making it sound like it's some insane effort Comment deleted
i mean, writing what each function dos is easy, but linking it all together is an O(n!) task Comment deleted
do you mean linking it together as in typing it in the same document Comment deleted
as in you do json_type parse_file(path_type); and linking the json_type to the json_type struct documentation, and the same for path_type respectively Comment deleted
so you don't have to search for it for hours Comment deleted
you write your docs in json?? Comment deleted
what?? Comment deleted
oh nvm, misunderstood the wording Comment deleted
then what are you on about lmao Comment deleted
if it's some haskell stuff, i have no experience with that Comment deleted
this before is just the simplest c example Comment deleted
ohhhhh i see Comment deleted
why would you need to link to other parts of the document? Comment deleted
so you don't have to search for them? Comment deleted
couldnt you just look at the document? Comment deleted
you can, but it gets hard when your doc is more than 10 functions Comment deleted
and like 3 structs Comment deleted
it gets messy fast Comment deleted
that's just one page Comment deleted
if you write a decent doc that'll be 7 pages easily Comment deleted
so decent = bloated? Comment deleted
decent doc, not decent code Comment deleted
i think there's an argument to be made that manually writing documentation encourages simpler code then Comment deleted
your numbers Comment deleted
oh no no, yours. because i'm talking about how your numbers would look like as code comments Comment deleted
i mean that you are the one who said that 10 funcs is 1 page Comment deleted
and you're the one who thinks it's reasonable to make a 7 page long block comment Comment deleted
yes, and they actually do look like that, pages long comments explaining the programmers intent for this function Comment deleted
what having a build system does to a mf Comment deleted
i mean, again, i still do use make for my c++ projects Comment deleted
like Comment deleted
if i made a doc that took up 7 pages just for 10 functions i'd either be writing incredibly large and ridiculous functions, or trying to reach a word count Comment deleted
like you don't want a doc for mmap() being just this function will map a file into process's memory Comment deleted
that's an example of bad doc Comment deleted
now go look at the actual mmap() doc Comment deleted
it's big, bc it documents function's behaviour in detail Comment deleted
so it should take a page? Comment deleted
well, in mmap's case it's more like 6-7 pages Comment deleted
that's comical Comment deleted
https://www.man7.org/linux/man-pages/man2/mmap.2.html Comment deleted
if it does that many different things why is it 1 function? Comment deleted
it does only one that thing, but you can't write anything using only that information Comment deleted
also, by the way, we were originally talking about build systems writing these based on code comments, right? Comment deleted
yeah Comment deleted
7 page long comments? Comment deleted
are split up into multiple blocks Comment deleted
you're missing the point, wading through multiple blocks of comments totaling, even 1 page! just to get to some code is ridiculous Comment deleted
it's a whole lot better than getting to the coe right away and guessing wtf that function actually does Comment deleted
bc the author didn't document the code properly Comment deleted
what it does on an invalid input? what errors an it emmit? what's the return type? what do i feed it to make it work? Comment deleted
you just can't fit all that in like a half page Comment deleted
just look at the documentation while scrolling through it lol Comment deleted
if your doc style is 10 funcs per page the doc is pretty useless Comment deleted
it doesn't have to be 10 functions per page Comment deleted
i would rather avoid doing that Comment deleted
what i'm saying is, it's better to write those looong comments in a separate document Comment deleted
that's why they call it the documentation Comment deleted
do you do it like that? is it easy to maintain like that? Comment deleted
yup! Comment deleted
not the commentation Comment deleted
when i even write documentation lol Comment deleted
that's the key phrase Comment deleted
for what lock? Comment deleted
for the lock of your understanding of documentation Comment deleted
at least my code isn't 90% block comments Comment deleted
i'm pretty sure it's 0% comments Comment deleted
at the very least, i make one liners that say what's going on at that particular moment, when it's not abundantly clear Comment deleted
that's not enough. Comment deleted
come back a year after, you will see Comment deleted
and regret Comment deleted
that's why i said "at the very least" you bird brain Comment deleted
you put them at the wrong place then Comment deleted
so why shouldn't i put them there? Comment deleted
????????????? Comment deleted
also, do you use any linter? Comment deleted
the compiler is enough. Comment deleted
it's not most of the time Comment deleted
to keep the code maintainable Comment deleted
lets say i'm writing something in php Comment deleted
let's rather not. Comment deleted
why should i put 7 page block comments before functions? Comment deleted
php is already confusing enough Comment deleted
comments should deobfuscate the code Comment deleted
not make it harder to navigate Comment deleted
MITIGATIONS INCOMING, THESE ARE LEGIT DISADVANTAGES OF THE COMMENT BLOCK METHOD, but 1) you can fold them away if you don't need them 2) you can use the gotodefinition features of your editor to navigate, conents won't help nor make it harder Comment deleted
i prefer not to use an IDE Comment deleted
i don't use an ide, vim has 1 natively and 2 through a language plugin Comment deleted
plus, i find it kind of ridiculous to fold away something you dont want to look at Comment deleted
well, if you actually don't want to look at that Comment deleted
again, you want to look at the useful doc Comment deleted
yeah i could be a normal person and have the documentation open in another window, and look at code in the window i have code in Comment deleted
its sweeping it under the rug, lol Comment deleted
i do not understand how block comments have an advantage over this method Comment deleted
for me it's bc you look through your function doc every time when you edit it, and never forget to edit it when you edit the function, the doc generator can assemble it into a nice concievable structure, and that the doc generator will auto-generate half of the doc for me Comment deleted
what kinds of things do you make anyway Comment deleted
i'm making a safe vulkan wrapper for rust rn Comment deleted
nice Comment deleted
before that i did an opengl renderer in c++ and that's an example on how not to do things Comment deleted
im interested Comment deleted