Recent Articles

Open Source .NET Service Bus »


MassTransit is lean service bus implementation for building loosely coupled applications using the .NET framework.


The lean implementation is supported by the YAGNI principle. By focusing on a tight set of specific concerns, the touch points between Mass Transit and the application are minimized resulting in a clear and concise set of interfaces.


Designed for collaboration between business-oriented services, NServiceBus is not a replacement for RPC technologies like WCF.

Successful SOA and DDD projects use a mix of approaches and technologies – not just NServiceBus for communications.

When many people hear the term "service bus" they picture a central box which all communication goes through, like BizTalk. That’s actually a description of the Broker architectural style, not the Bus architectural style. A bus isn’t necessarily a physical entity. In that respect, NServiceBus is more similar to WCF than it is to BizTalk.

There is no physical WCF one can point to in the network topology. WCF is part of the infrastructure that is run in-process with a given application’s code. NServiceBus is the same.

Just like you can write your own host process and activate WCF explicitly within it, you can do the same thing with NServiceBus. The bus in NServiceBus is something virtual – the collection of framework objects running in the various applicative processes.

C# Outlook Message Viewer »

Download Source Code

I need to parse and display the content of Outlook msg file. Obviously this is not as simple as what I initially thought.

There is a useful piece of code available in CodeProject but it has problem retrieving OLE embedded object.

Well, exactly there is another article which describes how to resolve this problem.

Using the fix described and applied to the source code I was able to view any Outlook msg files now.

ASP.NET RTF Control »

The key feature of the RTE is to support WYSIWYG along with the following generic feature set below. The key goal has been to encapsulate all the complex functionality of web based rich text editing into a single control.

All that you need is to drop the control dll into your bin directory, and include a single tag like <cc1:RichTextEditor ID="Rte1" Theme="Blue" runat="server" /> to get the full rich text editor working on your page!. You can use the Culture attribute to set it for use with other supported languages listed below.


Including Mathematics in Web Pages »

The jsMath package provides a method of including mathematics in HTML pages that works across multiple browsers under Windows, Macintosh OS X, Linux and other flavors of unix. It overcomes a number of the shortcomings of the traditional method of using images to represent mathematics: jsMath uses native fonts, so they resize when you change the size of the text in your browser, they print at the full resolution of your printer, and you don’t have to wait for dozens of images to be downloaded in order to see the mathematics in a web page. There are also advantages for web-page authors, as there is no need to preprocess your web pages to generate any images, and the mathematics is entered in TeX form, so it is easy to create and maintain your web pages.

Although it works best with the TeX fonts installed, jsMath will fall back on a collection of image-based fonts (which can still be scaled or printed at high resolution) or unicode fonts when the TeX fonts are not available. There is a control panel connected to a small floating button that lets the user select which fallback method to use or change some other settings like a scaling factor to use for the mathematics compared to the other text on the page.

Running a DLL Procedure Directly »

To run a procedure in a DLL in simple. Just by using rundll32.exe <dll name>, <procedure name>, you can run the procedure. Procedure name is case sensitive.

E.g. to lock your computer, run “rundll32.exe user32.dll,LockWorkStation”

You can also use strings from sysinternals to view the available procedures in the dll.

E.g. for user32.dll, some of the available procedures are

  • LoadKeyboardLayoutW
  • LoadLocalFonts
  • LoadMenuA
  • LoadMenuIndirectA
  • LoadMenuIndirectW
  • LoadMenuW
  • LoadRemoteFonts
  • LoadStringA
  • LoadStringW
  • LockSetForegroundWindow
  • LockWindowStation
  • LockWindowUpdate
  • LockWorkStation
  • LogicalToPhysicalPoint
  • LookupIconIdFromDirectory
  • LookupIconIdFromDirectoryEx
  • MB_GetString

Check Modem AT Commands »

This is a diagnostics tool included in MessagingToolkit to help you verifying the AT command support of the modem or handset.

First, make sure your modem is connected to your computer either through serial cable, bluetooth or infrared.


Select the correct configuration (port, data bits, baud rate). Enter the PIN if it is configured in the SIM card. Click Next once your gateway is connected.


Click Start Diagnosing, you should see output similar to following


Open Source JAVA JMS Console »

HermesJMS is an extensible console that helps you interact with JMS providers making it easy to browse or seach queues and topics, copy messages around and delete them.

