1. Mar 26th, 2009

    Idle speculation

    yes, that's a plum

    Jason Stamper wonders out loud what would happen ifwhen IBM acquires Jonathan Schwartz’s blog:

    Insiders say that if IBM does indeed close the deal, the package will include not just Jonathan Schwartz’s blog – and all associated branding including the rights to use the term ‘Jonathan’s Blog’ — but also an ancilliary hardware, systems and software business that IBM is believed to think “could come in handy if the ass falls out of the blogging market”.

    More relevant to more people, Stephen Colebourne finding signs that Java 7 may never happen, as Sun is merely using open source to retain tight control over the platform:

    However, unless anyone is being particularly naive, it should be clear that if there is to be a Java 7 specification then it would be fully defined by what is in Open JDK, not by the JSR process. Do you think that Sun would remove things already in OpenJDK were the JCP to so decide? Er, no.

  2. Mar 20th, 2009

    Rounded Corners 231 — The power of good design

    is this not the sexiest point & shoot camera?

    The power of good design. Interesting read about the different design decisions that went into the Amazon review system:

    This is a case of a simple question – asked in the right way at the right time – that can have a dramatic affect on the success of the organization. Simple, subtle design once again proves it has great magical powers (and, in the right circumstances, very lucrative ones).

    Interesting bit of shopper trivia: “while only one in 1,300 purchasers of the product writes a review, the number who indicate a review was helpful is even fewer.”

    Simple as a Service. Speaking of Amazon, AWS this time. The secret to its success may well be doing less:

    When you look at the market though its pretty clear the fabric players are suffering from feature-itis. No surprises there given cloud definitions are so flaky, but in the meantime Amazon is just getting on with it.

    Amazon is the new VMWare. The adoption patterns are going to similar. Enterprise will see AWS as a test and development environment first, but over time production workloads will migrate there.

    Obviously I’m biased, but all this cloudy stuff is starting to look like WS-* all over again, only this time with better blog coverage.

    Being practical. Language choice being a consequence of the tools it affords:

    … once upon a time the standard was LAMP: namely Linux, Apache, MySQL, and PHP. MySQL is being eaten from below by SQLite3, and the time may be ripe for getting eaten from above. Over time PHP became “PHP, Perl, Python, and sometimes Ruby”. But the more interesting trend is that the language choice itself is no longer as primary as it once was, the real choices are increasingly drupal, django, and rails, with the language being a consequence of that choice.

    Top acts. Did you know there’s an htop, iftop, iotop and apachetop?

    Backup mechanics. All backups are subject to quantum mechanical effects.

  3. Mar 20th, 2009

    Are you retaining the wrong people?

    CFO magazine, of all places, telling us not to trust HR:

    Not only is employee engagement very expensive, but “how do you know you’re not satisfying a lot of people you really wish weren’t there”

    The problem, in a nutshell, is that HR works hard to retain people.

  4. Mar 20th, 2009

    Just find me the lock I need to crack

    Cliff Click Jr on hardware transactional memory:

    Really what the customers want to know is: “which locks do I need to ‘crack’ to get performance?”. Once they have that answer they are ready and willing to write fine-grained locking code. And nearly always the fine-grained locking is a very simple step up in complexity over what they had before. It’s not the case that they need to write some uber-hard-to-maintain code to get performance. Instead it’s the case that they have no clue which locks need to be “cracked” to get a speedup, and once that’s pointed out the fixes are generally straightforward.

    Interesting thing about functional programming, actors monads is that they all come from the same place, promising to unlock large scale concurrency riches, in return for a little bit of devotion on our daily programming rituals.

    I recently switched from Prototype.js to jQuery. One thing I appreciate about Prototype.js is that extent it goes to make functional programming easy with JavaScript.

    jQuery doesn’t do functional programming. What most jQuery functions do is return the same object, while modifying it. It’s one big chain of side effects:

    $('p').text('Hai').addClass('welcome').show();

    It’s precisely this chaining style that makes jQuery so appealing to developers. It makes them happy, productive, creative. Out of that come a lot of plugins, sample code, and interesting UI techniques. A few that I wanted to use, which became the “killer app” that caused me to switch.

    Functional programming may be the ultimate answer, but method chaining is the productivity lock people wanted to crack.

  5. Mar 17th, 2009

    When unthinkable scenarios happen

    Clay Shirky’s requiem for the newspaper industry has a lesson for every market holding on to legacy business models:

    Revolutions create a curious inversion of perception. In ordinary times, people who do no more than describe the world around them are seen as pragmatists, while those who imagine fabulous alternative futures are viewed as radicals. The last couple of decades haven’t been ordinary, however. Inside the papers, the pragmatists were the ones simply looking out the window and noticing that the real world was increasingly resembling the unthinkable scenario. These people were treated as if they were barking mad. Meanwhile the people spinning visions of popular walled gardens and enthusiastic micropayment adoption, visions unsupported by reality, were regarded not as charlatans but saviors.

  6. Mar 17th, 2009

    Rounded Corners 230 — Caffeinated Ruby

    espresso porn!

    Magazine rack. New issue of the Rubyist is out, as is Rails Magazine issue 1.

    Ruby goes ABAP With the magic of JRuby you should be able to run Ruby on NetWeaver, but SAP is taking Ruby one step further and putting Ruby on the ABAP VM. For those who don’t know, the core of the monster is written in ABAP, SAP’s proprietary language. It’s ancient and moldy but if you can get past the smell, very productive. While this won’t make R/3 the next cool platform, it might give a kick for R/3 developers:

    Rather than just running Ruby programs isolated on the ABAP server, Blue Ruby also provides two-way integration with the surrounding ABAP environment – ABAP programs can invoke Ruby code easily and Ruby programs are able to access existing ABAP functionality. However, this integration is strictly controlled by the Blue Ruby VM, turning Blue Ruby into a sandbox inside the ABAP server.

    XML without shame Over the past few months Ruby’s XML support went from WTF to kick ass. REXML still ships by default but shouldn’t be your default option anymore. Check out the Ruby XML performance shootout (it is incomplete and possibly biased, but it will give you a sense of where we stand).

    Ruby on JBoss? Yes we can. Lots of Java enterprise goodness there, though, not intended for people who pipe and cron.

    April, just around the corner. The Cult of Taxes Manifesto.

    Image, from Anatomy of a Triple Ristretto, a photo essay (via @mriou)

  7. Mar 16th, 2009

    Get me a quarter-inch hole!

    People don’t want to buy a quarter-inch drill. They want a quarter-inch hole! — Theodore Levitt

    (Credit John Gruber for bringing it up )

  8. Mar 16th, 2009

    Scripter’s Choice Awards

    scripting-language-choice-awards

    Evans Data’s Scripters’s Choice Awards are out, and this year’s winner is no other than PHP, with runner-up Ruby and just behind on the podium, Python.

    This one is worth reading if you want a look at scripting languages beyond personal biases and myths. Open source developers will love this part:

    The top languages in this study are open Psource languages and thus evolve in an organic way. The proprietary Microsoft languages, though backed by the software titan and its many resources, did not satisfy their users as well as any of the open source languages.

    Although, you have to wonder whether proprietary languages are just worse, or are expectations set higher.

    Interesting to Rubyists, Ruby gets top placement on ease of use, exception handling, maintainability/readability and of course community. Quite surprising to find Ruby 2nd on client-side scripting. Tool availability ranks high, but we need to do something about the quality of these tools.

  9. Mar 14th, 2009

    Buildr: how we generate the documentation, Web site and PDF

    Site: Jekyll

    Buildr: page from the Web site

    How do you add documentation to your project? My favorite is to crank out Pages and start writing, but unfortunately not everyone working on the project has Pages, and Pages doesn’t generate the best HTML.

    Wikis are much better for sharing, but all the Wikis I worked with had two fundamental problems. One, they don’t work offline very well, I, on the other hand, work offline very well. It’s amazing what an online break can do for your productivity. Two, Wikis maintain their own version of history, different from the history of the code it documents.

    Let’s say I’m working on a new feature, and I’m doing that under the branch BUILDR-136. If I edit the Wiki and document the new feature, everyone gets to read documentation for a feature that’s not yet available. If I don’t edit the Wiki now, will I remember to edit it just before cutting a release? Life is easier when you start including the documentation as part of the source code. When you merge a branch, you also merge all the documentation of that change/feature.

    To make that possible you need a human-editable format. Source control systems don’t handle .doc and ODF flies very well. We’re using Textile for the content and HTML for the layout. Not exactly at the same league, but they’re both very popular and tolerant markups, so easy to live with.

    Previously we used our home-grown tool called Docter. It works really well, but my philosophy is that it’s better to have less code to maintain, so I switched to using Jekyll instead. As an added bonus, we also use Jekyll for all our Github pages.

    The switch wasn’t particularly eventful, although I did run into a couple of gotchas. Jekyll uses Pygments for syntax highlighting, and in 0.4.1 has a bug that leaks processes. Until 0.4.2 comes out, we’re just monkeypatching Jekyll using Ryan Tomayko’s fix.

    The second issue: I like having a table of contents on each page, especially since some pages can run long. I don’t like writing that ToC into every page, which was easily fixed by adding a Liquid ToC filter.

    I think the results speak for themselves.

    PDF: PrinceXML

    Buildr: PDF page

    The site has one page per section. Some people prefer the documentation to come in a single file, easier for reading offline, in one go, or printing out. You can also get the documentation as a PDF file. Here are the three steps it took to create high qualify PDF.

    In the first step, add a CSS file specifically for printing. The one we use controls the print margin, adds a header with the page number and title, alternating on odd/even pages, and hide various elements that are unnecessary in print (sidebar, footer, etc).

    In the second step, add a preface page with the document title, H1 table of contents, copyright notice, etc.

    In the third step, take all pages listed in the H1 ToC, add the preface, and run them all through PrinceXML. PrinceXML converts HTML/CSS into PDF with outstanding results, and will also handle the hyperlinks for you and generate table of contents for navigation.

    RDoc + Hanna

    My favorite RDoc template is Hanna. It’s a simple gray/white/blue theme, won’t impress your designer friends, but very readable, and that’s what counts. The navigation is on the left, which works better for widescreen displays, and includes a very handy search bar that does as-you-type method search (e.g. hit ‘def’ to find ‘before_define’).

    Before Hanna we used Allison, pretty template but search and navigation wasn’t as good. There’s also Darkfish, the default template that comes with RDoc 2.3/2.4, but it’s not as easy to navigate and lacks method search.

    Update: Two weeks later we’re switching over to SDoc. SDoc comes with just as simple/readable template, much smarter and downright awesome search bar, and can even link each method back to the source code on Github. Judge for yourself.

    Speaking of which, are you still using the default RDoc that ships with Ruby? Version 1.0.something, dated Nov 2004? Time to upgrade. RDoc 2.3/2.4 are way faster and don’t take over your computer every time you install a gem.

    These instructions are for RDoc 2.3, since mislav-hanna doesn’t work with 2.4 yet, but they will install both and then use the Hanna template to document all your installed gems:

    gem install rdoc -v 2.3
    gem source add http://gems.github.com
    gem install mislav-hanna
    hanna --gems

    You can also configure Rubygems to use the template by adding rdoc: --template=hanna to your ~/.gemrc file.

    For instant access to the gem documentation, run gem server from the command line and open the browser to http://127.0.0.1:8808/.

  10. Mar 13th, 2009

    Rounded Corners 229 – Corporate Ipsum

    ClickToFlash does H.264 One day there won’t be any Flash on the Web, until then, there’s ClickToFlash. Version 1.4 is out and now has a proper UI for editing the (unfortunately necessary) whitelist. Also, when you visit YouTube it will let you stream H.264 videos (using QuickTime instead of Flash). H.264 videos are higher quality, they’re also fun to watch for another reason: Flash is an unbelievable CPU hog, but with QuickTime I can stream video and get stuff done in the background. Highly recommended.

    Ruby on the desktop. RubyInside talks to Benjamin Jackson and Ivan Neto, the people behind Blogo, a Mac blogging client. Blog is also a native Cocoa app written in Ruby.

    Incidentally MacRuby 0.4 is out. MacRuby is a port of Ruby 1.9 that runs on the Objective-C common runtime, giving you an idiomatic Ruby layer for accessing Cocoa and other OS X frameworks. Think of it next time you’re building a native OS X app. Also, how long before we can start writing iPhone apps using Ruby (MacRuby is an Apple project)?

    The delicate nature of trust. Nick Myers raises an interesting point. Not enough trust, and people won’t use your system, but too much trust can be just as bad.

    Better TPS reports. Corporate Ipsum creates the perfect text for working on the next killer PowerPoint/TPS template:

    Completely develop principle-centered methodologies with principle-centered catalysts for change. Conveniently exploit accurate e-tailers without B2C action items. Holistically redefine collaborative models with process-centric imperative.

    (Via Stephane Bailliez)

    Urban shifts. Creative class moving to Detroit?

    Image, via Insomnio.