Since we’re writing our own google-scale filesystem… we should …

… build ourselves a case for the test machines with lego duplo blocks… like the founders of google did.

“It’d be hard to believe but yes, Sergey Brin and Larry Page made their first 40GB Google Storage Server with lego casing.”

original-google-storage-server

Source: http://zedomax.com/blog/2008/08/04/original-google-storage-server-made-with-legos/

Formula Student 2008

Since last year FeM is recording and live streaming the annual Formula Student Event in Germany:

“Screeching tires, smouldering heads and impressive technical innovations – welcome to the Formula Student Germany 2008!
Join the Brunel Race at our stand. As a virtual race driver you’ll be able to win the Grand Prix at the Hockenheimring. The fastest driver gets the chance to win 2 tickets for the Formula 1 Event at Nürburgring 2009.”

If you don’t know what Formula Student is…you may want to read this:

“Students build a single seat formula racecar with which they can compete against teams from all over the world. The competition is not won solely by the team with the fastest car, but rather by the team with the best overall package of construction, performance, and financial and sales planning.

Formula Student challenges the team members to go the extra step in their education by incorporating into it intensive experience in building and manufacturing as well as considering the economic aspects of the automotive industry. Teams take on the assumption that they are a manufacturer developing a prototype to be evaluated for production. The target audience is the non-professional Weekend-Racer, for which the racecar must show very good driving characteristics such as acceleration, braking and handling. It should be offered at a very reasonable cost and be reliable and dependable. Additionally, the car’’s market value increases through other factors such as aesthetics, comfort and the use of readily available, standard purchase components.

The challenge the teams face is to compose a complete package consisting of a well constructed racecar and a sales plan that best matches these given criteria. The decision is made by a jury of experts from the motorsport, automotive and supplier industries. The jury will judge every team’s car and sales plan based on construction, cost planning and sales presentation. The rest of the judging will be done out on the track, where the students demonstrate in a number of performance tests how well their self-built racecars fare in their true environment.”

fstudent

Starting this friday there will be a livestream available (Flash and Windows Media). Great stuff!

Source 1: Livestream
Source 2: http://formulastudent.tv/
Source 3: http://www.formulastudent.de

getting the iTunes library to move or programmatically access the library without iTunes

I am using iTunes as my main music player software for about 5 years now. In that time I had to move and restore my growing iTunes library more than 10 times. It can become quite a job to get it done properly so I came across this great howto article to help you and me out in the future:

“I see some discussion about fixing busted iTunes libraries, either when moving one on the same computer or migrating to a new one. Here’s what I have found works for me. Bonus: no slow AppleScripts or payments (donations cheerfully accepted and squandered).

First, what I have discovered about how iTunes manages music collections. There are two files it uses, one that is binary (ie, machine readable for faster performance on searching, sorting, add/edit/delete operations) and one that has the same information but in a human readable format (for a certain subset of humans who can read XML natively). The XML file is written from the binary file as a backup (check the dates to confirm).”

But that isn’t were it needs to stop. I had to do some more things with my iTunes library lately – like extracting all that ratings and exporting them into a new music player software I liked to test. I therefore wrote myself a little tool in C# that does the job of reading in the whole iTunes library and giving you programmatically access to that library. It only needs to have read access to the Mediathek.xml file iTunes stores in it’s music folder and you from there on can work your way through the bazillions of music tracks you may or may not have in your library. It even does the find-and-replace job a bit easier than the solution mentioned in the article above.

I release the code under the CC-Attribution-NonCommercial-ShareAlike 3.0 license and here is your download:

ReadiTunesMediathek.zip (11,82 KB)

This code is a simple example of how to use the XmlTextReader in C# and how to traverse through them. It should be easy to understand and easy to change. I would love to hear from you when and if it helped you.

xmltextreader

Source 1: iTunes library, fixing a broken one or moving one
Source 2: ReadiTunesMediathek.zip (11,82 KB)