It fully integrates with JNDI letting you discover administered objects stored, create JMS sessions from the connection factories and use any destinations found. Many providers include a plugin that uses the native API to do non-JMS things like getting queue depths (and other statistics) or finding queue and topic names.


Free SQLite Database Administration Tool »

Lita is a free SQLite database administration tool for Windows, MacOSX and Linux.

  • Open, create, compact, manage SQLite databases
  • Create, rename, delete, and empty tables
  • Create, rename and delete columns
  • Create, modify and delete records
  • Encrypt or reencrypt your databases
  • Run, import and export your custom SQL statements
  • Create and delete indices


Free .NET Profiler »

Here are some alternative to Visual Studio Team System Profiler if you are looking for free .NET profiler tools

The CLR Profiler includes a number of very useful views of the allocation profile, including a histogram of allocated types, allocation and call graphs, a time line showing GCs of various generations and the resulting state of the managed heap after those collections, and a call tree showing per-method allocations and assembly loads.

The EQATEC Profiler is a code profiler, not a memory profiler. So it’s all about making your app run faster, not about tracking objects and memory.
The report will tell you exactly how many times each method was called and how long it took. You can then speedup your application by optimizing just the most expensive methods.


SlimTune is a free profiler and performance analysis/tuning tool for .NET based applications, including C#, VB.NET, IronPython, and more. It provides many powerful features, such as remote profiling, real time results, multiple plugin-based visualizations, and much more. The source code is available under the terms of the MIT License.

SlimTune is currently in the prototyping phase of development, but a preview release is available for testing and feedback is welcome. Both x86 and x64 targets are supported, but only sampling based profiling is available in the release.


iSQL Viewer »

iSQL-Viewer is an open-source JDBC 2/3 compliant database front end written in Java. It implements across multiple platforms features of the JDBC API. It does everything through a single interface.

iSQL-Viewer works with most database platforms, including PostgreSQL, MySQL, Oracle, and Informix. iSQL-Viewer provides a variety of tools and features to carry out common database tasks. It includes:

  • A friendly SQL console for executing SQL statements
  • Database and schema viewing and browsing
  • Compatible with major database vendors
  • SQL Bookmarks to store SQL commands you commonly use
  • SQL History to see and retrieve SQL commans previously executed
  • Enhanced user interface support across platforms

iSQL-Viewer is designed to meet the needs of JDBC Driver developers and database developers who work in single or multi-platform environments.


Archiva: Maven Repository Manager from Apache »

Apache Archiva is an extensible repository management software that helps taking care of your own personal or enterprise-wide build artifact repository. It is the perfect companion for build tools such as Maven, Continuum, and ANT.

Archiva offers several capabilities, amongst which remote repository proxying, security access management, build artifact storage, delivery, browsing, indexing and usage reporting, extensible scanning functionality… and many more!


MySQL WorkBench »

I have written on DBDesigner – A Handy MySQL Database Designer. However, MySQL has now a better tool, which is a successor to DBDesigner.


MySQL Workbench is a visual database design tool that is developed by MySQL. It is the successor application of the DBDesigner4 project.

MySQL Workbench is available in two editions, the Community OSS Edition and the commercial Standard Edition.

Remote Access for Windows Vista »

There is no telnet for Windows Vista. Instead we have WinRM & WinRS. These are powerful new command line management tools give system administrators improved options for remote management and remote execution of programs on Windows machines.

Windows Remote Management (known as WinRM) is a handy new remote management service for Windows Server 2003 R2, Windows Vista, and Windows Server 2008. WinRM is the “server” component of this remote management application and WinRS (Windows Remote Shell) is the “client” for WinRM, which runs on the remote computer attempting to remotely manage the WinRM server. However, I should note that BOTH computers must have WinRM installed and enabled on them for WinRS to work and retrieve information from the remote system.

WinRM is based on the Web Services for Management (WS-Management) standards. What that means is that WinRM uses the HTTP protocol (port 80) and SOAP requests to do its job. The good thing about that is that HTTP request are easy to send and receive through a firewall. And, consequently, the good and bad of that is that it will make it easier to remotely manage someone else’s Windows PC over the Internet OR it makes it easier for a malicious attacker to remotely attack Windows PCs over the Internet. The other benefit to WinRM using HTTP is that no additional ports would have to be opened up on server & client firewalls if HTTP inbound was already permitted.

Open Source Terminal Software »

