Marco Fontani

Marco Fontani

Freelance IT Consultant

Personal Profile

I am a Technical Lead / Full-Stack Web Developer / Sr. Software Engineer / Systems Administrator with more than ten years' professional experience. I am proficient in, and enjoy working with, the whole web stack from the JS-based client-side to the intricacies of systems fine-tuning. My main focus is related to the web, with a back-end slant.

Favouring stability, maintainability, and simple and elegant solutions over any framework-du-jour, I value a deep knowledge of the foundations upon which everything else is built upon. I strive to make things work, be proper, and ultimately make them fast enough; in that order.

Tools don't matter as much as the outcome, but there often are right, and wrong, tools and jobs. I'm not afraid to find the right tool, ditch a bad tool, or find alternative solutions.

Key Skills

Software Development: HTML5, JavaScript, CSS3, MySQL, Postgresql, Redis, Git, Modern Perl, mod_perl2, DBIx::Class, Moose, Template::Toolkit, Text::Xslate, Mojolicious

Systems Administration: Debian Linux, SSH, Apache, nginx, Exim, cron, Bash, Vim

Other Skills: SEO, Agile, Kanban, Object Orientation, Web ad serving

Aptitudes: Thoroughness, Accountability, Dependability, Attention to detail

Languages: Italian (mother tongue), English (fluent)

Work Experience

Freelance IT Consultant

January 2016 - present | Milan, Italy

I am currently a freelance IT consultant, working from home in Milan (Italy).

Tech Lead at The Register (Situation Publishing LTD)

November 2014 - present | Edinburgh, Scotland & Milan, Italy

Technical leader of the small, fully remote, tech team, working directly under company owners & CEO and in close contact with all department heads; fulcrum for all technical decisions; juggler of code, projects and responsibilities.

Hands-on full-stack software/web development, systems administration, SEO and project management.

Leading:
  • Established team culture around maintainability, testability, reproducibility, and documentation. Git commit messages often reference e-mail IDs, wiki pages, and other tools and are usually 10x longer than the change they provide. All code adheres to the style guide. All HTML pages pass full W3C validation.
  • Revamp of templated newsletter system, to ensure emails look good and behave properly on all devices including plain text clients (Debian Linux, Exim, Perl, TT, Inky, Litmus)
  • Extra-successful migration of whole site from .co.uk to .com and from single-DC to multi-DCs, achieving and sustaining a larger global audience and revenue after a short but calculated dip in traffic (SEO, Apache)
  • Revamp of in-house user behaviour testing from manual/templated A/B testing to configuration-based multivariate testing
  • Revamp of web analytics implementation, replacing unreliable events tracking with next-page-view property-based tracking to reduce frequency and amount of events calls. The system also enables self-reliance for complex analytical reporting
  • In flight: ad server implementation optimisation to reduce reflow and show ads faster (HTML, CSS, JS, BrowserStack)
  • In flight: PoC migration of bits of infrastructure to Cloudflare Workers and parts of the Perl codebase to Go
Architected and developed:
  • GDPR implementation; nojs- and accessibility-friendly consent choices framework, with proper behaviour for analytics, tracking, and advertisement (Apache, mod_perl2, HTML, CSS & JS)
  • Phased roll-out/scheduled/automated deployment systems; flag-based live next-version sneak previews; RewriteRule-based cache-busting of resources (Apache, nginx, Bash, Perl)
  • Long-term performance review of back-end, database usage, and templating systems. TTFB sped up 0.5x-20x: content shown to eyeballs faster; less need for resources, allowing adding more features or serving more traffic with the same or fewer systems. (Apache, Perl, MySQL)
  • Move to Cloudflare CDN and Load Balancing, to nullify bandwidth overages issues and to remove the need for running a custom DNS server to properly load balance requests between data centres based on geography
Administering:
  • Multi-tier MySQL/MariaDB; single PostgreSQL instance; multiple template-based Apache instances per node; Redis; Exim; VirtualBox; “bare” Git repositories with Bash- and Perl-based hooks
  • Dozen-plus Linux server fleet across two DCs, not breaking any sweat while serving tens of millions of monthly page views in reasonable time frames

Software Developer at The Register (Situation Publishing LTD)

April 2011 - November 2014 | Edinburgh, Scotland

Full-stack web development for public and internal/admin/CMS web sites and administration of the systems hosting the same.

Built/Developed:
  • Converted “www” sites from static to fully dynamic/templated
  • Documentation of server build processes, then scripted in-place rebuild of servers for OS upgrades & hardening
  • Backend API allowing offline-capable reading of stories and online-only logging in and posting of forum comments from the iOS, Android and Windows Phone apps
