Blog ->
Wiredoll
While upgrading to the latest .NET and MVC versions I took the time to try out the latest beta of Chirpy by Evan Nagle as well. So far I'm really pleased with it - it works wonders with Visual Studio 2010, providing an easy way to edit Javascript, CSS and LessCSS files without having to think about regenerating a minified or compressed version manually.

Here I'm having it compress a Javascript file using Google's Closure Compiler with the simple setting. I haven't even tried LessCSS or the mashing feature yet, but having it merge these files for you seems like a neat bonus when looking at maximizing web site performance.
The reason I even stumbled upon it was after reading this Coding Horror post about what's wrong with CSS. Jeff Atwood mentioned a few options and LessCSS seemed like something I've wanted for a long time. There's a .NET port called .less and while poking around - Chirpy appeared.
by Oskar Duveborn 2010-07-08
Blog ->
Wiredoll
Last night I went around and upgraded the entire project to .NET 4.0 and also managed to replace the release candidate of ASP.NET MVC we've been using with the actual RTM version.
There where several issues with the MVC upgrade and the biggest hurdle was how registered routes didn't handle optional parameters in the same way anymore. I couldn't get it to render ActionLinks nor RouteLinks with the single default rule that had three optional parameters anymore - I had to create a separate routing rule for each case of missing parameters. Using UrlParameter.Optional didn't help. But alas, it's working now and I've fixed a few glitches along the way as well - nothing published yet but soon enough you'll see.
by Oskar Duveborn 2010-07-08
Blog ->
FlowersFX
Seriously I think we lost count! But I think it was somewhere between 15 and 20 so I've decided that this is going to be Lumberhack 20 - live with it!

As usual it'll be an attempted weekend of creative computer arts:
- Friday July 30 - Sunday August 1 (2010)
It will take place at my apartment in Stockholm and there's free parking on the streets around past 17:00 on Friday through the weekend (if you can find one).
It's not a big place but I'll make sure to set up a few extra desks and generally have it optimized for this most likely pleasant summer event.
by Oskar Duveborn 2010-07-08
Blog ->
Adde
Been watching way to much atop the forth wall lately..

But this guy is all i can think of when reading the previous two topics!
Im considering him one of the more useless superheroes ever.. fail to se how beeing small will do you any good when doing superhero things like stopping a bank robbery or defending earth against giant squid invasions.
P.S. I need my own blog!
by Andreas Carlbring 2010-04-28
Article ->
Hardware
Read previously published articles in this series:
Atom D510 Home Automation Server - Prelude

Last time we put together the motherboard and all the accessories in a very compact form. This time we're going to create a custom case for this hardware to protect and show off the future home automation server. The requirements are as follows:
- Protect
- Provide air flow
- Show off
- Wall-mountable
At the local hobby store I got two pieces of acrylic glass and a long threaded pin and a bunch of M3 nuts. I already had some motherboard spacers to use but I had to purchase a new M3 tap. The acrylic sheets are 20x30 cm which was much bigger than I initially wanted but as I didn't want to cut them they had to do. In the end the extra 10 cm or so happened to become a pretty cool desk stand and cable guide, especially for when it's not wall-mounted.

Drilling and threading holes for the four motherboard mounts was a bit tedious but came out all right in the end. Additional holes were drilled but not threaded at the edges of the acrylic sheets for bolting the two sheets together as some kind of hardware enthusiast sandwich. Also, on the bottom sheet two pear-shaped holes were created, hidden from view by the motherboard, to easily hang the thing on a wall.

The design is really extremely simple. I spent roughly $15 including the taps and it took about two hours to construct. There's basically nothing I would do different in hindsight - except perhaps add an old Cisco cable guide to one of the bottom sides to hold the cables.

The open sides provide plenty of air flow and the server has been running non-stop for a week now without showing any stability problems. Of course, doing it this way and not using an RF shield of any kind isn't exactly the best way to house computer parts but it sure looks pretty good. I will hang it on a wall somewhere, probably above the entrance door where it will be visible enough without being distracting.

Notice in the pictures that I didn't initially mount the VFD display properly but in the end I drilled a few holes for it and fastened it against the upper acrylic sheet for good measure. I think it looks pretty interesting.

I mounted a 10 cm blue CCFL on the actual PCI riser's inside and its power converter is visible on the outside. Together with the VFD and the red X-Fi light this creates a wonderful lighting ambiance which I didn't manage to capture in any of the pictures.

Also, most of the cables will obviously not be needed in the end. Only power, network and audio will be connected and the rest on the pictures is just for the initial installation.

