Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Ah, you youngsters. Trust me, it is FAR easier now to get started than any time in computing history. Before GitHub, you installed SVN or CVS on your own. Before that you accidentally overwrote your software once a month. Before Cloudant you installed MySQL on your own. Before that you wrote your own storage system. Before Amazon you bought a server and installed Linux on it. Before that you wrote customer databases using an Apple II with 48KB of memory and floppy drives with 120KB of space. Before even my time, programmers used the spin rate of storage drums to calculate where to place blocks of data so they could be read as fast as possible (hint: sequential block placement was not optimal). No whining - you've got it good. Go do great things.


I love this perspective. I think part of the problem is so many of us are stuck doing stuff that is far too damn complicated to be fun to build or fun to use. If you're burning out on hard stuff, do something easy for a change that puts a smile on someone's face. If you don't think you can make a cynical, stressed-out adult smile, make something that puts a smile on a kid's face - that's easy, and it's a way to remember the joy of building fun and creative things.

When I was a kid I loved computers and I saved my paper route money and bought Borland C++ and tried to learn C++ from the manual. I failed utterly and I had no one to teach me. Now kids can learn easier languages that do cooler things on cooler hardware and they have the Internet to learn from.

Great things are possible and computing has made great leaps forward. Enjoy it!


I have the luxury of a corporate job that allows me to create software applications for internal users that are much better than what they were using before - so much better that their daily enjoyment of their jobs is significantly improved. (And that says a lot more about how bad their old tools are than it says about how awesome a programmer I am.)

As challenging and frustrating as it can sometimes be for me to get the application stack working, it's nothing compared to the aggravation and sheer misery I'm eliminating from my users' workflow.

One group sits close enough to me that I can actually hear the reduction in swearing each time I replace a shitty old tool they have to use with something that was actually designed with their needs in mind. That's a pretty nice feeling.


Totally agree, I still remember the pain I had almost a decade ago install something as simple as a Borland C++ IDE. What a nightmare that was for a newb like me, zero resources online to dig through. Today, you want setup and IDE or get iPad development going? There are TON's of resources with thousands of examples. Hitting an error when setting it up? Copy, paste that error into Google. 9.9 times out of 10 you get someone who hit that error before and has already solved it.

I'm just not buying into this "oh, life is so hard to set stuff up nowadays" routine...


I don't think the point of the article is to say "oh, life is so hard to set stuff up nowadays".

Rather, the point is that it is easier and more pragmatic to rush ahead with an imperfect technology stack and achieve great things than it is to spend the time and effort to reach "a better place".

I love how far technology has come, I love writing iOS software and appreciate the resources at my fingertips via Google. However I have a similar range of experience as the article's author, and I completely agree that while great things are being done with technology as it is today, it's very sad that we have limited ourselves to only reach where we are now rather than where we may have been.


Dude, I would get Borland any day of the week instead of Apple. Just hit F1 if you are not sure what command does.


"Go do great things".

I'm with you.

Go build a new computer architecture, Zachary Morris. It seems you have the knowledge and the support. Put it on kickstarter and I'll give you money. Godspeed.


A new architecture isn't going to happen until it has to, which fortunately may be soon. The best opportunity for that is if and when we start building parallel microprocessors based on one of the newer transistor replacements, but engineers need to agree that compatibility with x86 isn't important, first.


Youngster? Gee, thanks! I remember writing my first program on a Commodore Pet with 4K of RAM. Used peek and poke statements to draw the game field on the screen and loaded and saved the whole thing on a cassette tape.

The problem here is that you can argue this either way, so let me clarify. When we do systems analysis, we first focus on "happy path" scenarios. You want something, there's no exceptions, you push a big red button and it shows up. Life is good.

