Tuesday, September 05, 2006


Wow, it's been a while since I last posted. I've been very busy (with SoC, which has ended now) lately, and to be honest I didn't really feel like posting either. However, this seemed like a good reason to post. Nigel did it: 3000! On to the next 3000?

Sunday, June 04, 2006

Accepted to Summer of Code

I've been accepted to Summer of Code with my poposal for the Student Teacher interaction system for the Free Earth Foundation! I’m sure you’ll be hearing a lot more about this, but for now I’ll give you my proposal.

==== Project details ====
Name: Tim van den Hamer
Project name: Student Teacher interaction system

==== Summary ====
A student-teacher interaction system would introduce a way for teachers to effectively use NASA World Wind in the classroom. While the name of the project indicates the main focus, the system can also be used for other scenarios such as conferences, collaboration and even games. This means the client module should be able to be both a receiver and a transmitter, and have varying modes depending on the kind of scenario the host module needs.

==== Detailed description ====
Since the system will potentially be used by people who do not have much knowledge of computers ease of use is a key factor. Both client and host should have no options when starting, they should be set up by an experienced administrator once to avoid confusing less experienced users later on. During use the client should have none or nearly no settings, to be determined during setup. The host interface should be simple and straightforward, allowing access to only certain modes and functions that may be needed for a certain scenario.

Since the client module will potentially be used by (young) students, and some students tend to mess around with school computers, security needs to be added. Most importantly the client needs to have the ability to be locked down so the user cannot change any settings such as the server address. Measures need to be taken to prevent tampering with both code and settings, and even WW itself on the client side, to prevent the student from doing anything but focus on the task at hand.

I plan to support multiple transport protocols to support everything from closed private networks to cross-continent internet connections. This brings with it a way to control the update rate of the data to adapt to the used transport. Planned transports are, at least, jabber and TCP/UDP. Each transport will also come with a set of rules to effectively transfer data since most protocols come with a set of restrictions, such as character usage or message length.

A setup of the system will always consist of a host and one or more clients, along with one or more helper modules to manage traffic. Certain protocols can use the host as a server, while others like jabber require a separate server by default. For some transports it might also be useful to have a (protocol specific) relay module in case a direct connection cannot be established, for example because of NAT. Transports with servers, such as jabber, generally don't need a separate relay server since the server itself will act as one. Of course, considering ease of use and setup time, using a relay server is not recommended unless necessary.

After everything has been setup and connected a teacher can choose a mode which will dictate how clients behave. By default a 'joint goto' mode will be active, meaning all clients will go to wherever the host goes. The teacher can then decide to switch to a 'free roam' mode to have all clients move individually. An extension of this mode is the 'find the spot' mode where clients can move around freely but are supposed to move to a specific spot on the planet. This mode will use feedback to let the teacher know which students have completed the objective and which haven't. Of course many more modes can be implemented, such as giving control to a student or having students complete objectives in teams.

The next step after sharing views would be sharing layers. A common layer contains icons, which are rather easy to transfer since they usually only consist of an image and location so they can be easily serialized into xml and transferred, even if the layer was generated by a plugin. Both student and teacher can also be allowed to create and share icons on-the-fly to easily identify interesting locations. Image layers can also very easily be shared interactively with clients since these generally only consist of xml data. This can be taken a step further by allowing participants to directly draw onto the globe, though this would usually be limited to teachers since it is very easy to generate 'spam' this way. Unfortunately not everything can be directly shared, mainly plugin-generated content will be hard to synchronize, but as a compromise the plugins themselves can be transferred and loaded on-demand. In fact a normal setup will usually only allow the teacher to load plugins (both locally and remotely) to prevent distractions.

Finally some documentation will be needed for administrators, teachers and students. The administrator documentation will have setup instructions for all modules as well as security considerations and tips to help determine the appropriate transport. The teacher docs will consist of a full guide on how to teach using the system as well as a quick reference guide for use during lessons. The student docs will be one or two pages describing general procedures and functions of the client module enforced by pictures to make it easy to distribute the document on paper before starting a lesson.

==== Schedule ====
May 23:
- Work commences

End of May:
- Setup development infrastructure (SVN, wiki, blog)
- Design program architecture/structure and communication protocol
- Begin coding

First half of June:
- Coding client and host modules and a transport
- Start coding security
- Create placeholder graphics

Second half of June:
- Coding additional sharing features
- Bug testing (partially done by other users) and fixing bugs
- Writing comments and (inline) documentation

June 26:
- Mid-program evaluations

- Code additional transports and corresponding servers and/or relay modules
- Code remaining interaction modes and features
- More commenting and documenting
- Replace placeholder graphics with better ones

- Final testing (bugs + load) and fixing found problems
- Create final distributable package

August 21:
- Project deadline

==== Bio ====
I have some early experience in programming UnrealScript, the programming language for UnrealEngine-based games. I never really created anything 'big' with it, but it was fun to change a few things around and see what would happen. After that I started programming in C# around when the first beta of the .net framework was released. So far I've made many small .net applications, of which lots never even left my computer.

I came into contact with World Wind when it went public into the Open Source world, and I was the first non-NASA developer to add to WW's code. I was however never very enthusiastic until the plugin interface came along. Since then however I've made many plugins and helper programs, though most are small and simple, since plugins usually only fulfill one single task.

I recently however worked on a rather large plugin called KMLImporter (http://shrinkster.com/emz) which has taught me about plugin security and working on larger projects. I have also developed a set of programs called WWSCR that allow you to automatically control the views of one or more computers running World Wind as a screensaver. These programs were never used much since they focused on transferring views only and did not target a specific audience.

Monday, May 15, 2006

Thursday, May 04, 2006

Finally a new post

It's been a while since I posted anything here, so here's a short summary of important stuff

World Wind 1.3.4 has been released, and can be found at http://worldwind.arc.nasa.gov/download.html

KMLImporter v1.00 has been released, and has been included in World Wind 1.3.4, and therefore it is not available for download here. In fact it should automatically update itself (if you leave the feature enabled), so I should never have to 'release' it anymore.

The Free Earth Foundation is one of the mentoring organizations for Google's Summer of Code 2006. You can find the list of ideas, including my student-teacher interaction system, here.

The WorldWind forum has now been moved to http://forum.worldwindcentral.com/

Friday, March 31, 2006

KMLImporter in SVN

KMLImporter will (not) be included in 1.3.4 and therefore new versions are automatically available in SVN
Either do a checkout from SVN or view the file on the web
The famous version 42 has been reached

Friday, March 24, 2006

WorldWind in your right-click menu

If you read the Advanced WorldWind plugin file support post you might be wondering how to get an ‘Open with WorldWind’ entry in explorer’s right-click menu. First you have to find out the full name of the file type you’re handling. You can do this by looking at the (Default) value in HKEY_CLASSES_ROOT\.(Some Extension). Then replace ‘Google Earth.kmlfile’ with the name you found in the example below. Of course you also have to adjust the path to point to your WorldWind installation (this has to be 1.3.4!). This is of course only a solution for developers and should be done automatically by an installer for the average user.

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Google Earth.kmlfile\shell\Open with WorldWind]

[HKEY_CLASSES_ROOT\Google Earth.kmlfile\shell\Open with WorldWind\command]
@="D:\\Dev\\WorldWind\\bin\\Debug\\WorldWind.exe \"%1\""

[HKEY_CLASSES_ROOT\Google Earth.kmzfile\shell\Open with WorldWind]

[HKEY_CLASSES_ROOT\Google Earth.kmzfile\shell\Open with WorldWind\command]
@="D:\\Dev\\WorldWind\\bin\\Debug\\WorldWind.exe \"%1\""

Tuesday, March 21, 2006

KMLImporter and PlaneTracker fixed

KMLImporter fixed
Version 28 of KMLImporter (finally) fixes periodic update support for NetworkLinks.
Thanks to James for putting me on the right path!

PlaneTracker fixed
Thanks to Anonymous poster for noticing the incompatibility with other plugins like the measure tool
Version 0.29 fixes this minor bug

Friday, March 17, 2006

PlaneTracker updated with new airports

MIA (Miami) and SEA (Seattle) have been added to PlaneTracker to bring you even more planes
Version 0.28 is available here

Friday, March 10, 2006

Advanced WorldWind plugin file support

Recently I got the need for more ways to load files from a WorldWind plugin. Which is why I added both Drag&Drop and command line support for plugins. Note that you’ll need the latest version of WorldWind to get these features to work right. Command line support doesn’t work in 1.3.3 at all, but I’ll provide a compatible way that will at least allow the plugin to load in older versions. It’s possible to have 1.3.3 support Drag&Drop but the experience will likely be flaky.

So lets start off with some code to handle files that are passed in from the command line. This is useful if you want to make WorldWind the primary or alternative file handler for a specific type of file in windows explorer. This will automatically work if you’re using a version that has the correct property, and otherwise skip over the argument handling code. You’d generally use this code in the Load method of your plugin, though it could be used just about anywhere.

// Some magic to provide backward compatibility
Type typecontroller = typeof(MainApplication);
System.Reflection.PropertyInfo finfo = typecontroller.GetProperty("CmdArgs", BindingFlags.Static|BindingFlags.Public|BindingFlags.GetProperty);
string[] args = null;
(finfo != null)
args = (string[])finfo.GetValue(null, null);
if (args != null)
// use args here (args is a string array containing all command line arguments)

Drag&Drop support is slightly more complicated. I’ve made a simple demonstration plugin that handles dropping a .jpg file by showing a simple MessageBox for which the source code is available here. I also updated KMLImporter to go hand in hand with this great new functionality.

WorldWind source repository switched from CVS to SVN

The WorldWind source code versioning is now powered by SVN
To checkout point your favorite SVN client to https://svn.sourceforge.net/svnroot/nasa-exp
If you experience difficulties there’s some clues in the SVN mailing list post

Thursday, March 02, 2006

KMLImporter development continues

I know I've been silent, but KMLImporter development hasn't stopped
In fact, the version number has gone up to 23 already!
Even worse, I can't even remember what changed and I didn't keep a log
So changes to the plugin are:
  • Internal icons are fixed
  • Awsome new internal icons are used (and included)
  • NetworkLinks (non-updating for now)
  • Stuff (and LOTS of it)
Get it at http://www.twobeds.com/shockfire/WW-Rel/KMLImporter23.zip

Monday, February 06, 2006

KMLImporter progress

Even though I didn't entirely fix the problem that was keeping me from adding KMZ support,
I'm still going to give you version 9 which has KMZ support after a small workaround
Major new features are 'native' KMZ support and icon scaling
To get this plugin to work on anything older than the latest WorldWind build:
Extract the plugin as usual, then copy ICSharpCode.SharpZipLib.dll to your main WW directory
Plugin available at: http://www.twobeds.com/shockfire/WW-Rel/KMLImporter9.zip

Saturday, February 04, 2006

KMLImporter support extended

KMLImporter support extended
I've extended KMLImporter placemark with lots of small and not so small features
Most notable are support for folders and icons from disk
This means that you can now simply extract a KMZ file with a tool like WinRAR,
KMLImporter will then be able to find the extracted icons when you load the extracted KML
There have been lots of small fixes regarding styles, so just about any KML with icons should load now
A new version is available at http://www.twobeds.com/shockfire/WW-Rel/KMLImporter7.zip

SideWind progress
First of all I have to 'correct' myself:
SideWind is not being developed by them but by us, meaning me and a friend
(we will also be joined by various others, but we form the main development team)
I admit the posts on this subject were rather inconclusive on this part
There is certainly progress on SW, there's just no coding going on just yet
We are busy planning and investigating though, and I hope there's something to post sometime soon

Tuesday, January 31, 2006

KMLImporter plugin

I've spent a few hours moving some of PlaneTracker's code over to a new plugin
and the result is a plugin that can read most .kml files that contain icons
Support for other features such as polygons and network links are on the list
(note that it already supports images that have to be downloaded from the web)

Because I cannot include the default icons GE uses you have to copy those over yourself
Find palette*.png in the GE res dir and copy those over to the empty icons directory
This plugin comes with no sort of warranty at all, so use it at your own risk
Download: http://www.twobeds.com/shockfire/WW-Rel/KMLImporter4.zip

Friday, January 27, 2006

WWLatConverter released

WWLatConverter is a very simple app that allows you to convert .lat files to WorldWind add-ons
Such files are usually generated by scout, allowing you to convert KML files
There's no GUI and it only converts icons, but it can still be usefull quickly converting simple KML files

Thursday, January 26, 2006

Feeds now available

RSS and Atom feeds are now available for this blog
Links to these feeds can also be found under the Feeds header on the right

Tuesday, January 24, 2006

Codename for WorldWind game announced

Codename for WorldWind game announced
Not one, but yes... two codenames have been decided for the previously mentioned WorldWind game
The WorldWind game will start off as 'SideWind'
This name is meant for the first version, which will be based on WW 1.3.4 and will probably mainly be a technology test
Later, the game will transition into the WW 1.5 engine, and will then be known as 'SolarWind'
(this because current plans are to feature the entire solar system in the game)
Both names will be shortened to SW to preserve keyboards

PlaneTracker to feature 3D models
Plans are under way to include a mode that shows airplanes in 3D in the next version of PlaneTracker
Since performance may be less than optimal icons will still be available, and there may even be a combination of the two
Though this data isn't available directly, it's possible to figure out the type of aircraft and show an appropriate 3D model accordingly

Thursday, January 19, 2006

I've decided to reopen my blog!

I've decided to reopen my blog!
The main content will be about WorldWind, but it's still open for everything I might want to share
For now, I'll start off with some current WorldWind news, and I'll try to post updates as they come along

A beta of PlaneTracker has been released
A test version of PlaneTracker has been released to the public and can be found in this forum post:
This is still not resembling a final version, but it's fairly usable and fun so far so it's worth a try
The release is mainly meant to catch bugs, but of course suggestions are welcome as well

Bull_[UK] opens 'Bull's rambles' weblog
At what seems to be an attempt to get WorldWind blogs going, Bull opens up his own blog
As the name suggests, this blog isn't all that formal, thus nicely complementing the add-ons blog
Bull's brand new blog can be found at http://bullsworld.blogspot.com/

Work on WorldWind game started
Even though there's nothing official about this yet, development has quietly started
So far no actual work has been done but the idea is out there so I suspect there will be more news on this subject very soon
The next step will of course be creating a codename for the project so I can actually refer to it