|Main | Programs | Projects | Links | Contact|
These are all the projects that I've worked on, am working on right now or plan to do eventually.
This was my first big project, it started in the fall of 2001 when I realized it was possible to make elaborate scripts in mIRC. I worked on it a lot in 2001, 2002 and 2003, but in the end, work on KoroScript was slower. I pretty much lost interest in that project over time and KoroIRC took over.
Since this was my first big project, I learned how to manage a program that has multiple updates (contrarly to the release-and-forget programs I've been doing), and of course mIRC scripting and a lot about how IRC works in general.
Eventually, the idea came to me to make an IRC client made in C and detach from mIRC entirely. The first idea came in the beginning of 2002, but was never further played with. Eventually, in the beginning of 2003, the idea came back, although in a very different form, and I quickly created what became KoroIRC 0.1. The original idea for using 0.1 as a version number was to increase it up to 1.0 as features were completed. But since it was the first time I was doing something big in C (and I made the error of wanting to do it fully object-oriented with C++ classes), it ended up quickly to be pretty messed up, and the interface (which was quite innovative) was slow. It had transparent windows and used a RichEdit for text display, and since it did not have a "main window", managing the modality was hard.
In the spring break of 2004, I decided to restart it all from scratch, and use a more conventional (mIRC-like) interface, while doing better the features I thought mIRC had done wrong. Thus KoroIRC 0.2 was born. I would also be using a custom-coded control to display the text, to be ahead all the wannabe IRC clients coded in Delphi which use a RichEdit. However, a big part of the code made for KoroIRC 0.1 was somehow reused (while heavily transformed) such as the switchbar code, the editbox code, and some of the networking code. The bulk of the work was done in the summer of 2004, then sporadically continued until the summer of 2005, adding features and correcting bugs.
As version 0.2 came near completion, I realized that the code was messy again, and that to add the last planned features, lots of things would be better if they were rewritten. So I set up to recode KoroIRC from scratch, jumping the version to 0.3. Lots of support code was written before even starting to write real code, to make sure that the existing code would be easy to port, and that the new code would be easy to write.
Since KoroIRC had lots of features, options and components, coding it has touched lots of areas of Win32 programming, including: sockets, WinInet API, files, threads, synchronization, interface, common controls, dialogs, bitmaps, coding custom controls, MDI windows, shell, common dialogs, fonts, etc.
With all the bloat MSN Messenger versions after 4.6 get, it's hardly understandable how people use these versions. However, there are features that are quite interesting, such as display pictures, proper webcam support, custom emoticons (not the animated ones), and of course, NAT-aware file-transfer, so one who wants these features has to upgrade.
There are of course lots of alternative MSN clients, the most popular probably being AMSN. But most of them are for Linux, so using them on Windows means that they often use GTK or QT for their interface, which is bloated and not native. When it's not that, they are downright scripted (AMSN), thus slow, and always crash at random times, thus not reliable (not to mention that to use display pictures in AMSN, you need to install ImageMagick).
My project would be to code an MSN Messenger client that mimics the look of version 4.7 but supports the newest (non-annoying) features, using only the Win32 API so the client would be fast and small. It would support the MSN protocol using a public plugin interface, so in the long run support for other protocol could be added with respective DLLs.
Since there are no RPG engines that are good enough for the game I want to make (someday), this would be an engine I would make myself that would support everything needed. It would have an extended bytecode scripting support, multi-layer maps and lots of other things.