The Motorola Droid
I just recently picked up the new Motorola Droid for the Verizon network. I'd been looking forward to its release ever since it was announced a number of months ago. I was so excited because I wasn't able to get in on the G1 action back when that came out, due it being on the T-Mobile network and me having a binding contract with Verizon for nearly another year. I suppose the developer's version would've been a possibility, but it was priced at roughly $500 at the time, so that was pretty much a no-go. But the Droid is on Verizon, which is perfect for me, especially since they have excellent coverage where I live (Chicago), and because I get a discount for upgrading my phone and plan since my contract had expired. The Droid is also far more polished than the G1, which had a rather ugly design, quite honestly.
I've never owned a smart-phone before. Going back a ways, I had a Razr (just like everybody else) and then moved to Verizon and got the LG enV, which was a massive step up from the Razr. The enV has a physical keyboard, a larger inner screen, amongst many other improved features. It is a relatively nice phone, in its own right, but it has it's issues. My chief complaints had to do with its limitations, especially when you consider that Verizon toted the enV as its first "smart phone." The platform was just too closed and restrictive to really be worthy of the smart phone title, in my opinion. The browser was substandard, email and instant messaging were lacking as well. When compared with iPhone at the time, it really paled in comparison. Despite that, it is a nice dumb phone, if you'll please pardon the word play.
Now going from those experiences to the Droid has been a real eye-opener. I had played with friend's iPhones and G1's, but that was the extent of my smart phone experience.
Time for a quick and dirty review of the Droid.
First off, the screen is very nice. Quite bright and smooth, and it's very accurate as far as touch goes. It also appears to be scratch-resistant, but I would still recommend getting some sort of screen protector to ward off finger print and other smudges.
I've heard that a sizable portion of customers don't like the physical keyboard, mainly due to complaints regarding how difficult it is to differentiate keys by touch alone. Personally, I find the keyboard to be quite easy to use. Of course, I'm much more used to physical keyboards than others might be, coming from the enV, so your mileage may vary. It took me quite a while to become acclimated to the virtual keyboard, but now I use it roughly half the time. The key-proximity typo correction and auto-completion are very useful, which is why I've ended up using it so much after generally not liking virtual keyboards.
The next thing that I noticed was the fluidity and intuitive nature of the interface. Everything was designed and placed in a very logical manner. Things are where you'd expect them to be, essentially. It's sad that I've come to expect the opposite, but that's a story for another day.
The battery last plenty long for my needs. It easily lasts a day under moderately heavy usage. If I really wanted to, I could most likely get away with charging it every two days, possibly more. As it is, though, I plug it in every night and I'm good to go. Even though I've only had it for a month, and this observation may not count for much yet, the battery still holds its charge as well as it did when I first took it out of the box.
Obviously, a major component to the Droid (to every Android-based mobile device, really) is the app market. I must say, every time I've looked for an app to fulfill some purpose or requirement, I've generally found a high-quality solution, most of which have been free. While the Android market "only" has tens of thousands of apps, while the iPhone has something in the range of a hundred thousand, I'm not really sure how much of a factor that is. From what I hear from friend's that own the iPhone, most of the apps are either clones, garbage, or some combination of both.
Some people might be interested to know that Motorola and Verizon are teaming up to release Android v2.1 to the Droid quite soon, which was developed specifically for the Google Nexus One. This means that the Droid will now have all the awesome new features that the Nexus One has!
Starcraft A.I. Competition, hosted by the DePaul Computer Science Society
The Computer Science Society is hosting a local Starcraft AI contest in the same vein as the one held by UCSC.
This competition enables students, professors and faculty to evaluate AI systems in a robust commercial RTS environment. The AI's can be programmed Python or C++. You must first acquire a copy of Starcraft. After that, follow the documentation found at the pybwsal project to get everything up and running. (Pybwsal is sponsored by the DePaul Computer Science Society for this competition.) If you have any trouble or want help, don't hesitate to post to our mailing list or drop by our office in CDM 451. See office hours for more info.
For the moment, the contest will focus on micromanagement of units like what this person did.
Pybwsal will soon reach maturity and will even include a debugger. For right now, we will be making maps with loads of troops already placed on them and create scenarios that people have to play out.
Algorithms that you learn in class or find on the internet can be used in this competition. It's all up to you.
We will kick-off on January 14th in the second floor academic lounge in the CDM building at 4:30pm.
Subscribe to our mailing list for announcements. In depth documentation and sample ai's will be posted by CSS before Jan 14th.
Do not worry if you can't make it. Install and download the software & post to our mailing list that you're interested. We'll put you down as a competitor.
A light starcraft contest will be held on March 4th. Location and time will be announced via our mailing list.
A bigger starcraft contest with pybwsal will be held near the end of spring quarter right before the yearly Computer Science Society bowling event.
Linux From Scratch
DePaul's very own Computer Science Society has recently begun working on another nifty project. Customizing and building Linux from scratch!
We are using the Linux From Scratch (LFS) source repository, which conveniently rolls all the necessary source packages into one place. While it is certainly not necessary to use LFS to build Linux from scratch, it's easier than having to hunt down all the required source and determine a build order. The other great thing about LFS is the guide that they have, which walks you through every step in the process. It's really quite interesting. You build the kernel all the up to bash and beyond, with as much or as little customization, or additional packages and features, as you want.
Once we finish developing some custom packages we're going to use the final version of our Linux build to power some embedded devices in our office, such as a greeting machine at our door that makes use of facial recognition to say "hello," etc., to our member as they enter.
Should be quite cool!
Dragon Age: Origins
Dragon Age: Origins is Bioware's new "dark, epic fantasy" role-playing game, which is being released on November 3rd.
Bioware is calling it the spiritual successor to the Baldur's Gate series, stating in at least one interview that they could not create Baldur's Gate 3 because Atari now owns the exclusive rights to the Baldur's Gate IP. Personally, I am both saddened and delighted by this predicament.
On one hand, I absolutely love the Baldur's Gate series, with it's memorable characters and plots, and have replayed both installments and their expansions several times. It would have been great to revisit them all in a third release, but with the main plot concluded in the Throne of Bhaal expansion, moving forward may have been a tad awkward, although I'm sure the excellent writers at Bioware could have made it jive.
On the other hand, this also forced Bioware to develop a new IP; a new world, new characters, encounters, and plots, all things that Bioware absolutely excels at. With that in mind, not having Baldur's Gate 3 really doesn't seem so bad. Additionally, Dragon Age was first announced in 2004, and several other sources report that actual development began about 2 years prior to that, meaning the game has been in development for approximately 7 years! To me (and many others), this suggests that the game world will be thoroughly fleshed out and fully realized, which is talked about here on the Dragon Age forums:
Content-wise, DAO is our biggest game since BG2, with roughly 1/3rd of the dialogue count being in the party members and some added re-playability with the origin stories each having a unique opening chapter and effects further down the line (some significant).
- Posted by David Gaider - Lead Writer at Bioware - on the official forums.
Great! Several estimates that I have read clock the average play time in at about 80-some hours, which is really quite impressive, with a "completionist" play-style taking well over 100 hours. No matter how you cut it, its a big game.
To others, this long of a development cycle is a bad thing. The most cited issue of the masses that I've noticed is that of outdated graphics, a view that I in no way share. To me, gameplay almost always trumps graphics. Graphics should be good enough to facilitate the gameplay elements present. If they fail to do that, then it becomes a problem, but by and large, "bad graphics" is not something I generally have an issue with. Although, for obvious reasons, the added benefit of great graphics is a nice bonus. I mean, take a look at these screen shots:
Do the graphics really look that bad? I'd even say they look pretty damn good!
Last week, Bioware released a stand-alone character creator for Dragon Age. If you use the character creator and upload at least one character, you get a free in-game item on release; a ring called the the Lucky Stone which adds an impressive +1 to all your stats! They are doing this to bolster the Dragon Age social network before release, much like Spore did with its creature creator.
One interesting change Bioware made with Dragon Age, compared their prior fantasy RPG's, was to drop the DnD rule set in favor of a system of their own creation. At first I was worried this would result in a system less refined and evolved than that of DnD, but going by what I've seen in the character creator (I made my signature Elf mage, first) it seems to be a fairly robust and well-developed system, so I don't think I'll have much of a problem with it. Not to mention, it seems quite similar to the new DnD 4.0 rules in a lot of ways, which is a plus for a DnD player like myself.
There's another issue that's divided the Dragon Age community recently; the fact that there will be a $7 DLC pack, called "The Warden's Keep," released alongside the game on Nov. 3rd. This DLC is similar to the Watcher's Keep add-on to Baldur's Gate 2, in that it will feature a large dungeon for you to explore as well added items, spells, and such. The major complaint is that this content should have been included in the base game because this detracts from its development. Bioware has responded by saying that the DLC is created by a separate team than the core game, so development quality is not being effected on either side. Personally, I don't really have a problem with Dragon Age having a $7 release day DLC, as it appears to be worth the money, and the game itself seems to be both lengthy and high-quality, but there are many that don't feel this way.
Check out a nice 20 minute gameplay video here: http://www.giantbomb.com/quick-look-dragon-age-origins/17-1477/
That's all I have for now, but I'm sure once the release date gets closer I'll have some more Dragon Age news to post!
Chromium on Ubuntu with Flash: My New Favorite Browser!
I've been using Google Chrome on Windows for quite some time now, because of its beyond-excellent speed and reliability. Although, until recently, it has still rendered some pages incorrectly. But no longer (for me anyway)!
That being the case, I decided to give Chromium (Chrome's open-source incarnation) another try. Last time I tried it, it was in alpha and was therefore terribly unstable. To my surprise, Chromium on Linux is now at a rather robust version 4.0.212.0! I've been using it for the last couple hours and I am very impressed with how far it has come. It's quite stable, integrates very well with Gnome (see the screenshot below), but what is most striking is the speed! As I said, I have considerable experience with Chrome on Windows, which it much faster than all the other major players, but Chromium on Linux is light years faster than Firefox or Opera (my, previously, go-to browsers on Linux). What are you waiting for? Stop listening to me blab and give it a try!
So here is a step-by-step guide to get Chromium working on Ubuntu:
- Add these two lines to your /etc/apt/sources.list file ("YOUR_UBUNTU_VERSION_HERE" = your Ubuntu nickname, i.e. mine is jaunty)
- deb http://ppa.launchpad.net/chromium-daily/ppa/ubuntu YOUR_UBUNTU_VERSION_HERE main
- deb-src http://ppa.launchpad.net/chromium-daily/ppa/ubuntu YOUR_UBUNTU_VERSION_HERE main
- Add the GPG key to your keyring (you can remove this later, if you want)
- sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 4E5E17B5
- Update your packages
- sudo apt-get update
- Install Chromium!
- sudo apt-get install chromium-browser
Now a couple more steps to get Flash working:
- Create a symbolic link to the Flash shared-object
- cd /usr/lib/chromium-browser/plugins
- sudo ln -s ../../flashplugin-installer/libflashplayer.so
- Run the following command to initialize Chromium (you only have to do this once)
- chromium-browser --enable-plugins --enable-greasemonkey --enable-user-scripts --enable-extensions
To get Chromium to use Gnome's theme, open the options panel, go to "Personal Stuff," and click on "Set to GTK+ theme." Although, if you like, you can use one of Chromium's many new themes instead.
Enjoy!
It's Official: The DePaul Virtual RoboCup is a Go!
Thanks to Sean for making this nice flyer!
One minor addition: The meeting will be in conference room 436A in the CDM building.
All2SQL, a PHP Library for Importing to Databases
Yes, that's right, I've started another FOSS project!
Apparently, Google Summer of Code really got my open-source juices flowing. As a side note to my friends at phpMyAdmin: this does not mean I will be abandoning work on PMA! In fact, this project is a stand-alone version of my contributions during GSoC, so any relevant changes added here will also be added to phpMyAdmin (and visa versa). So look forward to some nice features and improvements!
You can find the project here: http://sourceforge.net/projects/all2sql/
All2SQL is a generalized library for importing various data formats into a database. Supported formats at release will be CSV, Microsoft Excel 97-2003 XLS, Excel 2007 XLSX, and OpenOffice Spreadsheet, with more to be added in subsequent releases. It will also be incredibly easy to write your own parsers, as they inherit from a simple, logical virtual class. A new instance of All2SQL searches for the necessary parser on initialization, and loads ONLY what is necessary, improving performance.
With All2SQL you will be able to automate your database importation process like never before! And it's easy to use!
fileToSQL("test.csv");
...
/* Execute the SQL statements in whatever fashion is necessary */
?>
Stay tuned!
CppExcel, a New C++ Excel Library
Greetings all!
I wanted to let everyone know that I have begun work on an easy-to-use C++ library for reading and writing native Microsoft Excel files. It is platform-independent, open-source, and light-weight.
You will be able to find it here: https://sourceforge.net/projects/cppexcel/
As anyone who has been following this blog will know, I have been working with the various Excel formats for a large portion of this summer. Specifically, I have been working with the PHPExcel library to both read and write Excel XLS/XLSX spreadsheets. I was very impressed with PHPExcel's ease of use. It made my job far, far easier with its intuitive API. Out of curiosity, I took a look around and discovered that the vast majority of the C++ Excel libraries had a multitude of limitations:
- Most are simply wrappers for the Excel COM interface, and thus require Excel to be installed on the target computer in order to function. This adds considerable inefficiency.
- Most cannot read Excel files.
- Most lack support for XLSX files.
- Many are not open source, and a license is quite expensive.
Thus, I was inspired to write my own! Essentially, you can think of CppExcel as a C++ port of PHPExcel. There will be dissimilarities in structure and behavior necessitated by the differences between the languages, but they will be as similar as is reasonable.
One might think, "why do I need to use a complicated library to create Excel files when I can easily use standard library functions to write a CSV file and then import it?" For many applications, a simple CSV file will suffice, but there are many significant advantages to writing a native Excel file.
- Being able to define the colors and fonts of each cell.
- The ability to generate calculated columns and cells.
- Being able to define reusable spreadsheet styles.
- And more...
And in reality, CppExcel will hardly be difficult to use:
#include "CppExcel.h"
int main()
{
CppExcel* cx = new CppExcel();
...
delete cx;
return 0;
}
Right now, CppExcel is in a non-usable, skeletal, planning stage, and we would love your help! If you would like to contribute, please download PHPExcel version 1.7.0 to use as a reference and let me know that you want to lend a hand.
This is going to be a part-time project for me for quite some time, considering the scope. Luckily, a couple friends also wish to contribute so I won't be doing this completely solo. =D
Virtual RoboCup 2009, Hosted by ACM DePaul

Aldebaran Nao Robot
Greetings, everyone! I thought I would post about an interesting activity going on at DePaul University this year. I think most of you, being tech-minded folk, would at least enjoy reading about this little adventure, and maybe some of you would even like to get a similar event going at your college or otherwise, which I would be very glad to help you with.
Undoubtedly, some of you have heard of the official RoboCup, which is a fantastic event, but for those who haven't, in a nutshell it's a robotic soccer tournament in which teams attempt to beat their opponents by creating a more advanced AI. If you have a few minutes to spare, I highly recommend watching at least the these couple videos that I've attached, if not some of the other ones that Youtube recommends. The first being a little compilation of different teams testing their robots, and the second being this year's humanoid robot final. What these teams have accomplished is nothing short of amazing.
Here at DePaul, we won't be using real robots due to their extremely prohibitive cost, and other inconveniences, but rather virtual ones.
http://www.youtube.com/watch?v=9hhSg4c9jSQ&feature=player_embedded
http://www.youtube.com/watch?v=vJaOcv81QuQ&feature=player_embedded
To develop the virtual robots, we will be using Webots (office website, wiki), a rather nice robotic simulation environment that can also used in conjunction with other software to develop AI for real, physical robots as well. Webots has API's for C, C++, Java, Python, and Matlab, making it quite flexible.
Here you can see a quick 1v1 match between two AI's submitted to RobotStadium, a virtual, online version of the real RoboCup that uses Webots to broadcast matches on their website.
And here you can see a couple screen shots that I took of the Webots IDE:
I will be making fairly regular updates about this activity, so stay tuned for more robotic excellence!
Google Summer of Code, Pt. 17 [FINAL]
Greetings all, this will be the last of my required updates. Now, that does not mean I will stop posting (about phpMyAdmin or otherwise), but rather this will be the last of the official "Google Summer of Code, Pt. # [ _____ ]" sequence of GSoC related updates and status reports. Nor does it spell the end of my contributions to phpMyAdmin, although the amount of time I will be able to contribute will be cut back drastically (read: no longer ~25hrs/week, or whatever the average actually was), what with school starting up again in a few weeks, work (on campus job), and other collegiate activities, but I will spend as much time as is reasonable contributing to PMA.
Last week I successfully merged my branch back into the trunk, but without the glorious automation of "svn merge" unfortunately. Ultimately, I had to do it the old fashion way by copying and moving files around, and using diff/patch where necessary. It wasn't a terribly painful or drawn out experience, but it would have been nice if SVN had worked as advertised. Now, whether the fault was my own for somehow messing up my branch along the way so that it couldn't be merged, I don't know. I tried methods listed for every major release of SVN, and none of them worked correctly. For what it's worth, keeping my branch in sync with the trunk was incredibly easy.
I hope you all make good use of my new import/export additions. Even though GSoC is over, I want everyone to know that I still welcome any suggetions or critiques regarding my changes. Don't hesitate to request a new import/export modules, addition featuers for existing ones, or really anything else. I'll be around. =D
I have a few changes that I have been waiting to make until everyone was done merging their branches back into the trunk, as I didn't want to cause additional conflicts. I believe that everyone is done with their merging at this point, so I will be applying these changes soon.
It's been great working with all of you! And to my fellow students, I hope that you'll stick around and keeping contributing to phpMyAdmin as well.






