Skip to content
DevMeme
2707 of 7590
TechHistory Post #2991 · source on Telegram

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

155
Anonymous ★ Top Pick In 1991, your first compile error was your own typo. In 2021, your first compile error is a transitive dependency conflict from the boilerplate
  1. Anonymous ★ Top Pick

    In 1991, your first compile error was your own typo. In 2021, your first compile error is a transitive dependency conflict from the boilerplate

  2. Anonymous

    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

  3. Anonymous

    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

  4. Anonymous

    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

  5. Anonymous

    1991 blank project: one cursor, zero regrets. 2021: npm init spawns a dependency graph deeper than your call stack on prod OOM

  6. Anonymous

    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

  7. Anonymous

    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

  8. @ANTICHRISTUS_REX 5y

    OMG, The Antediluvian Era ❤️!!

  9. @LastStranger 5y

    Android)

  10. @sashakity 5y

    i mean its still achievable, just use a text editor and a terminal. i honestly prefer that way

    1. Deleted Account 5y

      cabal new wil still generate a shitload of files

      1. @sashakity 5y

        what's cabal new?

        1. Deleted Account 5y

          a command to setup a haskell project

          1. @sashakity 5y

            that's not what i'm talking about though

  11. @sashakity 5y

    im talking about editing a file or two with a text editor, and compiling it with like make or something

    1. Deleted Account 5y

      yeah that's pretty much only possible in c/c++ nowadays

      1. @sashakity 5y

        are you sure about that? lol

        1. Deleted Account 5y

          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

          1. @sashakity 5y

            i do, on the rare occasion i work with java

            1. Deleted Account 5y

              idk about java much, maybe it may make sense there

              1. @sashakity 5y

                i dont really see any reason to do anything else

                1. Deleted Account 5y

                  your build system may automatically find and install the deps you need, run test and benchmarks for you

                  1. @sashakity 5y

                    that just sounds like a bunch of stuff that i dont really have control over then

                    1. Deleted Account 5y

                      depends on the actual build system

                      1. Deleted Account 5y

                        for example: cmake sucks, it's unexpressive ugly blah blah blah, i use make for my c++

                        1. Deleted Account 5y

                          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

                      2. @sashakity 5y

                        true but i prefer having a minimalist codebase

                        1. @sashakity 5y

                          and its a bit hard to achieve this when theres a bunch of automated stuff going on

                          1. Deleted Account 5y

                            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

                            1. @sashakity 5y

                              im not sure what you mean by full hardcore

                              1. Deleted Account 5y

                                writing every single test, every single benchmark, every single piece of doc, using all linters, sanitizers, all that

                                1. @sashakity 5y

                                  why not just write code

                                  1. Deleted Account 5y

                                    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)

                                    1. @sashakity 5y

                                      so you're telling me that build systems can automatically figure out what your end goal is, and design bug tests, and performance tests?

                                      1. Deleted Account 5y

                                        no, they don't write tests, but they automate them

                                        1. @sashakity 5y

                                          so they automate automation? that sounds complicated

                                          1. Deleted Account 5y

                                            and how's are they automating automation?

                                            1. @sashakity 5y

                                              they detect where your tests are and run them? idk

                                              1. Deleted Account 5y

                                                but where's the "automating automation" part?

                                        2. Deleted Account 5y

                                          you still have to write tests, but you can expect them to execute them automatically

                  2. Deleted Account 5y

                    (that's why all the empty folders are there)

          2. Deleted Account 5y

            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

  12. @SuperiorProgramming 5y

    C/C++ vs Android(Java/Kotlin)

  13. @nuntikov 5y

    Mmmm maven)))

  14. @sashakity 5y

    also i don't think a build system can automatically write documentation

    1. Deleted Account 5y

      it can assrmble it from comments n code

      1. @sashakity 5y

        but you're still writing it

        1. Deleted Account 5y

          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

          1. @sashakity 5y

            i see this as only being useful if your code is too big

            1. Deleted Account 5y

              what's "too big" anyway?

              1. @sashakity 5y

                when it's so big that you have trouble traversing the code by yourself

                1. Deleted Account 5y

                  well, you don't write the docs for yourself, but for the users of your lib

                  1. Deleted Account 5y

                    and docs are needed always

                  2. @sashakity 5y

                    it's not too hard to type out what your code does

                    1. Deleted Account 5y

                      mine for me? yes. Your for you? maybe yes, idk. Mine to you or your to me is a 100% no.

  15. @sashakity 5y

    im trying to figure out how it's different then just putting the name of a test script after make run or something

  16. @sashakity 5y

    you're making it sound like it's some insane effort

    1. Deleted Account 5y

      i mean, writing what each function dos is easy, but linking it all together is an O(n!) task

      1. @sashakity 5y

        do you mean linking it together as in typing it in the same document

        1. Deleted Account 5y

          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

          1. Deleted Account 5y

            so you don't have to search for it for hours

          2. @sashakity 5y

            you write your docs in json??

  17. @sashakity 5y

    what??

    1. Deleted Account 5y

      oh nvm, misunderstood the wording

  18. @sashakity 5y

    then what are you on about lmao

  19. @sashakity 5y

    if it's some haskell stuff, i have no experience with that

    1. Deleted Account 5y

      this before is just the simplest c example

      1. @sashakity 5y

        ohhhhh i see

  20. @sashakity 5y

    why would you need to link to other parts of the document?

    1. Deleted Account 5y

      so you don't have to search for them?

      1. @sashakity 5y

        couldnt you just look at the document?

        1. Deleted Account 5y

          you can, but it gets hard when your doc is more than 10 functions

          1. Deleted Account 5y

            and like 3 structs

            1. Deleted Account 5y

              it gets messy fast

          2. @sashakity 5y

            that's just one page

            1. Deleted Account 5y

              if you write a decent doc that'll be 7 pages easily

              1. @sashakity 5y

                so decent = bloated?

                1. Deleted Account 5y

                  decent doc, not decent code

                  1. @sashakity 5y

                    i think there's an argument to be made that manually writing documentation encourages simpler code then

            2. Deleted Account 5y

              your numbers

              1. @sashakity 5y

                oh no no, yours. because i'm talking about how your numbers would look like as code comments

                1. Deleted Account 5y

                  i mean that you are the one who said that 10 funcs is 1 page

                  1. @sashakity 5y

                    and you're the one who thinks it's reasonable to make a 7 page long block comment

                2. Deleted Account 5y

                  yes, and they actually do look like that, pages long comments explaining the programmers intent for this function

                  1. @sashakity 5y

                    what having a build system does to a mf

                    1. Deleted Account 5y

                      i mean, again, i still do use make for my c++ projects

  21. @sashakity 5y

    like

  22. @sashakity 5y

    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

    1. Deleted Account 5y

      like you don't want a doc for mmap() being just this function will map a file into process's memory

      1. Deleted Account 5y

        that's an example of bad doc

        1. Deleted Account 5y

          now go look at the actual mmap() doc

          1. Deleted Account 5y

            it's big, bc it documents function's behaviour in detail

      2. @sashakity 5y

        so it should take a page?

        1. Deleted Account 5y

          well, in mmap's case it's more like 6-7 pages

          1. @sashakity 5y

            that's comical

            1. Deleted Account 5y

              https://www.man7.org/linux/man-pages/man2/mmap.2.html

  23. @sashakity 5y

    if it does that many different things why is it 1 function?

    1. Deleted Account 5y

      it does only one that thing, but you can't write anything using only that information

      1. @sashakity 5y

        also, by the way, we were originally talking about build systems writing these based on code comments, right?

        1. Deleted Account 5y

          yeah

          1. @sashakity 5y

            7 page long comments?

            1. Deleted Account 5y

              are split up into multiple blocks

              1. @sashakity 5y

                you're missing the point, wading through multiple blocks of comments totaling, even 1 page! just to get to some code is ridiculous

                1. Deleted Account 5y

                  it's a whole lot better than getting to the coe right away and guessing wtf that function actually does

                  1. Deleted Account 5y

                    bc the author didn't document the code properly

                    1. Deleted Account 5y

                      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?

                      1. Deleted Account 5y

                        you just can't fit all that in like a half page

                  2. @sashakity 5y

                    just look at the documentation while scrolling through it lol

                    1. Deleted Account 5y

                      if your doc style is 10 funcs per page the doc is pretty useless

                      1. @sashakity 5y

                        it doesn't have to be 10 functions per page

  24. @sashakity 5y

    i would rather avoid doing that

  25. @sashakity 5y

    what i'm saying is, it's better to write those looong comments in a separate document

  26. @sashakity 5y

    that's why they call it the documentation

    1. Deleted Account 5y

      do you do it like that? is it easy to maintain like that?

      1. @sashakity 5y

        yup!

  27. @sashakity 5y

    not the commentation

  28. @sashakity 5y

    when i even write documentation lol

    1. Deleted Account 5y

      that's the key phrase

      1. @sashakity 5y

        for what lock?

        1. Deleted Account 5y

          for the lock of your understanding of documentation

          1. @sashakity 5y

            at least my code isn't 90% block comments

            1. Deleted Account 5y

              i'm pretty sure it's 0% comments

              1. @sashakity 5y

                at the very least, i make one liners that say what's going on at that particular moment, when it's not abundantly clear

                1. Deleted Account 5y

                  that's not enough.

                  1. Deleted Account 5y

                    come back a year after, you will see

                    1. Deleted Account 5y

                      and regret

                  2. @sashakity 5y

                    that's why i said "at the very least" you bird brain

                    1. Deleted Account 5y

                      you put them at the wrong place then

                      1. @sashakity 5y

                        so why shouldn't i put them there?

                        1. Deleted Account 5y

                          ?????????????

        2. Deleted Account 5y

          also, do you use any linter?

          1. @sashakity 5y

            the compiler is enough.

            1. Deleted Account 5y

              it's not most of the time

  29. @sashakity 5y

    to keep the code maintainable

  30. @sashakity 5y

    lets say i'm writing something in php

    1. Deleted Account 5y

      let's rather not.

  31. @sashakity 5y

    why should i put 7 page block comments before functions?

  32. @sashakity 5y

    php is already confusing enough

  33. @sashakity 5y

    comments should deobfuscate the code

  34. @sashakity 5y

    not make it harder to navigate

    1. Deleted Account 5y

      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

      1. @sashakity 5y

        i prefer not to use an IDE

        1. Deleted Account 5y

          i don't use an ide, vim has 1 natively and 2 through a language plugin

  35. @sashakity 5y

    plus, i find it kind of ridiculous to fold away something you dont want to look at

    1. Deleted Account 5y

      well, if you actually don't want to look at that

      1. Deleted Account 5y

        again, you want to look at the useful doc

        1. @sashakity 5y

          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

  36. @sashakity 5y

    its sweeping it under the rug, lol

  37. @sashakity 5y

    i do not understand how block comments have an advantage over this method

    1. Deleted Account 5y

      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

      1. @sashakity 5y

        what kinds of things do you make anyway

        1. Deleted Account 5y

          i'm making a safe vulkan wrapper for rust rn

          1. @sashakity 5y

            nice

          2. Deleted Account 5y

            before that i did an opengl renderer in c++ and that's an example on how not to do things

  38. @sashakity 5y

    im interested

Use J and K for navigation