# Project List

The main purpose of this blog is to keep track of my various projects and to document them. The end result would be a long list of projects with all the associated metadata which can then be summarised to make browsing them easier. The Project List is a meta project that does just that. Each project on my website gets a file named project.php associated with it that contains the meta information. They are then gathered by the Project List and can be sorted, filtered, and displayed online. I’ve also added static pages, blogs, and talks to the lists of resources. You can view the Project List to read more it. This was tied in to a major update of my website, as I had to create new preview images and new styles to match the new way of showing the projects. This will probably evolve further over time, but for now it’s fine.

# Update: Tangles

While giving my website a facelift I deciced that the Tangles (Live page) project needed some attention. The page was previously the main game, followed by a mess of buttons and then instructions. I rearranged the content to give a proper introduction and made an in-canvas transition screen between levels. The end result looks much nicer and now it’s almost a completely self contained game. With some more work it could be made into a standalone app for the App Store. This project also benefitted from a higher resolution canvas than the actual element size, leading to better graphics.

# Meta: Consolidation

While updating my website I kept getting warnings from online web design tools about having “blocking” scripts and stylesheets. These were slowing down the loading of my website, especially for mobile users. Now my website was designed to be viewed on a desktop or laptop with quite a fast internet connection, but these days there are quite a few mobile users, so I decided to consolidate two external scripts into inline scripts, separate out the MathJax unless it’s needed, and consolidate the styles into as few files as possible. It’s worked generally quite well, but it does leaves things less clean that they were before. It seems I’m constantly stuck between several different design philosophies, being pulled in different directions. In general I prefer the W3C ideals that the internet is a magical wonderland where you can load as many files as you need and follow all the best practices, but I’m starting to move a little closer to the more realistic and bandwidth budget driven notions of impatient smartphone users who expect things to load immediately without having to wait for pesky stylesheets and JavaScript files. These small changes feel like big progress though, and slowly I find myself ticking more and more boxes from both sides of the design philosophies.

# Meta: New styles

One of the criticisms of my site was that there were too many 90 degree corners. CSS has had rounded corners for a long time, so I decided to finally use this to make things look a little nicer. Now I have rounded corners on most of my website, which makes things look a little more inviting and soft.

At the same time I decided to update the style in general, taking as much of the project-specific styles out of the main style sheets as possible. This cut down the size of the main file by about 50%. The transition was not entirely smooth, and there are some parts that need to be fixed (most notably on the Project 365 page) but this does not affect the readibility of the website, so it’s a low priority.

In addition to the rounded corners and separation of main from project based styles, I also introduced some style related variables. Now a single style can define a set of colours that can be used to reskin the entire website. This uses PHP variables and several source files, which are then compiled into a single, relatively small stylesheet.

# Meta: Variable width style

As part of the updates to my website I dediced to add some variable width CSS styles. This allows the width of the main container to change in a fluid manner as the user changes the window size. This meant making two major changes.

First the menu had to change in size and content to respond to the changing window size. This now supports window widths down to 610 px. I may add support for window sizes down to 320 px, although to be honest most of the content on this website is not designed to be viewed on such a small device and supporting such antiquated devices seems counterproductive.

The second major change was changing the size of the canvas elements dynamically. This proved to be a bit tricky, since I wanted to keep the dimensions of the canvas the same, while changing the size on screen. It turns out the way to do this is to allow the canvas containter to change, and set the width of the canvas in terms of %. This has the added advantage of allowing the developer to use a higher resolution for the canvas, leading to superior graphics (at the expense of some more CPU time and RAM.)

# Meta: Social media plugins

For a while I have been meaning to add social media plugins to my website. I finally got around to adding Facebook Like and Share buttons, as well Tweet buttons. I will add more as time goes by, but for the moment I want to keep things simple while I overhaul the rest of my website. The overall design and layout will probably change as the website evolves. Adding these buttons caused some problems with validation, so I had to add some inline JavaScript to overcome these problems.

### Screenshot

One of the problems with the original Image fader (Live page) project was that it only faded images in one direction. I made an update to allow the image fader to handle all four directions, and used it to create a wallapper for my webite.

# Update: Wolfram rules

While updating my website, another project that needed a little attention was the Wolfram rules (Live page) project. Apart from looking a little poor in its presentation, it was an experiment in DOM manipulation where a huhe HTML table was used to display the resulting algorithm. While it was nice to see that the DOM and CSS worked as they should, this project was better suited to the canvas, so I moved over to the canvas and added some colour to improve the presentation.

# Update: Conway’s game of life

As part of my website’s facelift I decided to update the Conway’s game of life (Live page) project. The content was rearranged to make more sense to the first time user, a the controls organised in a way that made them larger and easier to navigate. I also changed the links to different shapes to be gallery objects (similar to what I had for the Mandelbrot project.) This is also the first page to get the “You might also like…” feature at the bottom, which will soon appear on most other pages when I get time to add them.