A Random Data Web Service

Yesterday I was thinking about ways of generating random data . One method of doing this is to get the user to move the mouse or press keyboard keys at random. This got me thinking about the concept of a service which would allow an application developer to pull random values from a pool contributed to by a large number of users.

It would work something like this:

  1. The user installs the application
  2. The application captures key codes and mouse position co-ordinates over a period of time.
  3. All of the samples for that time period are aggregated in such a way that the resulting number could not be de-composed into the original values
  4. This aggregated value would be transmitted securely to a server where it would be further aggregated with values from different users and sample periods to form a “pool value” of which there would be several, each of which would expire after some amount of time.
  5. A developer could then query a service which would return a specified number of bytes taken from more than one pool value.

I don’t claim to know anything about cryptography, so it’s almost a certainty this is a terrible idea from a security standpoint for reasons I lack the requisite knowlege to have even considered, therefore I’ve no plans to build this but the idea of a web service where you can go get some pseudo-random data from a massive pool of contributors piqued my curiousity.


  • As a user, would you be OK with a program sending values derived from your input?
  • As a developer, would you ever use such a service?

Don’t Do As I Say

I had a strange dream in the shallows of what was a very good sleep. I was asked to fix a computer and when asked how it was misbehaving the woman who owned it would only say “It’s broken”. I sat down in front of the laptop to attempt to turn it on and determine the source of the mysterious broken state, but the second I touched the keyboard the woman screamed that I must never touch it before taking her laptop and telling me that I must leave and not come back.

I’m not sure what this dream meant. It might be a reflection of some uncertainty, or perhaps its my subconscious exploring the idea that I suck at fixing broken laptops, a concepts which ventures somewhat from reality.

If you have any other suggestions as to what this dream may mean, please feel free to share them in the comments.

Sounds Rediscovered

This evening I stumbled upon Eve 6, a band I knew I liked in the 90s and early 00’s to pleasent effect.  The bounties of my accident were two-fold:

  1. I finally learnt the real name of the track titled “Inside Out“, a track I’d only previously known by the self-assigned title “that heart in a blender song”
  2. Re-discovered “”Here’s to the night“. I’d forgotten this existed after having heard it in various places over the years, but never identified it.

That’s it for this one. If you can think of anymore awesome 90s or early ’00s bands I should check out, post a comment and I’ll include the ones I liked in a future post.

Hello Ruby

I have a web application that I’d quite like to turn from imaginary into reality. I’ve done a fair amount of design work and have just started to think about the nuts and bolts like where the application will be hosted and what tools I’ll use to create it. Historically I am a fan of the Microsoft ecosystem because I am comfortable with C# and the Visual Studio based development tools. Unfortunately because budget for this project is almost non-existent. I really can’t afford ASP.NET hosting and have thus chosen to host the application in a Linux environment.

As a consequence of this decision I’ve had to consider non-Microsoft technologies I could use to build my application. After some discussion I decided to use the Ruby language and the Ruby on Rails framework. I came to this decision because Rails and PHP hosting seem to be the most abundantly available technologies that suited my budget. Rails was the logical choice due to highly unpleasant experiences with PHP a number of years ago.

And so I have begun learning the Ruby language with a view to building my web application using Ruby on Rails. While searching for learning resources I found an excellent interactive tutorial at TryRuby.org.

What impresses me about this tutorial is that it covers both the language syntax as well as explaining some of the typical mannerisms of Ruby code at a reasonable pace, in an approachable manner which makes few assumptions about the person following the tutorial or how much previous experience that person might have.

I’d love to see similar resources like this for other interpreted languages such as JavaScript or python. I believe an interactive tutorial in a similar style to this and an appropriate level of detail would make an excellent companion to an introductory programming course

.Screenshot of the interactive tutorial environment with tutorial text in left pane and interactive interpreter on the right.

Most of the languages I have embraced have been statically typed and featured curly braces heavily. Ruby is a lot more fluid and open than these languages, which usually makes me uncomfortable, but Ruby syntax is just free enough to allow the language to flow, without making me fear that the weaker typing has done despicable things to my data.

