This time I have an excuse for the non-weekly nature of the weekly digest... I've been traveling! Please do check out some photos if you're interested on that sort of thing.
Video of Node.js by Ryan Dahl at JSConf.eu
How to Begin Playing With Rails 3
Curious to take a look at Rails 3?
Sorta like a couch except smaller and outside, also, a client side JSON document store. Perfect for webkit mobile apps that need a lightweight, simple and elegant persistence solution.
stupid ruby tricks
Over the past few months of slinging Ruby here at Thoughtbot, I’ve picked up quite a few stupid ruby tricks smart ruby techniques that really help out your code.
Vanity: Experiment Driven Development for Rails
You’ve got your TDD, your BDD, your load testing, your user testing, your code metrics. All tools for testing your code and improving it. Here’s a question for you: what are you using to test your ideas?
SelectorGadget: point and click CSS selectors
SelectorGadget is an open source bookmarklet that makes CSS selector generation and discovery on complicated sites a breeze.
Ruby Kernel system, exec and %x
The Ruby Core Library documentation is very similar for Kernel.system, Kernel.exec and %x[..]. Recently I needed to kick off a system process, so I spent some time working with all 3 options.
Node.js is genuinely exciting
A Rubyesque interface to Gmail. Connect to Gmail via IMAP and manipulate emails and labels. Send email with your Gmail account via SMTP. Includes full support for parsing and generating MIME messages.
Version 1 Sucks, But Ship It Anyway
There's no question that, for whatever time budget you have, you will end up with better software by releasing as early as practically possible, and then spending the rest of your time iterating rapidly based on real world feedback.
New Amazon EC2 Feature: Boot from Elastic Block Store
You can now launch Amazon EC2 instances from an AMI backed by Amazon EBS (Elastic Block Store). This new functionality enables you to launch an instance with an Amazon EBS volume that serves as the root device.
The Stars Look Down
...much as you and I may enjoy being encouraged through recognition and praise and dislike being saddened by rejection or indifference... deriving personal value from these transactions... is just plain faulty thinking, of the sort that makes otherwise capable, centred people all loopy and weird.
Questions for Jeffrey P. Bezos
For every 100 copies of a physical book we sell, where we have the Kindle edition, we will sell 48 copies of the Kindle edition. It won’t be too long before we’re selling more electronic books than we are physical books. It’s astonishing.
The Streaming API allows you to monitor a room in real time.
Mounted Web Apps Sites
...and between the two of use we had a Pancake stack that was proxying to couchdb in pretty short order.
Converting Rails application data from MySQL to PostgreSQL
Our antiquely Perl-like script worked better than we expected — our application started right up with all of its data intact.
State of Ruby VMs: Ruby Renaissance
In a short span of just a couple of years, the Ruby VM space has evolved to more than just a handful of choices: MRI, JRuby, IronRuby, MacRuby, Rubinius, MagLev, REE and BlueRuby. In fact, keeping up with all of the most recent developments within each VM is now easily a full-time job. For that reason, and with RubyConf ‘09 in full swing, let’s take a quick survey of the space and where it’s taking us.
Odeo Releases Twttr
There is also a privacy issue with Twttr. Every user has a public page that shows all of their messages. Messages from that person’s extended network are also public. I imagine most users are not going to want to have all of their Twttr messages published on a public website.
Why I Don't Care That I'm Killing Music
...and brought to their knees they should be, without a doubt. For years they have enjoyed a monopoly, where they controlled the price of music and kept it artifically high to fuck us over. Personally, I don't think I would feel so good about stealing shit from people if they hadn't spent the last 4 decades rubbing our noses in it...
Three things about Marco Arment
All of this happens with zero intervention from me. Which means substantial, challenging prose that used to get skipped in the rush of the day now becomes available anyplace it suits me. In the line at the ATM. On a plane. Wherever.
Airfoil Speakers Touch 1.0.1 Finally Ships
The chorus of disenchanted developers is growing and we’re adding our voices as well. Rogue Amoeba no longer has any plans for additional iPhone applications, and updates to our existing iPhone applications will likely be rare. The iPhone platform had great promise, but that promise is not enough, so we’re focusing on the Mac.
Log in or sign up? - Leah Culver's Blog
...we have just added the concept of user accounts. This includes the need for registration and log in (as well as log out and forgot password and so on). Leafy Chat only requires an email address and a password for both registration and log in, so it would be great to have some clever way to have both forms on the homepage.
The Nerd Handbook
A nerd needs a project because a nerd builds stuff. All the time. Those lulls in the conversation over dinner? That’s the nerd working on his project in his head.
Hacker News: Help: I'm lost
From the outside you'd be amazed to know that inside I am in terrible turmoil. You know me because of code I've written, books I've published, and my contributions here. Perhaps you follow me on Twitter. But I have reached a point in my life where I do not know what to do, or where to turn.
Using the New Gem Bundler Today
As you might have heard, Carl and I released a new project that allows you to bundle your gems (both pure-ruby and native) with your application.
Using the Rubygems Bundler for Your App
The new Rubygems bundler makes managing your application’s gem dependencies easy. And for applications with many components, it makes separating components’ dependencies easy too.
Caching Tutorial for Web Authors and Webmasters
A Web cache sits between one or more Web servers (also known as origin servers) and a client or many clients, and watches requests come by, saving copies of the responses — like HTML pages, images and files (collectively known as representations) — for itself. Then, if there is another request for the same URL, it can use the response that it has, instead of asking the origin server for it again.
Interview with Ezra Zygmuntowicz – Engine Yard
The cloud providers are splitting into a few camps. On one side, you have companies like Amazon that offer infrastructure as a service (IaaS), and Google who offers platform as a service (PaaS). PaaS offers rapid development, and no server administration, but it locks you into a specific provider. Enter Engine Yard, a company that's enhancing Ruby on Rails to run on on top of arbitrary IaaS. In this interview Ezra Zygmuntowicz paints the picture.
CouchDB Twitter Clone Architecture
So I've been thinking through the architecture of a Twitter-esque system in Couch as a kind of thought exercise to get a better handle on some of the more difficult corners of view generation. What would be the most effective manner of creating Twitter-like status streams?
Understanding Access Credentials for AWS/EC2
Amazon Web Services (AWS) has a dizzying proliferation of credentials, keys, ids, usernames, certificates, passwords, and codes which are used to access and control various account and service features and functionality. I have never met an AWS user who, when they started, did not have trouble figuring out which ones to use when and where, much less why.
Multiple File Upload With Progress Bar Using jQuery
Today I am going to show you how to create a multiple file upload form that allows multiple file selection using Ctrl/Shift keys and also displays a progress bar for each of the selected files while they are uploading.
SWFUpload jQuery Plugin
When I first stumbled across SWFUpload about two years ago I was impressed by how easy it was to implement. However, their example code has always bugged me as being rather crap, having to assign a separate global event handler for each event, and the lack of multiple handlers for a single event.