Hacker News new | past | comments | ask | show | jobs | submit login
Steve Klabnik Quits Job to Work on Hackety Hack (steveklabnik.com)
93 points by dmix on Nov 18, 2010 | hide | past | favorite | 29 comments



"Quits Job" is really misleading. Steve didn't work for Cisco or Apple. He was the technical side of a 2-man team which became the doll of AlphaLab and earned the respect (and money) of one of Pittsburgh's most admired angels.

Most of HN will see the net win for Hackety Hack, and that's fair enough, but I'm sorry he won't be on the front lines of CloudFab's campaign to disrupt rapid prototyping. I loved the wild-eyed way he talked about upending the industry, and he and cofounder Nick Pinkston formed exactly the mad-scientist-meets-cunning-business-guy pair you could see pulling it off. So while I know this move had to happen and I support his decision, I also think another (admittedly very different) cause will suffer for its loss of an important contributor/activist.


Hackety Hack is a perfect example of what's wrong with the Ruby community. Yes, I know Hackety was created by _why, and everyone here loves _why, and the goal of teaching children to program is undeniably laudable, but that doesn't change the fact that this is not the right way to go about it.

The Ruby community is both ahistorical and insular. Most Ruby programmers came to Ruby from Java, PHP or some other mainstream language and have an uninformed opinion about Ruby's merit as a language and its place in the wider world of programming languages. The proof of this is their tendency to excessively tout features that Ruby borrowed from Lisp, Smalltalk and Perl, often with an implication that these features are unique or somehow special to Ruby when they have sometimes existed in other languages for decades (e.g., blocks, metaprogramming or flexible, TIMTOWTDI syntax) and often in a better form. (Compare Smalltalk's blocks, which are always real objects, to Ruby's, which need to be converted into Procs if you wish to treat them like objects).

The main issue I have with Hackety Hack is the existence of a mature, Smalltalk-based alternative named Squeak. Smalltalk is a much, much simpler language than Ruby and has a history of being used to tech children programming dating back to the 1970s. Squeak also has Scratch, EToys and Morphic. What exactly does Ruby bring to the table, other than nicer looking websites, bigger egos and curly braces? Would it kill Rubyists to learn a little bit about the languages that influenced Ruby and other non-mainstream or academic languages, to at see what they might be missing out on?


I can't say much about the broader Ruby community, but I personally am really interested in languages, and have made it a point to be as much of a polyglot as possible.

While I understand what you're trying to say, here's my perspective: even though many parts of Ruby have come from other languages, it's about the tradeoffs that were made. Blocks are actually a great example: what matz did was realize that often, you're only passing one anonymous function to another, and so he added special syntax to make it nicer. Procs aren't some conversion tool to upgrade blocks, Procs are the general case, and blocks are just a special one. That said, I can't remember the last time I actually needed to type Proc.new. With that said, you may disagree, but you can see where I'm getting at. Just because something did it _first_ doesn't mean they did it best. But that really comes down to taste, right?

> The main issue I have with Hackety Hack is the existence of a mature, Smalltalk-based alternative named Squeak.

The main issue I have with Squeak is that it's Smalltalk. ;) Smalltalk is a fine language, but I can't get into the whole image thing. I really have nothing new to add to this; my arguments are old and tired.

> What exactly does Ruby bring to the table, other than nicer looking websites, bigger egos and curly braces?

While we're on this whole "educate others about language features" kick, Rubyists almost never use curly braces. One-line blocks are the only time. ;)

> Squeak also has Scratch, EToys and Morphic.

What Ruby brings to the table is being an actual programming language, rather than a bunch of blocks you put together. I don't mean to demean Scratch, it's done a lot of good, and is a great project in its own way. However, I don't think that 'teaching programming' is a zero-sum, winner take all market. Hackety and Scratch can coexist just fine.


"Blocks are actually a great example: what matz did was realize that often, you're only passing one anonymous function to another, and so he added special syntax to make it nicer."

