I’m a software engineer consultant at Object Partners in Minneapolis and have a decade of professional experience developing critical software applications and services for a variety of organizations in travel, higher education and government. My focus is currently on frontend JavaScript frameworks — particularly React — and I bring full stack experience and an understanding of agile project management. I’m also a founder of the React Minneapolis Meetup.

Previously, I worked for the Scottish Government on a team building mygov.scot which is a single point of entry to answer citizen questions. I also worked on a redesign of Scottish Government’s website: gov.scot. Before that, I worked in the Digital communications team at the University of St Andrews in Scotland. At St Andrews, I created and maintained a digital pattern library; it was a vital element of an initiative to achieve a consistent look and feel across the University’s sites and applications. I was actively involved in both the design and strategy for our digital products.


I published my first website in 2001 before going to university. It was for an online distance learning program that my Dad was involved in. I set up a web server running linux and ran the website from an internet connection with a static IP address. From that little office, people round the world downloaded my website. And so began my story with the web.

After finishing school, I went on to Bemidji State University and studied design for a year and a half and then switched major to mathematics with a minor in computer science. I was attracted to mathematics by it’s requirement for rigorous and logical thinking. However, in choosing math, I didn’t leave design behind; the connection between the pursuit of beauty and function in design and mathematics is much stronger than it may seem on the surface.

As a part of my undergraduate experience, I wrote a 20 page thesis on Reed-Solomon error codes. The field of coding theory goes all the way back to a computer scientist named Claude Shannon. Error codes are now ubiquitous; we use error codes every day to help ensure the integrity of information transmitted over noisy channels. A common example are CD’s which are encoded using Reed-Solomon codes so that even if they get a small scratch they can still be read by a CD player. The raw data the player reads may be wrong in parts, but there’s a little extra data added to help the player still get the original message.

I went on to study advanced mathematics in Budapest as a part of the Budapest Semesters in Mathematics program which was originally setup by a famous mathematician named Paul Erdös. Although I love abstract thought, I found that I am most energised when I can combine deep conceptual thinking with pragmatic problem-solving. This led me back to considering more applied areas of mathematics.

All through my undergraduate degree I worked as a student for the Bemidji State doing web development. On the job, I learned HTML standards, CSS layout, PHP, ASPX, JavaScript, how to design landing pages, write content, and build content management systems and web applications. By the time I graduated I had already been working full-time for the University and when I returned from Budapest, I eventually got a permanent position.

Working at the University was engaging. Our team was small: two developers, myself included. We were responsible for creating and maintaining all websites for the University, building web applications, and maintaining application configuration for the web servers. My role was both wide and deep. I continued to hone and develop my HTML, CSS, and JavaScript skills while also picking up skills building numerous web applications and web services. I drove the initiative to build a new responsive homepage for the University. I also liaised with people across the entire institution, building relationships that were crucial to my personal development and the success of my work. Problem-solving and brainstorming became my everyday tools.

During my time at the University I also had several opportunities to teach Introduction to Web Programming and Advanced Web Programming in the Computer Science program – 3rd year, 3000-level classes.