UK Parliament

Engaged in the development of public websites and business applications that support the House of Commons and House of Lords. Led and participated in public and internal projects with multi-disciplinary teams using C# ASP.NET Core MVC/Web API, HTML 5, jQuery, JavaScript, TypeScript, AngularJS, SASS and SQL. Example of public projects include: Votes in Parliament, Committees and MPs and Lords.

Main tasks

  • Lead and planned development on sets of related stories/projects.
  • Enabled the House of Commons MPs to vote by Proxy.
  • Standardised design across applications by implementing and extending patterns from the Parliamentary Digital Service Design System.
  • Coded accessible features to meet international WCAG 2.1 requirements.
  • Customised Swashbuckle for ASP.NET (and Core) so that swagger-ui uses Parliamentary branding in Web APIs.
  • Created tools to optimise repetitive daily activities and cut time delays, including a C# Win Forms application to manage parliamentary VPN connections and a Google Chrome extension to quickly and easily notify the user which pre-Live environment is being shown.
  • Acted as a mentor for development skills with more junior members of the team.

Visuals

Votes in Parliament
Votes in Parliament website
MPs and Lords
MPs and Lords website

Digital magazines

Participated in the creation of a system, in which I became lead developer, that allows editors of Wired, Vogue, GQ and Glamour to create rich mobile and tablet editions of their magazine for iOS and Android. These editions are published in the Apple Store, Google Play Store as well as some articles on Apple News.

Main tasks

Involved in back-end and front-end tasks using C# ASP.NET, Node.js, HTML, SASS, JavaScript. System administered instances of Windows and Linux Amazon EC2, RDS and SQS. Guided front-end developer on architectural decisions and integration tasks with the back-end.

System components

  • ASP.NET Umbraco websites that allows digital producers to easily build editions by creating templated articles, choosing styles and interactive elements including galleries, audio players, video players and cover animations.
  • Node.js processor that bundles edition articles and assets and perform a 'PUSH' to Adobe Digital Publishing Suite.
  • OPDS feeds and HTML manifests that allows the PugPig Distribuition Service to 'PULL' entire magazine editions for each brand.
  • Article bundler for Apple News that ZIPs articles and assets into JSON based Apple News Format, ready for upload via a custom web uploader portal.
  • Hybrid App generated by PugPig and Adobe and customized to the brands' specifications. The Hybrid App displays magazine editions articles built in HTML, JavaScript and CSS.

Hybrid App videos

Wired, Vogue, GQ and Glamour digital editions videos

Teachers community

Lead developer on the revamp of the TES Community, a platform where teachers can discuss education issues with one another. This involved migrating an old platform used by millions of users to the latest Telligent Community. The project introduced new functionality for users to create groups, blogs and forums; invite friends to groups, 'like' posts, upload resources to share, search within search results and more.

Main tasks

  • Coordinated and reviewed developers' work: C# ASP.NET, JavaScript, HTML, CSS and SQL.
  • Optimised the use of JIRA during sprints for better collaboration between QAs, developers and project manager.
  • Executed regular SVN code merges of ongoing parallel projects.
  • Automated releases using TeamCity to build and deploy windows services (3) and websites (7) - 90% faster than manual release.
  • Idealised and created a C#.NET tool to generate SQL packages (~200 scripts) for automated database deployments.

Visuals

TES Mathematics group's forum
TES Mathematics group's forum

Telecoms 'MyAccount'

Created a C# ASP.NET multi-tenanted 'MyAccount' portal for a suite of telecoms sites, which enable customers to manage their phone and internet accounts online. Customers can download invoices, pay bills, change tariffs, modify services, make phone line tests, report faults, generate call reports, create call alerts and recommend friends. The application communicates with BT's WLR3 platform to process requests related to the customer phone line.

Visuals

'MyAccount' multi-tenanded website for Onebill Telecom and XLN Telecom
'MyAccount' home page
'MyAccount' customer home page

Website redesigns

I have written the code for several website redesigns, involved in both the front-end HTML, CSS, JavaScript and back-end C# ASP.NET updates. The key objective of the redesigns was to increase the companies' online presence and to improve the user experience. Some of the sites also required multi-tenancy to be enabled.

TES and XLN Telecom website redesigns

News portal

The objective of this news portal was to create a platform which could be used to create news articles, business tips, polls and feature small businesses. The project had to be completed as quickly as possible so I developed an efficient process in order to achieve this goal.

