Podcast recommendations (2)

Recent entry April 28, 2008

I am a big fan of podcasts. I have roughly one hour of daily bicycling to and from work, and roughly the same amount of walking the dog, both of which are perfect time to listen to podcasts.

My brother recently asked me for podcast recommendations and I figured I might as well share my podcast playlist with him, you, and the rest of the world.

Audio only

General tech

Business stuff

Development/programming

Humour

Video

Some time ago we bought a Mac Mini for our living room, and since then, video podcasts have been one of - if not the - main source of media intake in our daily lives. The stuff we see:

Your recommendations

Please, let me know in the comments if there are any obvious podcasts I am missing.

, 2 comments

Rails project launcher (1)

Recent entry April 25, 2008

Jesper asked on the Copenhagen Ruby Brigade mailing list what scripts and tricks use to launch their environment when developing Rails projects on OS X.

iTerm shell script

A bunch of people pointed to this handy iTerm shortcut, which uses Applescript invoked from a shell script to start the environment. I use roughly the same approach, however it’s wrapped in an Automator workflow, which I launch using Quicksilver.

Automator workflow

Basically what the workflow does is ask me to pick a project, then it fetches the most recent version of the application, runs any missing migrations, starts script/server and autotest, launches TextMate with the project source, and iTerm with the most recent commit messages, the test log and the development log. This saves me so many keypresses.

It’s a modified version of a workflow I found somewhere on the net. Unfortunately I cannot find the original source now, so I cannot even give credit where it’s due. Download it here.

View it in action

You can see it in action below (the text is terribly hard to read unfortunately, but it shows how the process looks at least):


Launch Rails project from Jakob Skjerning on Vimeo.

, , 1 comments

Podcasts as marketing vehicles (1)

Recent entry March 10, 2008

Apple, please make it easier for us to consume Steve…

Why is there not a single podcast I can subscribe to, so the HD versions of the most recent Apple keynote, iPhone SDK announcement, or any other reality-distortion-field-spreading event automagically appears on my media center Mac, iPod or iPhone?

As it is now, I have to wait for the video to appear on the website, then open iTunes, then find the podcast, then fetch the single episode, and then wait for that to download. And finally I can view it on my TV. If they instead provided a proper podcast, the iPhone SDK presentation would’ve been waiting for me when I got up this morning.

Apple has probably the biggest podcast aggregator in the world with the iTunes Store. They have near-ultimate dominans on the market for portable audio and/or video players. They have one of the most loyal and fanatic fanbases in the world. They provide high quality videos of their special events and the fanbase is slurping it up. Their marketing machine is highly effective at creating buzz.

They already have all the pieces of the puzzle, they just need to put it together.

They could even provide a podcast of their ads and people would subscribe. It’s free advertising directly to the computer, living room, or pockets of interested customers.

, , , 1 comments

Launch: Børn i byen (2)

Recent entry March 10, 2008

This is probably one of those posts, that I ought to in Danish, oh well…

The recent weekend marked the launch of Børn i byen (that’s “Children in the city” for you danishly-challenged readers) - a user-driven guide to Copenhagen focusing solely on parents and their children.

Børn i byen frontpage

People are already blogging about it and judging by the comments, people are liking it.

Since December I have been part of the Børn i byen team. Even though I have no kids, I was added to the project - on recommendation from Lars to assist the original developer and the rest of the team get a launchable product out the virtual door.

On the technical side of things, it’s all Ruby on Rails, using Blueprint for the CSS, Capistrano for deployment, Comatose for a lightweight CMS, Geokit for the Google Map stuff, and Carolines espresso machine for fuel.

, 2 comments

Double u double u double huh? (9)

Recent entry January 31, 2008

It’s about time we kill the “www”. I don’t mean the World Wide Web, obviously, but the three letters that appear at the beginning of a plethora of website addresses.

Seen from a human perspective they serve very little purpose these days. Sure, many people believe they are required - and in some cases they are due to technical oversights - and will happily enter them in the address bar.

It could be argued that they make it easy to recognize a website address. I agree, everybody recognizes “www.example.com” as a website address. However, my guess is that people are just as likely to recognize “example.com”. The dot and the 2-4 letters following it are what makes a website address - both on a technical level, but also in peoples minds.

Why it’s bad

