Rails Reading - December 16, 2009

Bodies Revealed 4am project

Google Tech Talk on Ruby Enterprise Edition « Phusion Corporate Blog

Last Friday we visited the awesome Googleplex and gave a tech talk there about Ruby Enterprise Edition. This talk elaborates a bit on how REE works under the hood. Many thanks to John Woodell for making this possible!

Your Pages Will Load Faster with Rails! | Engine Yard Blog

Server-side programmers tend to spend a lot of time tuning their server-side code. Studies show, however, that 90 percent of the user’s perceived performance is on the client-side. The YSlow recommendations are the gold standard for client-side performance, providing a list of things web developers can do both on the server-side and the client-side to improve performance. If you use Rails, a large number of these recommendations are baked into the framework.

These tips are not extremely difficult to implement yourself with another framework, but Rails and Engine Yard believe in making your websites fast by default: you shouldn’t need to understand all the minutiae in order to get a snappy application.

Superfluous DSLs

As you can see, these solutions are shorter and make the DSL look superfluous. It means that the DSL is unnecessary.

When you count the lines of code of your models, you should take into account how much code you are injecting. Your models could be hundreds of lines shorter if irrelevant DSLs like this one were removed.

Monkey’s thumb » Delete/put links break your Rails app

In Rails you can easily use the link_to helper in your templates to create links to update or destroy actions (using the ), but this ease of use hides a very real problem.

The problem

These links only work for users with javascript enabled.

Visitors without javascript enabled the links will actually take them to the show action of your controller (or a 404 if you con’t have a show action), which won’t be what you or they expect.

It’s easy not to notice this behaviour since mostly you test your app with javascript enabled.

dmathieu’s jesus at master - GitHub

Jesus is a web interface to god It allows you to see the process and monitor/unmonitor them.

24 ways: Rock Solid HTML Emails

At some stage in your career, it’s likely you’ll be asked by a client to design a HTML email. Before you rush to explain that all the cool kids are using social media, keep in mind that when done correctly, email is still one of the best ways to promote you and your clients online. In fact, a recent survey showed that every dollar spent on email marketing this year generated more than $40 in return. That’s more than any other marketing channel, including the cool ones.

There are a whole host of ingredients that contribute to a good email marketing campaign. Permission, relevance, timeliness and engaging content are all important. Even so, the biggest challenge for designers still remains building an email that renders well across all the popular email clients.

What is a ruby object? (introducing Memprof.dump) at time to bleed by Joe Damato

After Joe released memprof a few days ago, I started thinking about ways to add more functionality.

The initial Memprof release only offered a simple stats api, inspired by the one in bleak_house:

With the help of lloyd’s excellent yajl json library, I’ve slowly been building a full-featured heap dumper: Memprof.dump.

n building and testing Memprof.dump, I’ve learned a lot about different types of ruby objects. The rest of this post covers interesting details about common ruby objects, with examples of how they’re created and what they look like inside the MRI VM.

InfoQ: JRuby, Duby, and Surinx: Building a Better Ruby

In this presentation, Charles Nutter discusses JRuby, invokedynamic, JRuby performance, Duby, the motivation behind creating Duby, Duby syntax, future plans for Duby, Surinx, the motivation behind creating Surinx, and how Duby and Surinx are helping JRuby

3 Unix commands for finding performance problems - Effectif Development

The key thing here is that the time is in the log file, so we can get a rough feel for usage by counting how many requests MyController#create receives in a minute.

You could write a script to work that out for you. It probably wouldn’t take more than 10 minutes, but it feels like a bit of a chore and – frankly – I’m too lazy to bother.

Alternatively, you could spend 10 seconds cooking up a Unix command line like this one:

$ zgrep MyController#create production.log.1.gz | \

cut -d ‘ ‘ -f 7 | cut -d : -f 1,2 | \

sort | uniq -c | sort -nr | head -n 5

memprof: A Ruby level memory profiler at time to bleed by Joe Damato

memprof is a Ruby gem which supplies memory profiler functionality similar to bleak_house without patching the Ruby VM. You just install the gem, call a function or two, and off you go.

Railscasts - Authorization with CanCan

Authorization with CanCan

CanCan is a simple authorization plugin that offers a lot off flexibility. See how to use it in this episode.

Ruby Manor - Ruby

Ruby Manor is one of those alternative conferences. It’s not run for a profit, and costs just £8 for a ticket (you pay just enough to cover the cost of the room and equipment). You even get a free beer afterwards in the local boozer (and it’s at least £3 a pint in London these days). Due to the unique way that Ruby Manor is funded (actually that’s nothing to do with it) you can even check the bar bill.

