Skip to content
HomeVideosBooksBlogs
AllTop postsTopics
Podcasts
HistoryListsWatch laterLiked videosFollowing

The videos, books, blogs and podcasts Hacker News keeps recommending, all in one place.

VideosBooksBlogsPodcastsAboutPrivacySettings

Data from Hacker News, HackerTube, HackerBooks, HackerBlogs and Open Library. Credits · Not affiliated with Y Combinator.

HomeVideosBooksBlogsPodcasts
Ctrl K
    A

    Alarming Development

    alarmingdevelopment.org · Personal blog · on HN since 2008

    Alarming Development is a programming-language and software-culture blog covering software stagnation and the future of programming.

    Visit blogRSSHN submissions
    ProgrammingLanguages & CompilersWriting & Thinking
    What HN says

    HN links it for essays on why software progress has stalled and for commentary on Bret Victor's talks and the STEPS research project.

    Stats for nerds
    53HN people shared it
    65linked in comments
    1.5Kstory points
    Apr 2025last shared
    2009people per year2025

    Top posts on HN

    1. 1
      The Great Software Stagnation
      2 people · 277 points · first shared 2021 · 299 comments on HN
    2. 2
      Programming: Attitude Trumps Intelligence
      2 people · 170 points · first shared 2010 · 60 comments on HN
    3. 3
      Leaked transcript of censored Bret Victor talk
      3 people · 128 points · first shared 2013 · 76 comments on HN
    4. 4
      Version Control for Structure Editing
      1 person · 126 points · first shared 2021 · 55 comments on HN
    5. 5
      Beautiful Code
      1 person · 125 points · first shared 2010 · 33 comments on HN
    6. 6
      Developer inequality and the technical debt crisis
      2 people · 117 points · first shared 2014 · 103 comments on HN
    7. 7
      The Future Programming Manifesto
      2 people · 102 points · first shared 2014 · 106 comments on HN
    8. 8
      Switching to Plan J (From Scala back to Java)
      2 people · 95 points · first shared 2011 · 65 comments on HN
    9. 9
      The problem with programming and how to fix it
      1 person · 74 points · first shared 2018 · 94 comments on HN
    10. 10
      New Subtext screencast: Two-Way Dataflow
      2 people · 38 points · first shared 2014 · Discussion on HN

    What HN people wrote when they linked it

    • pjJan 2009

      JavaScript is /way/ better than good enough. It's terrific. It's the only programming language many people need to produce really amazing websites and web application that make the world a richer and more promising place for a lot of people.

      It's good enough to get you $40-50/hr easily.

      It's good enough to build platforms and APIs and tons of libraries given freely to the community by companies including Yahoo, Google, and startups you've never heard of.

      It's a beautiful language and /extremely/ powerful. To judge it poorly because hash keys are strings is so short sighted that I doubt the credibility of the author.

      If you are new to programming or want to try something out, go for JavaScript. You can build a simple website in HTML and if you know JavaScript, you can plug into a wealth of information just by typing some code into a browser window and hitting save.

      Look at what any of the major mapping websites let you do. Entire platforms as a service. And now with the Pre out, you'll be able to build websites with javascript that function natively on the phone. The iPhone makes you jump through hoops to do something like that.

      JavaScript is big big big and it doesn't have anything to do with hash keys. It has to do with a network of like-minded individuals pushing it forward. Not for money, not to make it easier, not to win control, but to create a platform on which we can all collaborate and build an Internet that helps us communicate.

      Look at the power right…

    • shurcooLApr 2013

      I agree, the ability to connect widgets is one of my favourite aspects.

      It lets you create a customized for your specific needs instant feedback so you can keep changing the source and see how it affects your "calculated view."

      I want to be able to answer questions like:

      - What is the diff between the output of my program as is and at master^1 commit.

      Sure, I can manually copy my repo, check it out at master^1 and save its output to file1.out. Then save the current output as file2.out and do a diff. But since that takes more than 5-10 seconds, the cost outweighs the benefits and I'll say "screw it, I'll just keep going as is."

      On the other hand, if I build a tool that makes it possible for me to answer that question in under 10 seconds (and keep answering it as I make relevant changes, if I want to keep getting the feedback), then that will change how I work.

      Unix pipes are absolutely great, but there are some areas for improvement.

      - It's hard to visualize the output at the intermediate steps of the chain. So if you have "cmd1 | cmd2 | cmd3", you'd have to spend more effort than it has to be in order to see what cmd2 and cmd3 got as input.

      - They are limited to text for visualization of output. Most of the time this is good, but what if you want to see a plot of 2D points?

      - They're typically executed when you press Enter. Sometimes you might want to say "always execute this whenever source file changes."

      The awesome part about software is that you can create and…

    • msutherlMar 2012

      [repost from blog] – This is really spot on. I would like to refer you to a couple of things that come to mind that you might find useful for advancing this line of thinking.

      (1) I saw a talk by Jonathan Edwards that was very much along the lines of what you wrote here: http://alarmingdevelopment.org/?p=5

      (2) Second, Christopher Alexander’s early work on patterns in architecture and urban design have been referenced quite a bit in computer science, but seldom is his ‘magnum opus’, a four-book series on the ‘nature of order’, referenced. These texts move far beyond the early work. You would do well to have a look at the first book, which tries to establish an objective theory of design not based on scientific principles: http://www.amazon.com/s/ref=nb_sb_noss_1?url=search-alias%3Daps&field-keywords=the+nature+of+order&x=0&y=0

      (3) You might be interested to read some discussion on the history of music programming languages. Max/MSP and Pd, both dataflow-oriented, offer what I would estimate to be an order of magnitude of productivity gain for certain tasks in building one-off multi-media systems. They’re a bit like a UNIX for real-time multi-media + control signals. This essay reminded me a bit of the anti-academic and organic approach that Miller Puckette took in building them despite being trained as a mathematician and developing them in an academic setting. This serves as a good lesson that successful software isn’t necessarily designed by having good principles, but…

    • MawrJul 2023

      > Yes, there are people who create a mess with abstraction. This happens in every language, in Java people create FactoryFactories, in Haskell people play type tetris, in Ruby, people abuse metaprogramming and in Go, I assume some people go overboard with code-gen.

      It's possible in any language and yet some languages' codebases are consistently worse than others ;)

      If you create a culture of cleverness, implicitness and metaprogramming, that's what the programmers using your language will do. It's self-selection to an extent.

      "I've suffered long from the Ruby ecosystem's mentality of 'look at what I can do!' of self-serving pointless DSL's and frameworks and solemnly swore to myself to stay away from cute languages that encourage bored devs to get 'creative'." [1]

      "I worked at a Scala shop about 10 years ago. Everyone had their own preferred "dialect", kind of like C++, resulting in too much whining and complaining during code reviews. IMHO, the language is too complex." [2]

      > And all the while, every one of these lines could be mutating some shared state

      That's where the obvious code helps.

      Let's circle back.

      > I still don't know what people mean by "obvious" code.

      The Zen of Python is a nice primer: [3]. A beautiful display of taste right there.

      A few concrete examples:

      - "Explicit is better than implicit."

      Explicitly returning errors means we get to see every single point at which something could error out - explicit, as opposed to exceptions that could…

    • kemillerJul 2011

      I think the basic issue most people have with Haskell (or rather, with Haskellers) is the fetishization of 100% correctness. For most tasks, it's just not that important, and so the (considerable) extra cognitive load that Haskell imposes is a net negative.

      I mean, precise joinery may be superior to hammers and nails when building a house, but it's an expensive proposition, and there are 5 people in the world who can do it properly.

      Most of us monkeys, when coding, are aiming to accomplish some task in the notoriously incorrect real world. It is often much better to spend 1/5th the engery get to a 80-90% correct solution very fast, and then patch as necessary, for the very important reason that you don't even know if what you're attempting to do will work. In that mode, like carpenters, sometimes it's helpful to just bang it with a hammer.

      If what you do is write compilers, well, OK. The description you're quoting sounds pretty good. But the world doesn't need tons of compiler writers, and those it does need typically have pretty stable specs in front of them, so maybe joinery is the right approach.

      I think this guy gets it about right: http://alarmingdevelopment.org/?p=440

    • psykoticJan 2012

      This is just bad technical writing. He is unable or unwilling or simply too lazy to produce a single concrete real-world example of the object of his high praise. He says he has found applications ranging from real-time embedded systems to library loans, so how hard would it be for him to to give a simplified version of one of those applications as an example? Heck, I'll settle for a non-real-world example, as long as it's tangible and concrete.

      Contrast this with Jonathan Edwards's presentation on schematic tables (a powerful generalization of state charts) which despite its somewhat academic feel makes a strong case to the reader by employing a significant non-trivial example--an example which is admittedly also elegantly solvable in a lazily evaluated language like Haskell, as I pointed out to Jonathan a while ago: http://alarmingdevelopment.org/?p=366

    Related

    Simple Programmersimpleprogrammer.com72 people

    The Hacker News Generation (Afraid of Hard Work)

    Simple Programmer
    Personal · last shared 2025
    Coding Horrorblog.codinghorror.com2.1k people

    Farewell Stack Exchange

    Coding Horror
    Personal · last shared 2026
    programming is terribleprogrammingisterrible.com124 people

    Write code that is easy to delete, not easy to extend

    programming is terrible
    Personal · last shared 2026
    Corrode Blogcorrode.dev51 people

    Flattening Rust’s learning curve

    Corrode Blog
    Company · last shared 2026
    Better Programmingbetterprogramming.pub319 people

    Three programmers got fired, including me, due to a single app crash

    Better Programming
    Publication · last shared 2025
    Dev Geniusblog.devgenius.io103 people

    Spending more on retaining developers reduces the cost of hiring developers

    Dev Genius
    Publication · last shared 2026
    Rust Blogblog.rust-lang.org533 people

    Announcing Rust 1.0

    Rust Blog
    Company · last shared 2026
    beza1e1beza1e1.tuxen.de120 people

    A collection of things that are Turing-complete by accident (2013)

    beza1e1
    Personal · last shared 2026