.NET Open Space 2008 – 18.-19.10.2008 in Leipzig

Das wunderbare Leipziger Team tritt nun bald wieder mit dem .NET Open Space 2008 in Erscheinung:

“Die besten Gespräche hat man fern ab von einer festgelegten Agenda, bei einem Kaffee und beim “du”. Dort gibt es keine Rollenaufteilung in Sprecher / Zuhörer und die Themen finden sich vor Ort ganz von selbst. Das ist die Idee vom .NET Open Space. Hier sind alle gleich. Auch die Organisatoren halten sich im Hintergrund und moderieren nur ab und an etwas. Die Verantwortlichen der Themenfelder sorgen mit Einladungen für Teilnehmer darin.
.NET Open Space besteht derzeit aus den drei parallelen
Themenfeldern:

  • ALT.NET
  • Mobile Computing
  • Soft Skills”

NET Open Space

Eine Agenda gibt es nicht, dafür aber einen Zeitplan:

Zeitplan

Source: http://netopenspace.de/

get access to linux filesystems like ext3 and reiserfs by using FUSE on Windows

If you’re using Windows and if you want to access those filesystems that are used by Linux you can use FUSE on Windows now.

Filesystem in Userspace (FUSE) is a loadable kernel module for Unix-like computer operating systems, that allows non-privileged users to create their own file systems without editing the kernel code. This is achieved by running the file system code in user space, while the FUSE module only provides a “bridge” to the actual kernel interfaces. FUSE was officially merged into the mainstream Linux kernel tree in kernel version 2.6.14.

FUSE is particularly useful for writing virtual file systems. Unlike traditional filesystems, which essentially save data to and retrieve data from disk, virtual filesystems do not actually store data themselves. They act as a view or translation of an existing filesystem or storage device. In principle, any resource available to FUSE implementation can be exported as a file system. See Examples for some of the possible applications.” (Wikipedia)

There is a version of FUSE for Mac and of course for linux and now with coLinux there’s a chance to get the FUSE world onto the Windows machines.

For our task we will use coLinux. coLinux is a modified linux kernel that can be executed as an application or a service in the Windows environment. The web page of the project is http://www.colinux.org/.”

colinux01

You’ll find a very detailed how-to there.

Source 1: http://en.wikipedia.org/wiki/Filesystem_in_Userspace
Source 2: http://polishlinux.org/linux/ext3-reiserfs-xfs-in-windows-thanks-to-colinux/
Source 3: http://www.colinux.org/

“I ain’t afraid of no quake!” – classic Duke Nukem quotes

If you – just like me – played Duke Nukem 3D excessively in times when there was “CompuServe” instead of “Internet”, mailboxes instead of social websites and when there was 1on1 dial-up modem multiplayer instead of MMOs you may recognize those cool quotes you could hear while playing Duke Nukem 3D in single player or the ones you could say to your multiplayer opponent… there’s a list of many of them:

“Uh, Uh, Uh. Where is it?”

Source: http://www.imdb.com/title/tt0228246/quotes

So writing a filesystem in .NET isn’t a bad idea after all :-)

Ever since we started writing a complete and cutting edge filesystem in C# and only managed code we are confronted with questions like

“Why C#? Why .NET? Why not in a more low-level language? Why a filesystem after all?”

I don’t want to talk just yet about our reasons but we can’t be that wrong if even Microsoft Research is trying to get their .NET Operating System research project Singularity ready for customers:

“Midori is an offshoot of Microsoft Research’s Singularity operating system, the tools and libraries of which are completely managed code. Midori is designed to run directly on native hardware (x86, x64 and ARM), be hosted on the Windows Hyper-V hypervisor, or even be hosted by a Windows process.”

This would be an Operating System 100% in managed code – hey Microsoft – maybe you want to talk with us about our 100% managed code filesystem?! :-)

