Recent Articles

Java–CORS Filter »

Cross-origin resource sharing (CORS) is a mechanism that allows JavaScript on a web page to make XMLHttpRequests to another domain, not the domain the JavaScript originated from. Such “cross-domain” requests would otherwise be forbidden by web browsers, per the same origin security policy.

eBay CORS filter is a Java Servlet Filter implementation of server-side CORS for Java web containers such as Apache Tomcat. Salient features:

  • Easy to integrate and use – enable CORS capability with a few lines in your web.xml!
  • Protects against CRLF injection / response splitting attacks.

Another CORS filter for Java is is also available here.

Java/Android UPnP Library »

Cling is a complete, clean, and very flexible Java/Android UPnP library, implementing the UPnP Device Architecture 1.0specification. Additional UPnP service modules and graphical tools are also part of this project. Cling helps you create, control, and monitor UPnP-compatible services on your local network.

Cling Core is a Java UPnP library that implements this infrastructure, it offers clean and natural APIs for any developer who wants to implement either UPnP services or control points.

The main features of Cling Core are:

Fine-grained and safe APIs

Cling Core is not just a thin layer on top of the low-level UPnP protocol, it offers rich and natural APIs for developers. Every UPnP header, every message, and every piece of metadata is exposed as a type-safe API with as few type casting and string-lookups as possible. Much of the API is thread-safe, thus simplifying the pervasively multi-threaded environment in which UPnP operates.

Modular design and extensive SPIs

Almost all functionality of Cling Core can be overridden or replaced with custom code. Subsystems such as network transport, message parsing, and even individual aspects of the UPnP protocol implementation (such as discovery, control, eventing) offer SPIs for extension and customization.

Specification compliance

Many vendors who implement UPnP software violate the UPnP device architecture (UDA) specification in one way or another. Cling Core’s goal is to implement and respect every detail of the UDA specification. Currently, Cling Core is targeting UDA 1.0, with preparations already made for future UDA 1.1 compliance.

Complete implementation

Cling Core does not take any shortcuts, no parts of the specification are omitted just because they are difficult to implement.

Full support for Android

All features of Cling Core are supported on Android (see manual, platform level 7/Android 2.1 required). Use Cling to write UPnP/DLNA Android clients or even server applications. The full source code of the UPnPBrowser example application of the manual can be found here. You can see the application in action in this video.

Opus–Open Source Audio Codec »

Opus is a totally open, royalty-free, highly versatile audio codec. It is primarily designed for interactive speech and music transmission over the Internet, but is also applicable to storage and streaming applications. It incorporates technology from Skype’s SILK codec and Xiph.Org’s CELT codec. It has been standardized by the Internet Engineering Task Force (IETF) as RFC 6716.

Opus has been in development since early 2007. Programmers associated with Xiph.Org, Skype, and several other organizations have contributed to its development and to the standardization process as part of the IETF’s codec working group.

Opus can handle a wide range of audio applications, including Voice over IP, videoconferencing, in-game chat, and even remote live music performances. It can scale from low bit-rate narrowband speech to very high quality stereo music. More information and supported features are:

  • Bit-rates from 6 kb/s to 510 kb/s
  • Sampling rates from 8 kHz (narrowband) to 48 kHz (fullband)
  • Frame sizes from 2.5 ms to 60 ms
  • Support for both constant bit-rate (CBR) and variable bit-rate (VBR)
  • Audio bandwidth from narrowband to fullband
  • Support for speech and music
  • Support for mono and stereo
  • Support for up to 255 channels (multistream frames)
  • Dynamically adjustable bitrate, audio bandwidth, and frame size
  • Good loss robustness and packet loss concealment (PLC)
  • Floating point and fixed-point implementation

Open Source Prediction Engine for Big Data »

H2O makes hadoop do math! H2O scales statistics, machine learning and math over Big Data. H2O is extensible and users can build blocks using simple math legos in the core. H2O keeps familiar interfaces like R, Excel & JSON so that big data enthusiasts and experts can explore, munge, model and score data sets using a range of simple to advanced algorithms.

Data collection is easy. Decision making is hard. H2O makes it fast and easy to derive insights from your data through faster and better predictive modeling.

Open Source Javascript SVG Library »

SVG is an excellent way to create interactive, resolution-independent vector graphics that will look great on any size screen. And the Snap.svg JavaScript library makes working with your SVG assets as easy as jQuery makes working with the DOM.