This argument, that you almost never need to pass in more than one block to a method, is true, only because Ruby doesn't as elegantly support the alternative. If it did, then you'd probably have plenty of multiblock methods like do:separatedBy: as you do in Smalltalk.

"With that said, you may disagree, but you can see where I'm getting at. Just because something did it _first_ doesn't mean they did it best."

So Smalltalk's blocks, which are versatile enough to be the basis for the language's control structures, are inferior to the block, proc, lambda trifecta of Ruby? Are you seriously telling me that you wouldn't prefer Ruby just have procs (real objects) with the block syntactic sugar and maybe also lamdbas, for their different return behavior?

"Smalltalk is a fine language, but I can't get into the whole image thing."

I used to feel the same way, but that was because I didn't understand the image. To me it was some digital blob with code and program state in it; I was always scared of breaking it or losing code. Then I learned how to actually use it, thanks to Squeak/Pharo by Example. Now I wouldn't have it any other way.

"While we're on this whole "educate others about language features" kick, Rubyists almost never use curly braces. One-line blocks are the only time. ;)"

Ruby is a curly brace language even if Rubyists opt not to use them; syntactically it belongs to the C family of languages, which are the "curly brace" languages.


We're just going to have to agree to disagree over preferences here. Enjoy Smalltalk, it's great.


Seriously, all of that just to argue over which language is better? There are many languages that would be good for teaching, and Ruby is just fine for that. I don't really understand why do you blame the Ruby community for willing to teach their favorite language?


"There are many languages that would be good for teaching, and Ruby is just fine for that."

What makes Ruby great for teaching, particularly for teaching children?


It's relatively easy to read and doesn't punish you with too many horrible compile errors; kids get impatient with semi colons very quickly.

It generally does what it says it does, particularly when you're just starting and not touching on any of the more advanced features.

It's a real language and you can point to a lot of apps using it and people who've made lots of money doing so. Kids are smart enough to get irritated if you just hand them something that isn't a real thing. My little cousin is mercenary enough that the mention of this being used in a large number of new things that made lots of money was really exciting to him.

They can move onto building an interactive website relatively soon. Lots of the PHP kids learned PHP because of general coolness of doing a website they could share with their friends that was a little bit interactive. Hopefully you agree that Ruby is a better language than PHP.

There seems to be a proportionally higher number of people in the Ruby community who are into helping kids learn to program.


"It's relatively easy to read"

Not as readable as Smalltalk.

"...and doesn't punish you with too many horrible compile errors"

Yes, it absolutely does. In fact, Ruby is probably the most syntactically complicated language after Perl and C++. Smalltalk has six reserved words and its syntax fits on an index card.

"It's a real language and you can point to a lot of apps using it and people who've made lots of money doing so. Kids are smart enough to get irritated if you just hand them something that isn't a real thing. My little cousin is mercenary enough that the mention of this being used in a large number of new things that made lots of money was really exciting to him."

Smalltalk is a "real thing" and has been used professionally for years in the financial sector and recently has experienced a bit of Renaissance in web apps, and even found use in a YCombinator startup (Auctomatic). Granted, the community isn't as big as Ruby's, but it is quite healthy and continues to grow.

"There seems to be a proportionally higher number of people in the Ruby community who are into helping kids learn to program."

No, there aren't. Squeak _started_ as an educational project, and the Smalltalk community still has a heavy educational bent to it.


OK, we get it. You're a Smalltalk fan and you believe it's the best language for teaching. I don't disagree, and certainly I'm not going to stop you if you decide to teach people Smalltalk.

But why do you have to undermine efforts by others who do valuable work, but using a different language? There's nothing constructive about that.


Because Smalltalk is superior, and Rubyists are ignorant of its superiority, and that ignorance results in inferior reinvention of already-existing wheels.


You do know that many prominent Rubyists were doing work in Smalltalk way back when, right? For example, here's Uncle Bob talking about the two: http://en.oreilly.com/rails2009/public/schedule/detail/8482

