Hello!

I'm a technology enthusiast working as a Web Developer since 2003. I enjoy solving problems and designing elegant solutions that are scalable, maintainable and, if needed, reusable.

Working across different environments, type of projects and roles made me appreciate the importance of following best practices and good team work. As a team leader I value everyone's opinion and I'm aware that there is always something useful I can learn from others.

If you're a developer yourself, please find me on GitHub

Experience

STEEL May 2014 ‐ present

I joined STEEL as a Senior Developer and then moved into the position of Lead Developer. Over these last few years, I've been:

  • Scoping and planning web projects; most of them using the Silverstripe CMS
  • Working on the team organisation, efficiency, development and training
  • Improving the local web development environment by moving from Vagrant to Docker
  • Setting up automatic deployment (Semaphore CI)
  • Encouraging exploration of new technologies for both frontend and backend
  • Encouraging a collaborative environment and the use of open source technologies
  • Encouraging more structured and agile workflow
  • Working closely with the strategy team to identify new opportunities and solutions

In detail

A few examples of activities and projects I’ve been working on while at STEEL

Multi-tier Ruby on Rails platform
nginx multi-domain ssl certificate jsonb

This platform allows a different templates/views and set of controller to be used depending on the subdomain name(s) used to access the site. The admin interface can be reached only by using the “main” domain (via nginx configuration). The relevant configuration is loaded for each domain and this makes it communicating with an external email marketing platform using the correct APIs credentials.
Working on this project involved:

  • Finding a reliable method to handle a multi-tier application with Rails
  • Choosing PostgreSQL as the DBMS, also taking advantage of the JSONB field type for document-like data when appropriate
  • Setting up a Linux server on DigitalOcean with Ubuntu, rbenv and nginx (among the others)
  • Setting up a Wildcard + SAN SSL certificate (the platform runs on two main / second level domain names and unlimited third level domains)
  • Provide a simple set of libraries to allow the front-end to communicate with the third party APIs
Racegoers Club website
unit testing continuous integration automation stripe

The website allows users to register and purchase their membership and other services online. The data is then sent to Salesforce CRM using a script provided by a third company. My personal contribution to this project included database structure planning, managing the salesforce integration with the third party company, integrating the bespoke shopping basket with Stripe, automated unit testing covering the critical bespoke components (Accounts, Members and Orders) and custom behaviours implemented for communicating with the salesforce script. I also created some other scripts / tasks to import the content of the old website and manage members renewing via direct debit (from a CSV).

Bespoke style guide tool
bespoke tag parser pattern-driven atomic design

I contributed to the development of a style guide tool based on the Silverstripe CMS. The tool has been inspired by http://patternlab.io/ and the concepts of atomic design. Its purpose is to allow different teams to have a visual representation of the different components used to build emails. On this project I worked on a tag parser that allows for "patterns" to be included inside other "patterns" also with opening and closing tags that capture the content in between and the ability to pass parameters to the patterns (a similar example can be found here: http://patternlab.io/docs/pattern-parameters.html ).

Ruby utility scripts
cli sftp transfer api

After starting to develop in Ruby, I often used it instead of Bash for shell scripting. Here are some examples:

  • A script that connects to SFTP using the SSH private key for authentication, downloads a CSV and import the records into a third system using an API (it actually supported three different sets of APIs corresponding to three different systems/platforms)
  • A script that reads the html files present in a folder and parses/replaces absolute images paths into relative by downloading the images and copying them into the output folder together with the modified version of the html
  • A script that reads a CSV with a list of Google Maps URLs and provide the signed version of them using Client ID and signing secret (private key).

I also worked on creating an early version of a client library for the SignUpTo REST APIs.

Captive Portal Splash Page
captive portal wifi server side google analytics email validation

"Captive Portal" is a solution by Peplink that has been used by a client to set up a free WiFi access point. I worked on the integration of the splash page with the "Captive Portal", on setting up server side tracking for Google Analytics and on checking the email address provided by the user against DNS records and temporary/disposable email domains.

Docker for local development
docker custom images speed power

This started as an experiment but it has proven to be a really valid solution for local development. Taking advantage of a customised set of recipes on Docker Images and of Docker Composer's ability of mounting local folders within the images ("volumes") it has been possible to use just a bunch of images across different projects. Not having to rely on a virtualized environment made local development quicker and more enjoyable, while granting a common development environment for the team.

The Frameworks Mar 2014 ‐ May 2015

At The Frameworks I've been working as a Backend Developer, also taking care of the automated testing and deployment of the many digital projects ran by the company. Most of the websites I worked on were based on Yii Framework, Drupal or Wordpress while PHP Unit and Jenkins were used for automated testing and deployment.

Docebo Sep 2009 ‐ Mar 2013

At Docebo I’ve mainly been working on an internal project, using the Yii Framework and other web technologies such as jQuery and CSS3, that allowed the platform to migrate to a Software as a Service (SaaS) model. In fact, that also included the creation of the platform automated installer. In that period I've also contributed to the Docebo LMS helping in the development of its API and the integration with third party APIs and services. Other responsibilities, during my last year, also included managing a team of two remote working developers.

dotMill Mar 2003 ‐ Dec 2009

I ran my own business as 1-man web agency creating a network of partners and dealing directly with customers in order to provide web hosting, web development and other services. Helping clients develop their own web identity taught me how to manage my time, manage and meet their expectations and deliver the best solution to fulfil their requests. I also learned the importance of having my own time to rest, study/improve my skills, do some sport, have fun with family and friends, etc. so that I can be more productive during my working hours.

Skills, tools and technologies

Most experienced

Others

Tools

More about me

I was born in Italy 34 years ago from Dutch father and British-Italian mother. I moved to the United Kingdom in 2013 and later became a British Citizen. In 2016 I became a dad, needless to say, a very important moment in my life.

I usually don't drink coffee, however music is for me a very powerful stimulant and a big part of my life. I prefer a quiet working environment but when I get the chance of putting my headphones on, I enjoy listening mainly to rock & metal. I also used to play the bass guitar and a bit of keyboards.

On my free time I like to do different activities (from cycling or swimming, to yoga and martial arts) and playing video games.

Get in touch