To prevent rumors: no – we are not working on anything Microsoft related, yet.

Source 1: Microsoft Research – Singularity
Source 2: Codename Midori

Anatomy of the Linux kernel

Another linux related IBM article:

“The Linux® kernel is the core of a large and complex operating system, and while it’s huge, it is well organized in terms of subsystems and layers. In this article, you explore the general structure of the Linux kernel and get to know its major subsystems and core interfaces. Where possible, you get links to other IBM articles to help you dig deeper.”

Source: http://www.ibm.com/developerworks/linux/library/l-linux-kernel/index.html?S_TACT=105AGX03&S_CMP=ART

your office chair: right out of your race car

If you ever wanted to sit on a real fast office chair… you probably want to consider buying one of these:

rc128-2
built from a Lamborghini Diablo GT chair…

“Race Chairs brand office furniture is the perfect collection for the performance minded or motorsports obsessed individual. Our offerings are unique conversation pieces that give a subtle yet distinctive high tech atmosphere to any room.

Our chairs are made from the authentic high performance seats from exotic racecars such as Ferrari, Maserati, Lamborghini, and Porsche. From our unique connection to the motorsports world, we are able to acquire a unique and everchanging inventory. Our Carbonfiber desks are an industry first and our accessories collection and one-off motorsports memorabilia pieces truly complete the decor while acting as functional pieces in the room.”

It’s not cheap but it has style :-)

Source: http://www.racechairs.com/default.asp

NASA opens it’s picture library

It’s just great to see more and more big archives are getting available online. This time the National Space Agency of America opened it’s picture library:

“NASA Images is a service of Internet Archive ( www.archive.org ), a non-profit library, to offer public access to NASA’s images, videos and audio collections. NASA Images is constantly growing with the addition of current media from NASA as well as newly digitized media from the archives of the NASA Centers.
The goal of NASA Images is to increase our understanding of the earth, our solar system and the universe beyond in order to benefit humanity. “

nasa

Source: http://www.nasaimages.org/

Version 2 (final) of my Dropbox Tool

Some days ago I wrote about a 10 minute hack of a tool I always wanted to have – now I was using it quite often so I decided to upgrade it a bit – besides of the usual bugfixing I added these features:

  • unlimited filesize – if the file is >4 Megabyte it’ll split into smaller portions and uploaded one by one
  • Progressbar :-) When uploading severel hundred Mbytes you just want a progress indicator.
  • new Icon (curtesy of my wife – she did not like the old icon…)

dropboxv2

You can grab the source here.

Source 1: DropBox-v2.zip (92,77 KB)
Source 2: a selfmade web drop box in 10 minutes

Anatomy of the Linux file system

Since Filesystems are another technology we are currently working on I want to point everyone to an article by IBM:

“When it comes to file systems, Linux® is the Swiss Army knife of operating systems. Linux supports a large number of file systems, from journaling to clustering to cryptographic. Linux is a wonderful platform for using standard and more exotic file systems and also for developing file systems. This article explores the virtual file system (VFS)—sometimes called the virtual filesystem switch—in the Linux kernel and then reviews some of the major structures that tie file systems together.”

Source: http://www.ibm.com/developerworks/linux/library/l-linux-filesystem/index.html?S_TACT=105AGX03&S_CMP=ART

.NETAsm – inject native x86 code into your .NET apps

It may come in handy some time to have this functionality available. Unfortunatly it does not support 64 Bits – on which I am mainly developing now – but it’s cool:

NetAsmLogo

