The answer to life the universe and everything is 42

(unfortunately the question got lost)

Hi! My name is Aran Mulholland, here is a little bit about myself.

  • I’ve been programming since I was 8.
  • I’m a geek but not a nerd. (A geek is a nerd with fashion sense)
  • I love coding and computers.
  • I hate résumés (Résumé - From the latin for elaborate lie laid out in an Arial font)

tl;dr

Technology Experience

  • Bachelor Computer Science RMIT Melbourne
  • C#, ASP.NET MVC, Web API, Linq, Windows Azure
  • JavaScript
  • Unit test experience in multiple platforms and languages
  • SOLID code, CI, Build Monkey
  • Objective-C, xCode, iOS development
  • Node.js
  • Neo4j Graph database (NoSQL) experience

Places you can find me

Desktop software

I have been working with and then leading a small development team for the past 6 years. The company I have been working for is heavily invested in the Microsoft tool set.

My original task when I joined the company was to rewrite a legacy system using C# and WPF. The original software was written in Visual Basic and was used by schools to enter student assessments, analyse the data and produce final reports to send home to parents. It was a large system that we rewrote with hundreds of thousands of lines of code.

While working on that project the following occurred:

Onward to the Web

As the web revolution took hold in the education sector we transitioned our software to a web based application running on premise at the various schools.

Client side web

The first steps in moving to a web developer were depressing. To the newcomer it felt like web was layers and layers of hacks piled on top of each other. There was no separation between the model and the view. You had horrid examples of jQuery code that would do things like hit the server and then construct html elements and insert them into the DOM. The issues I found with this kind of coding was:

We went through a couple of iterations of designs building more separation between the layers but it was not until we implemented a combination of work by Nicholas Zachas on scalable Javascript application frameworks, require.js and Knockout.js that I felt that we had a system we could build on. Knockout.js is loosely based on WPF so I felt very comfortable there. Data binding enabled updating the view and the business model with a clear separation. We now had a system that:

With the patterns and practices in place I became a lover of JavaScript. It is a much maligned language with some very vocal critics but when you know it and know it well it's a beautiful little language. It's small, easy to learn and easy to implement most common design patterns. (Dependency Injection is a bit tricky) It is also easy to abuse (but which language isn't) which has led to a lot of hacks.

Server side web

The server side web coding is beautiful. ASP.NET MVC has been growing with leaps and bounds. On the server side I pushed for the new patterns that I had been studying. I had been watching a lot of pluralsight.com courses and we ended up with a system that had:

To the Cloud

The natural progression of installing on site web solutions was to move to the cloud and as we were heavily invested in the Microsoft stack Azure was the logical choice. I loved this development as I really dig infrastructure. There was a fair bit to do to ensure that we could run a multi-tenanted solution which used multiple databases and had thousands of users with different authentication needs and run data and CPU intensive tasks. Along the way I did:

Side projects

I don't stop. In the past few years I have worked with multiple technologies and written a few iOS apps. I have a keen interest in a wide range of music and have worked on a couple of different music apps. I wrote my own dual drum machine and effects unit for the iPad and the iPhone. I haven't done any updates on it in a couple of years as I am working on different things. Through this work I have a good working knowledge of the Core Audio framework in iOS as well as a pretty good understanding of iOS development.

As a result of the work I did here I have worked on some side projects including:

We have a daughter who was recently diagnosed with type one diabetes and I have been working in my spare time on an app that parents can use to check in on their children's blood sugar readings. At the moment it is just a prototype ASP.NET MVC web application running in Azure. The school teachers enter the readings and any associated notes and my wife and I can monitor her from where ever we are. As I have written a few iOS apps I will eventually make an app that is used to enter and get these readings. As such I have been very interested in iOS 8 as it now has HealthKit.

I have been designing a follow on app from the drum machine DJ app I wrote that has a more social aspect. In order to do this I have been learning about the graph database Neo4j. Originally I started writing the server for this in a C# project using the Web API but have recently moved my code base to Node.js as handling JSON is easier in JavaScript than C# and I wanted to learn something new. I ended up writing a very simple Neo4j access library for Node.js The package is also published on npm.org. Part of the challenge of writing a social network from scratch is the news feed. Here is some research I have been doing with linked lists for a news feed in Neo4j for a social network