So, the basic hardware is complete and thus the real fun begins.
Software
To begin with, I felt the VFD display needed something more Windows Server-friendly than the existing applications that seemed to presume everyone is still running Windows 95 and want a systray application instead of a real Windows service. Using .NET, C# and a 64bit compatible version of inpout.dll I quickly hacked up a service to control the display and output system/service status to begin with.

For the music playback I am currently using Winamp with the Resumer and AjaxAmp plugins running as a service installed by Microsofts SrvAny utility.
The net result is that the display is initialized and displays some basic system status when the server boots up - without any need whatsoever for anyone to login interactively to a desktop on it. The Winamp service also starts up and starts pumping out my DI.fm premium playlist - but can still be manually controlled using a web browser thanks to AjaxAmp.

In short, two of the four basic features are already working and light control is mostly a matter of interfacing with the Tellstick API in another or the same service - and of course creating a neat user interface.

But more about the software in the next article, which will include some code and downloads. I'm contemplating writing my own automation service and include streaming and playing back shoutcast streams to gain better control over the process. The .NET library NAudio might make this possible and rapid to develop.
by Oskar Duveborn 2010-04-02
Article ->
Hardware
Since I moved houses I've been running my music server on a laptop 24/7 and I don't really think it enjoys that as much as I do. So to remedy this awful situation and free my laptop from its chains for travel duties again - I'm building a power efficient home automation server to replace it.
Of course, I already have a home server of sorts but it's a quad-core monster with 8GB memory and a dozen virtual servers running an entire Windows Forest and more within. Using the Hyper-V host on that server to play music and control lights isn't exactly a bright idea as hardware control is still a bit buggy and sadly requires reboots and scary driver upgrades at times. Not something any Hypervisor enjoys and using a virtual server has it's own hardware problems. I also already have a powerful HTPC for my home theatre but its power demand is definitely not suitable for a 24/7 schedule.
So, I need a separate physical server for this - and today I started that build based on a newly released Intel Atom D510 CPU and motherboard - Intel D510MO.

Compared to a 3,5" hard drive in the above picture - the Mini-ITX motherboard certainly is quite the slim thing and to help get things even more truly tiny I added a 150W PicoPSU into the mix.
The Atom D510 is also a step up from the old Atom 330 in that we finally get to ditch the old power- and fan-hungry chipset which has plagued Atom solutions for such a long time. Here are the basic features:
- 64bit support
- 2 physical cores
- Hyper-threading support
- Runs at 1,66 GHz
- 1 MB L2 cache
- DDR2-800 integrated memory controller
- Integrated GMA 3150 GPU
- <20W total system power consumption
Compared to the Atom CPUs found in netbooks this desktop version has some additional things going for it but for an in-depth technical review I recommend this article at Tom's Hardware.
This particular motherboard also features:
- PCI slot and Mini-PCI-express slot
- 2 serial and 1 parallel port header
- 2 3.0 Gbps SATA and 3 USB 2.0 ports
- 2 PS/2 ports
- 3 audio connectors, front panel and SPDIF headers
- 2 DDR2-800 memory slots
- Gigabit ethernet and VGA output

Pictured above is the PicoPSU and as you can see it's not much more than a regular 24 pin ATX connector with some extra circuits and wires. From the interesting-looking motherboard connector we get:
- 12V DC input
- SATA power connector
- PATA power connector
- 4PIN ATX12V connector
The Atom 510 motherboard I use doesn't seem to need the 4pin connector so that one isn't even used here - but it's a good thing to have as many mATX motherboards still require it. The SATA power connector will be connected to the 2,5" boot drive and the PATA power connector will supply my old VFD display with juice to show some debug and system information.

The software I'm going to run will be a mix of existing and custom-written applications but that is all for a completely different article.
The general idea however is to simply build a modern and intuitive web interface for home automation and control this thing through perhaps the first Apple product I'll ever purchase: an Ipad. Because its browser will rock, right?
So what do I want from this thing anyway? Let's see:
- Music playback
- Light control
- Power consumption analysis
- Voice commands
The first thing requires some thought but I happen to have the first revision of Creative's X-Fi PCI soundcard lying around and as music playback will use analogue output to multiple receivers this will make sure the audio quality is bearable. I will also possibly use the integrated audio for local system and debug announcements.

Anyway, the X-Fi is quite a huge card and I don't really want to shell out with even more money for a USB X-Fi right now. To the rescue comes the 46 SEK ($6) PCI riser card from heaven!

