Nearly 100 upvotes for a page that fails its stated goal and which spends 100's of lines to do something you could do with one system call (sys_write) and a string constant?
The stated goal is not the real point. The real point is to learn about how programs are executed on real systems. Unfortunately, the second half which would (hopefully) have completed the example does not exist.
What you linked to is great, but it uses a different approach to explain the subject. That approach presents the correct thing to do, and explains some of it. The benefit of this approach is that it's short and sweet, but the downside is it's easy to miss subtle points. For example, what you linked to never explains why you have to call sys_exit. Someone reading this would know that's the right thing to do, but they may never really understand why that's so.
An alternative approach - which the posted article does - is to try the obvious but wrong thing, then explain why it fails. Fix that problem, and try the next obvious but wrong thing and keep iterating. The problem with this approach it can be a long process, particularly if you just want to know how to do something and are less interested in the why. But the benefit is that by seeing how things fail, and then seeing the fix for them, the reader can gain a deeper understanding of what's going on.
In general terms, one is more of a reference, and the other is more of a lesson. I like the try, fail, fix iteration for explaining things. I've used it many times when teaching. I find that it matches well with what we would actually do on our own, and for that reason, tends to stick with people better than simply saying "this is how to do it."
I'd be more inclined to sympathize if it had actually worked. As it stands it is a perfect example of how little knowledge of what goes on under the hood is present with the current generation of programmers. That's sad, because even if you never use that knowledge in your 'day job' I think that such knowledge does make you a better programmer.
If you write a blog post about something like this at least finish the damn thing rather than to leave a bunch of obviously wrong snippets laying around to confuse whoever lands on that page.
There are plenty of good pages on introductory assembler on the web, this isn't one of those and I'm really surprised to see it this high on the homepage. Maybe it shows how much the HN crowd would like to get a little bit of insight of what actually powers their computers, the error is mine in assuming that such knowledge would be commonplace here.
I upvoted it because if the reader reads through it, they will leave with more understanding of the system stack than they started with. As someone who has been deeply involved with teaching a systems class, that's near-and-dear to my heart. I think it succeeds in that goal. I'm far less concerned that it doesn't actually emit "hello, world".
That it fails at being an introduction to assembly is, I think, missing the point. It doesn't try to be. It's just trying to demystify some of the system stack.
As for HN itself, I've known for a while now that there's a pretty wide range of people here. While I think the percentage of people will almost no systems experience is more than it was a few years ago, the number wasn't zero a few years ago, either.
You're right about the current generation of programmers, but there might be more to it than "kids are lazy these days". Those programmers don't know much about system programming and assembly but they know about Java/C#, Python/Ruby/Perl/PHP, JavaScript, CSS, Unix command line tools, Windows, maybe a GUI toolkit or two, etc. The software world has been building layers of abstractions over the years to accelerate development of richer applications and it's just natural that we find more people working at higher level of abstractions today than before.
http://asm.sourceforge.net/intro/hello.html