I have written on Open Source Telnet, SSH and RDP software before. Here is another open source terminal software.

Realterm is a terminal program specially designed for capturing, controlling and debugging binary and other difficult data streams. It is far better for debugging comms than Hyperterminal. It has no support for dialing modems, BBS etc – that is what hyperterminal does.



  • Text or Binary views of data
  • binary viewed as hex, 8 bit, 16 bit, little/big endian, signed, unsigned, special fonts
  • colorised: rx and tx data are different colors
  • ansi terminal or plain text or binary modes
  • protocol analyser / "port spying" mode
  • fixed frame sizes/line lengths
    sync patterns with masks and xors
  • data inversion
  • full remote control through active X/ Windows Scripting
    extensive command-line control
  • can be used for serial I/O component of other programs via activeX. Full support for minimize,hide,iconize, tooltray
  • special ascii+hex font to see hidden control chars
  • capture to file, settable capture size or capture duration
  • timestamping capture files for simple data logging
  • view and change control lines (cts,rts, dcd etc)
  • easy to send binary sequences
  • serial (comports) or telnet via tcp
  • arbitary baud rates
  • reset / power buttons for Pic Programmer
  • hideable to run in invisible or on tool-tray
  • can dump files to serial port
  • Drives I2C and SPI chips via BL233

Open Source SOAP Monitor and HTTP Proxy »

Membrane SOAP Monitor is an open source tool to capture, display and manipulate SOAP and HTTP messages. The monitor can work as HTTP proxy or as forwarding HTTP proxy.


Open Source Personal Finance Software »

Buddi is a personal finance and budgeting program, aimed at those who have little or no financial background.


Open Source Java Server Centric AJAX Framework »

 ItsNat is an innovative open source (dual licensed, GNU Affero General Public License v3/commercial license for closed source projects) Java AJAX Component based Web Framework. It offers a natural approach to the modern web development. Why natural? ItsNat leverages the old tools to build the new AJAX based Web 2.0 applications: pure (X)HTML templates, pure Java W3C DOM!. ItsNat is server centric using a unique approach called TBITS, "The Browser Is The Server": ItsNat simulates a Universal W3C Java Browser at the server, with ItsNat the server mimics the behavior of a web browser, containing a W3C DOM Level 2 node tree and receiving W3C DOM Events. ItsNat is strongly committed with the Single Page Interface web paradigm. 

ItsNat provides many more things: web-continuations (continue events), user defined events, timers, asynchronous long running server tasks, COMET, DOM utils (to simplify DOM manipulation), resolution of ${} based variables in markup, ElementCSSInlineStyle support in the server, automatic page remote/view control of other users/sessions!!, XML generation, non-HTML namepaces support like pure SVG with AJAX and SVG embedded in XHTML, JavaScript generation utilities, events fired by the server sent to the client (server-sent events) simulating user actions (for instance to test the view using the server), custom pretty URLs, previous/forward document navigation (pull and push referrers) with back/forward button support, degraded modes (AJAX disabled and JavaScript disabled modes) etc.

ItsNat provides a web based Component System too. These components are AJAX based from the scratch inspired in Swing and reusing Swing as far as possible such as data and selection models (but is not a forced Swing clone in web). Components included: several button types, text based components, labels, lists, tables, trees (all of them with content editable "in place")… In ItsNat every DOM element or element group can be a component.

Supported desktop browsers: Internet Explorer 6+ (inc. v8), FireFox 1+, Safari 3+, Opera 9+, Google Chrome, QtWebKit and QtJambi (Qt 4.4), Arora (QtWebKit based)

Supported mobile browsers: Opera Mini 4.x, Opera Mobile 8.6x (including 9.5), NetFront 3.4+, Minimo 0.2, Pocket IE of Windows Mobile 6 & 6.1, IE Mobile 6 (WM 6.1.4 or "6 on 6"), iPhone/iPod Touch, Android, S60WebKit (since S60 3rd), S40WebKit (since S40 6th), BlackBerry JDE 4.6+ (Bold, Storm etc), Iris 1.0.8+, QtWebKit of Qt Embedded for Linux and Windows CE (Qt 4.4), SkyFire 0.9 and Fennec 1.0a1 (FireFox Mobile).

Open Source Alternative for Microsoft Project »

OpenProj is a free, open source project management solution. OpenProj is a replacement of Microsoft Project and other commercial project solutions.


Facebook SDK from Microsoft »