Architected and developed:
  • Apache/mod_perl2 Authen/Authz/RBAC system for the administrative backends’ users, using the Twilio API (SMS, phone calls) and TOTP / Google Authenticator / Authy to provide two-factor authentication
  • The global role-/capabilities-based system for user accounts, reducing future tech debt and increasing implementation velocity for new user-related features, i.e.: automated comment approval for veteran users; (validated/sanitised) HTML comments for trusted users.

Perl Software Developer at S1 (Glasgow Herald & Times)

February 2010 - April 2011 | Glasgow, Scotland

  • Backend Perl developer for s1cars, s1homes and s1rental, and internal admin tools
  • Complete full-stack development of PoC of the "Local Businesses" pluggable feature, later enlivened on the Evening Times and Herald Scotland

L3 Senior Technical Support Specialist at Dell

September 2008 - February 2010 | Glasgow, Scotland

  • Overseeing delivery of, and escalation point for, the "Managed Services for Small Businesses" service by the help desk's L1 and L2 agents; SME for Linux
  • Chaired sub-team responsible for the design, planning and successful implementation of chargeable services
  • Developed a Perl-based "ticket queue view" for the Remedy-based ticketing system

L2 Technical Support Specialist at IBM

December 2005 - September 2008 | Greenock, Scotland

  • Main escalation path for the "Desktop and Management Services" (DMS) dept.
  • Sales technical advisor; main developer for any chargeable change request
  • SME for scripting/software development done in the dept.
  • Automation of systems administration using VBScript, batch, Perl and C
  • Developed multi-server "Tivoli Storage Manager" backup monitoring and reporting tool using C/Perl/CGI/MySQL, and various Perl/Tk and VBA applications for translating data sets and automating common sysops and financial procedures

Technical Support Specialist at IBM

November 2003 - November 2005 | Greenock, Scotland

  • Phone- and e-mail-based hardware and software support for IBM/Lenovo ThinkCentre and Thinkpad machines; nominated twice for "Customer Satisfaction Championship"
  • Ideation and development of a Perl/CGI-based web repository for management of common "Problem Determination" hints & tips. Developed VBA macros for easing usage of the internal hardware ordering/ticket management tool

Software Developer at Lifetronic s.r.l.

September 2002 - September 2003 | Pisa, Italy

  • Developed custom-made home/boat automation “SMS station”, in multi-threaded C & x86 Assembler running on a web-enabled DOS-like mini-computer
  • Racked and cabled the entire office and show-room prior to the business opening their doors

Internship at Lu.Da. Servizi Telematici

2000-2001 | Livorno, Italy

  • Part-time internship while attending high school
  • Linux servers’ administration
  • Development and hosting of “Anacronia”, a multi-user on-line game with both a textual/telnet and web interface.

Teacher at Juvenile Centre "Todo Modo"

2000-2001 | Livorno, Italy

  • Part-time placement while attending high school
  • Teaching basics of computing and C software development

Education

I.T.I.S. G. Galilei - Livorno

"Industrial Technician Expert" / "Perito Informatico"

High School diploma. Vote: 96/100

Certifications

LPIC-1, Novell CLA.

English

Have English language certificates: P.E.T. and other spoken English tests.

O(LIFE+FUN)

I live in the green suburbs around Milan with my partner and our rescue dog, and we all like long walks by the rivers, in the woods, and love the sun hitting our faces.

I used to play the guitar, play the drums, and even sing in quite a few punk-rock bands: one needn’t sing in tune, play the right chords or even keep rhythm; it was great! Or so I thought.

My main hobbies revolve around technology, which I’ve lived and breathed since I wrote my first C program on a 286 with DOS. Most of my O(FUN) development is done in Perl or Go using SQLite or PostgreSQL, and deployed using a combination of Bash, Ansible, Docker and Dokku. I self-host where I can: most of my personal sites and tools are either on cloud VMs, on-prem mini-PCs, or “serverless” (aye, right) functions. My personal infrastructure revolves around a few scattered Linux servers, a Gitea instance, a Drone CI/CD manager/workers, joined together via a private ZeroTier network with LetsEncrypt TLS certificates and loads of automations peppered with many SSH “deploy” keys.

I’ve been running docker and podman on my Linux laptop for years, and go as far as performing most of my web browsing through ephemeral containers. My docker-based Home Assistant setup is generally useful, but yet so far from what I hoped and dreamed decades ago.

My SSH keys setup is what you should ask me about if you don’t get easily bored by the intricacies and the intersections of security, command-line usability, and pavlovian responses.

Last modified 2020-09-07