“NetAsm 1.0 is released. NetAsm provides a hook to the .NET JIT compiler and enables to inject your own native code in replacement of the default CLR JIT compilation. With this library, it is possible, at runtime, to inject x86 assembler code in CLR methods with the speed of a pure CLR method call and without the cost of Interop/PInvoke calls.”

  • Runs on x86 32bit Microsoft .NET platform with 2.0+ CLR runtime (x64 may be supported in the future).
  • Provides three different native code injection techniques: Static, DLL, and Dynamic.
    • Static code injection: The native code is stored in an attribute of the method.
    • Dll code injection : this method is similar to the DllImport mechanism but CLR methods are directly bind to the DLL function, without going through the interop layers.
    • Dynamic code injection: you can generate native code dynamically with a callback interface that is called by the JIT when compilation of a method is occurring. It means that you can compile a method “on the fly”. You have also access to the IL code of the method being compiled.
  • Supports for debugging static and dynamic code injection.
  • Supports for different calling conventions: StdCall, FastCall, ThisCall, Cdecl. Default calling convention is CLRCall.
  • NetAsm can be used inside any .NET language.
  • Very small library <100Ko.

Source: http://www.codeplex.com/netasm

Graph theory: How to visualize a network

Since I am a bit familiar with graph theory and building technologies around graphs I came across this neat little library originally developed by Marc Smiths Team at Microsoft Research. It’s now up on Codeplex for your own study and research:

“.NetMap is a pair of applications for viewing network graphs, along with a set of .NET Framework 2.0 class libraries that can be used to add network graphs to custom applications.

A network graph is a series of vertices (sometimes called nodes) connected by edges. See this Wikipedia article for an overview of network graphs.”

Graph6 Graph1

Graph12

It even integrates into Excel…well if you need that… more interesting is:

“The Windows Forms control is one of several graph “visualizers” that are packaged in a Microsoft.NetMap.Visualization assembly. There is also a Microsoft.NetMap.Adapters assembly for reading and writing graph data in various formats, a Microsoft.SocialNetworkLib assembly for analyzing social networks, and a Microsoft.NetMap.Core assembly that implements the low-level vertex, edge, and graph classes. The framework for a Microsoft.NetMap.Algorithms assembly is also provided, although most of the graph algorithms are still work items as of May 2008.”

Source 1: http://research.microsoft.com/~masmith/
Source 2: http://www.codeplex.com/NetMap

What about the user interface? UI guidelines all together now!

You may have heard about things like “guidelines for user interfaces” – Sometimes I tend to think that there is no such thing as a design guideline for a better user interface because some applications are just plain unusable for a normal human being.

But there are guidelines for almost everything and I wanted to give an overview:

Microsoft:

Apple:

Linux:

  • KDE Standards User Interface Guidelines
  • GNOME Human Interface Guidelines
  • Motif Style Guide

interesting ones:

trueSpace 3D 7.6 is available for free

I used trueSpace years ago when a demo version appeared on one of those CDs that often came with computer magazines… it must be more than 10 years now. I was pleased to read about the availability of the current version of trueSpace as a completely free tool:

“trueSpace7.6 is a fully-featured 3D authoring package that will let you model, texture, light, animate and render 3D content. As well as traditional images and movies, you can also make 3D content for online shared spaces, and for Virtual Earth.”

truespace76

Source: http://www.caligari.com/Products/trueSpace/tS75/brochure/intro.asp?Cate=BIntro

self replicating machines

When I thought of self replicating machines I thought of end-of-time scenarios and a robot armies conquering the world and enslaving the human race… it’s not that bad right now but we’re getting to it… sort of :-)

pc-va

“Adrian Bowyer (left) and Vik Olliver (right) with a parent RepRap machine, made on a conventional rapid prototyper, and the first complete working child RepRap machine, made by the RepRap on the left. The child machine made its first successful grandchild part at 14:00 hours UTC on 29 May 2008 at Bath University in the UK, a few minutes after it was assembled.”

