Projects

I like programming, which is one of the reasons I have a degree from college related to it. I’ve put together the following sections to showcase the projects that I feel good enough to release to the public.

Copyright

(Copied from the Zlib license) This software is provided ‘as-is’, without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:

  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
  3. This notice may not be removed or altered from any source distribution.

Programming Languages

C and C++

C and C++ are perhaps the most popular programming languages in use right now. Without a compiler and external libraries, however, neither of them can do much on their own. Following are some that I use while programming in C and C++. All of them are free to use, though you should check each of their websites for specific licenses.

Visual Basic

When making GUI programs for Windows, the simplicity of VB can’t be beat. I haven’t used it much recently, mostly due to my push towards cross-platform programming and, to a lesser extent, the push from Microsoft to upgrade to VB.NET (which isn’t the same programming language). Unfortunately, no free compiler is available, though cheap copies can be found in bookstores and online for those who want to learn.

Java

Possibly my favorite language, though I don’t use it as often as I’d like. The built-in library of tools is amazing, and the documentation is the best I’ve ever seen for any programming language. Requiring users to download a large runtime environment is a little cumbersome, though out-of-the-box support is getting better, so I tend not to use Java outside of personal projects.

PHP

For web-based projects, I always use PHP. Second only to Java in extensive documentation, and easier to use. It’s so similar to C and C++ that I picked it up within a matter of hours.

Python

Similar to Java without being as strongly typed, Python is a great scripting language for general purposes. The indentation delimited blocks (instead of curly braces like most other languages) forces Python code to at least look prettier than other languages. The built-in GUI library Tkinter is suitable for most needs, though for complex GUIs, wxPython or Java should be considered.

Firefox Slideshow Extension

Firefox is an open-source, cross-platform web-browser which can be extended very easily. Since I’m very lazy, I don’t want to click the back button and whatever link is next when I’m browsing a list of pictures, like a Metroid Manga, so I wrote a Firefox extension that creates a slideshow from a webpage. To install it, download the XPI file to your computer and run it in Firefox. To activate it, right click on a page and click “Slideshow”.

Guifications Trillian Theme

Guifications is a plugin for Pidgin (an open-source and cross-platform alternative to popular instant-message clients like AIM, MSN Messenger, and Google Talk) which creates notification windows, also called “toaster” pop-ups, on your screen corresponding to events, like a buddy going away or sending you a message. I created a custom theme resembling the notification windows that Trillian creates, except for the nice looking background. To install it, just extract this ZIP file into the guifications/themes folder in your Pidgin data folder (%APPDATA%/.purple in Windows XP, ~/.purple in Linux)

Google Chat Bot

When Google came out with their own chat service, they built it using the XMPP protocol which allows users of Google Chat to communicate with users of any other connected XMPP server, such as Livejournal or Jabber.org. XMPP supports on-the-fly conference rooms where more than 2 people can chat together and any desktop client should support this just fine. The client built-in to Google Mail, however, is not quite so capable. There isn’t a way to join an arbitrary conference within the protocol. This limitation appears to apply to Meebo as well, though I haven’t verified it. Google Mail seems to mitigate this by introducing their own extension to conferences that only works from within Google Mail, so users of Pidgin (like me) or other desktop clients are out of luck.

To circumvent this problem, I wrote an bot for Google Chat. Technically, it can be used by any XMPP users, but it was designed to address a limitation in Google Mail’s web-chat interface. All it does is relay any incoming message to every user on its buddy list that isn’t the sending user. This means the bot’s buddy list has to be set up in advance before using it, though this can easily be done using a desktop client. There are three static fields at the beginning of the class that need to be set (username, password, and server of the bot’s account) but the bot runs without any user intervention. It currently accepts two commands: “#LIST”, to reply only to the person who sent the command the list of buddies it is chatting with, and “#STOP” to kill the bot. In order to run it, IgniteRealtime’s Smack JAR file must be in your class path.