You may dispute his opinion, and that's fine. But Ruby's lineage descends directly from Smalltalk, so regardless of preference, I think it's unfair to suggest that all Rubyists are totally ignorant of Smalltalk.


Robert Martin, to my knowledge, was never a Smalltalker, and received an enormous amount of flack in the Smalltalk community for making a lot negative, uninformed statements about Smalltalk at that conference. Uncle Bob started, by his own admission, as a Cobol programmer and later transitioned into C++ and Java, where he did the bulk of his work in OO consulting and authoring. He only started to branch out into more "exotic" languages a few years ago.


My bad. When I first watched that video, I thought I specifically remembered Martin talking about the community in an inclusive way. So he's a bad example.

Regardless, I still stand by the original point: I wouldn't make such sweeping generalizations about the ignorance of an entire community of people.


hackety hack is different from etoys & scratch.

By following your point scratch should have not been created because etoys existed. Or etoys, since morphic existed.

Oh wait: and hackety hack is at least a couple of years older than scratch, according to wikipedia.


Steve, like many here, is one of those people who seems to be good at whatever he tries. So he finds himself caught between the worlds of science and humanities. No big surprise in a kingdom of hackers and painters.

Having met Steve both here and IRL, I have little doubt he'll be successful.

Best wishes, Steve, and keep us posted. I'm sure many of us here in similar situations are looking forward to learning something from your journey.


I have a double-major in Computer Science and Latin, and the history/rhetoric/linguistics that you learn from studying humanities is mind-opening. (Paul Graham compared Latin and Lisp in this way.)

And if you manage to do a literary analysis with NTLK or something, combining the two, your professors will realize that that's pretty cool.


Godspeed. Get out there and teach some kids how to care about something other than Call of Grand Theft Warcraft.


I love HN. I am learning Python right now but trudging through phonebooks of manuals isn't exactly the most fun I've ever had. This looks like a completely different approach and I never would have known about it if not for HN. Thanks to YC for this fantastic resource.


Thanks daimyoyo. If you're learning Python, have you checked out Zed Shaw's http://learnpythonthehardway.org/ ? It's a solid resource for people with no prior programming experience.

That said... please feel free to get a hold of me with any thoughts, criticisms, problems, or praise with Hackety. There's a reason it's not 1.0 yet, and feedback is the only way I can make it better.


Good luck!

This is a momentous leap, but Hackety Hack is an amazing project, and totally worth it.


Thanks. I think so too. There's a lot of things I want to do with it... but one foot in front of the other!


"Do what you love and the money will follow" -my Mom

Best of luck Steve. Props to you for living the life you want to lead. Now that's a great way to inspire children in and of itself.


Thanks. Your mom isn't my mom, is she? ;) Sounds familiar.


Sweet! Steve: will we see a major rewrite of Hackety Hack now that you have all day to think about it?


First of all, I don't quite have all day: I'm still doing some other stuff to make rent. But more of the day. :)

As for a re-write, Hackety (for the most part) is actually in a really good place. It's already undergone one huge reorganization in the last few months, I don't see it as being time for another yet. Most of the work it needs now is polish.

That said, there is something that's undergoing a total re-write, and has been taking up more of my time: Shoes. Shoes is part of Hackety, as far as I'm concerned, and so I've been putting a lot of effort into it as well. But if you haven't heard about that... you will soon. Lots of good things coming there, and making Shoes better makes Hackety better by association.


Sounds awesome. Looking forward to the upgrades.

[If you're planning on a web-based version of shoes and want feedback, I'd love to help however I can. My e-mail is in my profile.]


so weird that hackety continues without _why, considering it is such an obvious outpouring of _why's brain.


I think it's his most important work. I really identify with the Little Coder's Predicament: I was that exact kid, playing around with BASIC when I was 7, making little games. I wouldn't be here if it wasn't for that.




Consider applying for YC's W25 batch! Applications are open till Nov 12.

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

Search: