Recent Articles

Open Source Performance Analysis Tool »

The PAL (Performance Analysis of Logs) tool is a powerful tool that reads in a performance monitor counter log and analyzes it using known thresholds.


  • Thresholds files for most of the major Microsoft products such as IIS, MOSS, SQL Server, BizTalk, Exchange, and Active Directory.
  • An easy to use GUI interface which makes creating batch files for the PAL.ps1 script.
  • A GUI editor for creating or editing your own threshold files.
  • Creates an HTML based report for ease of copy/pasting into other applications.
  • Analyzes performance counter logs for thresholds using thresholds that change their criteria based on the computer’s role or hardware specs.

To use PAL

The PAL tool is primarily a PowerShell script that requires arguments/parameters passed to it in order to properly analyze performance monitor logs.


Operating Systems
Tested on Windows 7, but should run on Windows XP, Windows Server 2003, Windows Vista, Windows 7, Windows Server 2008, and Windows Server 2008 R2.

Required Products (free and public):
- PowerShell v2.0 or greater.
- Microsoft .NET Framework 3.5 Service Pack 1
- Microsoft Chart Controls for Microsoft .NET Framework 3.5

Popularity: 1% [?]

Sending SMS from Website using GSM Modem »

There are a couple of times we are asked on how to send SMS from an ASP.NET web application using a GSM modem. Normally in this case the user will try to directly connect to the GSM modem from within the web application and perform the sending.

Normally this will not work as the web application is hosted under a web server, and sometimes this could cause a problem.

Scenario 1 – Web application and GSM modem is in the same machine

Instead you should develop a Windows service that listens to a database table for incoming message. The web application should inserts messages to be sent into an outgoing message table.

The Windows service should regularly check for incoming messages from the modem, and insert those messages into an incoming message table. The web application accesses the table to check for newly arrived messages.

Scenario 2 – Web application and GSM modem are on different machines

If your web application is hosted somewhere else under a web hosting company, the web application will still insert the outgoing messages into a database table. But now you will need to develop a web service to return those newly inserted messages.

On the machine that you have the GSM modem installed, invoke the web service to get the outgoing messages, connect to the modem and send out the messages. You could call another web service to update the status back to the database.

If you are looking for sample source, have a look at SmartGateway which is available at Google Code.

Popularity: 1% [?]

.NET Runtime Debugging and Scripting Tool »

Crack.NET is a runtime debugging and scripting tool that gives you access to the internals of a WPF or Windows Forms application running on your computer. If you love Snoop and Mole for Visual Studio, you’ll love Crack.NET, too. Crack.NET allows you to “walk” the managed heap of another .NET application, and inspect all values on all objects/types.

Crack.NET requires the .NET Framework 3.5 with Service Pack 1 (SP1) in order to run.


Popularity: 1% [?]

Serial Port Programming Made Easy »

Any Serial Port is a handy, simple serial port programming language specially designed to simplify the development of RS232 based applications.


  • - Capability to log multiple serial ports at the same time. Data logger has the capability to log multiple ports simultaneously so that multiple external serial devices can be logged
  • - Integrated Development Environment (IDE). You do NOT have to install any other development tools
  • - Built-in debugger makes it easy to find and fix errors. It saves a lot of time.
  • - Change encoding easily, find and replace when sending data
  • - CPU utilization, uptime and recv/send statistics. See Performance Window
  • - Data export to file or any ODBC-compatible database (MS SQL, Oracle, MS Access, MS Excel, dBase and others)
  • - Regular expression support for easy extraction
  • - Easy parsing with templates
  • - Manual barcode upload window (e.g. for clinical instruments)
  • - Plugin support
  • - Simple and intuitive interface
  • - Redistributable as part of your .NET application
  • - Supports all major Windows platforms, including Windows XP, Windows Vista and Windows 7.


Popularity: 1% [?]

Versatile Log File Parsing with LogParser »

Log parser is a powerful, versatile tool that provides universal query access to text-based data such as log files, XML files and CSV files, as well as key data sources on the Windows® operating system such as the Event Log, the Registry, the file system, and Active Directory®.

