I've been playing both acoustic and electric guitar publicly since the age of 14 and have strong experience of performing in public
SkillPagesApril 2011 - Present
Analog DevicesMay 2008 - January 2009
This work was part of my industrial placement. I worked in the DAC (Digital to Analog Converters) department under Maurice Egan.
Removing click events in a Windows Form application
When writing a program that has a lot of dynamic controls in it, you have to be careful with registering event handlers onto them. I discovered this the difficult way when one of my applications was registering multiple 'Click' events on a button. This was happening because I was binding a new event on it every time without cleaning up the old ones - so a new Click would trigger all the previous events. This handy little code snippet cleans up all the Click events on a Button so that you can then add a new event handler without any fear!
An Ode To The Opposite
A chirpy number I wrote in my teenage years
In my younger years I enjoyed taking part in debating while in university. One of the more interesting technical challenges to debating is the usage of software to control and monitor the tournaments particularly since there is usually power-pairing algorithms used to ensure that the best teams end up facing each other. This is a problem which modern tab software has fixed but a gap in the market still existed for single-speaker tournaments which follow a different format and scoring pattern to team tournaments. In March 2013, I was the tabmaster at National Maidens which is a national tournament for first year speakers in single speaker format. It was the debut of the software I wrote to remedy this gap and it went off (largely!) without a hitch! I've since open-sourced the project and it's available here.
Exception Handling in Python
We recently needed to implement more verbose tracing of exceptions in our Python scripts in order to isolate some errors which were occurring. I decided to use the 'traceback' module for this since it allows you to retrieve all the information from the point where your exception is thrown regardless of where you actually end up catching it. For formatting purposes, I then broke the data returned up into an array and reorganized it. This array now contains the name of the error being thrown followed by each function call from where the exception was thrown to where it was caught. This was a real help for us when we were troubleshooting
I recently implemented a Bloom Filter for some internal file processing. A bloom filter is an interesting probabalistic data structure modeled around a giant bit array - you take your data set and hash them in order to activate different bits. You can then test your different input values against the filter - if you get back a negative, you know your input value isn't in the filter. If you get a positive, it means it might be in the filter. The error chances of getting a positive for a value that isn't in the filter increases based on there being more items in your data set - but this can be offset by using more hashing functions or starting with a larger bit array.
It's proven very useful in the context I've been using it anyway!
This is some old acoustic work from a few years ago
Recently bought an Ibanez Prestige off @[79bc0574-2a4f-11df-b1a2-00155d010212|connor.walls|Connor Walls] - first new guitar in years so I shall be looking to put it into practice and get back to some riffage antics :)
In a hint of nostalgia, here's a song that I recorded years upon years ago... practically before digital recording tricks existed and long before I learned how to write a song properly :-)