Toby Hobson

Toby Hobson

Technical Architect

I’m a “hands on” architect with over 17 years experience. I am experienced in system design, development, team leadership and mentoring.

In recent years my focus has been on early stage businesses and lighthouse projects. read more about some of my recent projects here. I have led teams ranging in size from 3 people through to 35. I’ve managed onshore, offshore, nearshore & hybrid projects.

I have a particular interest in machine learning and functional programming

What I Do

I have more than 17 years' experience building software for clients all over the world. Below is a quick overview of my main technical skill. Want to find out more about my experience? Check out my projects.

Management

Strategy

Working with other stakeholders to align the technical strategy with the goals of the business.

Leadership

I've led development teams ranging in size from 3 to 35 people. Both onsite and remote/offshore.

Recruitment

As a hands on architect who is able to code himself, I am well placed to interview and recruit developers.

Mentoring

I've mentored junior developers both on a technical level and with some "words of wisdom" from an old hand.

Vendor & tech selection

Finding suitable technology & business partners is essential for any successful software project.

Planning

Although no longer fashionable in the agile age I still believe in the value of proper planning.

Budgeting

Closely related to planning. I've been responsible for the budget on a number of projects.

Due diligence

I've supported the technical due diligence process on several projects.

Backend programming languages

Scala

Scala

I'm very experienced in functional and reactive Scala (Akka). I've been writing Scala code for over 6 years.

Java

I've been using Java since the earliest days from v1.3 through to v.11. I prefer Scala but Java is everywhere.

Python

I have used Python mostly in the context of data science (NumPy, SciPy etc)

NodeJs

I was (and still am!) cynical about using JS for backend coding. Nevertheless I've now built quite a few Node.Js services.

Frontend programming languages

React

I have used React quite extensively. Mostly alongside Redux. I've also used it from Scala.Js

Angular.js

I have used Angular on a couple of projects, I'm no expert but I know what it's good for

Vue.js

Similar to Angular, I'm no expert but I have used the library.
Svelte

Svelte

Although I haven't deployed a production application I have built a few prototypes in Svelte.

Databases & Big data

RDBMS

RDBMS

I'm no DBA but I have been using RDBMs for a long time. Including Oracle, MySql/Maria & Postgres
Apache Cassandra

Apache Cassandra

I've built a few big systems based around Cassandra. It's probably my favourite NoSql database.
Apache Spark

Apache Spark

I've used "standard" Spark along with Spark streaming.
Apache Kafka

Apache Kafka

Apache Kafka. I've now built a few big systems on top of Kafka, including an event sourced system.

Machine learning

Tensorflow

Tensorflow

I'm not a data scientist, but I have an understanding of tensorflow and DNNs in general.
Pandas

Pandas

I've used Pandas a few times when working with Python data science tools.
Scikit Learn

Scikit Learn

I've used the library mostly for classic regression, clustering and classification
Spark ML

Spark ML

I have some limited experience with Spark ML

Orchestration and management

AWS ECS

I've used ECS alongside other AWS services
Kubernetes

Kubernetes

I have 4+ years continuous k8s experience.

Cloudformation

I've used AWS cloud formation alongside other AWS services

Docker

Used mostly in a development context (k8s in production)


Latest Blog Posts

images/list.png
Learning Functional Programming with Cats

Like most blogs, mine is not too well structured so I thought it would be useful to tie the various posts together If you want to learn FP and Cats I suggest reading the posts in this order: Type classes for beginners - Cats makes extensive use of type classes. A good understanding of this concept is therefore a prerequisite. Don’t be scared! the concept is quite simple What is a Functor?

Read more →

images/list.png
Writer Monad

Logging is something we all need to do. There are a many logging frameworks available with various layers of abstraction (logback, slf4j, scalalogging etc). These libraries are all side effecting. As good functional programmers we want defer side effects and push them to the boundaries of the system. You can find complete examples of the concepts discussed on my blog in my Github repo . In particular, check out the Writer monad example The problem with logging So what exactly is the problem with logging?

Read more →

images/list.png
Stacking Monad Transformers

We can stack monads together, going beyond a simple Future, Either, Result combination. We do this by stacking monad transformers. In this post I will show you how

Read more →