Presence, the new social pattern category (Yahoo! Developer Network Blog)

The Yahoo! Design Pattern Library just published two new social patterns in a new category, called Presence (under People). The two patterns are Availability and Updates.

Sriram Krishnan Stuff I’ve learned at Microsoft

Coming up on five years (and many teams) at Microsoft, there are a few things I’ve picked up along the way that I definitely didn’t know about when I left college. Call them core values, things I’ve learned, lessons learned, things I scream at my friends to do more of, whatever - they’ve served me well.

Protip: Passing Parameters to Your Rake Tasks | Viget Extend

I recently checked out the parallel_specs plugin to see if I could get some noticeable performance improvements when running the test suite for one of my current projects. I didn’t in this case, but I saw something in the documentation that caught my eye:

$ rake parallel:spec[1]

$ rake parallel:spec[models]

$ rake parallel:test[something/else]

I have been using Rake forever, but those bracketed options were something new. I thought that it was something Michael added as part of his plugin, but it turns out that this feature is built directly into Rake itself. It was first introduced in this commit and made available as part of version 0.8.1.10. Configuring your tasks to use this feature is simple. I’ll show you how.

9 New Ruby Libraries To Check Out

I love checking out new Ruby libraries, and recently many new ones have passed my eyes. The most prominent releases get their own post on Ruby Inside, but often there are less significant libraries that I’d struggle to write 100 words about yet still contribute to Ruby’s lifeblood. This post aims to round up a selection of my recent discoveries.

MongoDB (is) For Rubyists - Boston Ruby

Slides from a presentation on MongoDB and Ruby at Boston Ruby Meetup, 12/8/09

sysadvent: Day 11 - Looking for Trouble

Good sysadmins use automation and monitoring, but good sysadmins don’t rely only on this. The problem with automated monitoring, as we know from the movie Jurassic Park, is that you only find what you’re looking for. Where are those pesky raptors, anyway?

Rubygems on Ubuntu (with Puppet if you like)

Debian packages and Rubygems: they get on like two angry cats in a sack. This post explains how you get Rubygems and Dpkg to play nicely on Ubuntu Hardy Heron.

Ajaxian » New jQuery Podcasts

A couple of feature-packed jQuery podcasts have appeared in the past month or so: YayQuery (iTunes), a laid-back video podcast from folks in the jQuery community; and the official jQuery podcast (iTunes), hosted on the official jQuery blog and aiming to be a mix of news and interviews, hosted by Elijah Manor and Ralph Whitbeck.

TDD: Big leaps and small steps at Mark Needham

About a month ago or so Gary Bernhardt wrote a post showing how to get started with TDD and while the post is quite interesting, several comments on the post pointed out that he had jumped from iteratively solving the problem straight to the solution with his final step.

Something which I’ve noticed while solving algorithmic problems in couple of different functional programming languages is that the test driven approach doesn’t work so well for these types of problems.

Dan North points out something similar in an OreDev presentation where he talks about writing a BDD framework in Clojure.

To paraphrase:

If you can’t explain to me where this approach breaks down then you don’t know it well enough. You’re trying to sell a silver bullet.

How to Generate Random Colors Programmatically | Martin Ankerl

Creating random colors is actually more difficult than it seems. The randomness itself is easy, but aesthetically pleasing randomness is more difficult. For a little project at work I needed to automatically generate multiple background colors with the following properties:

* Text over the colored background should be easily readable

* Colors should be very distinct

* The number of required colors is not initially known

9 New Ruby Libraries To Check Out

I love checking out new Ruby libraries, and recently many new ones have passed my eyes. The most prominent releases get their own post on Ruby Inside, but often there are less significant libraries that I’d struggle to write 100 words about yet still contribute to Ruby’s lifeblood. This post aims to round up a selection of my recent discoveries.

Alan Storm dot com comma inc LLC: Gruber’s URL Regular Expression Explained

While America threw on its eating pants and combed the Thursday circulars for deals, John Gruber spent Thanksgiving preparing to unveil his regular expression for finding URLs in arbitrary text.