“RepRap is short for Replicating Rapid-prototyper. It is the practical self-copying 3D printer shown on the right – a self-replicating machine. This 3D printer builds the parts up in layers of plastic. This technology already exists, but the cheapest commercial machine would cost you about €30,000. And it isn’t even designed so that it can make itself. So what the RepRap team are doing is to develop and to give away the designs for a much cheaper machine with the novel capability of being able to self-copy (material costs are about €500). That way it’s accessible to small communities in the developing world as well as individuals in the developed world. Following the principles of the Free Software Movement we are distributing the RepRap machine at no cost to everyone under the GNU General Public Licence. So, if you have a RepRap machine, you can make another and give it to a friend… “

Source: http://reprap.org/bin/view/Main/WebHome

speaking of Augmented Reality

It seems that I missed that Augmented Reality Toolkit all the way until now. It’s ARToolKit and it’s completely OpenSource.

As a matter of fact there are a ton of demos available… HOW could I possibly miss that for so long?

“ARToolKit is a software library for building Augmented Reality (AR) applications. These are applications that involve the overlay of virtual imagery on the real world. For example, in the image to the right a three-dimensional virtual character appears standing on a real card. It can be seen by the user in the head set display they are wearing. When the user moves the card, the virtual character moves with it and appears attached to the real object.

One of the key difficulties in developing Augmented Reality applications is the problem of tracking the users viewpoint. In order to know from what viewpoint to draw the virtual imagery, the application needs to know where the user is looking in the real world.”

Here is a short video demonstration of what you could start with:

…not talking about the things that would be possible if someone had a great idea :-)

Source: http://www.hitl.washington.edu/artoolkit/

new physics games … better than “world of sand” :-) and more

Small games that simulate real-world physics are just fantastic – I already wrote about a very similar game but this one has far more options :-)

powder

“This sandbox contains a variety of elements which the player can scatter at a mouse-click. Ice, water, fire, the titular “powder” (which serves as the sand). The heart of Powder Game is the way these elements interact. Water that touches ice will freeze. Ice that touches fire will melt. Drop a seed onto some powder and a plant will sprout. Water the plant and it will grow. Touch a flame to it and it will catch fire and burn.

The other key element that defines Powder Game is wind. Powder stacks in neat piles, but a click of the mouse (a right click by default, but this can be changed) sends it spiralling into the air. Currents coalesce, rub against each other, create eddies in the air. Fire creates wind, as does exploding gunpowder. Wind turns ice into snow, creates rivers of particles in the air. When the background effect is set to “BG-shade,” it becomes entrancing to watch.”

There is even a whole website around those physic games:

funmotion

Source 1: http://dan-ball.jp/en/javagame/dust/
Source 2: World of Sand-old article
Source 3: http://www.fun-motion.com/

Augmented Reality Game soon available (full source!)

You may have heard about Levelhead – an augmented reality game made by Julian Oliver – if you did not hear about it? No problem:

Augmented reality (AR) is a field of computer research which deals with the combination of real-world and computer-generated data. At present, most AR research is concerned with the use of live video imagery which is digitally processed and “augmented” by the addition of computer-generated graphics. Advanced research includes the use of motion-tracking data, fiducial marker recognition using machine vision, and the construction of controlled environments containing any number of sensors and actuators.”

So – Augmented reality mixes the reality and the computer graphics and creates a new reality for you. That’s a lot of theoretical…so let’s talk about Levelhead:

It’s a game where you have to move plastic cubes with printed-on patterns in front of a camera – the computer now renders a new world inside of the plastic cubes – when you move the cube, the world inside the cube moves too… it looks like this:

lh_4_med

“levelHead uses a hand-held solid-plastic cube as its only interface. On-screen it appears each face of the cube contains a little room, each of which are logically connected by doors.
In one of these rooms is a character. By tilting the cube the player directs this character from room to room in an effort to find the exit.

Some doors lead nowhere and will send the character back to the room they started in, a trick designed to challenge the player’s spatial memory. Which doors belong to which rooms?

