Category: c#


By nature, when working with connectable resources in the cloud, the number and IP location of those resources can change at any point. A pain point is often managing the addresses with which to connect to these instances, so I spent a short amount of time doing something about it by creating a program in WPF which automatically retreives a list of instances for an Amazon EC2 account and allows connections over Remote Desktop Protocol (RDP).

CloudTerminal v0.2

After quickly realising then that there are many additional features which would also be useful in this area, I open sourced the project at http://cloudterminal.codeplex.com Special thanks for already contributing a beautiful logo to James Tenniswood.

To prevent over-engineering the tool and never coming up with a version I can use myself, let alone releasing, I decided to put some old skool agile methodology on the project and prioritise the features by how essential they are for each release. This roadmap is then published on CodePlex. Development of features in 0.2 is complete and a working copy can be installed via click-once.

0.1
- Retreive and display list of connections from EC2
- Connect and disconnect via RDP to any instance in list

0.2
- Show instance CPU history
- Store account keys in local configuration
- Optimise UX

0.3
- Allow multiple AWS accounts
- SSH connectivity, including private key storage
- Overlay instance details / commands on list select
- Add grid of instances, shown when no connections are active

0.4
- Allow Azure accounts with more appropriate list view of instances/services

0.5
- Test TCP connectivity before connecting. Offer option to open relevant remote cloud firewall port to client IP address.
- Allow instance / image / service specific credential saving for connections.

The Windows Mobile API exposes a GPS Intermediate Driver (http://msdn.microsoft.com/en-gb/library/bb158708.aspx) which can be used through managed code to access any connected GPS-device data by multiple programs at the same time. Some developers however want their programs to be able to access location data without having to force the user to keep the GPS device on as doing so can consume a lot of power. Google Maps does this by sending your currently connected mobile network cell tower ID to Google’s servers which then send back that tower’s position (looked up in national databases).
It’s not exact at all, but this level of precision may be enough for your application, and if it’s the type of application that’s designed to be run for extended periods of time then this kind of solution will ensure your user won’t run out of battery in just a couple of hours. An article at codeproject.com details reverse-engineering Google’s protocol and provides the C# code to use it: http://www.codeproject.com/KB/mobile/DeepCast.aspx
The best option for a location-aware application is to combine both – use the GPS when the user explicitly asks to (or another application is already using it) and use cell tower-based location data the rest of the time. This paves the way for .net programs on windows mobile to remain permanently connected to location data, and to be more intelligent about it.

Follow

Get every new post delivered to your Inbox.