37signals and Divergent Reality 2
I was just reading about In/Out, 37signals’ internal Twitter clone over on their blog and it struck me how they sometimes mutilate context in their writings. First of all, DHH knows the Twitter guys well. Second of all, they didn’t even mention that it was inspired by Twitter and even went so far as to refute this in the comments. I guess a place that’s know for its “creativity” has to keep up the appearances of being innovative…
UPDATE: Apparently, as the comments state, I am wrong about this. My bad. Nevermind this post.
Is AppEngine Python's Rails? 4
I was thinking about AppEngine some more today and it occurred to me that not only could AppEngine be responsible for a lot of people learning/using Python, but it very well might be Python’s answer to Rails. Its so-called “killer app”, if you will.
Up until this point, Python has been plagued with multiple, competing Web frameworks all taking some mindshare and there really hasn’t been a strong rallying point in the Python Web community like Rails. It appears that Django has been winning out in the blogosphere lately, but its nothing like Rails’ devout following in Ruby-land.
However, with AppEngine, Google does Rails one better: instead of just making it easy to code your app, they make it just as easy as Rails to code and dirt simple to deploy and reduce the operation maintenance to near zero. The need for things like ActiveRecord and migrations is pretty reduced in the AppEngine environment, as is all but a tiny knowledge of SQL (called GQL in that realm). That’s really, really attractive if you’re a Web consultancy shop that’s looking to turn over clients as fast as possible or a side project with a mandate for speed, quality and low cost. To me, that seems like it would be worth learning a little Python for.
AppEngine is pretty clearly aimed at Facebook’s F8 platform but it could end up hitting Python with a major boost in popularity as an aside. I bet Guido is smiling all the way to the bank on this one…
Twitter and me 1
I’ve been using Twitter for some time now and I post to Twitter orders of magnitude more than I post to this blog. With my blog, I don’t feel like I should post something unless I have something interesting or funny to say that others would like to spend some time reading. However, Twitter makes it easy to just post whatever I’m doing or thinking at any random time, reply to other’s conversations, keep up on what’s going on with friends, etc.
I really like the Twitter model, too, in that there are some very interesting constraints:
- messages are 140 characters or less
- Twitter auto-shortens links with tinyurl
- no embedded audio/video (I’m looking at you, Pownce)
- very simple network model (follow and be followed)
Twitter’s been the whipping post of the Internet for the past year because they had some well-known scaling issues and this was incorrectly blamed on their underlying Web framework, Ruby on Rails. Twitter’s got some things going for it as far as an interesting example of scaling, though, in that the model is so simple. I’ve been playing around in my mind with designing a Twitter clone in Erlang or Stackless with no RDBMS just as a mental exercise. More on that if it ever becomes concrete-er-ish.
In any case, my blog isn’t going to die for a while but if you really want to keep up with every little thing with me you should follow me on Twitter ;-)
NYC.rb Hackfest
I went up to Manhattan last night to attend the monthly NYC.rb Hackfest and it was pretty awesome! Lots of great people and conversation was had. I highly recommend checking it out if you get a chance to head up there.
Running on Thin 1
After moving all my sites to Slicehost, I figured I could also now experiment with the backend of this blog, too. So, instead of a Mongrel-backed Rails app, I am backing Typo up with the Thin webserver. Thin is supposed to be faster and more concurrent than Mongrel in any case, even the evented Mongrel from Swiftcore. Here’s hoping things go well!
Welcome to the Jungle, 2008
Happy New Year, everybody!
As the new year rolls around, I find it to be an introspective moment this time around. Normally, I’m not into the New Years resolutions and all that jazz. However, late in 2007 some crazy stuff went down that forced me to rethink my methods of dealing with people. I’m going to have to work on that this year and get a better grip on my interactions.
Right after that unfolded, Zed Shaw posted one of his infamous rants , this time regarding the Rails community and his status therein. I had read it and a number of people had also independently sent it to me, as well. I thought about this article a lot over the past few days, mostly because of the coincident timing with my own realizations regarding social interactions. While I found this article viscerally funny in places, I find it to be a tragedy overall.
Zed’s rant is essentially a view into his dealings with others since he got into Ruby (and then Rails). Up until he updated it yesterday, it was a pretty poor representation of self-awareness and introspective ability. Now, he partially reflects that his situation is of his own making and he’s to be credited for that. But the vitriol in this post can’t easily be wiped away by a correction and he’s burned some bridges forever with his rant. As someone who’s been known to wield the flamethrower over the rope bridge with glee in the past, I can say with surety that this always comes back to bite you in the ass. Also, his original statements still stand and needlessly hurt and incite anger towards people who essentially disagree(d) with Zed.
Then, the updated post goes on to amend the post with some semblances of self-awareness but is almost comically conflicting in places. He goes on to trash ThoughtWorks and then recommend their software. Huh? But then the update drops back into the original vitriol and just sinks any valid points that Zed has into a sea of raw emotion that makes it very hard for a reader to stay focused on the facts and happenings of the situations he outlines.
Personally, I just wish Zed would have maybe just put this in a drawer after he wrote it like Abe Lincoln used to do. There are many graceful ways in which one can back out of a community and I for one would like to have seen a clearly-talented Zed Shaw choose one of them. Given what he did, I can’t see ever hiring this guy: imagine what he might say or do if I ever disagreed with him?
"Sometimes you need more than one programming language"
Someone had said the above statement to me today and it stuck in my mind for some reason. I was thinking about it tonight and something occurred to me.
I’ve heard a bunch of variations on this statement before today as I’m sure we all have. Often, when I hear this statement its coming from people who would like to be able (or allowed) to use Ruby in their work projects. These places are invariably ones in which Java is the primary language and any others are either frowned upon or outright barred. The management at these places, either technical or not, typically characterize this decision as smart given the large market for engineers that know Java, the availability of quality libraries for many purposes and the inherent generality of the language. All of these are certainly true and are pretty good business reasons to use Java.
These arguments ignore the ease of use of Ruby and the speed of development one can achieve with it. They are also a form of premature optimization, as well, although in this case of business interests, not source code. Most of these shops are doing 3-tier Web applications and, as such, they are missing out if they skip over Rails because it doesn’t run on Java. (it does, but whatever)
However, it was the statement that really hit. People saying that are indicating that different languages have different strengths. Even though Java now has regular expression capabilities, you’d still want to use Perl or Ruby for a big text processing job given how many built-in facilities those languages have for that task. You’d want to use Erlang for very-long-lived server applications over Java because it was tailor-made for that purpose and Java was not. All of these points lend themselves towards a heterogeneous language environment, using a language for what its good for and not for what its not.
I wonder, though: when people tell me this, they are usually rationalizing the use of Ruby with this statement. Not “rationalizing” in that they shouldn’t be using Ruby, but rather they are seeking to get leverage for Ruby so that it might one day be in the position that Java is now. I can certainly sympathize with this; Ruby is a sweet language. Alas, you can’t get there from here today, though. The main Ruby interpreter has major problems with memory and stability and its successors are still in their nascent stages. The runtime situation is just not that good so you can’t drop Java for everything yet if you need speed/low-memory in places.
How many of the people who have said this, though, would then reverse their position and advocate for Ruby being the only language for “maintainability” or “ease of introduction to the junior guys” reasons once a strong Ruby VM was available? And how many people said the same thing in reference to Java when C and C++ were king? It seems to me that these language trends are cyclical. The new hotness challenges the old-and-busted and eventually wins, only to become the new old-and-busted.
The irony here is that the statement is true in an absolute sense. One should use languages for the things they are good for and find different ones for things they are not. To not do so is to arbitrarily shorten not only your toolset but your very range of thought. (big up, Sapir-Whorf) Attempting to use one language for all your programming needs leads to ridiculous situations like the Kingdom of Nouns phenomenon. The other strangeness with this statement is that the people who say it generally never mention the really out-there languages like Lisp, Ocaml, Prolog or Smalltalk that are orders of magnitude better at certain things than more mainstream languages. Personally, I just hope people remember the irony when 10 years have passed and all new development at JPMorgan is in Ruby running on a Gemstone derived VM.
Upgraded to Typo 4.1.1
Its about time! I’ve upgraded the blog to Typo 4.1.1 . I also have a new RSS feed for this blog here . If you are subbed right now, you should switch to this new feed URL as I will be turning off the old one after a while.
I was previously running on 2.6.0 since the inception of this blog and I was just lazy in getting around to upgrading. Of course, I just spent the last hour tweaking things and changing themes and marking comments and trackbacks as ham/spam, but hey… what are Sundays for? Hope you all enjoy the new digs. Here’s hoping that Dreamhost’s FastCGI will somehow be improved by this upgrade ;)
RubyConf 2007 1
I just got back from RubyConf 2007 tonight and it was awesome! The conference was a well-oiled machine with superb content and attendees. My only beef, and this is small, is that the hotel Wifi was a bit weak, but that’s to be expected.
Confreaks video-taped the whole conference, including RejectConf and they said the video will be available for streaming and download sometime next week. Their videos are awesome so you should definitely check them out.
The level of conversation in the hallways and taverns was just unreal. There were so many smart people there working on really great stuff that I didn’t know who to talk to next!
Evan’s keynote was probably the best talk of the conference for me, but I’m a bit biased towards Rubinius, given my previous issues with the MRI as it stands today . Francis Hwang’s talk was the most intriguing and made me think the most. Ryan Davis’s talk was packed and really entertaining. I missed Laurent’s talk but it was similarly packed and people said it was hyper-cool. Eric’s talk was really awesome, too, as he was giving us all his tips about how to stay productive: coming from a guy with 40+ open source projects under his belt, that’s definitely good info.
Some highlights for me, in no particular order:
- Got to meet Tim Bray and he’s just as sharp as I though, if not sharper
- Met some of the Twitter guys and they are really, really cool, down-to-earth dudes
- I finally got to meet Matz in person and I used the opportunity to interrogate him on the state of Ruby’s GC
- Ryan Davis and Francis Hwang gave me some really good tips on testing and I am very grateful for that
- Had a couple really good conversations with Evan Phoenix ; man
- He’s one smart-ass cookie and a great showman, too
- Hung out with a bunch of really smart and interesting Rubyists, including Obie Fernandez and Steven Bristol
- Talked to Ezra a bunch about Merb and Engine Yard and got to meet Yehuda Katz
- Played in a video-taped Werewolf game with some of the best Rubyists in the world (who shall remain nameless at this time because the game became… uh, lets say “controversial”)
There wasn’t a lot of Rails-related stuff there (which was good) and the people who were there were really into Ruby, not just Rails. DHH didn’t even show up so the noise level was low.
I’m definitely going to be going to RubyConf 2008. Thanks to Rich, David and Chad for an awesome conference!
Project Euler 1
My friend Kyle recently turned me on to Project Euler. The site is a forum and list of problems and is a great way to get you into some math and numerics hacking examples. The problems are supposedly all solvable by a reasonably-powered computer in about a minute but there’s no proviso for you being able to code up the solution to them in that short a time :) You don’t get to see the forum for a particular problem until you’ve submitted the right answer to that problem, though, so it encourages you to work out at least a brute force solution before seeing what others did.
I’m pretty surprised at how many people chose “Assembler” as their preferred language. Me, I’m not that hardcore: I’m posting my problem solutions in Ruby as I finish each problem.