Monday, July 25, 2011

Knight-Mozilla Learning Lab – 256 bytes ought to be enough for everyone

In my previous blog post I already mentioned that participants of the MozNewsLab have to come up with a very short 256 character description of the final project they'll be working on. The deadline for this task is today. In this post I'll be describing the different iterations my LikeLines description went through.
Before I started writing the first version, I decided to draw a mind map of LikeLines so I had an overview of what could go into the 256 characters description. For this I used my Asus EP121 tablet and Microsoft OneNote 2010 (a must have tool if you have a TabletPC):

(click for full version)
Having drawn this map, I decided to just write some short description down and see how well it went:
1) LikeLines unlocks video. It exposes the parts of a video found interesting by the community, allowing for rich video navigation and retrieval at the fragment level. By itself it’s a building block, enabling all kinds of interesting use-cases for news story telling.
This description captures most of the things I want to be captured, but crap, it's 265 characters! A bit too long. But hey, let's rewrite the last line into something shorter:
2) LikeLines unlocks video. It exposes the parts of a video found interesting by the community, allowing for rich video navigation and retrieval at the fragment level. Being a building block, it enables various interesting use-cases for news story telling.
Now it fits: 253 characters. However, I'm not too happy with how it flows. Let's give it another go:
3) LikeLines unlocks video. It exposes the parts of a video found interesting by the community, allowing for rich video navigation and retrieval at the fragment level. Used as a building block, it enables various interesting use-cases for news story telling.
Okay, I'm starting to get happy and it's 255 characters, but it's not perfect yet. I took this third attempt and asked Martha for some input. During the discussion I wrote down some notes for the next attempts (I wrote these notes down in Word 2010, but unfortunately, Word does not support pen and touch input as well as OneNote does).

Iterations 1 to 3 so far were okayish, but they were lacking a few things. For example, it's not clear from the description how LikeLines finds the interesting bits of a video. Furthermore, the description talks about video in general, while it might be more appropiate to put the focus more on videos uploaded by people (in contrast to, e.g., video of tv shows). Addressing these points led to the fourth version of the description:
4) LikeLines unlocks user-sourced video. Interesting bits of a video emerge naturally through community interaction with the video, allowing for video navigation and retrieval at the fragment level. It serves as a building block for rich news story telling.
Hmm, it fits (254 characters) and it's better than the third version, but it doesn't flow well. Wait, the last sentence is important as it describes what it's good for. Let's move it to the front for the fifth and final version:
5) LikeLines unlocks user-sourced video and serves as a building block for rich news story telling. Interesting bits of a video emerge naturally through community interaction with the video, allowing for video navigation and retrieval at the fragment level.
Great! It flows well, states first what it's about and the second part treats how it works. As a bonus, it's still only 254 characters!

Knight-Mozilla Learning Lab – week #2

Another week has passed, which means it's time to blog again. Today I'll discuss the two mandatory lectures from Monday and Wednesday, but before I do that, let me thank Stijn and Mark for leaving helpful comments on my previous post. Thanks guys! :)

So, the first lecture was given by Chris Heilmann and was full of interesting points. Too many to cover them all (read: go watch the lecture yourself), but one of them was his view on web apps. They are great. You don't have to install them and there is no need to update them. "The web upgrades itself". This view intrigues me as it reminds me of self-organizing systems (and indirectly of P2P systems, but I won't go there as I fear I'll drift off-topic). In a sense, LikeLines is what I think would allow for self-organized videos. Anyone can upload raw and unedited videos and the viewer community adds structure to it by consuming the video. Through interaction with the LikeLines video player, interesting bits of the video will emerge naturally.

During the Q&A session of the lecture, Chris mentioned that skills from journalism are important for the web as well. You should be able to write a short text first, since people have a short attention span. They want to get the gist first and details later. Now, the upcoming task of this learning lab of describing one's final project in at most 256 characters will definitely test my writing skills.