There are three cubes (levels) in total, each of which are connected by a single door. Players have the goal of moving the character from room to room, cube to cube in an attempt to find the final exit door of all three cubes. If this door is found the character will appear to leave the cube, walk across the table surface and vanish.. The game then begins again.
Someone once said levelHead may have something to do with a story from Borges.. For a description of the conceptual basis of this project, see below. “

If you are not amazed now? You should watch this:

The thing is – this cool game and technology will be available at the end of this month as full open-source. I suggest to check Julians site back at the end of the month at last.

Source 1: Augmented Reality @ Wikipedia
Source 2: Levelhead homepage

How to play a shooter in 16 pixel by 16 pixels space

It’s really a piece of art with only 256 pixels space – it’s the remake of the Defender game you won’t be able to play in Full HD:

DEFENDER of the favicon is a JavaScript remake of Eugene Jarvis‘ brilliant arcade game Defender written by Mathieu ‘p01’ Henri and inspired by Scott Schiller‘s experiment with generated favicons VU meter. The idea was to push the concept of generated favicons further and pack a thrilling retro shooter in 16×16 pixels using JavaScript, canvas and data: URIs.”

“Each frame of the game is generated on the fly in JavaScript into a 16×16 canvas element, then converted to a 32bits PNG image and used in place of the favicon.”

To be clear: This is not a joke – it’s an actual game… the size of:

16x16defender

Source: http://www.p01.org/releases/DHTML_contests/files/DEFENDER_of_the_favicon/

hurray, Mono fully supports C# 3.0

“I am pleased to announce that Mono C# compiler (gmcs) has now full C# 3.0 support. Most of the features has been available since Mono 1.2.6 release. However, with the upcoming Mono 2.0 release we will also support complex LINQ expressions and mainly expression trees which is fairly overlooked new feature with a lot of potential.”

Source: http://mareksafar.blogspot.com/2008/07/mono-c-compiler-gets-full-c-30-support.html

a selfmade web drop box in 10 minutes

I often have to share files with people – files which most of the time can be publically accessible – the problem is though that it’s far to much copy-n-paste involved to get the file uploaded and the URL of the file put together. I just made my life a bit easier and invested some minutes to write a small “DropBox” application that uses a custom webservice hosted on one of my machines to upload, list and delete files and to allow users that have the correct URL to download files.

paths

The path scheme is obviously just that I added a dropped folder in which the files will be stored and the webservice itself – that’s all on the webserver machine (having this folder setup as a website using ASP.NET 2.0)

For the client I wrote this little app:

dropboxapp

It’s no rocket science but it’s a good example for a small app that utilizes a webservice. If you want to use it you have to configure the webservice and the Client Application:

for the webservice:

wsconfig

You have to adjust the paths, URLs and the Password.

for the application:

appconfig

You just have to set the right Password.

If you’re set everything up correctly you should be able to drop files onto the Client Application window and get them uploaded to your webserver – the URL is automatically in your clipboard when everything worked.

If you click on the “Manage” tab in the Client Application you can get a list of all files on the server – clicking on the name of the file will automatically add the url to that file to your clipboard – if you want to delete a file – just click on it and click “delete selected file”.

The code can be considered public-domain and can be downloaded here.

I used the open-source icons from the Tango Desktop project to make a simple icon for the client application.

Source 1: DropBoxService-v1.rar (94,09 KB)
Source 2: http://tango.freedesktop.org/Tango_Desktop_Project

what typing 4 words a second sounds like

Okay – the ones who are frequently using a keyboard know that they are getting faster and faster as time goes by – so it’s normal to type fast but FAST is not enough to compete in the national speed-typing contest in the states:

“Who’s the fastest typist in the land? If you’re talking about the Land of Lincoln, it’s arguably Melanie Humphrey-Sonntag, who has won the Illinois court reporters speed contest for the past three years. At last year’s event she transcribed the contest’s blazing dictation—averaging 245 words a minute—with a 99.193 percent accuracy.
That’s about 4 words a second.”

Source: Chicago Tribune speed typing (with video)