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)

How to use the intertubes to display music videos along your ordinary music

If you got a Mac (and that’s the platform it’s only running on) and if you’re using iTunes to listen to your music you probably want to give this Dashboard Widget a try – it automatically searches the music video which supposedly belongs to the music you’re currently listening to and plays it in a small window on the dashboard:

“YouTube has stacks and stacks of music videos on their website. I have written a little dashboard widget called iTube. iTube gets the artist and title of the song you are playing in iTunes. It then performs a search on youtube and plays the first hit in the widget window. Once installed iTube works by itself in the background, so start a song up iTunes then look at your dashboard and with a little luck you’ll be watching what you are listening to.”

itube

Source: http://philipandrews.org/blog/itube/

a tool to convert a Windows Server 2008 machine into a useable workstation without loosing anything

a similar tool is available for Windows Server 2003 and now for 2008:

“Probably you are thinking at the moment: “Why the heck should I use Windows Server 2008 as my Workstations Operating System?? Vista works fine for me…”.

The answer is clear: Windows Server 2008 has almost exactly the same features as Windows Vista (SP1), but is remarkably faster and more stable!

converter_general

I cannot talk about the “more stable”-part since my Vista machines do not crash but if you’re one of those who just cannot live without the newest cutting-edge kernel version go ahead install Server 2008 and convert it into a useable workstation with Sound and stuff :-)

Source: http://www.win2008workstation.com/wordpress/2008/07/17/windows-server-2008-workstation-converter/