The plan

  1. Install Wordpress - PHP and MySQL fun!
  2. Buy a theme that fits into the look and feel of the company's website, tweaking as needed.
  3. Create the main categories to organise articles.
  4. Create a PHP job to parse news from external feeds. This is to auto insert news to the website without the need of human intervention.
  5. Install polls and word cloud plugins.
  6. Add social media links.
  7. Optimise the search functionality.
  8. Test, test, test and release!

The result

XLN Telecom business community
XLN Telecom business community

Automated deployments

I started working on a project which was taking almost 2 days to be deployed manually to test servers due to its magnitude. Everyone was pulling their hair out. This process required the deployment of multiple websites, windows services and SQL changes.

I stepped forward to lead the development and immediately prioritized automation. The result was the deployment timings reduced from 2 days to between 5 and 20 minutes per deployment (timings were variable as the deployment was modular and therefore it was possible to choose what to deploy).

I optimized builds and deployments timings with:

  • TeamCity - used to control the build and deployment process with the press of a button. Enabled continuous builds and nightly deployments.
  • MSBuild - built the assets.
  • MSDeploy - deployed the assets onto multiple webservers.
  • NAnt - defined tasks to be completed upon a build.
  • YUI Compressor - minified the JavaScript and CSS files.
  • Google Closure Compiler - compiled the JavaScript to improve its performance.
  • DOS batch and Powershell scripts - used to achieve multiple tasks on deployment servers such as IIS and windows services management.
  • SQLPackage - designed and created a C#.NET tool to remove database release errors. The tool generates a multi-tenanted SQL package of objects and a respective reference file. This file was then used with a batch script that called SQL Server's sqlcmd utility for automated deployment against multiple databases.

Single sign-on component

The company I was working for owned several websites with one shared login. Each of the websites had its own code to handle single sign-on. It was extremely difficult to maintain such critical functionality so I offered to come up with a better solution. I studied the single sign-on code of each website and centralized the logic into one C#.NET component for ease of maintenance and re-use by any of the company's websites. I also made use of ASP.NET forms authentication and cookie handling. Now, any change in single sign-on logic is achieved in one place and reflected on all websites.

Multi-lingual RSS aggregator

Created 'InstantNews', a service to gather and distribute news from RSS feeds directly to users’ e-mail addresses. This service was composed by: a multi-lingual (english/french/portuguese) C# ASP.NET Web Forms portal where users could register, login and add RSS feeds; a C#.NET Win Forms desktop application to process all feeds and to send updates by e-mail to users; and data storage provided by an Oracle database.

InstantNews user account page
'InstantNews' user account page
'InstantNews' system diagram and desktop application

Back in the day

You can find below a sample of my first projects on the web using HTML, CSS, JavaScript, PHP and MySQL.

Online community

Administered a sports community online. Built a website to support events, forums, news, etc. Used PHP and MySQL as back-end technology.

#FCP home page
#FCP home page
#FCP Football Manager microsite
#FCP Football Manager microsite

How it all started ... back in the day

It all started many million lines of code ago. After some gaming on consoles such as Atari 2600, Amstrad Sinclair ZX Spectrum +2, Sega Master System, Commodore Amiga 500, (list goes on and on...), my coding days began with a Thomson TO8 and the fabulous magazine Hedbogiciel!

This magazine had endless listings of games' source code, which I spent hours studying and then typing into my computer to run. Suddenly, I was in control, I could modify and add anything to games!

An Hebdogiciel cover and listing samples from Abandonware Magazines: Hebdogiciel

The coding adventures proceeded with more languages: BASIC, PASCAL, C, C++, Assembly, Batch, Visual Basic, Java, Smalltalk, Prolog, ML, Lisp, SQL, T-SQL, UML and many operating systems: MS-DOS, Windows, Unix, Linux (Debian, Red Hat, Slackware, SuSE, Mint), Mac OS.

Then came the web

...and more to learn! Getting an e-mail address was an achievement! From there to get my hands into WWW related technologies was a very small step: IRC, Unix shells, Eggdrop development, Tcl scripts, HTML, CSS, SASS, JScript, Javascript, jQuery, Node.js, PHP, MySQL, ASP, VBScript, ASP.NET, C#, XPath, SQL Server, Oracle.

WWW related technologies learnt
WWW related technologies learnt

And now... I work mostly in web development

The internet and browsing devices are constantly changing, there is always something new to discover or a new problem to solve, it is challenging and fun.

I like that.