This will make sure the soundcard won't increase our server size by much. After some tinkering it's obvious that most of the cable mess and the hard drive will fit between the motherboard and the soundcard - so now is a good time to try and mount the drive to the soundcard!

Using a piece of cardboard from the motherboard retail packaging the drive will be protected from short-circuits when attached to the soundcard's back.

Your luck will vary depending on what card you use but there was at least one neatly positioned hole on the X-Fi card to support a standard drive mount. The rest is all about being a bit creative ^^ (pun actually not intended)

Wow, that's a neat sandwich! After further re-routing of the cables the soundcard also stopped bulging but I didn't take a picture of that. You can also see the VFD display above and it's simply an old LPT port-driven display I had lying around that I connected to the LPT header on the motherboard and the PicoPSU PATA power connector. You can also see the 2 GB stick of DDR2 memory I sneakily borrowed from Tim's server to test the build with ^^

To settle my second demand on this project I added an internal USB header adapter and stuck the Telldus Tellstick on top of the motherboard heat sink. This white little USB dongle can control the NEXA remote power adapters using a simple application or the Tellstick API which to my satisfaction is available for .NET.

Finally, sourcing an AC-DC-adapter to power this thing wasn't exactly hard - I just took a 3A 12V adapter that belonged to an old 15" monitor and plugged it right into the PicoPSU.
I actually gave my drill a work-out to open up a big enough hole in the I/O shield for the PicoPSU DC input connector - pictured above next to the blue VGA output. It almost looks like it's suppose to be there!

Quite a bit surprised I then witnessed the thing boot up at the very first try. I had some minor trouble identifying whether I got the power switch triggered or not as there are no fans in this thing whatsoever. It doesn't make a single sound, the hard drive is the only thing even remotely able to do that but it too is dead silent so far.
As this kawaii creation will run 24/7 I then changed the power on-setting in BIOS Setup to always power on the system whenever power is applied. This circumvents any need for a power switch.
I hit F12 and it booted happily over the network from my Windows Deployment Server and I started installing my 64bit operating system of choice and wrote this article. I'm looking forward to the next step - but first I'm going to check out the latest episode of Durarara!!. And yes, that is a very, very tiny keyboard pictured above.
Read the next published article in this series:
Atom D510 Home Automation Server - Hardware
by Oskar Duveborn 2010-03-18
Article ->
Cooking
So I got this awesome little book about cooking with just a few ingredients and I thought I would share a few things from it along the way. The first one is an obvious favourite dish of mine considering I have a thing for Thai basil in general.

So it's filled with recipes consisting of three or less main ingredients and this makes planning for anything in it a real breeze. On the downside, the ingredients really need to be the best of breed as the entire dish is basically dependent on them - so no cheap varieties!
On the way home, I picked up two refrigerated chicken breast fillets, the nicest-looking red bell pepper I could find and a pot of relatively fresh Thai basil. The rest is pretty obvious. Slice them, fry them in olive oil, spread the basil over the lot and gently toss it all around the pan for a while. Serve with salt and peppar. Here's the ten minute result which includes the time it took to manually wash the tools used.

It looks quite nice, it tastes quite nice, and it's quite the GI spec as well. Add rice if you're not into that kind of thing. Until next time, happy cooking! Oh, and prepare a few bottles of high-quality olive oil for the upcoming encounters: one regular, one infused with garlic and one infused with herbs. They will be used a lot.
by Oskar Duveborn 2010-03-02
Blog ->
FlowersFX
The new party web site is up and running - check out it at breakpoint.untergrund.net.

Welcome to Breakpoint 2010, world's
biggest pure demoscene event. For the
8th time, up to 1000 creative
participants from more than 30 nations
are expected to gather one final time
in the beautiful town of Bingen am
Rhein, Germany, from the 2nd to the
5th of April 2010 (Easter weekend),
enjoying 4 days of round-the-clock
activities in arts, technology and
international socializing.
Considering this will be the last Breakpoint - missing it is not an option! Yes I know, I should whine about how sad it is being the final Breakpoint and all, but we all knew this was coming anyway. So let's join the final party and treasure the memories because this marks another change in the aging demo scene - and change is as always a necessary step for progress.
by Oskar Duveborn 2010-01-31
Blog ->
FlowersFX
Breakpoint crew recently posted a notice saying the world's most awesome demo scene event will most likely become a reality again this year!
As usual it's scheduled for Easter starting April 2nd ending April 5th and we should anticipate the new web site to launch later this month. As of writing all of the needed contracts haven't been signed yet so there's still a slight chance for screw-ups, but the crew is certain enough to recommend would-be-visitors to book their flights now.

