Sunday November 22, 2009
As I said a couple of weeks back, if anyone wrote to me about their open source projects in C, C++ and C#, I'd give them publicity and the first three are now up on a new open source projects page and all are in C++. It makes me wonder if this is just a statistical quirk ( that most open source projects are in C++), perhaps because ones in C (Apache, Linux, MySQL) started ages ago and C# hasn't been around as long as C++. Looking at the code library page the ratio is roughly 5:4:3 (C++ to C to C#) but that probably indicates my trying to be even handed. As the numbers increase I'll split them into a page for each language.
Also lots more entries for Challenge 29 so I'll update those by tomorrow night. Keep sending them in! Both open Source Project information and Challenge 29 entries.
Friday November 20, 2009

FreeSpace 2 was released in October 2000 and was considered one of the best space sims with a rating of 9.4 on gamespot.com. You can still buy the game from a legitimate download site gog.com for $5.99 but commercially it wasn't a success and the company Volition Inc was acquired by THQ.
The source code (in C) was released in 2002 and the individual programmers who were enhancing the original code soon organized themselves into the FreeSpace Source Code Project and kept on working. Judging by the forum activity, it's still going strong.
What makes this different from other games whose source code has been released is that
- You can get the game graphics from the retail game.
- Ongoing development of FreeSpace Open
- Development of FreeSpace open has been extensively documented on the Wiki.
There have been several total conversions (replacing all the original files) e.g. the
Babylon Project with over a 100 models based on the the Babylon 5 universe. Getting involved with release commercial game source can be overwhelming but at least here there is help and documentation. If you know of any other similar type projects built around released game source, please let me know.
Thursday November 19, 2009
Confusingly there exists both cURL and Curl, with the latter being a commercial interactive web language and the former an open source command line tool for file transfer that works with url based file transfer. It lets you script file transfers very easily with proxies, most internet protocols (FTP, FTPS, HTTP, HTTPS, SCP, SFTP, TFTP, TELNET, DICT, FILE, LDAP and LDAPS) and works on virtually every platform in existence except perhaps iPhone.
Both FTP and Telnet hearken back to a more innocent time when passwords could be sent safely in plaintext so use these with caution or beefed up security with SFTP and SSL. These require 3rd party open source libraries.
The engine in cURL is libcurl which lets you use its capabilities in your software and includes multi-file transfer. Both cURL and libcurl are written in C but there are bindings for over 40 languages including C, C++ (via the C binding or via a 3rd party OO curlpp) and .NET. I can recommend this library, particularly if you are writing multi-platform code.
Tuesday November 17, 2009
There is a simple technique that anyone can use to help avoid mistakes. Without this technique the US commercial aviation industry may have taken a lot longer to be established and it has been proven to save lives in hospital. It's also a technique I use some days.
The first prototype of the B17 Flying Fortress bomber crashed killing two of the five crew because the takeoff sequence of flight controls was too long to remember everything and a vital step was overlooked. After that they introduced the humble checklist. It's had other successes as well; I highly recommend this New Yorker magazine article by Atul Gawande.
Some software changes are complex enough to require a checklist and it helps brings new developers up to speed by insisting they follow the list. For example say for checking code in to a version control system or deploying databases. Humans can on average remember seven things at once, without the help of a mnemonic type memory system. So if there are more than seven steps then create a checklist.