• "Sheetsee.js is a JavaScript library, or box of goodies, if you will, that makes it easy to use a Google Spreadsheet as the database feeding the tables, charts and maps on a website. Once set up, any changes to the spreadsheet will auto-saved by Google and be live on your site when a visitor refreshes the page." This is good.
  • "All it takes to get a website going for a repository on GitHub is a branch named gh-pages containing web files. You also don’t need a master branch, you can have a repo with just one branch named gh-pages. Here is what I think is really cool, if you fork a project with just a gh-pages branch, you’re only a commit away from having a live version yourself. If this repo being forked is using sheetsee.js then everyone is a fork, commit and spreadsheet away from having a live website connected to an easy (a familiar spreadsheet UI and no ‘publish’ flow because Google autosaves) to use database that they manage (control permissions, review revision history)." Very smart.
  • Hosted statistics tool with attractive interface and smart API. Not cheap for its single-tier plan ($99/mo), but looks like it might be worth a poke.
  • "His base is too good, and I don’t have the choke. He proceeds to take a more dominant position, scores points, and my body is burning from the effort. The choke he applies toward the end of the match is almost a formality, since I’m far too tired to do much more than hang on. Second place. Second place because I’m learning the triangle choke, not learning Jiu Jitsu. Chipp never wins tournaments." A fantastic piece of writing, about beat-em-ups and combat sports, and the mindset you get into as you play both. I'm not a combat sports man, but it nails some of the inside of your brain when you've played a lot of beat-em-ups, for sure.
  • "But to my eye, GIF is the most popular animation and short film format that's ever existed. It works on smartphones in millions of people's pockets, on giant displays in museums, in web browsers on a newspaper website. It finds liberation in constraints, in the same way that fewer characters in our tweets and texts freed us to communicate more liberally with one another. And it invites participation, in a medium that's both fun and accessible, as the pop music of moving images, giving us animations that are totally disposable and completely timeless."
  • "My wife and I talk about this. We talk about the protocol of the fertility clinic. We talk about her support group, and failure to produce. We talk about adoption, which is expensive and ambiguous. We talk about giving up on the process and living our lives without the ghosts of unconceived children (the most adorable ghosts there are). We talk, and talk, and wait." Powerful, sad, brave writing from Paul Ford. Sometimes, you wish things were nice for the good people in the world.
  • "I needed to get up to speed with doing recursive node structures so I coded up a project that would put a dot on the screen. When you tapped this dot, it would create a bunch of orbiting child-dots. These children could also be tapped, creating even more child nodes. This prototype took less than a day to create and I naively thought we would be done with the whole thing in a week, max. Silly me."

    Marvellous, dense post from Robert on designing Planetary: lots of show-everything, material exploration, and plussing. What detail looks like.

  • "Years later, when recounting his conversations with Beckett (which he did often), André the Giant revealed that they rarely talked about anything besides cricket."
  • "In this scenario one sunny day you're working on low-level NoSQL projects at the Gootch or wherever, and you get an email from Facebook and you go for the interview and Zuckerberg is talking about scaling PHP and suddenly pauses, gets this look in his eye, pulls his hoodie over his head and says “You have sixty seconds. You should be running.” Because engineers, as we are often reminded, are the ultimate prey."
  • "A problem with the human mind – your human mind – is that it's a horrific kludge that will fail when you most need it not to. The Ugh Field failure mode is one of those really annoying failures. The idea is simple: if a person receives constant negative conditioning via unhappy thoughts whenever their mind goes into a certain zone of thought, they will begin to develop a psychological flinch mechanism around the thought. The "Unhappy Thing" – the source of negative thoughts – is typically some part of your model of the world that relates to bad things being likely to happen to you."
  • "Designers get handed a tool kit that has as many tools as a good swiss army knife, and the maps reflect these tools. Millions of people use them to make appointments across town, find restaurants, and drive home for the holidays.

    But what if, instead of a swiss army knife, we used a box of crayons? Or charcoal and newsprint? Or play-doh? What would those maps look like? What could they tell us about the world?"

  • "One thing that I learned during the launch of the original Macintosh in 1984 was that the press usually oversimplifies everything, and it can't deal with the reality that there are many people playing critical roles on significant projects. A few people always get too much credit, while most people get too little, that's just the way it has always worked. But luckily, it's 2011 and I can use the service that I helped to create to clarify things." This is Good And Proper. (Also it's good management).
  • How ads used to be made. Some beautiful photographs here.
  • Useful notes on the modern way of deploying Rails applications with Bundler and Capistrano.
  • '"The expectation is slightly weird here, that you can do this stuff without killing yourself," added McNamara. "Well, you can't, whether it's in London or New York or wherever; you're competing against the best people in the world at what they do, and you just have to be prepared to do what you have to do to compete against those people."'

    This is what McNamara considers responding to controversy. I'm furious that men like this are allowed to manage other human beings.

  • "This is an atlas, then, made by that other nature, seen through other eyes. But those eyes have been following me, unseen and without permission, and thus I consider provoking breach a necessary act." This is good.
  • "csvkit is a library of utilities for working with CSV, the king of tabular file formats." Ooh.
  • "Synapse is an app for Mac and Windows that allows you to easily use your Kinect to control Ableton Live, Quartz Composer, Max/MSP, and any other application that can receive OSC events. It sends joint positions and hit events via OSC, and also sends the depth image into Quartz Composer. In a way, this allows you to use your whole body as an instrument." Oooh. OSC into anything; really nice, dead simple, and exactly the sort of thing I've been considering poking.

Heroku – a new addition to the toybox

05 March 2009

You can now find out what Schulze – or anyone else, for that matter – is listening to (as described in this post) on the web; just head on over to http://wotlisten.heroku.com.

The utility of the original command-line script is now diluted even farther – mainly because you now have to go to the website to scrape the web – but that wasn’t really the point of putting wotlisten online; the point was to see just how easy deploying to Heroku really was.

The answer is: remarkably so. I wrapped the original script into a little Sinatra application, with two views, and a tiny bit of error handling for convenience. Sinatra’s something I’ve been playing with for a while now: it’s really excellent for wrapping small scripts into little webapps with the bare minimum of extra code, and when combined with lightweight tools like DataMapper, and sqlite, just powerful enough for the lightweight tinkering I seem to do so much of. If you’re a Ruby developer and you haven’t played around with Sinatra, you owe it to yourself to check it out – it’s a lovely library to have in the toolbox.

With the webapp written, I installed the heroku gem, which helped me create a new remote git branch pointing at my Heroku account. Deployment is trivial – far simpler than using something like Capistrano; all that is necessary is to push my master branch to the heroku remote, and upon a successful push, Heroku notices that I’ve pushed out a Rack application – and it directs requests to it automatically.

It took about ten minutes to write the Sinatra app, and another ten to get it up and running on Heroku; the single snag I ran into was the same as Tom did – the need to unpack haml into a vendor directory.

I’m very, very impressed. It’s all very well being able to build small, trivial toys like wotlisten, but it’s often a hassle to deploy or configure them. Heroku really takes most of that pain away, and makes setting a tiny Sinatra app live a trivial task. It’s definitely going into my toolbox – or, perhaps, that should be toybox – for the near future.

Pulling from Git over a non-standard SSH port

13 October 2008

I must have lost about six or seven hours trying to get a Rails application deploying from Git in the past week. I could push and pull from the repository, but could I get the thing to deploy via Capistrano? No, I could not.

The problem, as far as I could tell, was not with Capistrano. It was a simple SSH problem. I block port 22 for SSH on the server in question, for security reasons, and use a different port. But, no matter how I specified it, Git was insistent on trying to pull over 22. I did a lot of Googling, and found lots of conflicting answers, none of which worked.

And then I learned my lesson. That lesson is: when Linus tells you what to do, you do it:

Use the “.ssh/config” file ;)

So I configured a hostname in .ssh/config on the server, and everything worked instantly.

A lot of problems tend to come down to SSH, it seems. After that point, everything went swimmingly.