I haven’t been putting much effort into my websites recently. I went through a couple of weeks of work on Mnemosyne. I tried converting it to CakePHP, but was distracted by my actual job in the process. My initial impressions of CakePHP weren’t great, but once I started working with it I really liked it.

I worked on an entry for the AI Challenge. I built an ant-bot to compete against other ant-bots. There were some really interesting strategies from some of the winners. I developed my bot in Java. I started out my career as a Java dev, but I’ve moved to .NET / C# in the past few years. It was nice to get my hands in a Java program again.

I also added a new photo to Apollo.

jQuery & mouse events

I’ve been really motivated on Mnemosyne since the start of the new year. A lot of features are working now, at least in functionality. Some code cleaning is going to be needed fairly soon or it will just become such a mess.

One interesting thing I was able to get working (in everything except IE, grumble) is a entry control menu to appear and disappear on mouse entry / exit.

Here are two screenshots with the menu on and off:

Basically, when the mouse enters the parent div of the entry, the absolute positioned div of the controls should appear, and when the mouse exits the div the controls should disappear.

I first tried doing this from scratch with my basic javascript understanding, but it wasn’t working properly. I couldn’t get a proper handle on the control div. I then tried the first jQuery on the site and it went a lot smoother. Here’s the code:

  $('div.entry').each( function(intElementIndex, objElement) {
      function(){ $(this).find('div.entry-controls').css("visibility", "visible"); }
      function(){ $(this).find('div.entry-controls').css("visibility", "hidden"); }

So, the selector gets all the entry divs, and registers functions to toggle the visibility of the child entry-controls div.

Other things I got working are user registration, and a recycle bin. Next on the plate is code refactoring, and improving the tag support.

Password Protection is Key

Worked on Mnemosyne the past couple of days. Added password protection so that spammers can’t enter anything. Add the same functionality to the delete page so that only I can delete the entries for now.

Also added an edit page (also password protected). The main functionality is starting to come together. Stuff on the horizon:

  • Tag support
  • Profile Support
  • styling
  • search

And then a bunch of code quality issues. I’m sure there’s got to be a better way to handle database stuff. Hopefully something like hibernate for php. I’ll have to look into that.

Got my local environment set up, so I don’t have to use the live site as my testing ground. That didn’t take as long as expected. A couple of trip ups. For one, if using Windows 7 64-bit, apache 2.2, and php5 make sure you get the VC6 thread safe versions, or else apache and PHP might not work well together. I tried all four distributions of php5 before I got it right.

New Year’s Motivation: Mnemosyne Fix, Homepage Cleanup

Hello 2011.

I sort of let this site slip. And by sort of, I mean completely. I had uploaded functionality to Mnemosyne without fully testing it, and it pretty much broke everything. I was able to sort out what the problem was and fix it, but I don’t think I’m doing database connections properly in PHP. I basically have a database connection opening at the beginning of each page, then closing it at the end. Maybe that’s how it should be done, but it seems intuitively wrong. I’ll have to look at that.

So Mnemosyne works again. Lots of spam on there that I’m going to have to clean up. I’ll need a password or CAPTCHA to filter that out. Maybe password for the beginning, then CAPTCHA when I have more time.

I removed some music flash players on the home page. They had worn their welcome. I need to change that front page completely. I don’t like it anymore.

Hopefully this isn’t the last entry for a while.

Mnemosyne: List Entries. New Apollo Pictures

Worked on Mnemosyne last night. I have the ability to list all the tags, and list all the entries. It’s looking pretty terrible right now, and the code is very sloppily put together, but some of the core functionality is coming together. Next major steps are going to be adding the edit and delete ability (with some permissions), and linking tags and entries. I was thinking of having a simple text box for tag entry, but maybe it should be a fixed list? A text box might not be restrictive enough.

Added two photos to Apollo. A play with focus. I noticed that the wordpress theme is cutting off my landscape pictures. I’ll need to put that on the list of things to fix.

Start of Mnemosyne, new Apollo picture

Uploaded a new picture to Apollo.

Started on the work for Mnemosyne. Not a whole lot finished. Created the tables for tags, and entries. And created a simple webform for entering entries. The form only takes a title and some text, but I used mysql_real_escape_string() to prevent SQL injection.

There’s also a date stamp behind the scenes.

No styling yet. Need to work on function before fashion. Next task will be to add the tagging ability, and display some entries based on tags, and date.

Also started work on the home page. I want the image to update on click, so users don’t have to reload the page to get a new image. Going to use javascript, eventually jQuery.

Begin Again

Registered for some hosting with Webfaction today. I’ve had a couple of ideas for projects floating around in my head the past few months, but haven’t had the ambition to actually start implementing them. I’m hoping that since now I’m paying for it, I’ll have more motivation.

I have one main page and four projects on the go right now. The main page simply displays an image right now and has links to the four projects. The links to the projects are images, not text. Made with Gimp on a Macbook Pro.


Simple blog, made with WordPress. I found a minimalist theme that I quite like. It will need some tweaking, but for now it will do. I hope to learn some CSS and JavaScript through this blog and all of the other projects. This blog will mainly be used for discussion project updates and the like. I’m thinking of making another WordPress install for posts not related to the site (movies, music, etc.), but four projects on the go is enough for now.

I already hate the styling for the h3 links, but I’ll fix that another day. Just want to get my thoughts down and everything installed for now.


The Apollo project is another simple WordPress blog. Again using the minimalist theme. This one focusing on photography. I bought a new digital SLR when I moved to Amsterdam, and I’ve been meaning to take more pictures. I’ll highlight my favourite ones here. Apollo is the greek god of light (amongst other things), and I figure that’s an appropriate title. All of my sub projects (minus this blog) follow a similar naming pattern.


The Demeter project is the one I’ve been thinking about for the longest time. Demeter is the greek god of the harvest, and the projects aim is to help with choosing where to go for lunch. Usually two or three times a week, some of my co-workers and I will be standing around in the hallway wondering what we should eat. And it would be a big help to new employees or visitors to the office. The project will have listings of places to eat with Google map integration, ratings, price ranges, comments, hours, and other metadata.

The scope for right now is lunch places near the office, but eventually I hope to scale it larger. To roll it out to the other offices, and maybe make it public. I hope to keep the scope relatively small, or if it does grow, then to have silos so that people aren’t bogged down with too many choices. I’m not trying to compete with Yelp, it should be more locally applicable.


The last project I’m planning is called Mnemosyne. Mnemosyne is the greek god of memory. This project is more for myself. I frequently come across little tricks or solutions to problems when I’m programming at my job. I rarely write them down, because if they’re on paper I’ll just lose them, and saving them to a text file misses some features that I feel would have me using it more.

Mnemosyne will be a simple entry submission application with tagging, search, and dates. The key is to keep it simple, but powerful. I don’t want it to be too complex or I’ll never use it, and I don’t want it to be too simple, or it is useless. I’m going to have to try to find a balance.

Just text support for now. I might include image support and others later.

So there we go. That’s everything for now. Hopefully I’ll get around to all of this while still being able to keep my social life.