Home Page
Archive > Updates > 2009 > All
Archive > Updates > 2009 > All

Warning: you do not have javascript enabled. This WILL cause layout glitches.


My AJAX Library v1.0 has been added to the Other Web Scripts project.

It is an AJAX (Asynchronous JavaScript and XML) library for communication between JavaScript and HTTP Servers.

This library has actually been in development for years, and I just never saw the need to release it until now, so I gave it a quick clean up :-).

Download Content

I have updated the licensing information across the board for my website and all its projects to the Dakusan License v2.0, a slightly modified version of the Original BSD License.

The Copyright page and all project downloads have been updated accordingly.

Download Content
v0.51: Binary | Source

Project Updates:
  • Optimizations:
    • Changed lots of signed numbers to unsigned for theoretical better resolution in the long run.
    • In the coloring algorithm, “Bailout Radius”, and “Power” are constants, so I removed (commented out) their variables and turned anything that used them (i.e. floating point functions) into constants. This removed a lot of unnecessary floating point calculations for each pixel.
    • Added some precalculations into the fractal drawing section to speed up pixel calculations.
  • Fixes:
    • The coordinates of the moused over pixel were being improperly calculated because I had forgotten the window was being drawn and calculated in a bottom to top fashion (Y=0 is at the bottom).

New Pixel Shader Implementation:

I have made a new sub project, available in the binary and source downloads, that might be eventually integrated into the main project. This proof of concept renders 100% of the fractal for each frame on the GPU. It is much faster and much smoother :-). See the Content Section for more information.

Download Content
v0.50: Binary | Source

Project Updates:
  • Much Better coloring: I played around with coloring algorithms and color scales a bit and finally came up with something I like. There is still a bad problem though where colors run together horribly when there isn’t good resolution on a section.
  • Added OpenGL Engine: The Win32 GDI engine didn’t look very good when animating, so I added an OpenGL render engine. They can be chosen through the Configuration Dialog. This also makes the project 1 step closer to a Linux port. :-)
  • Added configuration dialog with many options (Enter key)
    • Boundaries: Boundaries can now be seen and manually set. These are normally changed through mouse clicks and w/a/s/d keys.
    • Window Dimensions: Window dimensions can now be seen and manually set. These are normally changed by resizing the window.
    • Julia Fractal Config [NEW OPTION]: Configure what Julia Fractal is shown.
    • Detail Level: Detail level can now be seen and manually set. This is normally changed by the +/- keys.
    • Enable Animation [NEW OPTION]: Since animating can slow things down and is kind of unnecessary, I have added an option to bypass it.
    • Zoom: This displays the zoom level, which is determined by the X boundaries.
    • Current Pixel Information: Displays the information about the currently moused over pixel.
    • Render Engine [NEW OPTION]: Choose what render engine to use.

Other Update Information:
  • New screenshots in the content section and old screenshots are now hidden behind a link.
  • Version number has been updated to 0.50.
  • Rating has been raised from a 5 to a 7 since the project is a little further along.
  • Updated the Project Time span and Project Time to 10 hours, since I’ve spent about 5 more hours on it.
  • Updated content section and readme to reflect new updates.
  • I am including a binary version (NoOGL) that does not include OpenGL to remove the dependency if the person doesn’t have it.
Download Content
Section: Projects > HyNES

Since my website is finally at a state where I feel I can finally announce it to the public, like I’ve been planning on doing for 3 years, I felt I needed to get up a few final projects that I had promised to myself I would get done before that happened. Sooo... *drumroll*.... I finally got HyNES up here, yay!

I thought there were a few minor modifications I still needed to make to the HyNES project before I released it here, but I went back through it, and to my great relief and surprise, it was actually at a completed state with the minor bugs I wanted to crush already fixed some years ago. If I had known that, I might not have procrastinated on getting it up here for 3 years :-).