Snap.svg is designed for modern browsers and therefore supports the newest SVG features like masking, clipping, patterns, full gradients, groups, and more.

Open Source Hardware Controller »

Hauntbox is an open-source arduino-based prop controller for haunters and hackers. It is built upon the brilliance of other open source projects.


Ascii Camera »

ASCII Camera uses the HTML5 getUserMedia API to transform a video stream from your webcam into a real-time ASCII representation.

Supported browsers

  • Chrome ≥ 21
  • Firefox ≥ 17 (requires media.navigator.enabled = true in about:config)
  • Opera ≥ 12

Libraries used

Tor Open Network »

Tor is a network of virtual tunnels that allows people and groups to improve their privacy and security on the Internet, you can check where you will find that it is one of top agencies. It also enables software developers to create new communication tools with built-in privacy features. Tor provides the foundation for a range of applications that allow organizations and individuals to share information over public networks without compromising their privacy.

Individuals use Tor to keep websites from tracking them and their family members, or to connect to news sites, instant messaging services, or the like when these are blocked by their local Internet providers who are very slow, but if you have really fast internet, none of that will happen to you if you get the best wireless router of 2017. Tor’s hidden services let users publish web sites and other services without needing to reveal the location of the site. Individuals also use Tor for socially sensitive communication: chat rooms and web forums for rape and abuse survivors, or people with illnesses.

Kinect Common Bridge »

Kinect Common Bridge is a complement to the Kinect for Windows SDK that makes it easy to integrate Kinect scenarios in creative development libraries and toolkits

The Microsoft Open Technologies Hub is releasing this open source project, making it simple to integrate Kinect scenarios and experiences in creative development. MS Open Tech has worked closely with open source communities such as openFrameworks (OF) and Cinder and the Kinect for Windows team to integrate the new Kinect Common Bridge in popular creative development libraries and toolkits.

More details can be found at

Apache OpenNLP »

The Apache OpenNLP library is a machine learning based toolkit for the processing of natural language text.

It supports the most common NLP tasks, such as tokenization, sentence segmentation, part-of-speech tagging, named entity extraction, chunking, parsing, and coreference resolution. These tasks are usually required to build more advanced text processing services. OpenNLP also includes maximum entropy and perceptron based machine learning.

CLAVIN–Document GeoTagging and Parsing »

CLAVIN (*Cartographic Location And Vicinity INdexer*) is an open source software package for document geotagging and geoparsing that employs context-based geographic entity resolution. It combines a variety of open source tools with natural language processing techniques to extract location names from unstructured text documents and resolve them against gazetteer records. Importantly, CLAVIN does not simply "look up" location names; rather, it uses intelligent heuristics in an attempt to identify precisely which "Springfield" (for example) was intended by the author, based on the context of the document. CLAVIN also employs fuzzy search to handle incorrectly-spelled location names, and it recognizes alternative names (e.g., "Ivory Coast" and "Côte d’Ivoire") as referring to the same geographic entity. By enriching text documents with structured geo data, CLAVIN enables hierarchical geospatial search and advanced geospatial analytics on unstructured data.

Teaching Kids to Program–Resources »

Resources to get your kids started on programming

Scratch helps young people learn to think creatively, reason systematically, and work collaboratively — essential skills for life in the 21st century. Scratch is a project of the Lifelong Kindergarten Group at the MIT Media Lab. It is provided free of charge.

Alice is an innovative 3D programming environment that makes it easy to create an animation for telling a story, playing an interactive game, or a video to share on the web. Alice is a freely available teaching tool designed to be a student’s first exposure to object-oriented programming. It allows students to learn fundamental programming concepts in the context of creating animated movies and simple video games like overwatch that you can learn to play in this, you will just need a decent monitor to play them as the one showed in the asus vg248qe review. In Alice, 3-D objects (e.g., people, animals, and vehicles) populate a virtual world and students create a program to animate the objects.

Greenfoot teaches object orientation with Java. Create ‘actors’ which live in ‘worlds’ to build games, simulations, and other graphical programs. Greenfoot is visual and interactive. Visualisation and interaction tools are built into the environment.

Sagan – Sagan-1 Robot Simulator is used to program a robot using simple commands, convenient for kids around 10-14 years old, graphical simulate the outcome and send it (after background cross-compiling) into a real robot. The application is written in Java (1.6) Swing. Beside of the pure simulation, it supports cross-compiling and downloading into Arexx RP6 and Lego NXT Mindstrom robots out of the box.