The second lecture of the week was given by John Resig (author of jQuery). John discussed what's important in an open source project. For example, it is important to understand how to retain your users during the several phases they go through. Like during the "getting started" phase, you cannot assume any background knowledge and you'd have to be rather explicit. This reminded me of a poster paper I wrote with my TU Delft colleagues that got rejected at SIGIR, in which we assumed some P2P background knowledge. This lecture's advice came a little too late, oh well. ;)

Another thing that's important for open source projects is to open up your process by, for example, having the community vote on which bugs to fix first. This view gave rise to tweets like the following,

but it seems the community might be already doing this.
(Thanks go to Martha for sending me a print copy of The Economist)

Anyway, I wish I could cover more of the lectures, but it seems I'm running out of space again. I'll conclude this post how John's lecture made me realize that LikeLines is similar to jQuery. It's a building block and like Lego, you can use it to build many other things on top. It also made me consider making LikeLines more like an API. In the coming days, I'm going to try and put these thoughts into the "show and sell" video for the final assignment.

Sunday, July 17, 2011

Knight-Mozilla Learning Lab – week #1

After submitting an idea to one of the Drumbeat MoJo challenges, I was invited to participate in the Knight-Mozilla Learning Lab. One of the requirements of this lab is to blog weekly about at least one the mandatory weekly lectures. Well, it's now time to blog. :)

The first lecture was given by Aza Raskin, former Creative Lead for Firefox. It was titled "How to prototype and influence people" and the talk's important message was that
"The value of an idea is 0,
unless it can be communicated."
While this sounds like a Captain Obvious statement, it's easier said than done. The means you choose influence on how well you can communicate your idea.


When Aza showed the above slide, I thought back to when I was working with my mentors on the LikeLines idea for the MoJo challenge. Back then, I was thinking on how to communicate our idea. It started out as a short write up by Martha, which I liked, but I felt that submitting the idea in this form would not be good enough. I decided that a video presentation would be the best way of communicating our idea.

However, I had no idea how. "The problem is that we don't understand the problem", Aza quoted Paul MacGready during the lecture. It took a few iterations, a few sketches and several discussions with Johan and Martha until I started to get a picture of how to present the idea. The discussions were quite fruitful —in the Learning Lab's second lecture, Burt Herman mentioned it is important to build a team to find people that complement you and I fully agree— and it took a few iterations for the deck of slides to mature and the script to become polished.

Still, there are things to work on. Aza ended the lecture you should sell a dream when communicating your idea. I find that I did not do this well enough in the video I submitted. If I were to redo the video again, I would make it more user-oriented, perhaps starting like this:

You notice that "Macy’s Day parade" is a trending topic on Twitter. You do a quick search and find the following videos:"Oh my, where do I start watching?", you might think. What are the interesting tidbits in this huge collection of almost 3000 videos? Well, don’t worry. With intelligent video players powered by LikeLines, finding the interesting bits is no problem at all[...]

Wrapping up, I found Aza's lecture inspiring and full of good points. I wish I also had time and space to discuss the optional third lecture this week by Amanda Cox (New York Times, graphics editor). I initially missed it, but I managed to watch the recording today. It was a very nice and recommendable lecture.

P.S.: While watching the missed lecture using the BBB player, I was really craving for a LikeLines-powered player. Time-based seek bars suck!

Tuesday, July 12, 2011

The Netherlands is (not) great for foreigners

The Netherlands is often considered to be a nice place for foreigners. Most of the Dutch people are able to converse at an acceptable level of English. This is great. If they need help, they can ask for it without much trouble at all.

But then there is this problem of written communication. It's in Dutch and it's a pain in the ass if you can't read it. At work, I'm one of the few in the group that's Dutch and colleagues often come to me when they need a translation. It ranges from letters from the Dutch Railways (NS) to error text messages from mobile network operators.

This made me wonder. If these companies managed to help my colleagues in (spoken) English in the past, why can't they continue to service them in English? Oh, wait. Right. Probably has something to do with software and automated messages...