The World Wide Web is the only thing I know of whose shortened form takes three times longer to say than what it’s short for.
– Douglas Adams, The Independent on Sunday, 1999

When to use www

There is, however, at least one situation where you want to put the www in front of your domain name: When writing website addresses in an email or online forum or anywhere you can’t or won’t manually create a link.

The abbreviation provides an excellent hook for text to HTML parsers to grab on to and turn your address into an actual link. The alternative is using “http://” in front of the domain name and frankly, and while computers might love that, it’s ugly and not terribly friendly to your fellow human beings.

Obviously websites should still respond when there’s a www in the domain name, but they should never require it.

For all intents and purposes, just forget that www ever existed in your domain name. Only use it when there’s a benefit, and in a year or so, think back on all the keystrokes you’ve saved, and remember where you heard it first; on mentalized.net.

, , , 9 comments

BarCamp Copenhagen (0)

Recent entry January 18, 2008

I am going to BarCamp Copenhagen on Friday. This being my first encounter with the BarCamp concept I have pretty much no clue what I am going into, and I am both excited and a tad nervous - I mean, it’s not every day one looses ones BarCamp virginity.

Looking over the list of attendees I can’t help but notice that quite a few Ruby developers - many from the jolly Copenhagen Ruby Brigade crew - are attending; we’re making up 10% of the attendees.

I probably won’t be giving a talk there unless I am hit by a massive amount of inspiration particles before then, but seeing that Casper is presenting I am sure the good word of Ruby will be spread. I will make sure to contribute in some other way at the event, though - in accordance with the rules of BarCamp

I am looking forward to it - and it’s probably a good idea to read up on the whole concept before Friday.

, , , 0 comments

What’s the definition of definition list? (3)

Recent entry December 6, 2007

According to the HTML 4 specification a definition list can be used to mark up dialogues. Mark Norman Francis objects to this, and in “his article on 24 ways” he goes on to claiming that using definition lists for anything but glossaries, lexicons and dictionaries is a crime against markup:

Living by the specification, a definition list should be used for term definitions – glossaries, lexicons and dictionaries – only.

Hm, no. Living by the specification, a definition list should be used for what the specification states it should be used for - and that includes dialogue even if we don’t find it particularily apt or pretty. The specification states

Definition lists vary only slightly from other types of lists in that list items consist of two parts: a term and a description.

However, living by the screen readers (which appears to be partly what Mark is arguing we should), Marks conclusion is correct: Definition lists should be used solely for cases where a term equals a definition, since that’s how screen readers present it.

That’s all theory

But all the above is purely theoretical blabber. In the real world where we craft website that are usable and accessible, I might agree with Mark that it’s probably not sensible to use definition lists to mark up those cases where X doesn’t equal Y. - especially if you want to be supportive of your blind, screen-reader-using visitors (and who doesn’t).

Definition lists for forms

I have a tendency to use definition lists for forms, and Marks article haven’t changed my mind about that.

In the context of a login form, the “Password” does indeed equal the password input field - at least assuming the user enters the proper password. I’d even argue that the term “Password” is also defined by the descriptive help text of the form, which therefore could also be put into a dd element - all while adhering to the specification.

I won’t go as far as claiming that it’s a good use, and I have not performed any kind of usability test with screen readers. But it’s definitely a valid use within the specification - no matter what some screen reader (literally) says.

, , , 3 comments

FreeTDS connection issues (1)

Recent entry December 6, 2007

Mental note to self (and everyone reading here): If using FreeTDS on OS X and you cannot connect to your MS SQL Server using iodbctest , but you can con using tsql, and your TDSDUMP logfile contains

tds_iconv_info_init: client charset name "" unrecognized

make sure you have put

client charset = UTF-8 

into your freetds.conf - not

client charset = utf-8

Note the case difference.

I can’t believe the amount of hours I have wasted setting up FreeTDS and ODBC connectivity on various systems by now - and still I get bit by crap like the above.

, 1 comments

On Rails 2.0, SQL Server adapter, gems, vendor and load paths (0)

Recent entry November 22, 2007

Over the last few days I have been moving the BiQ application to Rails 2.0 PR. I’ve so far run into a fair deal of issues; one annoying one that I figured I’d share.

The gist of the matter is that creating some of my models failed in some cases. It appeared to be primarily when the save triggered an insert into another table as well.

Digging around a bit, I traced it down to the fact that the newly created model was given an id that didn’t match the id in the database. The reason for that turned out to be quite the sneaky little bastard…

First a few important facts

  • We’re using SQL Server 2000. As of Rails 2.0 the SQLServerAdapter is no longer included in the core Rails distribution and must be installed separately. No biggie, I’ve put it in /vendor and made sure it gets loaded and used.
  • I have Rails 2.0 installed in /vendor/rails as well.
  • SQLServerAdapter uses a separate SQL query to find the id of the last inserted row.
  • Rails 2.0 introduces a funky query cache that caches results of selects and clears the cache when a DB changing query (inserts, updates, delete) is issued.

All of this is perfectly fine and working in the majority of cases. However looking at the log for the failing test cases, the following line stood out like a pimple on a babys bottom:

CACHE (0.000000) SELECT @@IDENTITY AS Ident

No wonder I am getting wrong ids for my models when ActiveRecord is returning a cached value (ie the id of the first inserted model).

However, it seemed odd that it would even be able to get a cached value, since the query immediately before the cached one is an insert statement. And as mentioned above, the query cache is cleared after an insert, so the cache should be perfectly clear at that point.

Digging vendor

Digging into my vendored Rails directory (much love for /vendor), it slowly became obvious that clear_query_cache was never actually called as part of that insert. Digging a bit further, it appeared insert_sql of my SQLServerAdapter wasn’t called at all.

At this point I was highly confuzzled - even more so after verifying that the SQLServerAdapter in /vendor is indeed loaded and used. Getting desperate, I searched the entire application and ruby directory for occurrences of @@IDENTITY, found 2 relevant ones and replaced each with a bogus statement.

Lo and behold, I got an exception from ActiveRecord with a stack trace clearly telling me that it was raised in my gems directory. Rails was using the SQLServerAdapter from the installed, old ActiveRecord gem for doing the insert - a version of ActiveRecord that naturally has no idea that a query cache even exists. Not only am I confuzzled, Rails is as well.

Resolution

And I don’t blame it. My loading of the SQL Server Adapter was highly unorthodox it appears. In the end, all I have to do to make it work is make sure I’ve added my vendored SQLServerAdapter to my loadpaths:

# Add additional load paths for your own custom dirs
config.load_paths += %W( #{RAILS_ROOT}/vendor/activerecord-sqlserver-adapter/lib )

Hey, I even learned something

Gotta love these things. I did, however, learn a few things from this debacle:

  • Having a staging site/continous integration server is pure gold. I have the Rails 2.0 PR gems installed locally, so the bug was not caught until CruiseControl.rb started spamming me; it only has the Rails gems used in production available.
  • I should probably look into a proper solution for vendoring gems - oh say, like this from Chris Wanstrath or this from Dr. Nic.
  • Open Source software is awesome. I was able to investigate all the way down to how gems were loaded in Rails simply because I had the code readily available - and the stack trace with line numbers to tell me where to look.

Back to rewriting my fixtures to go with the Foxy Fixtures style, mmmmm.

, , , 0 comments

Inbox Zero - two months later (3)

Recent entry October 23, 2007

A few months ago I made a public commitment to practicing Inbox Zero for a month. I cleaned out my inbox daily for a month, I still am, and I intend to continue doing so.

It has made my inbox a happy place instead of a guilt-inducer. I feel I am more responsive - and I hope people who have emailed feel that way as well - and in particular no people should be slipping through the cracks and be ignored.

Now, I must admit that I do cheat on occassion. A few times an email that I simply couldn’t be bothered dealing with at the time - or that I knew I would be dealing with in a short while - have been allowed to stay in my inbox. But other than those few times I have gone to sleep with an empty email inbox.

An empty, non-work inbox, that is. I still haven’t tackled my email inbox at work. The primary reason for this, is the fact that I haven’t yet set up a to do list that I can forward my emails to. For my personal and freelance stuff, I use GooToDo, but that unfortunately throws everything into one huge list, meaning my work tasks would be mixed with my private stuff which I don’t want.

I hearthily recommend you read Merlin Manns introduction to Inbox Zero and try it out for a while if you feel opening your email client has become a burden. Email is meant to make communication easier, not to bog you down.

, 3 comments

Archives
More entries in the archives »
What is this?
This is the virtual home of Jakob Skjerning, a system developer from Copenhagen, Denmark. Find out more...