Arduino is an open-source electronics prototyping platform based on flexible, easy-to-use hardware and software. It’s intended for artists, designers, hobbyists and anyone interested in creating interactive objects or environments.

Raspberry Pi is a credit-card sized computer that plugs into your TV and a keyboard. It’s a capable little PC which can be used for many of the things that your desktop PC does, like spreadsheets, word-processing and games. It also plays high-definition video.

Mindstorms NXT is a programmable robotics kit released by LEGO.

Open Source Android Audio Library »

Patchfield is an audio infrastructure for Android that provides a simple, callback-driven API for implementing audio modules (such as synthesizers and effects), a graph-based API for connecting audio modules, plus support for inter-app audio routing. It is inspired by JACK, the JACK audio connection kit.

Patchfield consists of a remote or local service that acts as a virtual patchbay that audio apps can connect to, plus a number of sample apps that illustrate how to implement audio modules and how to manipulate the signal processing graph. The implementation resides entirely in userland and works on many stock consumer devices, such as Nexus 7 and 10.

Java Video Analysis and Modeling Tool »

Tracker is a free video analysis and modeling tool built on the Open Source Physics (OSP) Java framework. It is designed to be used in physics education.

Tracker video modeling is a powerful new way to combine videos with computer modeling. For more information see Particle Model Help or AAPT Summer Meeting posters Video Modeling (2008) and Video Modeling with Tracker (2009).


Android: Computer Vision Library »


OpenCv4Android is available as a SDK with a set of samples and Javadoc documentation for OpenCV Java API. It also contains prebuilt apk-files, which you can run on your device instantly. There are three OpenCV tutorials aimed to help you start:

  1. “Introduction into Android Development” would be useful for the absolute beginner, because it shows you how to setup Android development environment.
  2. Detailed instructions on SDK are available in the “OpenCV for Android SDK” tutorial. You’ll see a couple of sample applications, which you can use as a basis for your own developments.
  3. “Android development with OpenCV” shows you how to add OpenCV functionality into your Android application. For those who want to reuse their C++ code, we’ve created a special section: “Native/C++”. We propose this way for the professional developers, since native development is a bit harder, but gives you larger opportunities. Face detection sample shows an example of wrapping a C++ class to the Java.


JavaCV first provides wrappers to commonly used libraries by researchers in the field of computer vision: OpenCV, FFmpeg, libdc1394, PGR FlyCapture, OpenKinect, videoInput, and ARToolKitPlus. The classes found under the com.googlecode.javacv.cpp package namespace expose their complete APIs. Moreover, utility classes make their functionality easier to use on the Java platform, including Android.

JavaCV also comes with hardware accelerated full-screen image display (CanvasFrame and GLCanvasFrame), easy-to-use methods to execute code in parallel on multiple cores (Parallel), user-friendly geometric and color calibration of cameras and projectors (GeometricCalibrator,ProCamGeometricCalibrator, ProCamColorCalibrator), detection and matching of feature points (ObjectFinder), a set of classes that implement direct image alignment of projector-camera systems (mainly GNImageAligner, ProjectiveTransformer,ProjectiveColorTransformer, ProCamTransformer, and ReflectanceInitializer), a blob analysis package (Blobs), as well as miscellaneous functionality in the JavaCV class. Some of these classes also have an OpenCL and OpenGL counterpart, their names ending withCL or starting with GL, i.e.: JavaCVCL, GLCanvasFrame, etc.


FastCV is a computer vision library being released by Qualcomm. The library is targeted toward very sophisticated Computer Vision (CV) application developers who are interested in writing CV applications that run on mobile devices. FastCV 1.0 is specifically designed to run efficiently on Android mobile devices, but it is anticipated that subsequent versions of FastCV will support mobile devices running on iOS and WinPhone operating systems. 

The FastCV 1.0 library will be released as a unified binary. This unified binary file has a single API, but contains two implementations. The first implementation is designed to run efficiently on any ARM processor, and is named ‘FastCV for ARM.’ The second FastCV implementation runs only on Qualcomm SoC’s and is called ‘FastCV for Snapdragon.’ ‘FastCV for Snapdragon’ has the same API as ‘FastCV for ARM,’ but it provides hardware accelerated implementations of the CV functions included in the library.

Open Source Diagnostics for .NET Applications »

