Linux is my prefered OS and Arch is my favourite distro. I have experience with other OSes and distros including Debian, Windows and more.

A fan of many languages including Erlang, Python & C#. I currently enjoy earning a living using Scala. Check out my Scala blog posts.

I use elasticsearch and Lucene a lot. They are the best tools available for creating search based applications in my experience.

I understand the importance of rapid iteration & feedback. Lean approaches are the ones I see make big differences. Check out my lean blog posts.

My Philosophyon optimal software development

Architecture

Having a shared vision of what is being built is important in a team of developers. But a loose architectural design also helps to ensure functional and non-functional requirements are met. Read my architecture blog posts.

Kanban

I have been part of teams that delivered business value frequently whilst continuing to improve process thanks to the Kanban philosophy. I've had big successes using the Kanban method. Read my Kanban blog posts.

Continuous Delivery

The sooner a feature is released the sooner the business can benefit or get feedback to improve it. Continuous delivery is a process that I have used to improve business capability. Read my continuous delivery blog posts.

TDD

To get the benefits of Kanban and continuous delivery you need confidence that deploys will not break functionality. A suite of regressions tests provided by TDD is just one of its delivery-oriented benefits. Read my TDD blog pots.

Monitoring

Business value derived from software systems is only provided when the application is online and performing well. It's essential to profile and monitor applications after they have been deployed for these reasons and others.

Business Metrics

Understanding how users are using the applications you build gives the business important data about which features to add or how to adapt their business model. Read my metrics blog posts.

But never forget the role of context. Whatever decisions you take must account for the factors specific to your environment - such as company philosophy, quality of code vs speed to market priority, and many others.

Inspirational Peoplethat I've been lucky to work with

Rob Bowley

Director of Technology at 7digital

@robbowley

Rob transformed 7digital from a handful of developers to a tech team with 50 developers incessantly delivering business value with 25 live deploys per-day. Rob stuck to his principles of agile, kanban and TDD whilst producing an incredible tech culture that gave developers opportunities to share knowledge and learn new skills with the introduction of innovation time. As Rob would say... *doffs cap*.

Seif Attar

Team Lead at Wiggle

@seifattar

It's very easy as developers to have little tiffs about which framework to use or how to name a class. This kind of occurrence never happens with Seif - he is funny, easy to get along with and the one programmer who everyone always wants to work with. Overall a great person and a top-notch coder, too.

Jay McGuinness

Founder of BigJump

@bigjump

I had a few opportunities present themself for my first role as a software developer. Choosing Jay and BigJump has positive consequences lasting to this day. If not for Jay, introducing me to concepts like DDD, Alt.Net and open source technologies as well as high-profile blogs, my passion for programming may have quickly fizzled out as I worked for a typical, strictly-Microsoft .NET shop.

Hire Mefull-time or contract around London

I'm currently enjoying my current role working for Artirix and would encourage you to join me here, too. In the future I will probably be looking for:

Reactive Systems with Scala and Akka

For employers and for fun I build concurrent, distributed, reactive applications using the Typesafe stack. These are some of the technical challenges I enjoy the most and have blogged and read books on this exciting topic.

Leading a Team

I have experience of leading software projects and would always be willing to listen to offers where there is an opportunity for me to make a significant difference to the success of your project. To get an idea of how I operate why not check out some of my blog posts on leadership and architecture.

Join Your Startup

Being in a startup requires many skills beyond writing code. I can help as you search for customer feedback and a business model. I like to read entrepreneurial books and attend tech startup meetup groups.

Move to Continuous Delivery and Kanban

Through a series of small steps you can eventually start to deliver software for your business on an hourly basis. There is no short-term fix, but I can help you plan and implement this change. It begins by simply visualising your process and slowly starting to automate infrastructure and deployment tasks.

Migrating from .NET to Scala and the JVM

Moving from the developer resource constraints and licensing fees of Windows to the open and innovative world of the JVM and Scala can have many benefits for your entire company such as a larger pool of enthusiastic developers and better tools to help you scale up.

Contact Me