All told, I am quite excited about learning the Ruby language 🙂

Bonus Chatter: I’d be remiss not to mention that the do…end syntax did remind me a little of JADE programming language.

A Neophytes Guide To Classical and Opera Music

This post is a way to document and share those classical pieces that I personally enjoy both for my own reference and to hopefully share my enjoyment with you dear reader. Classical music is largely uncharted insofar as my harmonic ventures extend. Expect not great depth, nor originality, for this list was assembled by someone who has never been to a performance, doesn’t have a clue who the conductor or soloists are, and can’t tell you what key a given piece is in.

Note that to make use of the links in this article one must have Spotify installed. I chose to use Spotify links here because I believe that people who produce a work should be paid for it, and I can’t presume that is the case for each and every YouTube video out there. As a final point of minutia, I’m not including movement numbers because the links are to the movements I know or like.

There is no more fitting place to begin than with my own introduction to the genre in the form of Vivaldi’s Four Seasons. While the entire score is awesome, I’ve only linked to the bits I like the most.

Vivaldi’s Four Seasons:

  • Summer (Probably better known to New Zealand reader as “The song on the National Bank ads”)
  • Autumn (My personal favorite – I have literally listened to this all night while programming)
  • Swedish Rhapsody (The song that plays in my head when I think of a Unicorn prancing through a meadow in an enchanted forest)
  • Ride of the Valkyries (or…kill the rabbit!, kill the rabbit!)
  • Prince of Denmark’s March (because it’s awesome. Also, who doesn’t want to be reminded  of Antiques Roadshow)
  • La Donna È Mobile (I don’t care what the words actually are, in my head he will forever be singing “I NEED PANTS YA!”)

I hope you found something you enjoyed. There are far more I could link to but sadly my time for writing rapidly comes to an end. If you can think of anything that should be on this list, comment and I’ll give it a listen.

Attempt The 5th: (Hopefully) The Death Of A Math Paper

My regular readers will no doubt know of (and probably be entirely sick of hearing about) my inability to conquer a certain all-important math paper. I have decided that for better or worse, this year will be the final time I face this particular hurdle.

My strategy this year is in fact to start in semester two rather than the first semester which is very nearly upon us. The logic behind this decision is motivated primarily by financial considerations. Rather than simply amass more debt by adding to my student loan, I shall use the time to save enough to foot the bill for this paper myself. In contrast to all my previous attempts at this paper I will only be enrolling in this paper until I successfully pass it.

I am also seriously considering acquiring the services of a professional tutor once the course has started and I can afford to pay said tutor the fees demanded. This tutelage shall be augmented by the excellent resources available through Khan Academy which I have made good use of in the past.

I’d like to attempt to blog about my progress as the course progresses as a way of documenting any knowledge gained, and to allow you dear reader to share in any joy, pain or misery I might experience.


I’ll Cut Off Those Cute Little Ears: Disabling the side-buttons of an Apple Mouse in Windows

Due to the recent failure of my regular mouse I have been using the mouse supplied by with my iMac (Late 2009 iMac 27″” for those of you playing at home) for the last few days. While this mouse is generally an acceptable replacement for the recently departed one, I find that I am frequently pressing the buttons on the side of the mouse inadvertantly, causing me to spontaneously navigate back one or more pages in my browsing history whenever this occurs.

I found the  XMouseControl by way of this question on Super User. The utility works by intercepting mouse clicks and performing an action in response to those clicks. One of those responses is “disable” which causes the click to be ignored, thus preventing my browser from interpreting it as a request to go back.

To disable the side buttons:

  1. Install XMouseControl
  2. Launch XMouseControl
  3. Press the left side button
  4. One of the drop down menu’s will highlight orange to indicate that it is the menu corrosponding to the left side-button
  5. Open the drop down menu that went orange
  6. From the list of actions in the menu, choose Disable.
  7. Click Apply

XMouseControl user interface with combo-box corrosponding to the side-buttons highlighted orange.

With my mouse, the left and right side buttons are treated as a single button as far as XMouseControl is concerned so I only needed to set one of the buttons (button 4 in my case) to disabled in order to disable both the left and the right side-buttons