Here is a list of projects and perhaps too much description at times. I've tried to include source codes wherever possible for anyone interested.
The Tesselate program was inspired by Cian Booth. The aim is to output a randomly generated image that is tesselated, ie, a repeating background. Tesselate is used for the background of this site. Try pressing b!
The trick used in the script is to consider a 9x9 grid of squares and a bunch of random polygons. The polygons are drawn starting at a certain point in the central square and then again in the other 8 squares. Since any overlap from the central square into an adjoining square will be reflected by an overlap from the opposite square into the central square, we effectively get repeating boundary conditions, so that no matter what is placed in the central square, it's opposing edges will always join up.
By specifying a specific format for the polygons, or by giving them explicitly, different specific styles of background can be created.
Scribbles is a script inspired by this video and is on the homepage. It turned out a lot better than expected. Originally, I was just a bit curious to see how the graphs in the video might turn out, but now it's turned into something even better imo.
So, imagine two oscillators at right angles to eachother, each attached to one end of a free moving rod which are both attached to a common point with a pen at that joint. The goal was to trace the motion of that pen.
The problem to solve is finding the intersecting points of two overlapping circles. This was done out in mathematica. The current solution assumes both rods are of equal length and the oscillators perform small oscillations, so that the oscillators never interact with each other. There are two possible solutions to this problem, so an appropriate one was chosen, namely, one that would always be positive.
Originally, the program was written in Mathematica, then it was ported to gnuplot so it could be run on the Maths servers, then it was ported to PHP and GD, but PHP was too slow at generating the points, so the point generation section was ported to C. All in the same night. I then built it in HTML5 with javascript and the canvas element. (Try pressing "a" on the homepage!)
The oscillators are generated as sums of sin functions with a random coefficient in front and a half integer multiple of the time as it's argument. This half integer time multiplier means the functions to pass through the center with periodicity 2π, encouraging symmetric outputs of period at most 4π.
Some sources: Gnuplot, PHP and GD, C and GD, C, Javascript/Canvas. Example output here.
Protip: Try setting the friction to something other than one. Numbers |x|<1 cut holes in the center of the pattern, and numbers |x|>1 cause some strange non-symmetric solutions.
I'm thinking of learning how to draw images in C at some stage so that the GD element of the script won't be needed. No promises though
LaTeX-sticle is an online LaTeX editor where you have your input TeX on one side of the page and can see the output on the other.
LaTeX-sticle is the first proper project in webapp development I've taken on. As such, I have a certain fondness for it, but it also has some horrible spaghetti code. I'm planning on doing a bit of a rewrite at some stage so it will all be handled with databases, meaning the code will be neater, and a few features like projects and user accounts will be possible.
It's a very practical editor, with the added bonus that all your files are available online, so there's no hassle with carrying USB keys around and losing them etc. In fact, Cian has been using it to edit his notes during lectures, and since it's all online, he only has to point the links on his page to the files he's been editing for automatic updating. Sweet or what? Some people have even stayed at home updating his notes during a lecture instead of actually going, mostly as a novelty
I won't be releasing the source until after the rewrite because there are a bunch of php and bach scripts lying about the place and I'm not entirely certain what does what or what might be obsolete. In the meantime, if you want it for your own Maths account, send me an email and I'll walk you through copying it to your account and setting it up.
You can play with it a bit here.
Sname is a snake clone written in HTML5. The name came about from frequent mistypings, and I just decided to stop correcting them.
This was a bit of a trip into writing some proper object oriented javascript, which I may or may not have accomplished. What I did manage to do though, is build the whole thing into one single object, which was a bit new for me, so I could build poo loads of functions and what have you, with little fear of interfering with other external libraries. It's also written without any jQuery, just for the hell of it, but there were times where I would have killed for that little dollar sign.
The code is slightly spaghetti-like at the moment and has very few comments. It's also not finished, so it has that it in its favour.
This took a good bit of time to build.
This uses a client/server model, and long polling to synchronize clients.
When a user first loads the game, they load the javascript client. That client then sends a request to the serverside client for the login text. Once the user inputs their login credentials, the request is sent to the server for them to join the game. On the next update, they're included in the game and sent the necessary information in the form of a JSON. They then submit a move which is sent to the server, and they await the next update.
Every 30 seconds a server side application is run to update everyone's scores and log people in/out. When the server completes it's update, it sends a signal to all the other serverside clients currently hanging, waiting for this signal, to continue. That way, everyone knows when the 30 second countdown is beginning.
Example here
This was the first site I got paid for building. It also paid for my current server space. Handy enough.
Everything on the site was built from scratch. You might be able to tell :/. If you're interested in buying an Irish music CD, check this one out.
This is certainly one of the nicer sites I've put together.
The main artwork was done up by Fiontán Ó Ceallachán, and cut up into a usable format by myself.
Most of the site is handwritten, from scratch, including the jQuery Twitter feeder and the content slider.
If you're interested in some good tunes, check it out.
I'm proud enough of this site. It's one of the better ones I've built. I started building this version of it during my exams in 3rd year. I figured my old site needed an overhaul, not only because I had put the URL on my CV and the layout was supposed to be a bit of a joke, but because other people had really nice pages and I was super jealous. It's written using PHP, CSS and Javascript. Any images included so far have been automatically generated, which I think it pretty cool.
Building this site was the inspiration for building Tesselate and for translating Scribbles into a more useful language. I think it was well worth it.
One of the things I want to do with this site is to have it as a kind of tutorial, or like a reference on how a scaleable site can be built pretty easily. The way it's set up means it's suitable for dealing with 10 or 10,000 pages quite robustly without having to worry too much about clashing names, image names etc. I, however, have problems filling just 6 pages and don't really have loads of pictures I want to show off...
Sources: PHP, CSS, Javascript
There's some other stuff as well like content management systems and some other stuff that were only really like a proof of concept. The stuff up on this page is really my most coherent stuff. I'll stick more up as projects come together into something useable. Until then, just sit tight!.