Michael Jackson is dead

Posted June 25, 2009 by Brandon Zylstra
Categories: Uncategorized

Tags: , ,

CNN is not reporting it yet, Google News is not reporting it yet, but I have inside sources.
CNN is late with Michael Jackson news

How to Update All Your Ruby Gems At Once

Posted November 29, 2008 by Brandon Zylstra
Categories: Uncategorized

If you want to update every gem on your system, and don’t want to sit and do it one-by-one (and why would you want to do it one-by-one!?), here’s one way to do it. (I’m sure there are better ways, and I’d love to hear about them in the comments.)

sudo gem update `gem list | cut -d ' ' -f 1`

The gem list part, of course, lists all of your local (installed) gems. This list is passed to the cut command, which splits the output into columns (delimited by spaces) and takes the first column. The whole list of gems then become the arguments for gem update, and of course sudo runs the whole thing under administrator rights.

Oh, and, of course, this only works on systems like Mac OS X and Linux. If you’re on Windows you don’t need the sudo, and cut won’t work (unless you’ve got Cygwin installed—in which case it might work).

One Flash intro worth watching…

Posted September 2, 2008 by Brandon Zylstra
Categories: Uncategorized

You won’t want to skip this intro

Overcome Heroku’s “Permission denied publickey” problem

Posted August 29, 2008 by Brandon Zylstra
Categories: Rails, Ruby, Web Development

Tags: , ,

Heroku is awesome on paper (or screencast) but after following the directions it never worked for me. I couldn’t figure out why, and the Heroku discussion forum didn’t have any answers. But I think I’ve finally figured it out. (In the very least, I’ve finally gotten it working, which is the next best thing!)

Heroku (before today) would let me do everything except clone my remote apps to my local machine, which is more convenient, and in some cases essential (as when doing Rails apps with Hobo). Observe this:


$ heroku clone hobocookbook [/Data/Rails] [DrTeeth]
Initialized empty Git repository in /Data/Rails/hobocookbook/.git/
The authenticity of host 'heroku.com (75.101.141.116)' can't be established.
RSA key fingerprint is 8b:48:5e:67:0e:c9:16:47:32:f2:87:0c:1f:c8:60:ad.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'heroku.com,75.101.141.116' (RSA) to the list of known hosts.
Permission denied (publickey).
fatal: The remote end hung up unexpectedly
/usr/local/lib/ruby/gems/1.8/gems/heroku-0.3/bin/../lib/heroku/command_line.rb:37:in `clone': could not clone the app. Is git installed? (RuntimeError)
from /usr/local/lib/ruby/gems/1.8/gems/heroku-0.3/bin/../lib/heroku/command_line.rb:6:in `send'
from /usr/local/lib/ruby/gems/1.8/gems/heroku-0.3/bin/../lib/heroku/command_line.rb:6:in `execute'
from /usr/local/lib/ruby/gems/1.8/gems/heroku-0.3/bin/heroku:36
from /usr/local/bin/heroku:19:in `load'
from /usr/local/bin/heroku:19
$

If I may cut to the chase…it appears that the Heroku setup process assumes that the public key you give it will be your default or only public key, while in fact I made a key pair just for Heroku. So once I added some details to my ~/.ssh/config file:

Host heroku.com
Hostname heroku.com
Port 22
IdentitiesOnly yes
IdentityFile ~/.ssh/id_heroku
TCPKeepAlive yes
User brandon

So far as I know, this solution isn’t listed anywhere else on the web, but I found a tiphere that mentioned changing your default public key, which tipped me off as to what the problem was. (Of course now that I know the solution, I could much more effectively Google to see if anyone else has found it–one of the shortcomings of current search technology as a strategy for finding answers. The keywords you really want to use are the ones in the answer, but of course you don’t know those until you know the answer.)

Anyway, I hope this helps the legions of other people out there who would love to use Heroku but can’t because their use case was overlooked by the set up program.

Z I P T O N O M I C O N

Posted August 19, 2008 by Brandon Zylstra
Categories: Random Nonsense

It’s odd to see even very smart people who seem to believe that .zip is a PC archive format and Stuffit is a Mac archive format. This is clearly not the case, at least not for the last (oh, say, about) ten years. Zip is pretty much universal, and Stuffit archives can easily be opened on a PC. You just download the right utility, and you’re set, which for many years was the same situation you’d be in with a Zip file. (Until, of course, Microsoft Windows started to offer some limited .zip support built-in.)