You tell Log Parser what information you need and how you want it processed. The results of your query can be custom-formatted in text based output, or they can be persisted to more specialty targets like SQL, SYSLOG, or a chart.

Most software is designed to accomplish a limited number of specific tasks. Log Parser is different… the number of ways it can be used is limited only by the needs and imagination of the user. The world is your database with Log Parser.

Popularity: 1% [?]

Optimize PNG Image Size »

PNGGauntlet is a .NET program that uses Ken Silverman’s PNGOUT command line utility to optimize PNG files. Many PNG files output by popular graphics software packages like Photoshop or Fireworks are not as small as they could be.

PNGGauntlet squeezes the last bit of size out of them. Furthermore, no information is lost during this process – the only thing that changes is the file size. Just select the files you want to optimize (or drag them onto the window), select where you want them to go, and click the button. PNGauntlet can also be used to convert JPG, GIF, TGA, PCX, and BMP files to PNG.


Popularity: 1% [?]

Minimize CSS and Javascript Size »

The Microsoft Ajax Minifier enables you to improve the performance of your web applications by reducing the size of your Cascading Style Sheet and JavaScript files.
Minify both JS and CSS files.

Use the -analyze option on the command-line to provide lint-style syntax checking and variable analysis of your code.

Use the -pretty option on the command-line to output in a nice, easy-to-read multi-line format (good for un-minifying minified code).

Popularity: 1% [?]

Open Source Code Review Tool »

Phabricator is a open source collection of web applications which make it easier to write, review, and share source code. It is currently available as an early release. Phabricator was developed at Facebook.

Phabricator is a suite of web applications that help teams communicate about software effectively. It was developed at Facebook, and is used by more than 500 engineers to review, discuss, track and share changes every day (maybe fewer on weekends and holidays).

Popularity: 1% [?]

Glimpse for ASP.NET Website »

Glimpse is an amazing product that allows you to see exactly what’s going on in your web server. Currently, it works for any ASP.NET website and even has specific extensions for specific frameworks like (ASP.NET MVC, etc.).

Besides just supporting frameworks such as these out of the box, Glimpse has an architecture that fundamentally supports the future development of Server side implementations of Glimpse for other non-ASP.NET based system in the future.

Glimpse plugins, either built into Glimpse, or provided by third parties or yourself run on the server and collect all server side information that will aid in debugging (i.e. application settings, routes, session variables, trace data, etc.)

Before the response is send, the Glimpse formats the data collected by the plugins in accordance with the Glimpse Protocol and serializes it as JSON

Depending on whether it is an Ajax request or not, the server embeds the JSON in an HTTP Header or in the content of the page.

JavaScript on the clients picks up the JSON data sent by the server components and displays and dynamically renders a client side UI (similar to Firebug Lite) that lets you view this data.

Glimpse can be turned on or off by a series of different mechanistic, but at its core if the Glimpse cookie is present the server will provide the "debug" data – as a security measure, the request for debug data is "authenticated". Via the plugin model, this authentication check can have any logic that is required by the site to ensure that unauthorized users don’t have access to sensitive debug data.

Popularity: 1% [?]

Javascript Library for HTML5 and CSS4 WebSites »

Modernizr is an open-source JavaScript library that helps you build the next generation of HTML5 and CSS3-powered websites.

Modernizr is a small JavaScript library that detects the availability of native implementations for next-generation web technologies, i.e. features that stem from the HTML5 and CSS3 specifications. Many of these features are already implemented in at least one major browser (most of them in two or more), and what Modernizr does is, very simply, tell you whether the current browser has this feature natively implemented or not.

Unlike with the traditional—but highly unreliable—method of doing “UA sniffing,” which is detecting a browser by its (user-configurable) navigator.userAgent property, Modernizr does actual feature detection to reliably discern what the various browsers can and cannot do. After all, the same rendering engine may not necessarily support the same things, and some users change their userAgent string to get around poorly developed websites that don’t let them through otherwise.

