Steve Klabnik Quits Job to Work on Hackety Hack
blog.steveklabnik.com
blog.steveklabnik.com
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.
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?
What makes Ruby great for teaching, particularly for teaching children?
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.
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.
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.
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.
Regardless, I still stand by the original point: I wouldn't make such sweeping generalizations about the ignorance of an entire community of people.
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.
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.
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.
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.
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.
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.
This is a momentous leap, but Hackety Hack is an amazing project, and totally worth it.
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.
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.
[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.]