I have had a lot of positive feedback about the early preview of my project to allow custom Windows Mobile Today Screen Items to be written in C# or VB.NET. In the past few days I have been working on formalising this project and putting some plans in place to further develop the concept.
The CodePlex webpage for this project shows two additional releases (Alpha 1 and Alpha 2) since the proof of concept I demonstrated in my previous blog entry. One advantage of these new releases is that after bouncing some ideas around with Peter Nowak I have managed to significantly simplify the installation process for custom items.
To help promote this framework I have also put together the following screencast to help demonstrate how you can utilise the latest release to create your own custom today screen items in C# or VB.NET.
I would love your feedback on this screencast. Watching it myself it is clear that I need to improve my technique, but hopefully this will come with practice. It defiantly seems easier to demonstrate some things in video form rather than via words.
Today I produced a build of my port of Simon Tatham’s Portable Puzzle Collection as my submission to OpenNETCF’s latest monthly coding competition. While producing this submission I realised that since the last mention of this porting effort I hadn’t provided an update on my progress, or even outlined how you could obtain the source code. Opps…
Unlike many projects which use Visual Studio 2005, this port does not have a project or solution file. Instead the Visual Studio 2005 compilers are used from the command line as part of a custom build framework developed by Simon Tatham. This is mainly due to the build framework also supporting building the puzzles for Mac OS X, desktop Windows and Linux all from a Unix based build server.
I have modified the build script with some temporary hacks to allow building the puzzle collection with Visual Studio 2005 on a Windows based host. To build the puzzle collection in this environment you should perform the following steps:
Change to the directory you placed the source code in.
Assuming no errors this should produce a CAB file and a setup.exe. If an error occurs you may be able to determine what happened by viewing the contents of the wce-build-log.txt file.
To install the software manually install the CAB file on your device, or run the setup.exe executable on your desktop PC (which will automatically download and install the CAB file for you).
Depending upon your circumstances you may need to alter some of the paths specified within build-ppc.bat. Eventually I may produce a VS2005 project file as an alternative (and more friendly) way to build the puzzle collection.
Apart from a few cosmetic style issues, the major issues I am aware of at present is the lack of keypad support for some games. This is stopping some of the games from being playable on a Smartphone (Windows Mobile Standard) device.
This one is slightly better than my previous release, since it has been built from a known code base, which allows it to be rebuilt and expanded upon in the future.
If you are using a Pocket PC device you should also see that you have a new context sensitive popup menu on the main editor window. This provides cut/copy/paste options which you may find handy while developing short programs directly on the device.
This release also includes an optional patch which provides initial support for building with Visual Studio 2005 instead of Embedded Visual C v4. This patch needs refinement before it can be included in the main release, since it has essentially been hacked into the existing msevc.py file and lacks auto-detection of the location of your Visual Studio 2005 and Device SDK installations etc (what has happened to the batch files that used to be present in EVC???).
The main aim of this release is to start to increase the device compatibility of PythonCE. If anyone downloads this release I would appreciate feedback on whether it works on your device type or not. It should work on any Windows Mobile Pocket PC or Smartphone device running Windows Mobile 2003 or later.
PythonCE is a port of the Python programming language to the Windows Mobile Pocket PC platform. I became interested in this project a couple of months ago and released a couple of patches to allow the application to run on Smartphone devices (such as Motorola Qs or Samsung Blackjacks).
Over the last month or two I have had numerious requests for a PythonCE CAB file which runs on a Windows Mobile smartphone.
The patches I submitted have not yet been included in the builds available via the main downloads page for PythonCE, so today I decided to host my unofficial PythonCE build on my blog. I hope this helps people who are looking at getting a working Python development environment up and running for their smartphone.
The cab file should run on any Windows Mobile 5.0 or above Pocket PC or Smartphone device.
[Download pythoncesp2005_armcab.zip 3.09 MB]
Edited: October 5th 2007 – An official build has been released by the PythonCE project. You can obtain it from their downloads page.
Please be aware that this is just a “random” build I had on my harddrive. I lost interest in PythonCE after finding development had been quiet for a while. Since I’ve had a number of requests for Smartphone compatible builds recently, I decided to take a look at what I had, and I found this CAB file. Taking a look at it, it seems this build has all the patches I submitted upstream, plus a couple I didn’t get around to submitting. It doesn’t however have some of the features I was working on just before I lost interest. It’s a case of “user beware”, I take no responsibility with respect to the usability of this particular build…
I would be interested to hear feedback from anyone using PythonCE, especially anyone interested in further development. There seems to be a keen community of PythonCE users, but this doesn’t seem to be matched by people keen on developing PythonCE further. Is this just a case of the existing builds satisfying most people’s needs?
It has been a long time since my last blog posting. I am trying to get back into the habit of regular posting, so I thought I would start off again with a beta release of a project that I have been working upon recently.
As I mentioned previouslySimon Tatham’s Portable Puzzle Collection is a high addictive collection of 27 logic puzzles that can be used on Windows, Mac OS , Unix and PalmOS powered devices. I have picked up the existing Windows Mobile PDA support found within the SVN repository and improved the port, making it more functional and compatible with a wider range of Windows Mobile devices.
I am at the stage where I am getting ready to make an initial release. As such I have decided to make a beta release, in the hope that it generates some feedback which will allow me to further improve device compatibility and iron out any kinks.
Download the attached ZIP file and extract the CAB file called Puzzles.ARMV4.CAB located within it. Once you transfer this CAB file to your device, you can install the games as you would with any other CAB file.
Once installed, you should see a Puzzles folder underneath the Games section of your device’s Start Menu which contains 27 new games to occupy your time with.
The single CAB file should be usable on any Windows Mobile 2003 or above device – Smartphone or Pocket PC, QVGA or VGA, Landscape, Portrait or Square screen. It would probably even work on the OFone if one actually existed! The user interface dynamically adapts at run time to its current situation. For instance it uses a slightly different menu layout on Pocket PC 2003 devices, and hides a toolbar if it finds itself running on a smartphone with a numeric keypad.
On the device compatibility front, if anyone has a Windows Mobile Standard (smartphone) device with a QWERTY keyboard such as a Moto Q or Samsung BlackJack which I could borrow for a short time, I would love to hear from them… especially something running WM6.
From anyone who downloads this beta release I would be interested in hearing feedback on:
Any bugs and/or device compatibility issues
If there is interest in a localised version (i.e. having the UI in French, German or Japanese etc)?
If there is interest in support for “raw” Windows CE based devices?
As with all beta releases there are a couple of known issues which you will need to be aware of. Many will hopefully be resolved before I make a final release. These issues include:
The lack of proper start menu icons.
Usability issues with many of the games on non touch-screen enabled devices.
Some Cosmetic issues within the custom game configuration dialog.
The game “filling” has some corrupt pixels on the edges of the game board.
The game “inertia” is currently unplayable via keyboard, due to not being able to move on diagonals.
My next steps
Within the next day or so I will clean up my patch to Simon Tatham’s original source code and post it to this blog along with compilation instructions (for Visual Studio 2005) etc. Then I will start producing a plan for the additional work required to make a proper v1.0 release.
In developing this port I have also came up with some ideas for future blog topics. These blog topics will be of interest to native (C and C++) developers, instead of Compact Framework developers, and will focus on topics such as SIP handling, Smartphone and Pocket PC UI differences, and cross platform development tips.
I also have a couple of blog postings about popup notification balloons to follow on from my previous entry on the subject. So hopefully I’ll get back into the swing of things over the next few days.
Last week I came across Simon Tatham’s website via a blog posting by Jon Skeet. One of the interesting finds on his website was his Portable Puzzle Collection. This is a series of approximately 27 puzzles which have been architected to be easily ported to new platforms. At present Mac OS X, Unix (using GTK as the GUI toolkit) and Windows builds are officially supported.
Dariusz Olszewski has contributed patches for the existing Windows build to target Windows Mobile (Pocket PC 2003 or higher). I recently submitted a small patch to improve the Windows Mobile port to cope with devices which can dynamically change screen orientation. I have also locally modified the build script to compile with Visual Studio 2005 rather than Embedded Visual C.
I particularly like the Galaxies puzzle, it’s very simple, but addictive at the same time. It also exercises the right side of the brain, as you try to determine if a particular shape will have rotational symmetry.
These games are well worth a look at, and I encourage any C developer with a little spare time to look into improving the Windows Mobile port (source code can be obtained from a SVN repository at svn://ixion.tartarus.org/main/puzzles). These puzzle games are an ideal way to fill in a few spare moments of time.
I have been a little slack recently on my port of Google Gears to Windows CE powered devices. However progress is still being made and I feel that I am getting closer to a version which has all features fully functional.
I have checked in changes to the google-gears-ce SVN repository which enable the worker pool feature of Google Gears to operate correctly on Windows CE. Once again it was a minor bug fix once I tracked down the problem. Windows CE will not allow a window with a client rectangle of 0×0 pixels to be created. Google Gears was creating such a window for thread syncronisation purposes to enable it to pass asynchronous results back to the main GUI thread. The solution was to change the code to create a window of 5×5 pixels. Although the window now has a larger client rectangle, it is still invisible due to the window being created without the WS_VISIBLE window style being set.
I have also checked in an initial build script (build-ppc.bat) which attempts to build a Google Gears CE executable for Windows Mobile powered PDAs. At present this won’t even compile due to missing header files within the Windows Mobile SDK etc, but it’s a start down the road of my initial aim for this project.
The most significant outstanding bug still to be resolved, is the issue I am having around getting the offline mode to work. Obviously this is a major part of the google gears solution and it is a bit disappointing that it has held out on me for so long. The Asyncronous Pluggable Protocol implementation Google Gears utilises to hook into requests for http:// and https:// URLs, is failing to initialise due to some differences between the platforms. The good news is that it appears that I am not the only one finding this problem and it does look solveable. It may however require a far amount of new code to be written (rather than the existing bug fixes which have turned out to be one or two lines here or there).
Once this final hurdle is overcame, it should be fairly easy to tidy up a couple of minor lose ends and have a fully functional version of Google Gears working on Windows CE.
I had a little bit of spare time over the weekend to start debugging some of the problems my initial builds of Google Gears for the Windows CE platform have had.
With reasonably minor tweaks to the source code to work around some differences between the Win32 API implementations for desktop Windows and Windows CE (HWND_MESSAGE doesn’t exist and you can’t create windows with a client rect of 0×0 pixels) I have managed to get the ResourceStore and ManagedResourceStore demos working.
Remember this cab file will only work on devices which use the Internet Explorer 6 for Windows Embedded CE web browser and not Internet Explorer Mobile, which is the web browser found on Windows Mobile powered Pocket PC and Smartphone Devices (see http://msdn2.microsoft.com/en-us/library/aa908125.aspx for further details). If you try this out on your device, please ignore the two ATL Asserts which occur while Internet Explorer initialises the Browser Helper Object – these are something I have yet to debug.
After getting a complete port to Windows CE devices running the full Internet Explorer 6 for Windows Embedded CE web browser, it is my aim to continue the porting effort to support the popular Windows Mobile powered PDAs, but since a number of required interfaces are not supported by this browser, it will involve more porting efforts which is why I am leaving it until the Internet Explorer 6 for Windows CE Embedded port is more functional.
The current list of features which are non functional or need improving in this port are:
Local Server – This seems to be caching files properly as evidanced by the Resource Manager demos working, however the Asynchronous Pluggable Protocol implemented by Google Gears to intercept requests for URLs starting with http:// does not intercept requests while offline. Again I have not investigated this one yet, but at present this means Google Gears won’t operate in offline mode.
HTML Dialogs – Google Gears uses HTML based dialogs for permissions prompts and administration, currently these are failing to display properly. To work around this presently I have disabled then, meaning Google Gears allows access to the Google Gears API to any website which requests it.
Build Scripts – The main build script “build-wince.bat” needs improvment to make it work in more systems. Likewise the changes to the main makefiles need tidying up/rationalisation to make it easier for the main google-gears project to eventually accept the patches.
I am keen to hear from anyone which is interested in contributing to this porting effort in any size, shape or form.
I have been making a bit of progress on the Google Gears port for Windows CE. With a little bit of debugging and rework of some directory creation functions I needed to write yesterday, I have managed to get the Google Gears Database Demo working on a Windows CE powered device that uses the full internet explorer web browser as can be seen in the screenshot.
It’s still very early days, but it has been really exciting getting this initial functionality operational.
Things to investigate (and hopefully resolve) in the short term include:
The meaning of two ASSERTS which trigger when the Browser Helper Object is created
What is stopping the HTML based dialogs (such as the permissions prompt which asks the user if they want to grant a particular website access to using Google Gears) from displaying – at present I have had to disable these dialogs and temporarily hardcode the logic to allow all websites access to using Google Gears.
Determine why the default code for determining the directory where Google Gears should save database and local cached files is failing. Again I have temporarily hardcoded the path to match the installation folder for Google Gears.
Initial tests running this on a Windows Mobile device are not too flash (as expected). It seems a more significant porting effort will be required to get Google Gears operational on a Windows Mobile powered PDA or Smartphone. I am very keen to eventually get to this stage (if possible) but want to get this initial port operational first, since it should require less code changes, and will help iron out the majority of platform specific changes required.
PS: The other demos (local server and worker pool related) currently do not function properly in my port. I’m hopeful that they’re reasonably minor problems to fix, but won’t know until I investigate them further. A potentially more difficult problem which will need investigation is that offline mode currently doesn’t operate correctly, since requests for HTTP://… are not passed via Google Gears first, I’m hoping this will be due to the asserts I mentioned I am getting above.
Following on from my previous posting about my initial success I have started a new project on google code. The project is called google-gears-ce and is designed to be a straight port of the standard Google Gears plugin to Windows CE powered devices.
I imagine eventually the code could be merged into the main google-gears repository. However I thought having it as a seperate project would help initially until the code stabilises a bit, and functionality has been verified as working and the hacks removed etc.
It’s very early days yet (and I doubt anyone else can compile the code as is, but I would be keen to get some collaboration going to really see this project go somewhere.
So if this sounds like fun, get in contact with me, or download the source from the SVN Repository on Google Code. Be warned though, you will probably need to tweak build-wince.bat quite a lot to get this building on your machine, and the resultant binaries require some manual tweaks in the registry to make them work. I’ll try to tidy some of this up, and atleast document my thoughts within the wiki.