On Rails Hype, Bias, and Hypocrisy
September 24th, 2007 • General • 1 comment
Derek Sivers, probably unintentionally, struck a sentimental nerve in the Rails community.
The odd, and immature reactions piled up quickly. PHP people hailing for their savior, and misty-eyed Rails followers, fiercely debunking the “myth” of Mr. Sivers. The chaos overshadowed a serious concern: An obscure suicide note, published by none less than David Heinemeier Hans, the originator of Rails.
Rails’ hype was over in July 2007. Of course that didn’t, and should not be a reason to abandon such a curious project. We’ve learned, over the course of years, that rewriting is bad. That it’s a thing you shouldn’t do. It’s interesting that nobody complained a couple of years earlier, when they really should have; but then again, one man’s poison, is another man’s meat.
The Rails community backlash against Derek sounds like it came fresh from the ’80s, where a lonely teenager is tricking his phone to carry a name-calling response to some absurd BBS group over a noisy line. Haven’t we learned that calling others stupid backfires? We are seven years well into the 21st century, I thought lousy telephony was dead.
Derek’s post was awfully misinterpreted. It feels like he’s been cast out a sacred cult called Railsotology, and condemned to glance back in regret at the puffy pillows of social praise. There’s a strange divide between the friendliness of the Ruby community, and Rails. The latter was able to stand on Ruby’s shoulders, but never learned why Ruby really took off. I realize that blind arrogance would suggest Rails pulled Ruby into the light, but I big to differ.
The language of bias is exactly what made Rails interesting. “Opinionated”, they said, and we liked it. I liked it, and I’m the most opinionated person I know.
Bias sold Rails. It was the very essence of its marketing efforts. Denouncing bias is bias in itself. So is condoning a rewrite, and condemning another.
Shizzle Gridizle
September 19th, 2007 • General • No comments
Or, to convert the title to English, The Blueprint Grid Builder.
Three days ago, I learned jQuery (in just about an hour, because it’s so damn easy). I knew about Blueprint for quite a while, but never used in production, and probably never will. I’ll leave Blueprint’s limitations for another post.
Let’s agree on a few things. Blueprint claims to aid grid-based design. That’s not entirely accurate. Yes, really. Columns aren’t grids, and the Web will probably never see true, “gridesigns”. Regardless, Blueprint is great for quick prototypes.
Gridizle, a.k.a. The Blueprint Grid Builder, a.k.a. my idea of a hacked-up, patched-up, single-page program, uses Blueprint to build a layout, and it assumes you know what class="span-8 prepend-1 border" means. If you don’t, please read a the Blueprint tutorial.
How It Works
Blueprint’s layout is split into 24 columns, each is 30px wide with a 10px right margin. You can customize these numbers with the Grid Generator, but for now, Gridizle assume Blueprint’s defaults.
Click “Add column” button and choose the number of spans for your column. A new column will be added to the main layout. Columns are distinguished with a top and bottom border.
You can add more columns to the main layout, or inside other columns. Clicking any column will highlight it in Blinding Yellow, and will allow you to add new columns inside it. Click anywhere outside the main layout to deselect all columns. New columns will be added to the main layout now.
<hr /> acts as a row separator. When your columns span less than 24, you can insert a separator to start a new row. Double-click the separator to remove it.
“Column border” adds a border class to the column. A Blueprint’s column border appears in the middle of the gutter on the right of that column.
“Column last” adds the last class to the column. Suppose you have a row split into four columns. Your columns will have span-6, which adds up to 24. However, the last column will jump to the next row because it has an extra margin on the right, making it 10px wider than what it’s supposed to be. Blueprint’s last class removes this margin, which aligns the last column properly.
You can increase or decrease prepend and append values by clicking the corresponding +/- buttons. These values are useful when you want to adjust the columns positioning.
Play with interface for a while, I’m sure you’ll get the hang of it.
Limitations
- Gridizle doesn’t calculate the maximum allowed number of spans in nested columns.
- Adding a full border around columns, instead of a top and bottom border, messes Blueprint’s layout. So for now, Gridizle’s columns look funny.
- Showing and hiding HTML code should be done in a popup window, instead of using the ugly
$('.container').append()hack. class="last"could, and should be calculated automatically.- Appending and prepending don’t know when to stop. So don’t over do it.
- Column spans can’t be changed, for now. When adding columns, try to pay attention to the span number you choose.
- This is a pre-pre-alpha software. I’ll try to improve it whenever I have a chance. However, since I’m licensing it under GPL, you’re free to hack on it.
Slashdot-esque on Twitter
September 18th, 2007 • General • No comments
I have a love/hate relationship with Twitter. I see how it can be useful, but can’t stand how noisy it gets.
Those attending TechCrunch40 (a 2-day, 40-company, Web 2.0 conference) are following it up on Twitter.
Feels like a 21st century Slashdot.
The Five JavaScript Libraries
September 15th, 2007 • General • 1 comment
It’s been a while since I wrote any JavaScript. It’s one of those languages that I love, would love to love, and hate. How’s that for a developer’s complex?
It’s not that there’s anything wrong with the language, but until recently, browser support has been a nightmare. I’m sure you, especially front-end developers, have had your share of hair-pulling sessions, when something perfectly legitimate works on one browser, then cracks on another. They would claim they follow standards, yet none did.
These days, browsers ironed out most quirks, they’re all mostly compatible, they all implement the Document Object Model, where each mark up element maps to an object. Only you have to be comfortable with writing recursive functions and dealing with complex trees. Personally, I’m not. I can deal with trees, I just don’t want to. Not when I’m trying to get some work done.
I knew these five libraries should simplify JavaScript work, and ensure my programming sessions don’t cause casualties.
Prototype: Being hyped by Rails and all, Prototype was my initial choice for a JavaScript library. It’s well documented, It’s been beaten into shape by many, and overall a solid piece of work. It feels like lax DOM with chained method calls, and it’s obvious how Ruby affected its design philosophy.
script.aculo.us: is the effect library built on top of Prototype. Thing like fade in, fade out, dragging and dropping. It also integrates into many frameworks. The only problem is it’s bound to Prototype.
YUI: Well, YUI isn’t a JavaScript framework, it’s a complete UI framework, as the name makes it obvious. Ironically, the most notable feature is implemented in CSS rather than JavaScript. When you need tree views, tabs, and sortable tables, this is where you go.
Ext: As its homepage says, it started out as an extension to YUI. However its massive 3mb download made me hesitate. Ext has some big names on its list like Adobe, Cisco and IBM, probably because there’s a commercial license offering. It’s quite hefty for everyday’s work, but might add it to your list of potential usages.
jQuery: This is the gem I was sold on. jQuery’s philosophy is pragmatic, and its strict about its download size. The minified and gzip’ed version is about 14kb, that’s smaller than you average PNG image. To be honest, I was sold after reading a comparison with Prototype. But then I found out that Prototype isn’t so bad either, it just feels a bit more formal.
The best thing about jQuery is that it can be used with RJS templates, since it also has Prototype’s $() function. The second best thing is Visual jQuery.
Print Isn’t Dying Soon
September 12th, 2007 • General • 5 comments
I’ve been hearing this print-is-dead meme ever since the term “blog” was mentioned on TV.
To set the record straight: No print isn’t dead. It won’t die anytime soon. Go do your homework.
One cannot unite a community without a newspaper or journal of some kind.
— Mahatma Ghandi
Print’s been the tool to reach the masses, judging by the sheer number of newspapers and journals of every kind. Mostly because advances in technology have minimalized production costs; the internet, then, nullified them.
Print is going through a phase now, a shift in focus, if you will, just like it did when TVs started to become mainstream, causing unnecessary worries to newspaper publishers. With more people reading news online, and real damage happening the newspaper and magazine businesses, the worries aren’t completely unjustified. It doesn’t mean print is going to die yet, only that certain businesses are replaced overtime, but that’s how the business world works.
Print has certain advantages of any other medium. It’s unobtrusive, it’s non-hyper, and it can be taken offline. So I can read without IM and email distractions, without slashing through a jungle of links, even when I’m waiting for the bus. Also, the nature of the medium itself forces authors to think differently, to rephrase their sentences, to be unambiguous, to make sure that you can read without resorting to Wikipedia.
Veerle wrote a great follow-up on this topic with emphasis on design. Tim O’reilly discusses how their book sales surged after Barnes & Nobles set all computer books on sale. It seems that newspaper publishing is the only area in print being affected. After all, people rarely keeps newspapers.
So buck-up little print designer, I seriously doubt your medium will go Dodo in my lifetime or yours. Get back to Quark and keep on keepin’ on, my wallet is at that ready.
— Greg Storey, Pulp
This e-age has provided alternatives to the print medium. eBooks tried to replace regular books. Blogs tried to replace news, while news tried to replace itself. Youtube tried to replace TV. But at the end of the day, these are different sides of the same Rubik’s cube.