\b(([\w-]+://?|www[.])[^\s()<>]+(?:\([\w\d]+\)|([^[:punct:]\s]|/)))

Pretty dense. Let’s be that guy and break it out, /x style (ignoring white space, with comments)

Building a multi-engine search interface in under 25 minutes! (Yahoo! Developer Network Blog)

magine you want to build an interface to do some serious web research. It would be good to search Google, Yahoo and Bing at the same time and see the results without leaving the site. A few months ago this was a lot of work. Nowadays however, by using YQL and YUI it can be done in an hour - tops.

Check out the final product, which I’ve called GooHooBi at http://icant.co.uk/goohoobi:

A way to cool dependency Hell?

There’s two ways you can do this:

* You can make people responsible for the care and feeding of your testing and production environments. This is easy to implement, but stupid. I think it would only work in an environment with exceptional communication.

* Or you can insist that any application must declare what it depends on.

Keeping environments up to date keeps lots of people in a job. It’s a really dumb job. At my day job we’ve taken the latter route, using Puppet.

assertTrue( ): NoSQL Required Reading

I’ve been trying to follow the fast-moving world of NoSQL lately, and — like a visit to the carnival funhouse — it has left me with double vision, queasy stomach, and a staggering gait. (And it’s not even Saturday morning…) Yet I find myself coming back for more.

If you’re new to NoSQL, you’ll want to do a bit of background reading. I’ll keep this quick and limit my recommendations to just the essentials:

Ruby-coloured glasses: The #1 thing to learn if you’re new to git

Now I’m not ‘new new’ to git anymore, I’ve been using it off and on for at least a couple of years, but I’ve been using cvs/svn for many more years than that. git has a steep learning curve[1], and have found the git-svn crash course invaluable. But there was one thing missing:

The #1 thing I wish I had learned when I was new to git:

…is that you must commit to git *far* more frequently than you do to svn.

Ruby on Rails Tutorial: Learn Rails by Example

The Ruby on Rails Tutorial Book

* Thorough introduction to Ruby on Rails

* A book-in-progress—drafts currently available for chapters 1–4

* Up-to-date with the latest version of Rails (currently Rails 2.3.5)

* Full text available online

* Associated screencast series coming soon

SapphireSteel :: New YouTube Ruby Tutorial

This series uses our free eBook, the Little Book Of Ruby as its ’course text’. You can download The Little Book Of Ruby and all the source code of the example programs from The Little Book Of Ruby page.

Ready, Set, Go! | Engine Yard Blog

Google recently publicly released their new programming language, Go. I’ve known about this for some time, having worked for the big G while it was in development, although not directly involved.

Google has plenty of special purpose languages, but this is the first general purpose language to come out of Mountain View. That fact alone makes it quite interesting. Add to it that some of the original C and UNIX people are involved, and it becomes something that requires investigation.

Functioning Form - An Event Apart: JavaScript Will Save Us All

In his JavaScript Will Save Us All presentation at An Event Apart San Francisco, Eric Meyer described the rapid advance of Javascript solutions online and their impact on standards development.

Functioning Form - An Event Apart: Integrating JavaScript Effectively

At An Event Apart San Francisco, Jonathan Snook discussed Integrating JavaScript Effectively and demonstrated several examples of developing rich interactions for the Web

Dr Nic ’s Dead simple JavaScript Unit Testing in Rails

Writing tests are great for helping you design and think out your code, and the bonus is you end up with a test suite to aide in fighting against regressions. Why? It’s embarrassing when your JavaScript doesn’t work in production.

But how do you get started with testing JavaScript? How do you make it easy? I mean, so easy that you’d feel stupid to not write tests?

Google Speed Tracer: Why Is That Web App So Sluggish? - ReadWriteEnterprise

We all notice when a web app is acting a big sluggish. What is causing it to be so slow?Why is it not responding as fast as it should?

These are the kinds of issues that keep developers up at night.

To help solve this problem, Google is launching Speed Tracer, a new tool for the Google Web Toolkit.

Skills Matter : Ruby on Rails eXchange: Sven Fuchs on The An

Sven Fuchs is the author of the I18n gem which is shipped with Rails to provide internationalization support. The gem is built in a modular way to make it easy for you to pick optional and add your own features. In this talk we will go over the architecture of the I18n gem and the advanced, optional features it comes with. We will also cover a few external extensions that are useful for building internationalized Rails applications.

Benchmarking Javascript Templating Libraries | Viget Extend

Because of Connect-a-Sketch’s heavy use of Javascript, I’m always looking for new ways to improve JS performance. This is, of course, important for ensuring a good user experience on as many machines as possible, not just those with newer computers and browsers. But, it’s also important for our ability to add new features as new features often mean more javascript running on the page.

One part of that Javascript functionality is generating the HTML for page nodes (representations of pages on the canvas). I use one of the many javascript templating libraries to do this currently. I recently noticed that mustache.js had been released and I got interested in exploring what other options are out there and how well they perform.

Production Rails Tuning with Passenger: PassengerMaxProcesses

Say your Rails application is running in production and it’s getting good traffic. Performance isn’t as good you would like. You’ve already determined that your database is not the bottleneck. What’s your next move?

Better - LinkedIn Gem for a Web App

There’s an untapped cash cow out there when it comes to recruiting and her name is LinkedIn. Until recently, only LinkedIn had access to your profile and social graph, but all that changed with the release of their OAuth-based API. I’f you’ve hooked into Twitter or Google then this authentication process should feel very familiar to you. To help you along, pengwynn released a LinkedIn gem last week.

Future of RDBMS is RAM Clouds & SSD - igvita.com

Rumors of the demise of relational database systems are greatly exaggerated. The NoSQL movement is increasingly capturing the mindshare of the developers, all the while the academia have been talking about the move away from “RDBMS as one size fits all” for several years. However, while the new storage engines are exciting to see, it is also important to recognize that relational databases still have a bright future ahead - RDBMS systems are headed into main memory, which changes the playing field all together.

Rails Envy Podcast – Episode 102 | Rails Envy

Episode #102 Introducing Fancy Buttons!

Ruby 1.9.1-p376 Released: Fixes A Heap Overflow Vulnerability And More

Uh oh, it’s upgrade time again. Today, the official Ruby 1.9 maintainer (Yuki Sonoda, a.k.a. Yugui) announced a heap overflow vulnerability in Ruby 1.9.1 and, subsequently, the release of Ruby 1.9.1-p376 (patch level 376). As the current production level release of Ruby, this is a crucial upgrade - unless you’re still using Ruby 1.8.x, which isn’t affected at all.

A few notes from a technical perspective - Momoro Machine

In the wee hours a few nights ago I wrote out a long-ish reply to someone on a listhost who asked for feedback about an early version of his webapp, on which he’d spent 9 months working with freelance developers.

I come off as a bit of an asshole, but a bunch of people replied with comments like “kickass response!”, so I thought I’d post it here.

[ANN] Ruby 1.9.1-p376 is out

Ruby 1.9.1-p376 just has been released. This is a patch level release of Ruby 1.9.1 and includes the fix of CVE-2009-4124.

Visualization of Ruby’s Grammar

As part of the momentum surrounding the Ruby implementer’s summit, I have decided to take on a pet project to understand Ruby’s grammar better, with the goal of contributing to an implementation-independent specification of the grammar. Matz mentioned during his keynote how parse.y was one of the uglier parts of Ruby, but just how ugly?

Well, judge for yourself.

Tree Testing - Boxes and Arrows: The design behind the design

A big part of information architecture is organisation – creating the structure of a site. For most sites – particularly large ones – this means creating a hierarchical “tree” of topics.

But to date, the IA community hasn’t found an effective, simple technique (or tool) to test site structures. The most common method used—closed card sorting—is neither widespread nor particularly suited to this task.

Some years ago, Donna Spencer pioneered a simple paper-based technique to test trees of topics. Recent refinements to that method, some made possible by online experimentation, have now made “tree testing” more effective and agile.

SproutCore Blog - Cut Your JavaScript Load Time 90% with Deferred Evaluation

In Faster Loading Throug eval() a introduced a new technique for improving load time of JavaScript applications called deferred evaluation. As a follow up to the micro-benchmarks I performed in that test, I wanted to see how much deferred evaluation could improve load time in a full end-to-end test.

Confreaks: JRubyConf 2009

JRuby conf videos (currently links are not working)

Restful_acl 3 0 is out | Matt-Darby.com

After a long hiatus, RESTful_ACL has been completely rethought, refactored, and thoroughly tested with Cucumber. Gone are the view helpers #creatable, #readable, #deletable, and #readable. In their stead is a new all-in-one view helper named #allowable?.

The Pragmatic Bookshelf | Metaprogramming Ruby

As a Ruby programmer, you already know how much fun it is. Now see how to unleash its power, digging under the surface and exploring the language’s most advanced features: a collection of techniques and tricks known as metaprogramming. Once the domain of expert Rubyists, metaprogramming is now accessible to programmers of all levels—from beginner to expert. Metaprogramming Ruby explains metaprogramming concepts in a down-to-earth style and arms you with a practical toolbox that will help you write great Ruby code.

The Pragmatic Bookshelf | Security on Rails

Security on Rails provides you with the tools and techniques to defend your Rails applications against attackers. Do you have a well-developed plan to test your application from a security perspective? Do you need more sophisticated access control? With Security on Rails, you can conquer the bad guys who are trying to exploit your application. You’ll see the very techniques that hackers use, and then journey through this full-fledged guide for writing secure Rails applications.

Software Craftsmanship – Katas » String Calculator

Roy Osherove and Gil Zilberfeld of TypeMock talked about the katacast series on their podcast, ‘This Week in Testing,’ and called me out to do Roy’s standard TDD practice, String Calculator. There are a few screencasts of this kata in C# linked from his page, which are well-worth watching. It is always interesting seeing the same kata performed in different languages. Ever eager to take up Roy’s challenge, I spent some time on the kata.

RubyConf 2009 Recap | Viget Extend

I was one of the fortunate few able to snag a coveted ticket for RubyConf 2009. The conference was excellent. The talks were some of the most information-rich and inspiring I have seen. I would like to share my reaction to a few of my favorite presentations, as well as the evening events.

Code: Flickr Developer Blog » Language Detection: A Witch’s Brew?

These days, language detection is really simple in most cases – just use the “Accept-Language” HTTP header, which pretty much every client on the planet passes to you.

“But wait!” I hear you cry. “I thought the Accept-Language header wasn’t to be trusted?”

“Ancient and outdated lore, my friend” I will reply. “Ancient and outdated lore.”

Chromium Blog: Technically speaking, what makes Google Chrome fast?

We’ve often been asked what makes Google Chrome so fast — from its snappy start-up time and fast page-loading, to the ability to run complex web applications quickly. To walk through some of the thought processes and technical decisions involved in making Google Chrome a fast browser, we’ve put together three technical interviews on DNS pre-resolution, the V8 JavaScript engine, and DOM bindings. In a future post, we’ll also cover other important areas like WebKit and UI responsiveness.

Debugging Ruby

Fixing Class Hierarchy In STI Under Development Mode [Article] « elc technologies

If you’re running your application in development mode, you may be frustrated when ActiveRecord seems to ignore the class hierarchy in your models, not loading any Apple objects when you call TreeFruit.find(:all). Blame this on the lazy class loading that development mode works with. You can avoid the problem at the cost of a few lines of code that explicitly declare your hierarchy without changing behavior in production mode, just make sure you do it correctly or you’ll end up loading Figs when you try loading Bananas (forgive my running with the silly fruit example). More after the fold…

RubyPulse :: Episode 0.21 - net-ssh-telnet - Provides a simple send/expect interface with an API almost identical to Net::Telnet. - mkent(at)magoazul(dot)com

Provides a simple send/expect interface with an API almost identical to Net::Telnet. - mkent(at)magoazul(dot)com

Railscasts - Screen Scraping with Nokogiri

Screen scraping is easy with Nokogiri and SelectorGadget.

Journal of Eivind Uggedal: VPS Performance Comparison

Summarizing the benchmarks gives us one clear winner: Linode. 32-bit gave the best results on the Unixbench runs while 64-bit was fastest on the Django and database tests. Since Linode also has the highest included bandwidth I have a hard time recommending any of the other providers if performance and price is most important for you.

Riding Rails: Ruby on Rails 2.3.5 Released

Rails 2.3.5 was released over the weekend which provides several bug-fixes and one security fix. It should be fully compatible with all prior 2.3.x releases and can be easily upgraded to with “gem update rails”. The most interesting bits can be summarized in three points.

Hash operations not sufficient to protect data assignment in Active Record - Ruby on Rails: Security | Google Groups

Rails’ documentation and others have recommended hash operations to

interact with data. This is not sufficiently secure. Developers should

use the whitelist method of attr_accessible or at least the blacklist

based attr_protected.

Pragmatic Programming Techniques: NOSQL Patterns

The aim of this blog is to extract the underlying technologies that these solutions have in common, and get a deeper understanding on the implication to your application’s design. I am not intending to compare the features of these solutions, nor to suggest which one to use.

The Ruby Plumber’s Guide to *nix

A Fresh Cup - Home - Rails 2.3.5 Unofficial Release Notes

Rails 2.3.5 is out but the official release notes have not yet appeared. So I thought it might be useful to share my own notes on what’s new in this version. This list is only the highlights, but it should give you an overview.

Amp: A Revolution in Source Version Control (in Ruby!)

Amp is a new Ruby based project that aims to “change the way we approach VCS” (version control systems). Currently it’s basically a port of the Mercurial version control system - a common alternative to the Git system that’s more popular in Rubyland - but it aims to abstract things to the point where it could be used in place of Git, Bazaar, SVN, CVS, Darcs, and so forth

Sprinkle – Automated Infrastructure for the Rest of us — Agile Web Operations

Sprinkle is based on capistrano and uses the same push model without any additional infrastructure. That makes it easier to use than the more heavy weight tools like puppet and chef. As long as your infrastructure is small enough, you might be ok with actively pushing out changes – if it becomes bigger, puppet or chef are the way to go. So, how did we setup things?

Django for a Rails Developer — The Usware Blog - Django Web Development

This is not yet another Django vs Rails blog post. It is a compilation of notes I made working with Django after having worked on Rails for years.

In this post I want to give a brief introduction to Django project layout from a Rails developer point of view, on what is there, what is not there and where to look for things. It should help a rails developer working on django be able to find the necessary files and underatnd the layout of the project files.

FOSSCasts - Episode 13 -GNU Screen - Free Linux, Unix, and Open Source Screencasts

This week we take a peek at GNU Screen - a terminal multiplexer. GNU Screen allows you to open multiple terminal sessions and easily switch between them from one terminal window. You can also disconnect from GNU Screen and your terminal sessions will stay in the background waiting for you to reconnected.

RubyPulse :: Episode 0.20 - progress-monitor - With progress-monitor you can easily add progress bars to your array/hash/integer iterator loops without changing your code.

With progress-monitor you can easily add progress bars to your array/hash/integer iterator loops without changing your code.

gist: 242751 - List of Rails CMS software- GitHub

Rails CMS alternatives

My top 7 RSpec best practices | Dmytro Shteflyuk’s Home

I use RSpec in all my projects. It’s really hard to overemphasize how helpful it is and how much easier becomes your life if you have good specs coverage. But its outstanding flexibility enables many ways to make your specs awful: horribly slow, over-bloated, even non-readable sometimes. I do not want to teach you BDD and RSpec here, but instead I will give you some ideas how to improve your specs quality and increase efficiency of your BDD workflow.

Rails Testing Optimization - Benchmark your tests - theAdmin.org - Ruby on Rails and Redmine

I’m a big believer in writing automated tests for applications. Whether it’s before coding or after, tests keep the application working and easy to maintain. But what can you do when the application and test suite grow and start taking a longer and longer to run? Redmine is starting to be affected by this problem, it’s current test suite is taking about 4 minutes to run. That’s 3 minutes too long for me.

There are several options for speeding up tests but how do you know which ones to speed up? How do you know if your changes actually helped?

WebROaR: Ruby Application Server - Blog

We are happy to announce the first public open source release of ‘WebROaR - Ruby Application Server’. This product is available for free use under GPL v3.

WebROaR aims to make the deployment of Ruby on Rails™ applications more easier, and provide an integrated solution to monitor the performance of the application and track its exceptions. This is facilitated by a simple and easy to use admin panel of the server.

High Scalability - High Scalability - Brian Aker’s Hilarious NoSQL Stand Up Routine

Brian Aker gave this 10 minute lightning talk on NoSQL at the Nov 2009 OpenSQLCamp in Portland, Oregon. It’s incredibly funny, probably because there’s a lot of truth to what he’s saying.

SQL is Dead. Long Live SQL! : Dataspora Blog

Outside of programming language flame wars, few questions raise the hackles of hackers more than: “how should I store my data?”

I will argue here, like many such debates , the answer is: it depends on what you’re building.

While the rise of non-relational data stores serves a much-needed niche, the death of SQL and relational databases has been much exaggerated. E.F. Codd may be dead, but SQL is alive and well as a simple yet powerful data query language.

Ruby version manager, Ubuntu and openssl / Ruby - cjohansen.no

RVM (Ruby Version Manager) is a hot tool which makes switching between Rubys (1.8.6, 1.8.7, 1.9.1, JRuby, you name it) as simple as `rvm use 1.9.1`. However, on Ubuntu, you may hit trouble when using the openssl package for any non-system provided Ruby version.

2009-01-03 - Today’s Ruby/Rails Reading
2009-02-13- Today’s Ruby/Rails Reading
2009-05-22- Today’s Ruby/Rails Reading
2009-05-25- Today’s Ruby/Rails Reading

This entry was posted on Wednesday, December 16th, 2009 at 2:09 pm and is filed under Ruby on Rails. You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

Leave a Reply

You must be logged in to post a comment.