For those kinds of behaviors, say provisioning an entire linux stack on AWS, things are rocking. Want to code? Type in a couple apt-gets and you are on your way. There is a huge section of happy path scenarios where things are truly much better than before -- easily enough that many startups can totally stay on the happy path and do awesomely. (And that's exactly what they should do.)

But, alas, because of the dozens of layers of abstractions, and dozens more API, tooling, and hardware configurations, if you are doing anything technically difficult you can easily leave the happy path and get lost in the woods. It's very easy to get into a situation where you are using a combination of a dozen things in such a way as to be almost unique. Yes, each thing is awesome and easy to use, but the scenario you find yourself in is not. It's not called "sad path" A better name for it would be "terrible path of shame and destruction" Ever work inside a problem where you're dealing with multiple edge cases in several layers of complex system that has parts that are inscrutable? Ouch. I've plowed through complex and poorly-written C++ frameworks line-by-line and it's not as bad as that.

The author spun out one such scenario for writing iPad apps, but you could find a hundred of these cases easily. Boards are full of guys asking questions about combining A, B, C, D, E, F, and G into a situation where they are having problems, and responses are usually along the lines of "Hey, I know A, C, F, and G, and here's what worked." Sometimes that's helpful. Sometimes not.

I'm fairly new to linux, although I'm an old .NET/Win32/C++/COM hound. About a year ago, I thought about writing a mono app in F# to do functional reactive programming for the web as a side project. Basically Node. After poking around for a few days, I finally gave up. As far as I could tell, I couldn't find an entry point into a mono app such that I could load the app and hold it in memory, then re-enter from Apache (It probably could be done directly from the command line, but I didn't want to give up Apache) I wanted the speed associated with re-entrency.

Now perhaps somebody will reply and tell me the magic formula to make all of that happen. If so, awesome. But it was just too much bullshit. Finding stuff on Apache? Easy. Setting up a linux box? No problem. Loading up mono? Piece of cake. Getting F# up? A bit of a hassle, but I worked it out. Tying it all together in that unique combination in a configuration not commonly used? A very painful thing. I'm not saying it was impossible. I freely admit being a wus and giving up. But this kind of frustration is all too common any more.

Another example. I help teams a lot. Many teams I help are starting out on their project in a greenfield environment -- it's a new project and everybody is starting fresh. It's not unusual for them to spend a week just getting their environment set up. Now here's the deal: yes, you and I could cherry pick tools and such so that we could set them up in an hour or two, but many times the organizations they are part of have already made these choices for them. So no, it's not git. And no, it's not a plain-vanilla IDE. And so on. I really feel for these guys.

So sure, you can show all kinds of examples where things are a lot easier now than before, and I completely agree. But many folks do not live in that world.


But many folks do not live in that world.

I would venture that anyone who works in a large corporation is not in this world. Which is a loss; large established corporations have some of the most interesting problem spaces...


Luxury! In my time, my father would wake me up by cutting me in half, then I'd have to walk forty miles uphill through a blizzard to get to my computer and then I'd have to electrocute myself to turn it on and I'd interface with it using an abacus and punch cards!


(Off-topic, but if you want to rejuvenate the F#-as-node.js thing, look into FastCGI. It's still a bag of hurt, though - notably, mod_fcgi feels proof-of-concept-y and will not multiplex requests over a single connection. Other HTTP servers apparently do better.)


I got as far as mod_fcgi, but I couldn't figure out how to write a mono program to integrate with it. Found some nice C examples, but nothing for mono. I still think it would be a hell of a great side project -- lots of power and expressiveness in F# that JS doesn't have.


I assume you're aware of http://www.mono-project.com/FastCGI? I suppose you could just implement the FastCGI spec yourself, it's a bit fiddly but not that complicated.

Of course, this assumes you have plenty of time to spend on such projects. ;-)


Youngster? Gee, thanks! I remember writing my first program on a Commodore Pet with 4K of RAM

That thing he's talking about with non-sequential placement of bytes on the drum is well before that.


He said "Before even my time" for the drums bit.


And it was blocks not bytes.


Well, but everyone's read "The Story of Mel" :)


> I remember writing my first program on a Commodore Pet with 4K of RAM.

4K? Luxury! I started with 1K and that included the screen memory!




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: