Martin Ström

The My Domain Tote Bags!

Tote Bag

Finally they’re here — The My Domain Tote bags! Most of them are at WWDC in San Francisco right now so if you’re here, grab/ping me (@haraldmartin) for a free bag.

The bags are made by Peter Ström (also my brother) from Konst & Teknik <3 <3 <3 <3<3.

100% height CSS for IE7 and more

I needed an element with a background to be 100% height and the usual solutions didn’t seem to work for this project. The problem with the other solutions around the web is that they either work when the page is short and without scrollbars, or they just work for longer page (with scrollbar).

A friend reminded me to set the element to display: table;, but said it might now work for IE7. He was right and here’s how to make it work for everyone.

The element I want full height for is .document and the base structure for the html is:

The CSS which works is:


December 5th, 11:30–24:00
@ Rutger Fuchsgatan 9 in Stockholm

Welcome to the 12 hour film screening FREE KEVIN

Curated by Pirateturk, organized by Laurel Ptak and hosted by Konst & Teknik & Martin

FREE KEVIN is an ongoing and roving screening series from a collection of 15.4 GB of downloaded films and documentaries depicting hackers and related computer culture from the 1980s–2000s. A range of material including blockbuster films, educational television programming, and documentaries produced within the hacking community will be presented in various cities worldwide over the next year in order to stimulate dialogue around issues of intellectual property and open culture.

The title FREE KEVIN is an appropriated slogan that was originally used by the hacker community in the 1990s to protest the arrest of Kevin Mitnick, a legendary hacker who at the time was the most wanted computer criminal in United States history. Mitnick’s story is of interest (and depicted in several films in the screening series) for its fascinating particularities concerning hacker culture, intellectual property, and media representation historically, but at the same time it also functions as a contemporary symbol. If anything, the struggle over intellectual property has only intensified in the last decade and FREE KEVIN can be read as the embodiment of resistance in an ongoing struggle for rights and freedoms from corporate and state control in an information age and economy.

Read more



11:30 — Doors open

WARRIORS OF THE NET, 1999 (0:12)

12:20 — PIRATES OF SILICON VALLEY, 1999 (1:36)
A 1999 film based on the book ‘Fire in the Valley: The Making of The Personal Computer’ by Paul Freiberger and Michael Swaine. It [...] documents the rise of the home computer (personal computer) through the rivalry between Apple Computer and Microsoft.

14:00 — THE HISTORY OF HACKING, 2006 (0:50)
A quality documentary about hacking from the 1960s to date. Takes a historical approach, looking at the role of the hacker during this time.

15:00 — ANTITRUST, 1:49 (2001)
Antitrust portrays young idealistic programmers and a large corporation (NURV) that offers significant money, a low-keyed working environment, and creative opportunities for those talented programmers willing to work for them. The charismatic CEO of NURV seems to be good natured, but recent employee and protagonist Milo Hoffman begins to unravel the terrible hidden truth of NURV’s operation.
Freedom Downtime is a 2001 documentary film sympathetic to the convicted computer hacker Kevin Mitnick, directed by Emmanuel Goldstein and produced by 2600 Films.

19:00 — WAR GAMES, 1983 (1:48)
The film follows David Lightman (Broderick), a young hacker who unwittingly accesses WOPR, a United States military supercomputer programmed to predict possible outcomes of nuclear war. Lightman gets WOPR to run a nuclear war simulation, originally believing it to be a computer game. The simulation causes a national nuclear missile scare and nearly starts World War III.

21:00 — OUTLAWS & ANGELS, 2002 (0:49)
Documentary about the current issues surrounding Hackers/Crackers! What is Illegal should be called Crackers not Hackers!!

22:00 — HACKERS, 1995 (1:45)
Hackers is a 1995 American thriller film directed by Iain Softley and starring Angelina Jolie, Jonny Lee Miller, Renoly Santiago and Matthew Lillard. The film follows the exploits of a group of gifted high school hackers and their involvement in a corporate extortion conspiracy.

All descriptions downloaded from Wikipedia and Google Video


Bring your own device and headphones (optional)!

All 29 films from the Pirateturk created torrent file — including the ones not beamed — will be streamed to Macs/iPads/iPods/iPhones over WiFi during the event. Bring your own device and headphones and hang out in a corner with your film of choice!
The complete list of films can be found at