Whenever I see this sort of thing, I always download the Stuffit format, just so that anyone who is comparing stats won’t think there are no Mac users out there.

Windows Mojave is all about deception

Posted August 18, 2008 by Brandon Zylstra
Categories: Uncategorized

Tags:

Microsoft got a bunch of users to take a look at “Windows Mojave” (which they dishonestly told them was an upcoming version of Windows) and lo and behold, they liked it.

Since sophisticated users have generally given bad press about Vista, Microsoft had to find a way to make unsophisticated users have a voice. Which would you prefer to listen to?

Designing User Experience Across Media

Posted August 7, 2008 by Brandon Zylstra
Categories: Uncategorized

Priceline is in the cruise business, and they have (what look like) some pretty cheap cruises.

They also have a usability problem.

If you heed their urging and call 800-735-8000, because “vacation consultants are available 24 hours a day, 7 days a week to help you plan your next cruise”, don’t expect to actually reach a vacation consultant. Instead you’ll get a voice-mail menu asking you to press 1 if you know the extension of the party you’re trying to reach…. Know the party’s extension!? How would I know the party’s extension!? I’m responding to an appeal on your web site to get help from these consultants who are standing by 24 hours a day. Press 2 if (blah blah blah)…

The problem here is not merely that voice-mail menus are inherently much harder to use than menus we can read, although that contributes to the user’s difficulty. The problem is that no one has designed the user experience across media1. The phone number is not set up specifically for the purpose of taking someone to these “vacation consultants”, but rather is a more general-purpose phone number for Priceline.

The creation of incoming phone numbers needs to be considered as part of the user’s navigation of a company’s information space. This includes web navigation and phone voice-mail navigation, and ties them together as one single multi-media web of information.

When I’m promised that calling a number will take me to these “consultants” (salespeople, really), I expect it to take me directly to them, and being faced with a series of decisions based on vague information is frustrating to me and going to kill the process and therefore likely kill the sale. (Since I’ve never been on a cruise, I want to be able to talk to a real person about what to expect, rather than sift through carefully presented marketing material which will tell me almost nothing of what I need to know to make an informed decision as to whether this is something for me.)

This is almost identical to what some news sites do when you click on a link on the home page that purports to take you to the complete news story, but instead takes you to another page full of links to other stories, amongst which is a link to the story you wanted to read2. It’s frustrating when the user makes a request (by clicking on a link or by calling a phone number) and then is faced with a whole new set of options, and must once again find their way to the thing they’d already requested. Those who do it may think you’re going to “buy” more of their product this way, like grocers who put their milk in the back of the store so you have to walk by all the other junk food they sell. But maybe you’ll just go shop somewhere else3.


  1. Yes, yes, of course I realize that the word mediausually refers (most of all) to the journalist-industrial complex, and (secondly) to their collection of materials used for propaganda, but hey let’s think this through together. Media is the plural of medium, and in Brandon’s Collegiate Dictionary medium is defined as the substance or (metaphorically) the conduit through which information passes.
  2. I think netscape.com used to do this, but it seems they’re not doing it now. Perhaps that changed when netscape.com began simply forwarding to netscape.aol.com.
  3. For my part, I prefer Trader Joe’s over Meijer any day, even though I feel some faint connection to the latter by way of my Dutch-ness. TJ’s doesn’t pull this kind of shenanigan, they have healthy products at lower-than-Meijer prices (and way lower if you compare prices with Meijer’s “health food” section), and it doesn’t require miles of walking to find anything in the store. (So much for an economy of scale!)

The Journalist-Industrial Complex

Posted August 7, 2008 by Brandon Zylstra
Categories: Uncategorized

In another post I made mention of the “Journalist-Industrial Complex”. Okay, so I was saying that with my tongue in my cheek. There is, however, at least one review of the world of journalism that you should take seriously: How the News Makes Us Dumb: The Death of Wisdom in an Information Society

Is Open Source Communist?

Posted August 7, 2008 by Brandon Zylstra
Categories: Uncategorized

So the Redmond PR machine has convinced many people that

open source software = communism
proprietary software = capitalism

but this could not, from all the facts I can see, be further from the truth.

