Hacker News

Top stories

Live mirror
30 storiesupdated just nowView source snapshot
  1. Human brain is two separate organs, Stanford Medicine-led research finds(stanford.edu ↗)
    73comments
  2. If math is more than proof, we need to better celebrate the rest of it(terrytao.wordpress.com ↗)
    39comments
  3. GPT-6 Astra Solves a WWI German Radio Cipher(prinzai.com ↗)
    42comments
  4. San Francisco Onion Futures Company(onionfutures.com ↗)
    62comments
  5. Android 17 is the first since 3.x to add new APIs without releasing to the AOSP(grapheneos.social ↗)
    403comments
  6. Apple M6 Pro Achieves the Highest Single-Core CPU Score in Geekbench 7(geekbench.com ↗)
    14comments
  7. Typesafe-computer-use drives a Mac toward a goal for 1/50th of a cent per step(github.com/awlevin ↗)
    43comments
  8. Cloudflare Quick Tunnels(cloudflare.com ↗)
    278comments
  9. SDCC – Small Device C Compiler(sourceforge.net ↗)
    17comments
  10. Science Is Open Software(jepedersen.dk ↗)
    35comments
  11. You can run Git on object storage if you re-make packfiles(tigrisdata.com ↗)
    12comments
  12. How to Write with an LLM(sockpuppet.org ↗)
    324comments
  13. Saving another 100TB of RAM(cloudflare.com ↗)
    70comments
  14. Why building a Rust LSP is hard(rust-glancer.github.io ↗)
    31comments
  15. Ctenophores: Wonders of Biology(quantamagazine.org ↗)
    5comments
  16. NASA-IBM Lunar Foundation open-Source Geospatial AI Model(usra.edu ↗)
    2comments
  17. How OpenAI Used Its Own LLMs to Design Its Jalapeño Chip(ieee.org ↗)
    85comments
  18. The first new cat species discovered in 100 years(nationalgeographic.com ↗)
    104comments
  19. Goroutine Leak Profiles(go.dev ↗)
    2comments
  20. OpenJev(openjev.com ↗)
    262comments
  21. Show HN: Cactus Needle 3: 8-29MB automation models can match DeepSeek V4 Flash(cactuscompute.com ↗)
    88comments
  22. Photon-Emission-Guided Laser Fault Injection Enables RP2350 Secure Debug(ledger.com ↗)
    69comments
  23. Minimal Phone 2(minimalcompany.com ↗)
    220comments
  24. Cache-to-Cache: Direct Semantic Communication Between LLMs (2025)(arxiv.org ↗)
    12comments
  25. Veronese's Dogs(publicdomainreview.org ↗)
    discuss
  26. Suppress vulnerabilities applying Kubernetes context to scans(github.com/alegrey91 ↗)
    1comments
  27. Warez: The Infrastructure and Aesthetics of Piracy (2021)(archive.org ↗)
    61comments
  28. Inside ZCode: Silently uploading your Git history to the cloud(ferstar.org ↗)
    98comments
  29. Cyclomatic Complexity in C#(ndepend.com ↗)
    19comments
  30. Stepfun Step 5 Preview (LLM): On AA Pareto frontier(artificialanalysis.ai ↗)
    2comments

The story of Mel (1983)

80 pointsby 17y agopbm.com
22 comments
17y agoHN ↗

The story of Mel 2.0:

He spends 16 hour days fighting with browser incompatibilities, catching up with an ADHD-afflicted industry, answers massive amounts of emails, and does more SEO than coding.

17y agoHN ↗

This is all done at the threat of being replaced by a PHB's 16 year old "whiz-kid" nephew who "knows a lot about computers" and is "always playing with those things".

17y agoHN ↗

I'm not the Mel in the story, but yea you've got me pegged.

17y agoHN ↗

Oh my god, that was my job before I realized that big companies like Yahoo actually pay good money for people who know javascript and CSS.

Being "The Web Guy" sucks a lot.

17y agoHN ↗

I do enjoy this story, even if it is oft repeated.

I worked with a fellow once who very much reminded me of mel. He once built a telephone controller with an intel 4004 because the office he was working in needed the features it provided.

There probably nothing this fellow couldn't program.

17y agoHN ↗

I've seen this story before, and I just don't get it. Mel doesn't sound to me like a "Real Programmer." He sounds like the kind of person I wouldn't even consider hiring or collaborating with. I would have spent most of the debugging process muttering curses at Mel for writing undocumented, unreliable, invalid, highly fragile code.

Here's my version of a "Real Programmer": When Melanie left the company, I dug into her code to try to add the cheat feature. Turns out she had split everything up by functionality so that all the parts of the complex application were carefully encapsulated, and I only had to modify a couple methods. They were carefully commented, so I was able to grok the code just by skimming it. Once I made the changes, I added a couple more unit tests to the thorough test suite Melanie had left behind, and confident that the program still worked, I went home early.

I think times have changed...

17y agoHN ↗

I got tears in my eyes reading your comment.

What you've said is the equivalent of saying Odysseus would have been so much better if only he'd brought a cell phone with him, so he could call his wife and let her know when he'd be back.

17y agoHN ↗

this is the first "humorous" comment that I have ever upvoted - purely because it is so true that the humor is implicit and not the main function of what was said. My god I have this vision now of mel wearing robes and fighting creatures with machine code.

17y agoHN ↗

HA, "methods". This was the late 50's, kiddo. OO was fifteen years off... hell, high level languages were not even there yet. You were lucky if your computer had a keyboard. Your precious "unit tests" would have also been written in hex, and "Melanie's" carefully factored code would spend most of its time thrashing the stack, if the LGP-30 had one. And it didn't.