Good to know

  • Drinks and (junk) food will be for sale (cash only)
  • Limited amount of seats (first come, first served)
  • You will have to take off your shoes because of sensitive carpets (!) — but indoor shoes can of course be brought
  • Feel free to come and go as you please
  • Extra thanks to Daniel Eskils



    Sunday December 5th 2010, 11:30–24:00

    Rutger Fuchsgatan 9, 11667 Stockholm, Sweden
    (Subway: Skanstull)

    Download as PDF

    For Free!

    More info:
    Show & Tell

    Best wishes,
    Pirateturk, Laurel Ptak, and Konst & Teknik & Martin

  • TwitterFax

    The TwitterFax is a small project done together with Konst & Teknik. It will watch a given Twitter username for mentions and then print it, together with any twitpics or yimg images attached to it.

    The code is pretty simple and uses the Twitter gem for communicating with Twitter and Prawn to genereate the PDF’s. I’ve set it up to run every 15 minute using a Cron job.

    Check out the full source code. You’ll need to change what typeface to use or get LucidFaxEFRom.ttf from somewhere else.

    So go ahead and mention @konst_teknik to try it out!

    Google Email Uploader

    For different reasons I have many different Google accounts and wanted to merge them all into one Google Apps for Domain account. I also wanted to upload email from the past years to that account.

    I’ve tried before to move a lot of messages between Google/Gmail accounts by just dragging the messages from one IMAP account into another (using a regular IMAP client such as Thunderbird or Mail), but it never works for a lot of messages. Then I found out about the Google Email Uploader tool, and gave it a try.

    My first attempt was to use the Mac version of Google’s Email Uploader and just upload all messages I had downloaded in my local OS X Mail setup. The upload was supposed to take around 18 hours and I tried twice but both times, the uploader seemed to get stuck on some message(s).

    I downloaded the source for the app and tried to figure out if I could patch the app to make the work easier. But instead of digging through all code, I thought I should give the Windows version a try instead. It has been around for a longer time and therefore probably a bit more reliable.

    So I set up Thunderbird in my Windows installation (running VMware Fusion), and downloaded all messages from my IMAP server, and then uploaded them using Google Email Uploader for Windows. Everything went smooth and took about 20 hours.

    For the next batch I imported the messsages into Thunderbird for Mac and then used the uploader tool for Mac. This time it worked great (but was fewer messages).

    So, lesson learned: Try to import the messages into Thunderbird if the uploader get stuck when uploading from If that doesn’t work, try the Windows version.

    TextMate command to copy an txmt:// url to the current file

    I’ve been using this TextMate command for many years to copy an URL to the current file and then paste into a bug tracker/todo list or something.

    Push notifications for Things Touch (iPhone/iOS) using Prowl

    While waiting for Things Touch to officially support push notifications I hacked my own solution based on Prowl and my own Ruby library for Things, things-rb.


    1. I’ve setup Dropbox to share my Things database betweeen my laptop and a computer at home which is always online.

    2. Buy and install Prowl on your iOS device.

    3. On the home computer/server, install things-rb:

      $ (sudo) gem update --system # if you're on an older RubyGems version
      $ (sudo) gem install things-rb

    4. ..and the prowl gem to talk to the Prowl API

      $ (sudo) gem install prowl

    5. Save this file somewhere (like ~/bin/prowl_things.rb)

    6. Setup a cronjob to run the script as often as you’d like. Mine runs every weekday at 8:45 am.

      45 8 * * 1-5 /usr/bin/ruby /Users/me/bin/prowl_things.rb

    Nicer public Dropbox URLs

    I use Dropbox but wanted nicer URLs for the links I sometimes send to the files in my Public folder. Each user has a folder on which is publicly shared, like this so I just set up a new sub domain (mine is and let Apache redirect all requests to that domain to my Dropbox folder instead:

    <VirtualHost *:80>
      RewriteEngine on
      RewriteRule ^(.*)$$1 [R,L]

    Download torrent files from Twitter DMs

    Here’s a simple ruby script to download torrent files in Safari sent to you/an account as URLs in Twitter direct messages.

    It could be used on your home server to download torrent files you send to it from something like your iPad.

    I’ve set it up to run every fifth minute (using cron) to check for new files, but can of course be adjusted to something that works for you.

    Also, make sure to point Safari’s download folder (in Safari’s preferences) to the same folder as you have Transmission automatically watch for .torrent files so the download actually starts.

    Paperclip processor to turn images into grayscale

    We wanted to automatically create a grayscale version of the uploaded images for a current project. Here’s the Paperclip processor we’re using:

    A better Mail-to-Things-ToDo script

    Until now I’ve been creating todos in Things from Mail messages in OS X using the quick entry built into Things and the “autofill” feature. But I didn’t like that it, by default, created the todos in Things’ Inbox and that I had to manually select text in the mail message to get it as notes (which is important when using Things on your iPhone/iPad when the link back to the mail message doesn’t work).

    Instead here’s an AppleScript which will take the selected message(s) and automatically create one task for each email in the “Next” focus in Things. It will then archive the mail messages and show a Growl notification. The todos in Things will get tagged with the “Reply” tag (which in my setup is a subtag of “Email”).

    The script is a modified version of the one found here. I also put the script in an Automator action like described in the article so you can assign a shortcut key to it without including third party software.

    QuickTip: Change Finder’s default folder

    #protip: Change Finder’s default folder to one you often use (like ~/Projects or whatever) than a minute ago via Tweetie

    Open Selected Folder or File in TextMate from Finder


    Before upgrading to Snow Leopard I had a QuickSilver trigger (⌃⌥⌘M) to open the currently selected file(s) or folder(s) in TextMate. It was setup as a QuickSilver trigger using the Proxy Object “Finder Selection”. Too bad it doesn’t work for me in the later QuickSilver versions and/or Snow Leopard.

    I missed this trigger so I made a 10.6 Service to accomplish the same task:


    1. Run Automator and select “Service” from the template chooser.
    2. Select “Files and Folders” from “Finder”
    3. Find the “Open Finder Items” action from the left pane and select TextMate as the application.
    4. Save the service in ~/Library/Services. I called mine “Open With TextMate”

    Keyboard Preferences

    To run the service from the keyboard, run “System Preferences” and select “Keyboard”, then select “Services” in the left menu and locate the “Open With TextMate” service on the right side. Add a keyboard shortcut (I choose the same as I’m used to, ⌃⌥⌘M).

    CopyPasteCharacter iPhone Application

    A couple of weeks ago our official iPhone application for finally became available on the App Store. The project itself isn’t too complicated but was my first “real” Cocoa and iPhone app so it took some time to get everything together and learn how to do things.

    The application basically lets you find and easily copy symbols, characters and letters which otherwise can be hard to find on a regular keyboard. On the iPhone, many of these characters aren’t available at all by just using the system keyboards. Just touch one or many symbols to automatically copy them into your clipboard and paste them into any application (SMS, Facebook, Twitter, Mail etc).

    I was happy to see that the app was approved by Apple only two working days after I submitted it. I had, however, waited about 2 months to hear from Apple on how we should solve a problem with my iTunes account.

    Hint: You can’t use the same Apple account to upload/sell music in the iTunes Store as upload upload applications to AppStore. Create a new account before buying the iPhone developer program to stay out of trouble.

    Please check out the product page with a video walk through or go directly to the AppStore.

    Automatically iChat complete Transmission downloads

    Lets say you have an extra computer at home which can be used to download Linux distros using Transmission on Mac OS X. Here’s how you can let the computer iChat you when a download is complete.

    1. Sign up for a new iChat screen name and add your normal user as a buddy.
    2. In Transmission, open Preferences → Transfers and set the folder for incomplete files to something different than the “Default download location”.
    3. Start Automator (in /Applications) and create a new workflow
    4. Add the “Run AppleScript” action and paste in this code (replace YOURBUDDY with the scree name of your own iChat account:
    5. Save as a plugin and choose “Folder action” in the “Save As” dialog. Select the folder you setup Transmission to use as the “Default download location”.
    6. Done! The script should now send you an iChat message whenever a new file is added to the folder.

    I created this setup a pretty long time ago and still use it, but these days together with a Growl notification plugin that also twitters me when the download is complete.

    Screencapture in Mac OS X from a SSH session or launchd jobs

    If you’d ever need to use the screencapture command from a scheduled job (like launchd in OS X) or from a SSH session, you might find out that it doesn’t allow you to do that since you’re not the logged in user.

    To work around that, run the scheduled jobs as root and exec screencapture like this instead:

    Show & Tell

    A few days ago we launched a new web service we’ve had in the making for the last couple of months. It’s called Show & Tell and is basically an online calendar for lectures, book releases, artist talks, and other events in Stockholm containing some sort of showing and telling. The idea is incredibly simple, but up until now there was no website gathering all such events. Sure, many do exist on Facebook, but not nearly all of them, and there is a lot to wish for when working with and/or subscribing to Facebook events (to not mention the fact that Facebook owns all the content). Since we anyway would add everything interesting to a shared work calendar, the step to making a new calendar and publish it online was very easy.

    Google Calendar

    The calendar uses Google Calendar as its backbone. A calendar (called on Gcal is shared between us and a bunch of friends in different corners of the Stockholm cultural world. The calendar is then published using the built-in Gcal widget on a webpage hosted by us; (or Events can be added by the editors straight to gCal, or though iCal (/Outlook/etc) and automaticly synced with gCal using for example Spanning Sync.


    A few years ago we created a very simple service called Calinker. Its purpose was to reduce the number of times you and your friends/guests/coworkers etc have to enter the exact same calendar information to your own calendars. So instead of just sending your friends a date and location when the next dinner party is, with Calinker you can create that event one time and instead just share the link. The user can download the ICS-file to their own calendar software of choice (like Outlook, Apple iCal, Google Calendar etc).

    Create events from e-mail

    One smart feature with Calinker is the the possibilty to email events from any email address and in return get a link to a automaticly created event at (example), with all the info already filled in. When finding an event of interest online, all a S&T editor needs to do is use the ‘mail contents of this page’ feature in Safari, e-mail the event to Calinker, get a link in return, click the ICS-file and add the event to iCal that automaticly syncs itself onto S&T via Spanning Sync and Gcal. This of course works great with event invitations via email too; just forward the email to Calinker and get a link in return with the ICS file.

    Suggest events

    A lot of features we wanted on S&T (like maps, ICS-generation etc) already existed on Calinker so we wanted to re-use as much as possible for Show & Tell, especially for the ‘suggest’ feature (where people can suggest/inform us on new events). Using the inofficial Calinker API, we just post the event info from S&T to Calinker (via a proxy to allow cross domain AJAX) and the editors get an e-mail back with the ICS link, ready for Google Calendar. This was the most simple way of dealing with the suggest feature since  we could re-use many parts we already had built for Calinker.

    Making Show & Tell SEO friendly

    Since all the content is taken from a Google Calendar and just embedded on our website with an iframe, the site’s real content cannot be indexed by search engines (the only content a search engine would find is generic info such as about texts and headers). To work around this, once a day we automatically take the calendar’s RSS feed (available for all public Google Calendars) and render it as a hidden (as in display: none;) html element on S&T. This way the content will be indexed by the search engines but not visible to regular users. It could also work as an alternative for browsers with JavaScript/CSS turned off.


    Show & Tell also contains two linklists, both showing off‘s potential as a lofi CMS: The first one is quite obvious; the tab called ‘Online lectures’ is basically an embedded linklist (original here), making it possible for us to update S&T straight from The second one is a bit more secret; The list of all editors of the site, under ‘About’ (original here). This is simply because editors might be added over time, and it’s easier to use linklist when adding an editor than having to bump an update of the complete S&T website.


    Show & Tell is also present at Twitter, as a reminder service before each event starts. The setup is quite experimental and works about 80% of the time, but we like the lofi-ness of it and decided to keep the system even though it’s not completley reliable. Here is how it works: Google Calendar has a feature where you can get a reminder emailed to you every time an event in your calendar is about to happen. That reminder is in our case set to 3 hours, and emailed to one of our Gmail accounts. In Gmail, a folder is set to re-route all incoming Google Calendar reminders to an account at is a web service that forwards e-mails to Twitter, and as soon as the e-mail reaches it, the email is turned into a tweet and posted by @showtellse. Since the actual Google Calendar itself is called and every reminder tweet automaticly contains the name of the calendar (example), the clickable url is featured in every tweet, thus making it easy to find out more about each event.


    And there is — of course — also a Facebook page, that takes the RSS feed from gCal and turns each event into a post. It looks quite ugly, because the posts are based on publishing date (ie when we added something to the calendar) and not the date when the event takes place, but might come handy for people who don’t use Twitter.

    Visit the site here:

    Twitter reminders:

    Facebook as RSS reader:

    Peter Ström (Konst & Teknik) and Martin Ström, January 2010

    Update 2010-02-03: Show & Tell Brussels

    In collaboration with PLMD we started Show & Tell in anther favorite city of ours—Brussels. Check it out at Read more on S&T Brussels in PLMD’s blog.

    Quicker way to observe events in prototype.js

    Here’s a shorter way to listen for events in prototype.js.

    MissingDrawer TextMate Plugin for Mac OS X 10.6 Snow Leopard

    I really like the MissingDrawer plugin for TextMate but it stopped working for me after upgrading to Snow Leopard. I recompiled it for 10.6 and now it works again.

    Get the updated versions here (one with blue background and one with the white default).


    Seems like the plugin doesn’t work very good after all. It makes TextMate stop responding to modifier keys (command, shift etc) so my recompiled version isn’t very helpful right now. I’ll investigate and try to fix it.


    We’ve been working on a new service on and off for a few months, called The service was first launched in May but the last week we added some new (and awesome!) features so you should check it out.

    Linklist is based around the very simple concept of creating, sharing and browse lists with links. It can be used for basically everything but I’ve found it very useful for things like:

    We’re adding new features and working on it all the time so be sure to follow our Twitter feed (@linkli_st) for updates.


    Last week I hacked together a small little project/library called nordea-rb. It’s a Ruby library and a (pretty basic right now) command line tool for getting read-only access to Nordea Bank accounts. I use it for displaying my accounts’ balances so I can see when invoices are paid etc.

    Everything you need to know is in the README on GitHub so if you’re interested in this, check it out.

    Today we released — the result of a two day workshop together with Konst & Teknik, Ola Bergengren, Uglycute and me.

    things-rb—command line tool and Ruby library for

    Things + GeekTool

    I wanted to display my ToDos from Things on the Desktop using GeekTool so I created a command line tool in Ruby (backed by a library) to access the database.

    This way you can see what needs to be done but without switching (or even launching Things)

    It’s in a pretty early state right now and probably has bugs but I’ve been using it for some days now without problems. I’m planning to add write-support as well (so you can create tasks from the command line if Things isn’t running) but right now it’s read-only.

    For more information, check out the README file and source on GitHub or this thread on the Things’ forum

    RailsTerm 0.3

    Terminal + RailsTerm

    Just a quick note that RailsTerm, my AppleScript to automatically open the tabs (in OS X 10.5 Terminal) needed for Rails development), is bumped to version 0.3.

    Since I use Passenger (mod_rails) and Passenger.prefpane for my local development the script will now auto detect the virtual hosts available on your system (in /etc/apache2/passenger_pane_vhosts/*.vhost.conf). I use the script daily and is a real time-saver for me.

    RailsTerm or browse source is on GitHub.

    Copying to clipboard with JavaScript in Flash 10

    As you might know, we have a feature on CopyPasteCharacter to let the user copy a character to their clipboard by just clicking on the character. An invisible Flash movie would do the copying using the ActionScript function System.setClipboard.

    In October, Adobe updated the Flash Player to version 10, which included some security changes, like: “Setting the Clipboard will now have to be invoked through a button, keyboard shortcut, or some other event initiated by the user.”. This broke CopyPasteCharacter (and many other sites) for people running Flash 10. I had some ideas on how to solve workaround this a pretty long time ago but too little time to implement it until now.

    We’re now having a fully working version which, since I couldn’t find any other solutions online, I thought could be useful for others/Google to know about.

    The workaround I came up with is to use a hidden Flash movie which will get resized and moved to overlay the element/character where the user’s mouse is. This way, when the user clicks on the character, the Flash movie will receive the mouse event and therefore be allowed to set the system’s clipboard.

    1. The mouse roll overs a character.
    2. A JavaScript will resize and move the invisible Flash movie to match the character’s size and position
    3. The flash movie receives the mouseover and mouseouts so JavaScript can set the element’s class name (like a faked :hover selector)
    4. When (if?) the user clicks on the character, the click event will get received by the invisible Flash movie and not the document itself.
    5. The Flash movie asks JavaScript for the characters to copy (Clipboard#textToCopy) since it differs a bit depending on which element was clicked. Also, Flash tells JS if the the alt/option key was pressed (so the copy-multiple-characters-at-once feature works).
    6. The same #textToCopy function highlights the clicked element using the same code as we had for the Flash 9 version.

    Here’s the code for the Flash movie (highlighted version)

    import flash.external.*;
    var text:String;
    button.onRelease = function() {
      text = String("Clipboard.textToCopy", Key.isDown(KEY.ALT))) || ' ';
      trace('copied [' + text + ']');
    button.onRollOver = function() {'Clipboard.onFlashButtonOver');
    button.onRollOut = function() {'Clipboard.onFlashButtonOut');

    The Clipboard class can be found here if you’re interested. It should keep the old behaviour for Flash 9 players but we had some problems with it in some browsers on Windows so right now all players get the updated code.

    Note: This post has been lurking in my “Drafts” folder for about a month and shortly after we deployed the new code for Flash 10 a few weeks ago, I found the Zero Clipboard project which seems to use a similar approach as we did but as a stand alone library. I haven’t looked at the code yet but it seems promising.

    « Older EntriesNewer Entries » CSS is in progress