Modernizr aims to bring an end to the UA sniffing practice. Using feature detection is a more reliable mechanic to establish what you can and cannot do in the current browser, and Modernizr makes it convenient for you in a variety of ways:

  1. It tests for over 40 next-generation features, all in a matter of milliseconds
  2. It creates a JavaScript object (named Modernizr) that contains the results of these tests as boolean properties
  3. It adds classes to the html element that explain precisely what features are and are not natively supported
  4. It provides a script loader so you can pull in polyfills to backfill functionality in old browsers

Popularity: 1% [?]

Signaling Library for ASP.NET »

SignalR is an async signaling library for ASP.NET to help build real-time, multi-user interactive web applications

SignalR is broken up into a few package on NuGet:

  • SignalR – A meta package that brings in SignalR.Server and SignalR.Js (you should install this)
  • SignalR.Server – Server side components needed to build SignalR endpoints
  • SignalR.Js – Javascript client for SignalR
  • SignalR.Client – .NET client for SignalR
  • SignalR.Ninject – Ninject dependeny resolver for SignalR

Popularity: 1% [?]

yepnope–Asynchronous Resource Loader »

yepnope is an asynchronous conditional resource loader that’s super-fast, and allows you to load only the scripts that your users need.

  • yepnope.js is only 1.6kb – smaller than most and certainly a good size for its functionality set.
  • yepnope.js is called a "resource loader" because it can work with both JavaScript and CSS.
  • yepnope.js has a full test suite in QUnit that you can run in your set of supported browsers to make sure it works. (We run it via TestSwarm in every browser we can get our hands on)
  • yepnope.js fully decouples preloading from execution. This means that you have ultimate control of when your resource is executedand you can change that order on the fly.
  • The yepnope.js api is friendly and encourages logical grouping of resources.
  • yepnope.js is modular. It has a whole system for adding your own functionality and a couple examples of how you might do that. (Prefixes and filters).
  • The yepnope.js api encourages you to only load the resources that you need. This means that even when it’s slower than another script loader, it still can come out on top, because you could avoid an entire resource.
  • yepnope.js is integrated into Modernizr.
  • yepnope.js always executes things in the order they are listed. This is a pro for some, and a con for others. We think it’s a friendly default.
  • yepnope.js has the capability to do resource fallbacks and still download dependent scripts in parallel with the first.

Popularity: 1% [?]

AT Commands for Android Phone »

Here is an example of using MessagingToolkit to send AT commands to Android phone. The Android phone used here is a LG Optimus One P500.

Before you can send AT commands, make sure you have the driver installed for you phone. For LG phone, you can use LG Mobile Support Tool.

After the driver is installed, you can see the modem, and port in Device Manager


For the modem, make sure the port is the same as the serial port. In this case it is COM10. You can verify it under the Advanced Port Settings.


You can now use the demo program bundled with MessagingToolkit to connect to the phone, retrieve phone information, send/receive SMS/MMS, etc.

Note: For sending SMS, if you encounter CMS ERROR 500, you may need to specify the SMSC address in international format while sending the message.



Popularity: 1% [?]

Open Source CAD »

Archimedes is a free and open source CAD (Computer Aided Design) software. It is a robust system built over Eclipse’s Rich Client Platform fully based on plug ins. This means it is easily extensible but also has a pretty thin core that allows you to select the features you need and drop the other ones easily.

Archimedes works on GNU/Linux, Mac OS X and Windows and it only requires you have a Java Virtual Machine installed which is also a free software. This means that anything generated with Archimedes is easily recoverable and reused.


Popularity: 1% [?]

Secure shell (SSH) client for the Android platform »

ConnectBot is a Secure Shell client for the Android platform. Its ultimate goal is to create a secure connection through which you can use a shell on a remote machine and transfer files back and forth to your phone.


Popularity: 1% [?]

Mongoose–Easy to use Web Server »

Mongoose is easy to use web server. It also can be used as embedded web server library to provide web interface to applications.

