Git Ur Radiant Extensions
I published a new Radiant extension yesterday: Database Form. It provides a new page type and tags for constructing contact and request info forms and will save user responses to a database table. Those responses can then be exported for use in another application (CRM, etc). See the README for usage and examples. It was extracted from some client work that we'll be deploying soon.
If this sounds good, you can download or clone it from GitHub. While you're there, spend a few minutes poking around; GitHub is pretty dang cool. They've definitely succeeded in making Git repository hosting stupid simple. Just click a button to create a project, follow a few commands on your local system to import your sources, and you're off and running. You can then view the repo history, browse the source, see diffs, download a tarball (for easy extension installation in your pre-existing Radiant project), and fork it if you want to add your own features. That's where things get sweet, of course: Fork the project, make some changes, and send me a pull request so we can merge them into the master branch. All this is possible without GitHub, but it sure does a swell job of streamlining things and abstracting the suck away.
It also exposes the links between developers and their project contributions in a pretty cool way. See the DataMapper project's "network" page to see what I'm talking about. Ryan Tomayko has pointed out that this sort of interaction starts to smell an awful lot like a MySpace for developers, where lines in the social graph are drawn based on OSS project work. Wow, that's a cool thought, ain't it?
OpenID + Client Certs = Win
I'm a big fan of OpenID. Or rather, I'm a big fan of what OpenID and data portability mean for the web at large in the coming white days. Single sign on and distributed identity is certainly an idea that's been long overlooked and it's time that we changed that. The next time you write a web application, ask yourself: "do my users really need yet another set of login credentials?". Then implement OpenID. It's really simple, especially in Rails. I gave a presentation on it at NHRuby last month (download PDF).
So, as gah-gah as I am over single sign on for ease of use, I'm a embarrassed to note that, like almost everyone else, I've completely overlooked client certificates for web-based authentication. By using client certificates you one-up single sign on by removing the need to use a login/password at all. This isn't new; it's something that's been available in every web browser for pretty much as long as anyone can remember. And yet I've never, ever seen a site that supports them for an authentication mechanism. Sad faces abound.
But wait! OpenID to the rescue! It turns out that MyOpenID (and a host of other OpenID providers) DO make use of them. So if you create a client certificate with your OpenID provider, you can eliminate the need to use a login/pass with any OpenID client sites. Cheers to Dr Nic Williams for digging this up. Sometimes old (and ignored) is the new new. Rock on.
More details at Dr Nic's blog.
Constraint-Driven Development++
There was a nice writeup on ReadWriteWeb yesterday about Montreal's upcoming Blitzweekend event. Like the Rails Rumble that we organized last September, Blitzweekend is another attempt to give people a "weekend to build a functioning startup from scratch". Unlike the Rumble, it isn't a competition, and it places added value on physical proximity.
Josh Catone (of ReadWriteWeb and also RailsForum) dubs this sort of thing "organized ultra-rapid development" and notes that, against all odds, this strange weekend-startup phenomenon seems to be trending up. This is really just constraint-based development taken to the next level, and the reason it's exciting is simple: it pushes you to deliver results, immediately.
Results, of course, are what makes application development exciting; seeing a movie get automatically reencoded after upload, a search query produce a number of restaurants in my area, plotted on a map, a transaction get authorized and recorded by the third party API you're using. And later, seeing your end to end workflow in place and your first user signup. When we see results, we get motivated to work harder in order to see even more impressive results. When we don't see results, we get depressed, we step back, we overthink. Our motivation falters.
Events and contests like Blitzweekend help give developer-entrepreneurs that extra motivation kick that they often need to get over the motivation speedbump, and an opportunity to gather a team together and just go for it. If you haven't tried it, you really should. In the process you'll find out if you can work with your team in the long haul, write some (hopefully) great code, and figure out whether or not the idea has legs to stand on. If it does, you'll have visible proof of this and will probably be more jazzed than ever to continue working on it. If it doesn't, you won't have to spend any more time wondering "what if". All in 2-3 days.
(It's important to have realistic expectations of course. Are you going to be able to build the next Flickr in 48 hours? Or the next Facebook? Nope. But you sure can get a nice first iteration out there and working. Every application has to start somewhere, and if the first iteration of your idea isn't ugly and lacking important features, then there's a good chance it took you too long. Short iterations can pack a lot of result-fu ninja punch.)
Anyway, I've rambled on for a bit and I'm sorry. We'll do another Rumble, or something like it, later this year. For sure. But the reason I'm writing is this: You don't have to wait.
That is, you don't need an actual event to prove that this brand of ultra-mega CDD works.
Take the last 3-4 days of this month, of next month, of whenever. If you're a freelancer, just tell clients you're unavailable during those days. Get 3 other people to do the same thing. Agree on an idea, flesh out the basics. And just do it, Nike-style.
I'm seriously thinking about doing just this, starting at the end of February, maybe at the end of each month. Anybody wanna be on my team?
Links for 12.17.07
- Evan Williams writes about how to evaluate a new product idea
- Giston -- a piston lookalike for git
- Gitosis -- host and manage a git repo, with access control, easily/safely...
- RSpec 1.1 is Released -- with support for Rails 2.0.1+ and the new RSpec story runner (!)
- Rails 2.0.2 is Released -- includes sqlite3 as the new default database and an important fix for RubyGems 0.9.5
- Merb 0.4.2 is Released -- performance enhancements, etc.
To REST Or Not To REST...
Assaf Arkin is right, and I stand corrected. SimpleDB ain’t RESTful. Hell, it’s not really even GETSful. But it sure sounds nice when they put it in the marketing literature. Sigh.
From Subbu’s blog: “The technology powering SimpleDB is definitely impressive [..] However, as a REST API, it is a disappointment. The API failed (a) to identify resources, and (b) to specify operations on resources in a RESTful way. It uses a single verb GET to create, delete, update, or get data from the store.”
In any case, Assaf whipped up DeHorrible, a Rails proxy that appropriately RESTifies (GETStifies) SimpleDB. lol.
I’m still psyched about the SimpleDB announcement, and looking forward to trying it out, but I really wish Amazon would clean up their supposedly RESTful APIs. Yes, I’m looking at you, Flexible Payments.
Is it really that hard?
SimpleDB is RESTful & Schema-less?
So the big web service of the week announcement goes to Amazon, for their AWS SimpleDB hosted service. This should place nicely with EC2, which is an interesting service except for the fact that persistent data across sessions is problematic (every time you boot an EC2 node it's a clean slate).
So what is SimpleDB? It's:
- Built in Erlang (wow, maybe Erlang is worth learning after all, right?)
RESTful(see comments); API returns XML- Schema-less
- Non-relational
Wait, what? Schema-less? Non-relational? Yup. In case you haven't noticed, there's been a groundswell of interest in this area lately... Perhaps most buzz-worthy is the CouchDB project, which also uses REST for inserts and queries, storing your data in schema-less databases which Amazon confusingly refers to as "domains" (see other differences). CouchDB is pretty neat, and all the cool kids seem to like it. RDDB has similar goals. And then there's DBSlayer, which takes the approach of wrapping a REST API around traditional relational databases (MySQL, etc).
So why the interest in moving away from traditional RDBMS, which have served us well for so many years? Simplicity. Ease of scaling. The emphasis on removing business logic from the database and keeping it in the application, where it belongs. At least, those are the arguments. I'm no expert, but I'm certainly interested. Assaf Arkin summarizes the argument much better than I can, and his article Read Consistency: Dumb Databases, Smart Services should be required reading for anyone who's interested in the future of (dumb) databases on the web. Assaf also has a follow-up article on the merits of CouchDB, specifically. There's a lot to think about here.
Of course, another key value prop with the Amazon service is that it's hosted. By Amazon. They claim it's fast and reliable (they should know a thing or two about that), and it looks to be relatively inexpensive, when you consider that the alternative is clustering your own databases for the same kind of speed and reliability. It'll be interesting to see how this turns out and I'm anxious to play around with it.
All that said, there's no Ruby library wrapper for SimpleDB yet. However, as Chad Fowler notes, there are already three different projects registered with RubyForge. None of them have checked in even a single file as of this writing, but you know that somebody out there is hard at work (hint hint), and I'm sure you'll see it before too long. Alternatively, you can build one yourself.
Me? I've already got too much on my plate this week. And I still have to get that DataMapper cheat sheet done, too.
/me apologizes again
/me goes outside to shovel snow
Digital Comics, Unlimited
I’m not ashamed to admit that I’m a bit of a comic book geek.
When I was a kid, I was a hardcore fanboy who spent pretty nearly all his paper route money on weekly trips to the local comic shop in Dover. I have no apology for that. As a technology geek also, I’ve built a social comic book pull list organizer that has yet to officially launch (we’re looking for someone who’s excited about comics and community building, no techie skills required, email me if you’re interested!) and I’ve done a little ancillary plugin work for the geeky folks over at Heavy Ink too.
These days I buy mostly graphic novels, but I’ve always loved the feel of a floppy, and back when I used to buy titles monthly, there was just something unspeakably awesome about ‘new comic book day’ and the excitement of pouring through the stacks in a local shop looking for that one key back issue…
Like most fans, I have mixed feelings about the digitization of comics. On one hand, I’d probably read a lot more of them if they were available (ahem, legally of course) through a cheap, easy to use digital distribution service like iTunes. On the other hand, I’m sort of glad this hasn’t happened, because it would kill a lot of the allure of it for me if the comics on paper were to become a thing of the past.
I imagine I’m not the only one who was both excited and, at the same time, just a little tiny bit bummed about the announcement of Marvel Comics Unlimited yesterday (NOTE: as of right now the site appears to be down for maintenance, coming soon). The basic premise is that Marvel will offer an online archive of over 2500 back issues online in high-resolution format, starting at about $5/mo. They’re also making a free sampler of 250 titles available to wet your appetites.
Marvel’s hedging their bets a little though, which is smart. New issues won’t appear on the Marvel Unlimited site until six months after their initial print publication. This is great for those of us who read graphic novels, and aren’t used to picking up books every week anyway, and it keeps the floppies in circulation. After a bit of consternation, I’ve decided that it’s pretty much a win/win. Of course, as it always is on the web, the user experience will determine the ultimate success or failure of the venture. The flash-based digital comics I’ve seen from Marvel up to this point haven’t exactly been the most pleasant things to read, so here’s to hoping this is an entirely new interface to the library.
Anyway, I’m looking forward to reading more about this, both as a comic book enthusiast and as a technologist. Welcome to the 21st century, comic fans. For better or for worse.
It’s about time, I guess!