March 28, 8:38 | Comments (13)
Rails 1.1 has arrived. It's pack full of features that the Edge Rails community has been busy shipping products with for months. Extractions from the hands of more than a hundred contributors.
Open source works, open source is good.
March 24, 21:26 | Comments (68)
I've been talking to a lot of friends and acquaintances who are writing tech books for a wide variety of old-school publishers and I can't believe the deals they're taking.
It seems that the industry standard is something akin to 10% of the profits (which easily take 4-5-6 months to arrive), being forced to write in Word, and finally a production cycle that's at least a good 3 months from final book to delivery. That's horrible!
And what do you get in return? Usually not all that much. There's rarely a big marketing push to be had and you're expected to do lots of the editing yourself. So you get some editing, a cover/layout, and the distribution done for you. Is that worth 90% of the profits and the torture of writing a book in Word and then bouncing versioned documents back and forth?
The standard sugar coating of this setup is that you should not expect to make money writing a tech book. That it's not about the money, but the fame and authority and satisfaction of seeing your name in print. While all of those things certainly do have value, why on earth would you want to accept the premise that writing a book is not going to be worth it for the money?!
Of course it's not going to be for the money when you only land 1/10th of the crumbs that trickle back to the publishers from Amazon and independent retailers. Especially in tech land where its very rare to make it up on volume (your book is not going to be in every airport around the world).
Continued...
March 22, 4:07 | Comments (14)
I've just announced the first release candidate for Rails 1.1. After three months of work, we're almost ready to deliver. What a great feeling.
When you live on Edge Rails, it's quick to forget just how much has changed since the last public release. And this time it's much worse than usual. Roughly five hundred new features, fixes, and other changes were recorded in the Rails change logs.
Naturally, it's easy to fall in love with the big ticket items. Our new Ruby-to-Javascript compiler, polymorphic and join associations, integration testing, and you should. There's lots to love.
But what I really like about Rails 1.1 are the hundreds of tiny patches. Wrinkles ironed out by software developers from all over the world. People who found something ugly and made it beautiful. The kind of deep polish you can only get when the barrier to entry for patching Rails is as low as it is and when you have such an incredible talent pool to draw the best insights from.
I am more proud than ever of what we have been able to accomplish together.
March 20, 23:30 | Comments (41)
James McGovern's ill-conceived rant made a strong attempt at rendering the word 'enterprise' equal to, pardon my french, bullshit, and that's naturally gathering plenty of reactions around the blogosphere.
Microsoft's Dare Obasanjo has a menu of great points. Here's the main dish:
The lesson here is that all this complexity being pushed by so-called enterprise architects, software vendors and big 5 consulting companies is bullshit. If you are building distributed applications for your business, you really need to ask yourself what is so complex about the problems that you have to solve that makes it require more complex solutions than those that are working on a global scale on the World Wide Web today.
That's the wonder of the web. It's so much harder to sell black holes of complexity when transparent examples of easier, simpler, and less are everywhere. You can only peddle a recipe of more software, more layers, more consultants, and more vendors for so long. The success of the web has stamped this strategy with an expiration date.
Now we could of course just abandon big business to the hands of enterprise astronauts and James McGovern's of the world, but that would be too easy. Yes, we could cherish moments of smug self-satisfaction as the towers of ineptness crumble to the hand of competition at some point in the future. But it is nothing against the joy we could have helping good businesses escape this morass of bad intentions.
So let's keep up the heat. Increase the awareness of alternatives. Strike down the assumptions that big business and big money necessitates the world of hurt that enterprise astronauts carry in their vendor-branded laptop bags.
March 20, 1:25 | Comments (105)
The word 'enterprise' has long been in bad shape, but I think James McGovern just drove the final stake through its ambiguous heart with More Thoughts on Ruby and Why it isn't enterprise ready!
Allow me to summarize a few choice bits from McGovern's incomprehensibly convoluted ranting. You may not have the patience to finish through his tirade:
- Productivity doesn't matter any more (8), but even if it did, there's no way Ruby could deliver more of it because sales people have used the word productivity to lie to me in the past (11).
- Whatever we're doing now is already the right thing (2) until the big consulting firms tell us that something else is the right thing (3). And they're not going to tell us about Ruby because they can't make money off it (7).
- None of my fellow Enterprise Architects talk about Ruby (5) because they're too busy to think about their business to worry about new technology (4).
- All magazines that write about Ruby are bad (4) and all books written about Ruby are bad (1). If other people say they're good, it's because they were paid to say that (12).
James McGovern is an Enterprise Architect, a self-proclaimed "industry thought leader" with a blog entitled "Enterprise Architecture: Thought Leadership". And as if that wasn't enough enterprise for you, McGovern has also written Java Web Services Architecture, A Practical Guide to Enterprise Architecture and Enterprise Service Oriented Architectures. Oh, and he's a member of the Worldwide Institute of Software Architects.
Continued...
March 18, 3:14 | Comments (21)
When it rains, it pours. Rails, 37signals, and yours truly are all featured in articles from both Wired and BusinessWeek today.
Which is of course flattering, but also pretty weird. There's just something about paper and wide distribution that makes it all seem so puffy.
And its funny to think about how much time print magazines spend on short pieces. Especially the one in Wired, which had multiple photo sessions that combined took about three hours or so.
Imagine that they have to do all that work for so many small pieces. Certainly a different world from just jotting your notes down on a blog and possibly slapping on a half-assed photo.
March 17, 18:59 | Comments (24)
The gulf between Web Services™ and web services have been widening as of late. HTTP awareness is on the rise, atompub is shining a light for best-practice REST, and the complexity of the WS-* stack is reaching astronautical heights.
Opinions are being formed and decisions are being made. I remember thinking about whether or not to do a SOAP interface, complete with WSDLs and other fancy dressing, for Basecamp's API a good while back. Today that's not even a consideration. I couldn't dream of going down that path for any products we're working on at 37signals.
And I think that is significant because I'm hearing the same from others. For the web native, interest has turned to bafflement over HTTP over XML over HTTP (aka WS-Transfer) and other WS-* silliness coming out of the Microsoft and IBM lead "standards" committees.
Tim Bray, which I heard give the story of atom at etech, has a good dissection of the misnomers and misconceptions around the split between WS-whatever and XML/HTTP/REST. I particularly enjoyed his takedown of the notion that WS-* should be somehow more standards-based:
Well, excuse me, HTTP and XML, the things that REST-flavored lightweight services are based on, have been stable, ratified, international standards for a decade or so, while the legion of WS-* specs are still mostly unratified by anyone but their authors at IBM and Microsoft. There’s only one option available today that’s actually standards-based.
Naturally, Sun has enterprisy obligations and commitments that Tim can't quite unsay, so his conclusion ends up being that "sure Sun will partake in this funny business because we said so, but I'd personally really like if we spent our resources on XML/HTTP/REST".
So no doubt the intentions are there. And if the big vendors can't or won't take advantage of the simplicity that the core building blocks of the web are providing us, then rest (haha) assured that others will.
Indeed, WS-* appears to be yet another ivory tower going up in a place no sane native would want to live. The village of the web is already plenty strong to withstand the distraction. Complex lights, flickering buzzwords, and long roadmaps to nowhere notwithstanding.
March 16, 23:29 | Comments (21)
After years following and buying the latest in smart phones, I've stepped out of the race, confessed to myself, and bought a Motorola PEBL. Yes, it's a design masterpiece, but also just about the dumbest phone around these days.
See, my smart phone kicks only ever lasted three or four weeks. Just enough time to explore all the features, download all the interesting applications, and get all the hacks running.
Then I'd enjoy a brief period of marveling over the possibilities of playing Game Boy Color games, surfing the web, chatting on AIM, reading ebooks converted from PDF, watching Simpsons downsampled to MPEG-4, and all the other crap I made it do.
Then, after all was explored, I would just make phone calls. And receive phone calls. And write text messages. And check my voice mail. You know, stuff the phone has been capable of doing before it had a multitasking operating system and more power than my first three PCs.
This may be that I just don't get out enough. Or that when I do, I'm driving or talking or listening to the iPod. I simply don't have enough situations available where I need the power of a computer in the palm of my hand.
I've admitted that to myself now, which means I can admire the Nokia N80 without desiring it. And I can not care that the PEBL has yester-years tech, but appreciate its unique surface and something as low-tech as named alarms.
March 16, 5:56 | Comments (20)
We won, we won! Not once, but twice. Agile Web Development with Rails snatched the Jolt in the technical books department and Ruby on Rails 1.0 took the Jolt in Web Development Tools. The framework was contending with JBoss 4.x, Backbase, Coldfusion, and the Zend Studio while the book took out Practical Common Lisp, Wicked Cool Java, and others.
This is such a great honor. Thanks to CMP for putting us in the running and the judges for picking us. I'm sad that neither Dave Thomas nor I could attend the ceremony in Santa Clara, California this evening.
Industry recognition from venerable organizations like CMP Media will no doubt help us break down the barriers that this young open source framework, born in little Denmark, and out of a small company still face against the big boys.
We want to, can, and will change the world.
March 12, 7:05 | Comments (42)
Ruby on Rails is all about eliminating repetition through convention over configuration and any other DRY-hack we can come up with. I believe we've been able to do a great job at institutionalizing that approach with the domain model. Very little repetition throughout the layers. From schema introspection to schema migrations to views aware of errors and controllers aware of parameter-to-column mapping.
But what about the controller itself. How DRY are we in handling different clients desiring different output from the same controller logic? Up until recently, not very. At least not in an institutionalized form.
Backpack actually does reuse controller actions for separate clients. It has a mobile version, an API version, and a regular web version. And about 80% of the actions for all three are shared across through various hacks.
It's those hacks and ideas that are now able to blossom through the (re-)discovery of the wonderful Accept header in the HTTP specification. Let me show you the code.
Continued...
March 11, 20:10 | Comments (22)
I think I've distilled what made my eyebrows go up at Goslings comments about PHP and Ruby. Aside from the fact that he confuses Ruby with Rails and uses the dismissive term "web pages" instead of "web applications", I think the primary mistake was abbreviating "the power of versatility" into just "power".
Power has connotations of how well a specific task can be done. If two tools are aimed at exactly the same scope, the one with more power is usually preferable. But that's really not the kind of power Gosling is taking about. He's talking about the power of versatility. Being able to use the same tool to do every imaginable task.
That's the kind of power I do not envy. At least not for Rails nor PHP (general purpose languages, like Ruby, is a different matter). The greater the versatility, the higher the abstraction, the less useful for the specifics. Saying you'll be everything to everyone, from "web presentations" to "interplanetary navigation" as Gosling puts it, is not free. You have to give up other desirable attributes to get that.
Which is fine, of course. If your model of the world is that you're stranded on a desert island and you can only bring one tool. Or if your model of programmers is that they're too busy/uninterested/dumb to to ever learn more than one platform.
In any case, I'm more at peace with Goslings discussion about power now that I understand he's really talking about the power of versatility. As long as you replace the word Ruby with Rails in his mutterings, he's actually right. Rails achieves great power, productivity, and programmer happiness by trading in the option to "interplanetary navigation".
At the same, the conclusion must be that if a) don't believe the two world models listed above (that you can have only one tool) and b) that you have modest needs, say the intent to build a web application for e-commerce, communities, collaboration, etc, and not "interplanetary navigation", why would you not choose to go with the more specific tool? If you don't desire versatility for the task at hand, wouldn't you rather trade it in for simplicity, productivity, and programmer happiness?
UPDATE: Ryan Tomayko has a great post called Gosling Didn’t Get The Memo that explains and link to the sea change we've seen over the last year or more.
March 11, 19:40 | Comments (10)
A couple of weeks ago, we decided to get serious about Rails 1.1 and engaged in the final release sprint. One would think this would lead to the final commas being placed, the font size being adjusted, and proper kerning of the headline being ensured. Not so. The document that is Rails always evolves the most around closing and this release has been no different.
I'll try to go into detail in forthcoming posts on a few of the more exciting additions that has surfaced in recent time. But let me just shine light on similar exposures elsewhere. Jamis Buck has written an excellent guide to the new integration testing framework and Scott Raymond has been trawling the changelogs with light commentary and examples.
Now, just to setup a few expectations for myself going forward, these are the themes that has influenced my thinking on Rails of late:
- HTTP is a Wonderful Acquired Taste
- Flash Beyond the Movies and into the Infrastructure
- XML as a Glorified Hash
- How to Make Polling Scale
March 10, 21:31 | Comments (55)
James Gosling, the creator of Java, gave his take on PHP and Ruby at a Sun conference lately:
PHP and Ruby are perfectly fine systems, but they are scripting languages and get their power through specialization: they just generate web pages. But none of them attempt any serious breadth in the application domain and they both have really serious scaling and performance problems.
Heh. I love quotes like that. You don't even have to add commentary. Just imagine a puzzled face with raised eyebrows.
March 03, 17:10 | Comments (53)
Looking at a Sun Java Creator 2 demo, I found this little nugget of gold:
UploadedFile uploadedFile = (UploadedFile) fileUpload1.getUploadedFile();
String text = uploadedFile.getAsString();
It's hard not to get a good chuckle out of that.
March 01, 23:28 | Comments (17)
If the Loud Thinking haven't been so loud lately, there's a reason. Over the last couple of months, I've been busy writing essays for our Getting Real book along with the rest of 37signals. We've tried to compile the best of our thoughts on building web applications, 37s-style. And now it's finally all done and for sale: Getting Real, the book.
We've chosen to go PDF only for starters. When you live and breathe in the web space, the world of paper publishing is a scary place fraught with inefficiencies and legacy ways. Since we're all about saying less, we thought instead just to write a short book that's really just a collection of essays. Easy to read a few pages at the time on the screen or to print them for the go. So that's what we did.
There are ninety essays in all and you can read four of them for free before deciding whether its worth the buy. The book also serves as a worthy taster for the Getting Real workshops we've been running.
Since they have a tendency of selling out before most people can blink and because not everyone can afford or want to travel to Chicago, it's great to be able to share our thoughts on Half, Not Half-Assed, The Three State Solution, Less Software, and all the other ideas in a more generally accessible form.
Also, despite being hip and youthful, the book doesn't talk a lot about Ajax and other Web 2.0 snazziness. So as a bandage, we made the shop for the book all ajaxy and youthful. Ain't It Cool?
UPDATE: We've sold more than 1,750 copies since yesterday and are celebrating that with a reprint that puts less stress on the printer toner and fixes the handful of typos found.
|