Unfortunately, the task of getting an initial version of a project released on my website isn’t just fixing up the release itself, but also organizing the content of the project. I’m happy to say I also got the entire content section (as well as miscellaneous info) of the HyNES project page completely flushed out, after spending 8 hours going through old notes, organizing them, and writing everything back up from scratch. Documentation is such a chore :-).

I am releasing all 3 versions of HyNES in this update, as described in the “History” section of the project page.
Download Content
Section: Website > Contact

I have added a very simple captcha to the contact page so spambots stop trying to use it. Hopefully I won’t need to get a better one up there.

I have also added links to the forums across the site where there are links to the contact page.

Section: Projects > Websites

Two new websites that I have been contracted to do in the last month have been added to the Websites Project page: The Woodland Wellness Center and Karim Boulos.

Section: Website > Search

I finally got around to adding search functionality to the site by using Google Search API. Unfortunately, it’s not as good as I was hoping, and it may have to be replaced in the future :-(. See more at my post Google Search API Failure.

Section: Website > Forums

I have updated the color theme and all the layout images for the forum, and I must say, wow, it looks so much better with the site integration now.

I have decided to give Updates their own forum, with threads for each Update.

The forum search option has been removed from the Search Page in lieu of linking to the actual forum search.

The Contact Page has had textual changes including warning the user to include their email, and suggesting to use the forum.

The Forum index on the Site Map has been moved from "Unfinished Sections" to "Other Pages". Yay!

Section: Website > Forums

I finally got around to adding a Forum, yay. I’ve been meaning to do that since I launched the site back in 2006 x.x; . The forum also doubles in functionality by allowing commenting for Posts and Projects (listed on their individual pages).

Unfortunately, for the moment, when displaying comments on Post and Project pages from the Forum, only a few of the bbcodes are supported :-\. Perhaps at some point I will also add a quick reply section into the Project/Post pages.

The forum software the site is using is Simple Machines Forums. I put it on its own subdomain for security reasons, but the forum software is supposedly pretty secure. I know I didn’t do the best job integrating it into my site theme; I may try to improve it later ^_^; .

Section: Website > Contact

Corrected a bug on the contact page that was making HTML not go through correctly.

I think I might need to update it soon to add non-bot verification of some sort, as I receive about as much spam from it as I do messages from real humans (which is to say, maybe one a month at this point, hehe).

Section: Website > Projects

Binary and source zip downloads for all Projects now have readme files in them, except as mentioned below.

This only applies to the Draw Image Project in Web Scripts, and not the Directory Manager project (The only project zip file now without a readme).

Section: Website > Projects
Fixed a bug on the Project Page that made sorting by version not happen correctly. Oops.

Python has been added to the Languages and Libraries page now that I have a project up in it.


Here is the initial v1.0 (source) public release of my Picture Viewer project. See its project page for more information on what all it does.

I’ve wanted to try out Python for a while now, as it has been recommended to me by multiple friends. I decided to redo an old Visual Basic [6] project I did way back in October of 2002 in Python for this reason, and also because I used it every now and then and was frustrated by all the features it was missing that I wanted (I had been meaning to redo it in C++ for a while).

The original project was done as a request from a friend, and was completed in a couple of hours. It only had 5 settings that it read from a config file that had to be in a proper order, and had pretty much no interactivity, but it was a novel idea I had not seen implemented well elsewhere.

For this new version, I started out by listing over a dozen options and configurations I wanted from this redo of the project and compiled the readme and configuration file from it. From there I built the configuration file reader/parser. These 2 parts of the project actually ended up taking more time than the rest of the application programming itself ^_^;. The actual GUI/interactivity part was the quick part of the project.

This new iteration of the project is much more versatile, configurable, and robust. Most all of the options are changeable both through the configuration file, and through keyboard shortcuts set in the configuration file. It is set up to be used as both a picture screen saver, or just as a picture viewer.

I spent a good chunk of time also playing around with compiling python files for Windows for binary release (py2exe), the options for it, and reducing the final size of the distribution. I was able to get the final project distribution size from 5.8MB down to 1.83MB (including upx packing). There was a lot of trial and error to get it down to an acceptable size, including finding a lot of package distribution/compiling options, which aren’t very well documented, and determining which included Python modules and DLLs were not being used and could be excluded. Setting and retrieving file version information wasn’t really documented either, and I even had to do some hacking (dynamic class reconfiguring) to include some file version information that was not being included that should have been.

The final distribution could be made a lot smaller still by removing some of the modules I used. The PyWin32 information could all be included through ctypes and manually including Windows32 constants (win32con). The Python Imaging Library (PIL) module could also be completely removed and replaced with Windows graphics APIs, but it would really have been a pain. PIL included support for a good number of graphics formats, and hooking up with Windows GDI+ through Python would been a major pain in the ass, so in the end, for this project, being able to quickly get everything done won out.

There are a number of things I’d still like to get implemented in this project that I’m just not going to worry about right now. Those include:
  • Command line option overrides (Override all options that can be set in the configuration file)
  • The “ExitOnActivity” option (for screen savers) doesn’t work outside the window (when the “background” option is turned off). If the mouse does not travel over the window, it will not close from mouse movements.
  • I ended up decided on not implementing next-picture preloading yet (though it is included in the configuration file). This would be especially useful for “picture viewer” mode, as moving to the next picture when the user presses a key would [usually] have [virtually] no load time.
  • It would be better if pictures started displaying immediately upon application load (whenever the first picture is found) instead of waiting for the entire “File List” to load.
  • Checking for interrupt/exit signals
  • Reading the configuration file from different (and multiple) paths
  • Get Unicode working in the configuration file
  • Resorting images
  • Go back to last the focused window

This project was originally named on this site “Picture Screen Saver”. Its entry has been completely updated including changing the rating from a 4 to a 7. The content section of the project page now reflects the readme file found in the project’s downloads.

Download Content
Section: Website

I recently had it pointed out to me that when Googling my name, my web page actually doesn’t come up until pretty far down the list (end of first page or second page on Google). I very quickly came to the realization that my name doesn’t appear anywhere on the front page, so this has been rectified.


I recently made a JavaScript library (web script) for embedding images generated by JavaScript within web pages. I needed to test it, so I threw together a JavaScript version of the Mandelbrot Fractal from the Julia Fractals Project.

Unfortunately, IE7- doesn’t allow this (or any) kind of client side image embedding like all other browsers do, so it has to use a Java Applet to draw the image data produced by JavaScript. I tried every way I could possibly think of to get client side image embedding working in IE without an additional addon, but every time I got close, I ran into another “security feature”, and there was no way in the end to get it working... well, besides methods that make 1 HTML DOM object per pixel, which is way too complex for processing and usually freezes the browser. IE8 does support what I want, but the image has to be less than a certain size (<32KB when in base 64).

Also, of course, this works the fastest in Chrome. :-)

Download Content
Section: Website > Search
Search Updates:
  • Fixed a bug on Posts, Projects, and Updates in which if you went to an unknown Post/Project/Update, and tried to redirect the page URL through the form, underscores were not properly encoded.
  • Added search box to all pages. When searching from the search box on some pages, only sections relevant to it are searched by default.
  • I swapped the order of sections in the search URL so it now displays “Search/SECTIONS/SEARCH_STRING”.
  • The search page now redirects improper search format URLs, including GET requests, to the proper format listed on the above bullet.

Hopefully I'll get up a good search solution soon.


The Projects Table View column ordering and collapsing now works properly in IE. This was caused by a “feature” in IE in which the cellIndex of a cell in a row in a table does not count cells preceding it if they have their CSS visibility property set to hidden.

Section: Website > Archive

The Archive Posts section now has an option to Expand Below Posts, which will uncollapse all the posts on the archive page for complete reading of the posts. Do note this does not work on the Updates section of the Archives.