Let’s review some of the characteristics of communism, as compared to some characteristics of capitalism, and decide which one is closer to the Redmond approach and which is closer to the open source movement.

Communism requires central control, with one all-powerful dictator.

While there may be some distribution of control at Microsoft (and probably more so now that Gates has retired), I don’t think any Microsoft developers are going to decide on their own to fork Windows and see what happens. There is very much a top-down hierarchy in place, and people do what they’re told.

And while Linus Torvalds has final say on what becomes a part of the official Linux kernel, he’s not deciding how all the Linux developers in the world spend their time. They have complete freedom to do anything they want, and it may or may not bear fruit. That sounds a lot like capitalism: I can try anything, and it may or may not sell on the open market. Linus just happens to be a big customer, but there’s nothing stopping someone from forking the Linux kernel and making their own. They wouldn’t be able to call it Linux, but they’re free to make what they want. Linus has freedom to decide what is called “Linux”, and they have freedom to take Linux and make something new with it. Freedom! Doesn’t that sound like capitalism, not communism!?

Communism makes a few very very rich, and the rest very very poor

If you “got in early” to Microsoft, you could be retired now and living on your own cruise ship. Just like those involved in planning the revolution in Russia or China (or wherever).

In Communism power is seized through force

Communist dictators were obviously not voted into office. (Although by deluding the public with visions of great improvements to their lives that were never delivered on, they did gain a lot of popular support.) Looking at a history of Microsoft you’ll see that they lie cheat and steal their way to success. They steal innovations from other companies and bring them to market more forcefully. This leads to the next point.

There is very little innovation under a Communist regime

Very little original work comes from Redmond nothing that I can think of, and I’ve been looking for something original from them for years. When I thought I found something that they originated the task bar I discovered it was a combination of the dock from NeXT and the menu bar from the original Mac OS. (Drag the Windows task bar to the top of the screen, then compare with an old Mac running OS 9, and you’ll see what I mean. Anything not stolen from the Mac OS was stolen from NeXT.)

Communism depends on propaganda

No one that I know of has a better PR machine than Microsoft.

So there is this one similarity that Redmond (et al) are (no pun intended) capitalizing on: capitalism allows people to earn money for their work, and so does proprietary software. However, this similarity is tangential at best.

Are people compelled in a capitalistic society to work only for money? No, of course not that would be absurd. How many volunteer movements do you think started in the Soviet Union? How many do you think started in the United States?

Does open source software prevent people from making money for their work? No, not really. It might prevent them from making money from the software, since it is usually largely the work of others, but there are many very successful open source software businesses, making bundles of money from support. Open source software in no way whatsoever precludes making money, it just prevents you (in many cases) from making money from someone else’s software. Under the Gnu Public License, if you modify (improve) someone else’s open source software, you can’t turn around and sell it your improvements must be given away freely as well. But the MIT license is growing in popularity, and it does not preclude selling the software you build using code you nabbed from someone or some where else. So not only does open source software in no way preclude making money, in some cases it doesn’t even limit how you make money.

How to use Ruby in TextMate Snippets and Commands

Posted July 25, 2008 by Brandon Zylstra
Categories: Ruby

Tags: , ,

Dr. Nic, one of our favorite Aussies (along with Ray Ozzy), posted a screencast on how to create TextMate snippets with Ruby embedded in them, as well as how to create commands with Ruby. Here’re the Cliff’s Notes versions of a snippet and command that will guess the class name you want to use based on the file name:

Snippet with Ruby

class ${1:`#!/usr/bin/env ruby
require 'rubygems'
require 'active_support'
puts ENV['TM_FILENAME'].gsub(/\.rb$/, '').camelize
`}
$0
end

Command with Ruby

#!/usr/bin/env ruby
require 'rubygems'
require "active_support"
puts <<-EOS
class ${1:#{ENV['TM_FILENAME'].gsub(/\.rb$/, '').camelize}}
$0
end
EOS

He mapped these to “cla” in the bundle editor, but I recommend avoiding abbreviations. You’ll spend more time trying to remember how you abbreviated something than you’ll save by not typing two lousy characters.

The screencast’s volume is really low, so you’ll need to plug those external speakers into your laptop and crank the volume to what would normally be deafening levels just to hear him. The little tinny speakers on your MacBook won’t cut it this time.