Glimpse allows you to debug your Web Service right in the browser. Glimpse allows you to "Glimpse" into what’s going on in your web server. In other words what Firebug is to debugging your client side code, Glimpse is to debugging your server within the client.

Fundamentally Glimpse is made up of 3 different parts, all of which are extensible and customizable for any platform:

  • Glimpse Server Module
  • Glimpse Client Side Viewer
  • Glimpse Protocol

On the Server:

  1. Server collects all server side information that will aid in debugging (i.e. application settings, routes, session variables, trace data, etc)
  2. It does this by running through a pipeline of server side data providers that can be dynamically controlled and added to under plugin architecture
  3. Before the response is send, the server formats this data in accordance with the Glimpse Protocol and serializes it as JSON
  4. Depending on whether it is a Ajax request or not, the server embeds the JSON in the HTTP Header or in the content of the page

On the Client:

  1. Depending on whether it is a Ajax request or not, the picks up the JSON data and to the data set by executing a pipeline of client side data providers that can be dynamically controlled and added to under plugin architecture
  2. The client side module then 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.

RoboGuice – Google Guice on Android »

RoboGuice 2 smoothes out some of the wrinkles in your Android development experience and makes things simple and fun. Do you always forget to check for null when you getIntent().getExtras()? RoboGuice 2 will help you. Think casting findViewById() to a TextView shouldn’t be necessary? RoboGuice 2 is on it.

RoboGuice 2 takes the guesswork out of development. Inject your View, Resource, System Service, or any other object, and let RoboGuice 2 take care of the details.

RoboGuice 2 slims down your application code. Less code means fewer opportunities for bugs. It also makes your code easier to follow — no longer is your code littered with the mechanics of the Android platform, but now it can focus on the actual logic unique to your application.

There’s no “magic”. Everything you need is configured explicitly for you by RoboGuice 2 or can be overridden by you.

RoboGuice 2 applications have been Featured on the Android Market for years. It leverages the award-winning and production-ready Google Guice library to bring you simple dependency injection lightweight enough to use in a mobile application.

Git for Visual Studio »

To use Git from Visual Studio, you have the following options

Visual Studio Tools for Git

The Visual Studio Tools for Git is an extension for Team Explorer that provides source control integration for Git.  This extension enables integration with any local Git repository, and it provides tools to work with third party hosted Git repositories. The extension also enables the use of Team Foundation Service hosted Git projects.


Visual Studio 2012

Visual Studio 2012 Update 2


Git Extensions

Git Extensions is the only graphical user interface for Git that allows you control Git without using the commandline. It comes with a manual and video tutorials to get you started quickly.



Git Source Control Provider

Git Source Control Provider is a Visual Studio extension that integrates Git with Visual Studio.



Wave Bubble–Open Source GPS Jammer »


Wave Bubble: a self-tuning, wide-bandwidth portable RF jammer. The device is lightweight and small for easy camouflaging: it is the size of a pack of cigarettes.

An internal lithium-ion battery provides up to 2 hours of jamming (two bands, such as cell) or 4 hours (single band, such as cordless phone, GPS, WiFi, bluetooth, etc). The battery is rechargeable via a mini-USB connector or 4mm DC jack (a common size). Alternately, 3 AAA batteries may also be used.

Output power is .1W (high bands) and .3W (low bands). Effective range is approximately 20′ radius with well-tuned antennas. Less so with the internal antennas or poorly matched antennas.

Self-tuning is provided via dual PLL, therefore, no spectrum analyzer is necessary to build this jammer and a single Wave Bubble can jam many different frequency bands – unlike any other design currently available! To reconfigure the RF bands, simply plug it into the USB port of your PC and type in the new frequencies when prompted. Multiple frequency ranges can be programmed in, each time the device is power cycled it will advance to the next program in memory.

Android OCR Library »

tess-two is  a fork of Tesseract Tools for Android (tesseract-android-tools) that adds some additional functions. Tesseract Tools for Android is a set of Android APIs and build files for the Tesseract OCR and Leptonica image processing libraries.

This project works with Tesseract v3.02.02. The required source code for Tesseract 3.02.02 and Leptonica 1.69 is included within the tess-two/jni folder.

The tess-two subdirectory contains tools for compiling the Tesseract and Leptonica libraries for use on the Android platform. It contains an Eclipse Android library project that provides a Java API for accessing natively-compiled Tesseract and Leptonica APIs.