The Facebook toolkit is provided as a Facebook Client Library similar to Facebook’s PHP Client Library or Facebook’s JavaScript library. The goal is to enable .NET developers to quickly and easily leverage the various features of the Facebook Platform. This toolkit has evolved over time with input from the community and from Microsoft. The latest release (v3.0) includes new architectural improvements and provides an asynchronous interface for using the toolkit from Silverlight and from WPF.

The main entry point is the API (Facebook.Rest.Api) class in the Facebook.dll assembly. This class wraps the Facebook REST API and provides an easy to use interface for calling the different methods currently available in the Facebook API. We’ve also provided samples and tools for helping develop Facebook applications in the various .NET platforms including: ASP.NET, Silverlight, WPF and WinForms. Additionally, we’ve provided all the source code for the API, components, controls, and samples for you to explore.

The toolkit is comprised of the following core assemblies:

  • Facebook.dll: This is the main assembly that will be used by all applications. This has all the logic to handle communication with the Facebook application. This assembly also has specific support of XAML applications (Silverlight and WPF) to enhance the Facebook platform to make databinding and data caching easier.
  • Facebook.Silverlight.dll: This is the Silverlight version of the main assembly that will be used by all Silverlight applications. This has all the logic to handle communication with the Facebook application. This assembly also has specific support of XAML applications to enhance the Facebook platform to make databinding and data caching easier. The REST API in this assembly is Asynchronous only.
  • Facebook.Web.dll: This assembly should be used by Canvas applications. The main functionality supported in this assembly is to encapsulate the handshake between the Facebook application and a canvas application (both FBML and IFrame)
  • Facebook.Web.Mvc.dll: Provide a support building canvas applications using ASP.NET MVC. Separated from Facebook.Web.dll to avoid all developers from needing to install the MVC bits.
  • Facebook.Winforms.dll: This assembly provides support for writing Facebook applications using Winform technology. This provides a Component that wraps the API to make it easier to use from Winforms. This also contains some user controls to help display Facebook data easily.

SQL Injection Tool »

SQL Power Injector is an application created in .Net 1.1 that helps the penetration tester to find and exploit SQL injections on a web page.

For now it is SQL Server, Oracle, MySQL, Sybase/Adaptive Server and DB2 compliant, but it is possible to use it with any existing DBMS when using the inline injection (Normal mode). Indeed, the normal mode is basically the SQL command that someone will put in the parameter sent to the server.



  • Supported on Windows, Unix and Linux operating systems
  • SQL Server, Oracle, MySQL, Sybase/Adaptive Server and DB2 compliant
  • SSL support
  • Load automatically the parameters from a form or a IFrame on a web page (GET or POST)
  • Detect and browse the framesets
  • Option that auto detects the language of the web site
  • Detect and add cookies used during the Load Page process (Set-Cookie detection)
  • Find automatically the submit page(s) with its method (GET or POST) displayed in a different color
  • Can create/modify/delete loaded string and cookies parameters directly in the Datagrids
  • Single SQL injection
  • Blind SQL injection
    • Comparison of true and false response of the page or results in the cookie
    • Time delay
  • Response of the SQL injection in a customized browser
  • Can view the HTML code source of the returned page in HTML contextual colors and search in it
  • Fine tuning parameters and cookies injection
  • Can parameterize the size of the length and count of the expected result to optimize the time taken by the application to execute the SQL injection
  • Create/edit ASCII characters preset in order to optimize the blind SQL injection number of requests/speed
  • Multithreading (configurable up to 50)
  • Option to replace space by empty comments /**/ against IDS or filter detection
  • Automatically encode special characters before sending them
  • Automatically detect predefined SQL errors in the response page
  • Automatically detect a predefined word or sentence in the response page
  • Real time result
  • Save and load sessions in a XML file
  • Feature that automatically finds the differences between the response page of a positive answer with a negative one
  • Can create a range list that will replace the variable (<<@>>) inside a blind SQL injection string and automatically play them for you
  • Automatic replaying a variable range with a predefined list from a text file
  • Firefox plugin that will launch SQL Power Injector with all the information of the current webpage with its session context (parameters and cookies)
  • Two integrated tools: Hex and Char encoder and MS SQL @options interpreter
  • Can edit the Referer
  • Can choose a User-Agent (or even create one in the User-Agent XML file)
  • Can configure the application with the settings window
  • Support configurable proxies