Wednesday, July 6, 2011

Fixing unresponsive volume controls

On my Vista laptop (a Toshiba Tecra S10), the volume controls occasionally are unresponsive when coming out of hibernation. When this is the case, turning the volume dial causes the whole taskbar to freeze. To fix this, I have to
  • kill explorer.exe,
  • disable the Realtek audio device,
  • stop the Windows Audio service,
  • re-enable the Realtek audio device,
  • restart the Windows Audio service,
  • and, finally, restart explorer.exe.
Until now, I have performed these steps manually each time my volume controls stopped working. Today, I got tired of it and decided to automate this. ;)

My first attempt was just to write a simple DOS batch script. For this I needed a command line utility to enable and disable devices. Fortunately, Microsoft provides just the utility I'm looking for. :)

Using that utility is quite simple. After putting the executable in one of my PATH directories, I looked for the Realtek device (in an elevated command window):

C:\>devcon find * | find "Realtek"

HDAUDIO\FUNC_01&VEN_10EC&DEV_0268&SUBSYS_11790602&REV_1000\4&24AF6467&0&0001: Realtek High Definition Audio (With EC)


C:\>devcon find *VEN_10EC* && REM Let's see if this substring uniquely finds the Realtek device

HDAUDIO\FUNC_01&VEN_10EC&DEV_0268&SUBSYS_11790602&REV_1000\4&24AF6467&0&0001: Realtek High Definition Audio (With EC)
1 matching device(s) found.


C:\>REM Great! It does :)

After testing the devcon utility, I wrote the following batch script:


However, this script has a flaw. The script requires admin rights in order to make changes to devices and services. This is in itself is not a problem, but if the script is running with admin rights, then the final line of the script causes the explorer.exe process to be restarted with elevated rights. As a result, any process started by the new explorer.exe process, e.g., through the Run dialog (Win+R), will also have administrative powers!

So I decided to write a small C# program instead. Luckily, Microsoft provides some sample code that shows us how to launch an elevated process. Based on this example, I wrote the following program that launches itself to execute a few commands with elevated rights, after which it restarts explorer.exe using the access rights it was originally started with:


Perfect! Now I don't have to go manually through all these tedious steps ever again. :)

Wednesday, April 6, 2011

Gotta love #haskell

Just a short blog post to illustrate why I love the #haskell IRC channel on Freenode:

<bloop> ever since learning Haskell, it has become tempting to blame all my non-Haskell troubles on the existence of side-effects...
<shachaf> bloop: Unfortunately, the existence of side-effects is among your non-Haskell troubles.
<bloop> Favorite game crashes? Side effects. Girlfriend leaves me? Side effects. Step in the mud? Side Effects.

2011-04-06, 06:16 UTC

Friday, February 11, 2011

Input Trick: Typing Greek using JP IME

One of the first things I configure after a fresh Windows installation are the keyboard languages. As a programmer I loathe the international version of the US layout (I want my quotes immediately, not after pressing space), so I always make sure the correct layout is selected. I also like to type a bit of Japanese in Google every now and then, so I add the Japanese IME as an additional language.

But did you know you can also use the IME to type Greek symbols? It is actually quite simple when you're used to IMEs.

First of all, make sure you have the Japanese IME added as a keyboard:

Japanese IME added as an input method

Before typing, make sure you have selected the Japanese language and the Hiragana input method:

Hiragana input method selected

Now when you start typing, the IME will replace the Latin unigraphs, bigraphs and trigraphs with Japanese hiragana characters. After completing a word by pressing space, the IME will replace the string of hiragana characters with a word or symbol. If it chooses the correct word or symbol, you can continue on typing the next word. If it does not, you can press space again and a menu apears with other suggestions. You can select the suggestion with the space bar or arrow keys and confirm using enter.

To type Greek letters using the Japanese IME, you would have to input the Japanese pronunciation of those letters. The table below shows which Greek letters can be typed using the IME.



And here's the IME in action:



Happy typing. :)