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