Me and Tim are pondering over our trip to (the hopefully sunny) Bingen am Rhein for this event and we urge everyone interested in the trip to contact us so we can size and seize a decent vehicle and book some rooms at our favorite hotel.

Perhaps we'll get to finish a silly fast compo entry in time this year? Last years Wolverintro had some eight hours or so of extra unwanted production time so sadly it didn't make it.

We were writing the render and animation engine from scratch too though (or as much scratch as you can get with Managed DirectX 1.1 ;) and we used no tools but the crudely done engine editor to actually create the animations. We need to directly handle Lightwave scene and object formats next.
Anyway, here's part of the opening ceremony from 2009 for your inspiration (yeah I cut out some parts and cropped it for widescreen, sorry about that but it was over 20 minutes). Credits go to the Breakpoint organizers. And yes, that big screen is huge, high res and brighter than the sun.
A demo party is not only about bits
and bytes running on your favorite
hardware, it is also about art. Open
up to new forms of creative
expression.
As usual we look forward to this year's Breakpoint! Amiga!
by Oskar Duveborn 2010-01-11
Blog ->
Oskar
It was early December and neither winter nor the upcoming holidays had yet hit us in Stockholm. So, Tim and I decided to go for a five day trip to Tokyo to see what it was all about, and visit Sofia who was staying there for a while.
We decided to fly with Swiss Air as the cheaper flights with Airoflot and Air China had excruciatingly long transfer times in Moscow or Beijing. Particularily the Moscow airport didn't seem like a fun place to spend 12+ hours in without being able to leave the transfer zone.
With Swiss however, all we had to survive was a 45 minute transfer in Zürich. Too bad we didn't count on the first flight being a bit late, ending with us rushing through the entire terminal dead certain we'd miss the important departure for Tokyo. What a great start.

As the departing flight to Tokyo was technically in the same terminal we didn't think much of this dilemma at first and started our walk through the 60 or so gates in area A towards the so called area E that we had to get to. After five minutes of walking we realise there's another 60 or so gates in area E and, well, how the hell do they fit all that in the same building? Getting to some kind of dead end-looking area I spot a large countdown timer, just hitting under 2 minutes and I still didn't quite get it.
Rushing down a long excalater however - we finally got it. It was the countdown for the intra-terminal transfer train of great noises from the Alps, headed for area E.
Recalling a few minutes earlier, we spotted the other part of the terminal outside a window, several kilometers away. At that time we thought it was another, unrelated terminal. Yeah, right.
Here's a video of the train ride and some of the sounds you get to listen to while trying to catch your flight in Zürich.
Arriving with the train in the mysterious area E we had to patiently queue for yet another security control which took all the ten minutes or so we had before our flight would leave us behind.
Mind you, with us we had a gentleman visiting his daughter in Tokyo, who told us of her tales trying to transfer like this in
Zürich and being just a few minutes late completely missing the flight to Tokyo, having to live through hell to get there by other means. We didn't really have time nor the wish to do that ourselves but security is security these days at the airports so we had to calmly get ourselves through it.
At last, getting through the security control unscathed, we started rushing past the gates. The numbering started at 1 and our gate was number 67. The area had a grand total of 67 gates. In other words, we had to get to the very end of the rather long building which we managed to just in time and got waved through by the gate personnel. Thinking back, we arrived at gate 60-something in the A area and had to pass all the gates down to 1 before getting to the train station. Somehow we still believe we got set up.
Inside the Airbus A340-300 the insane heat and humidity struck hard and only by repeating "it will get better once in the air" did we get to our seats alive without collapsing. We found our place in the last row on one side with noone behind or beside us except some qute japanese girls across the aisle. The 12 hour flight ended up being rather relaxing. The entertainment system worked and the economy seats were quite ok to doze off in - much better than Air France, comparable to American Airlines but of course nowhere near KLM standard.

Flying against the sun we got ourselves a 16 hour day that day - leaving Sweden early in the morning arriving 16 hours later the same time next day in Tokyo. It was pouring down and after taking some time getting downtown we had to spend most of the day on foot until three PM when we could check into Hotel Villa Fontaine Hakozaki and collapse. Luckily this was the only day it rained and the rest of our stay featured a clear blue sky and a nice warm sun.

Around two oclock in the night Sofia called us asking us where we were. It was time to get to Shibuja and Club Atom to kick-start our stay and celebrate our safe arrival.
by Oskar Duveborn 2010-01-08