Mongoose executable does not depend on any external library or configuration. If it is copied to any directory and launched from there, it starts to serve that directory on port 8080 (so to access files, go to http://localhost:8080). If some additional config is required – for example, different listening port or IP-based access control, then a mongoose.conf file with respective options can be created in the same directory where executable lives. This makes Mongoose perfect for all sorts of demos, quick tests, file sharing, and Web programming.


  • Crossplatform – works on Windows, MacOS and most flavors of UNIX
  • CGI, SSL, SSI, Digest (MD5) authorization, resumed download, aliases
  • IP-based ACL, Windows service, GET, POST, HEAD, PUT, DELETE methods
  • Small footprint: executable size is 40 kB on Linux 2.6 i386 system
  • Embeddable with simple and clean API. Source is in single .c file to make things easy. Minimalistic embedding example is in hello.c.
  • Python bindings

Popularity: 1% [?]

Android: Control Your Phone Remotely »

Using Webkey you can control your phone from any browser. It requires a rooted Android phone.

  • You can click and type on the phone (we inject touch events to the touch device and create a new HID for typing),
  • get screenshots (copied from the framebuffer device) in jpeg and png, record images in sequence
  • start phone calls (it uses ‘/bin/system/service’ from android)
  • open webpages on the phone (it uses intents)
  • browse, download from, upload to the SD card (it uses AjaXplorer so you can rename files, listen mp3, etc.)
  • browse and read every files on phone
  • adjust LCD backlight
  • get the phone’s location (GPS and network, it uses our JAVA code and shows the result on GoogeMaps)
  • reading and writing SMS,
  • exporting contacts, messages, call list in txt, csv, xml,
  • chat with phone and other users
  • terminal emulator with Shell In A Box
  • user rights management, log
  • works on wifi, 3g
  • DynDNS support (it’s a dinamic DNS service, after you register at, your phone will have an address like:, this only works if you can reach your phone using its IP address)
  • if your 3g internet provider blocks the incoming connection to your phone, then you cannot connect using its IP address or DynDNS, but you can connect through our server (the phone starts the connection like GoogleTalk does)
  • SSL support for direct connections (it doesn’t work thought our server, we are working on it) – this product includes cryptographic software written by Eric Young ([email protected])
  • opensource (it is licensed under General Public License)
  • most of the functions uses only C++ part, which has very low memory footprint and almost no CPU use in idle.


Popularity: 1% [?]

Android Web Server »

PAW server is a web server for Android.

Server Features
  • HTTP Web Server
  • Host your own web pages
  • Create web pages with dynamic content
    and use the Android API
  • Proxy Server (HTTP/HTTPS)
  • Automatic startup on boot

Web App Features

  • Shows syste information (like battery status etc.)
  • Call Log
  • SMS Inbox/Outbox
  • Send SMS
  • Dial a number
  • Browse Filesystem
  • Change background image

With PAW it is possible to write dynamic web pages which can use the functionality of your phone.
Have a look at the folder /sdcard/paw/html/app on your SD card.
Some of the HTML files contain Beanshell code (enclosed in <bsh></bsh> tags).

Here is an example how to retrieve information of the phone:

String[] opts = { "BOARD", "BRAND", "DISPLAY", "MODEL", "PRODUCT",

for(o : opts) {
 print(o + ":" + eval("android.os.Build." + o));

Popularity: 1% [?]

androidscreencast »

androidscreencast is a desktop app to control an android device remotely using mouse and keyboard. Should work on Windows/Linux/MacOS with any android device.


Popularity: 1% [?]

Troubleshooting Log4NET Configuration »

One thing with log4net is that whenever there is a configuration issue, no error or exception is thrown and this will make troubleshooting difficult.

To check if there is any configuration issue, add the followings in the app.config or web.config

Under appSettings, add the following key

   1: <appSettings>


   3:      <add key="log4net.Internal.Debug" value="true"/>


   5: </appSettings>

Configure the following trace listener

   1: <system.diagnostics>

   2:     <trace autoflush="true">

   3:       <listeners>

   4:         <add

   5:           name="textWriterTraceListener"

   6:           type="System.Diagnostics.TextWriterTraceListener"

   7:           initializeData="E:\Tools\Temp\log4net.txt" />

   8:       </listeners>

   9:     </trace>

  10:   </system.diagnostics>

Then you can see all the log4net issues in the text file.

Popularity: 1% [?]