You are here


Grouper app reviewed on

My Grouper app was recently reviewed on

Windows 8 actually allows you to create a group of tiles similar apps, for example a group of all social apps, group of chatting apps, group of movies and music apps etc. You don’t need to download anything extra for grouping apps together. However Windows 8 doesn’t provide any mechanism to name these groups of apps. So, you need to install this simple light weight utility app Grouper from the Productivity Category in Windows Store. You can use the Windows 8 Search Charm to locate the app in Windows Store or click on the download link given at the end of this article. Then follow the steps of this Windows 8 tutorial.

Read the full article.

Ads not showing in Windows Store app?

If so, and you have checked that the ApplicationId and AdUnitId are valid, you probably don't have Internet turned on in the application manifest.


How to clear the back stack in Windows RT (Windows Store) apps

Once you have set Window.Current.Content to a Frame, save a copy of the navigation stack.

// After the main application frame is established, save its navigation state. 
var appFrame = Window.Current.Content = new Frame(); 
var emptyNavState = appFrame .GetNavigationState(); 
// Here we're pushing a page onto the stack. appFrame.NavigateTo(foo); 
// If we want to clear the stack, this won't work: 
// appFrame.GoBack(); 
// So instead we simply restore the navigation state to its empty state. 

OutOfMemoryException on Graphics.FromImage

I encounted this exception while resizing an image of only 539x539px.

Upon closer inspection, the problem was that the image's PixelFormat was not one supported by the framework (System.Drawing.Imaging.PixelFormat.8207 which is CMYK).


Pushing software to its limits

When one uses software "normally", that is, how 90% of users use it, it usually works the way it was designed.

When you start to use new or seldom-used features, you quickly discover bugs that are either unreported or are a low-priority for the developers to fix.

I've recently completed an educational game for a client that pushed these boundaries.

The client has had frustrating experiences in the past with mandatory frameworks. Their last software required AIR which turned out to be a huge support headache, and the alternative such as Silverlight, Shockwave Flash, or even .NET would make support no easier.

We decided to use HTML5 instead.

More to come

WebIssues: An issue tracker worthy of support

WebIssues screen shot

I think any project that could have multiple issues requiring resolution, especially on an ongoing basis deserve an issue tracker, also known as a ticket system.

In the past I have used Eventum, RT, and Bugzilla, Mantis, and the Google Code IssueTracker. My favourite of these is Eventum, but when considering a new tracker I did some looking around.

I have found that most trackers can be divided into:

  • general-purpose trackers (like the ones mentioned above)
  • do everything including tracking trackers (Horde)
  • trackers designed for software development, usually supporting an agile workflow.

While browsing SourceForge I stumbled upon WebIssues. It is a general-purpose tracker but it has some nice features that make it unique.

  • In addition to a web-based client, it has a full-featured cross-platform desktop client with native support for Windows, Linux, and OS X.
  • It supports three different database back-ends, MySQL, PostgreSQL or SQL Server.
  • It has an attractive user-interface yet is fast and solid.
  • It supports different types of tickets, such as bugs and tasks. Each type has customizable attributes and new types and attributes can be added. It even comes pre-loaded with a type called forum that can be used as a simple message board.
  • Reports can be exported to CSV, HTML and even PDF format.
  • It is well documented, including:
    • a comprehensive user manual in English and Polish in online, downloadable HTML, and PDF formats.
    • developer documentation that introduces contributors to the concepts used in the software.

I tried the software and it installed on the server like a dream. It was simply a matter of creating an empty database and user on my MySQL server, unpacking the server component to a directory on my webserver, and running the simple web-based installer. Many applications try to install this seamlessly, but few achieve it without a snag or two.

I was thrilled to discover that not only is the client available as a portable application, but it is packaged in PortableApps (paf) format. It's no secret that I'm a huge fan of PortableApps.

Unfortunately one feature it doesn't have, one that I consider a necessity is an inbound e-mail gateway, so that users can create new tickets and update tickets simple by sending an e-mail to

Of course the beauty of open-source software is that contributions are welcome. I have joined Michał Męciński and the WebIssues team to add an inbound e-mail gateway.

Michał's code is very clean, and I was able to add the new functionality in about 10 hours. It is currently being tested at my site, and I'll merge it with the rest of the project when it has been thoroughly tested. It will still require another 20-30 hours to smooth out the rough edges and document it.

WebIssues started in 2005 as Michał's master's thesis. He made it available publicly in 2006 and it won the Qt Centre Programming Contest in 2008. The current branch was released in December 2011 and the latest release, 1.0.4 was released just a couple of months ago.

If you are considering a ticket system, please take a serious look at WebIssues.

If you think a system like this would be useful in your business but you don't know where to start, please contact me.

Xamarin Authorized Consulting Partner badge

Xamarin Consulting Partner badges

Xamarin doesn't have much in the way of graphics for its partners so I made these badges. Other partners may find them useful.

How to close the browser in javascript

Intuitively, you would think that if you want to close the main browser window, all you would need is:


This will actually work on a "fresh" window, but if use has navigated away and back to the page, it may not work.

I have found the following to always work.

function CloseApplication() {'', '_self', '');

Debugging android over TCP/IP is easy.

adb tcpip <tcp_port>
adb connect <ip_address>
abd devices

Equinox2 ADB Driver

I couldn't find an Android debugging driver for this unit, so I had to roll my own, based on the Google driver.

Package icon equinox2_usb_driver.zip8.27 MB


Simple Copyright Policy: If you want to reproduce anything on this site, get my permission first.