Anyway, to understand the context of this article, you need to read the "parent post" called "Real Programmers Don't Use Pascal": http://www.pbm.com//~lindahl/real.programmers.html

And to understand that, check on the grandparent, not a post but a book: Real Men Don't Eat Quiche (http://en.wikipedia.org/wiki/Real_Men_Dont_Eat_Quiche).

17y agoHN ↗

Reading this honestly just made a huge smile come across my face, and a bit of a tear start coming into my eye.

There might be hope.

17y agoHN ↗

I think you missed the part where it was 1983 (edit: actually even earlier, only the article is from 83).

I remember from "No Silver Bullet" (or was it "Mythical Man Month") how at one time it was a revolutionary idea to store documentation/comments along with the source code. It sounds crazy to ever have done it differently, but in earlier times, disk space was probably too scarce to do that. Likewise I suppose Mel's style was appropriate for the machines of his time.

17y agoHN ↗

I think both you and Mel missed Brian Kernighan's old adage:

"Everyone knows that debugging is twice as hard as writing a program in the first place. So if you're as clever as you can be when you write it, how will you ever debug it?"

17y agoHN ↗

But that only holds if Mel was working at the limit of his cleverness. I'm willing to assume, based on the evidence, that he still had some excess cleverness capacity reserved for debugging.

17y agoHN ↗

Mel likely wrote the blackjack program before Kernighan ever offered that advice.

17y agoHN ↗

I think times have changed...

Indeed, back then, memory addresses were more expensive than programmers. "Wasting" a week writing "unmaintainable" code to save a few bytes was apparently cost-effective.

Now, programmers are the expensive part. It follows that our code is now optimized for programmers rather than the hardware it will run on.

17y agoHN ↗

Yes, times have changed, but that's mostly because 99% of businesses prefer to make tradeoffs that allow them to develop applications more quickly and cheaply, not because Real Programmers suck. Let's look at the criticisms.

Undocumented: This one sticks, although perhaps Mel just never got around to writing documentation for the same reason he never got around to fixing the cheat bug. In any case, Real Programmers may not write many comments, but they do write external documentation, and often far more documentation than code.[1]

Unreliable, highly fragile: The story doesn't imply that the program was unreliable, and in fact the ending implies that the program was still working for some time after it was written, even though no one could really maintain it. Writing code that is tightly coupled to certain hardware features is not a good idea for most programmers these days who build on software APIs, usually at the top of a huge stack, and who want to be portable, but Mel didn't live in that kind of environment and wasn't aiming for portability. Even today, there are still places where code is written for known hardware and not on top of a stack of software that is going to be updated and patched and changed continually until the day it is no longer maintained (at which point, of course, it rots furiously).

Given the assumptions Mel was working under, he might very well have written code that lasted much longer, with zero maintenance, than most maintained code lasts. There are many advantages to portability and huge software stacks, but most programmers are so used to them that they have only the vaguest notions of the tradeoffs involved (it's not just performance).

Invalid: Ah yes, the hotshot programmer who thinks he knows better than the business people and refuses to implement perfectly good features because they go against his "principles", or "aesthetic sensibilities" wrt the code, or some such nonsense that has nothing to do with making the largest possible amount of money by doing something that Other People Want. Well, guilty as charged, but I am going to defend Mel on general principle here.

This part of the story resonates with some programmers because 1) like anyone else, programmers prefer to work on things that make the world a better place, or at least make themselves some money, as opposed to making scumbag upper management types 0.n% richer, especially if it is at society's expense, and 2) they hate the fact that they are seen as replaceable cogs in an IT machine that provides a messy but necessary service that any bunch of monkeys could do, and 3) if they are doing what any monkey could do, they are working on getting a job, or starting a company, where the technical envelope is being pushed to the point where it actually does matter how things are implemented, and where the problems are interesting enough that you can't grok the code just by skimming it, no matter how well it's written, because understanding it properly requires specialized knowledge that is not shared by every single programmer who's ever half-assed their way to a sheepskin, knows how to use Google, and hasn't burned out yet.

Encapsulation: Who says Mel didn't write well factored code? You can split things up by functionality in any language. Besides, Real Programmers write their own languages,[2] and the languages they write are designed from the ground up to provide more fine grained separation of functionality than you'll get in any managed bondage language that Melanie and all the rest of the programmers you can hire have been spending their careers becoming experts in.

Unit tests: Not going to say anything bad about unit tests, but they aren't a panacea or a guarantee that a program does everything it's supposed to do.

So, yeah. Times have changed. The standard stack is good enough for 99% of what you want to do now, as are the programmers that you can hire, and the costs of living outside of that ecosystem are high.[3] Still, there's something to be said for the other 1%, and I'll bet you there are still Mels out there kicking ass (not posting on HN), and I, for one, salute them.

[1] http://www.ultratechnology.com/forth2.htm (search for "documentation")

[2] http://www.gamasutra.com/view/feature/2985/postmortem_naught... (scroll down to the GOAL discussion)

[3] http://www.gamasutra.com/view/feature/2985/postmortem_naught... (right at the top)

17y agoHN ↗

I hope I never have to work with that guy. He sounds ghastly.

17y agoHN ↗

Mel was a requirements driven programmer that had the luxury of only having to write code for one platform at a time. None of his code as described sounds possible to abstract and maintain across platforms. I'm going to guess he evolved towards hardware engineering rather than software engineering.

17y agoHN ↗

Hey Mel, are you out there somewhere ? Are you here ?!