I compiled my first program in GW-BASIC when I was ten. I subsequently developed my passion for software into a career, studying for a BSc IT (Hons) degree at the University of Malta, an MSc Computer Science at the University of Edinburgh, and working for over six years as a C# and .NET developer in full-time professional roles, mostly in senior and tech lead positions. I am highly motivated with a strong work ethic and an outstanding track record of excellence:
- graduated at the top of my class in both my degrees
- co-authored three published papers and a patent
- successfully brought various projects to fruition as tech lead
- won multiple programming competitions (mostly algorithmic)
- regularly contribute online using my “Douglas” alias
I enjoy undertaking challenging roles that require a level of intellectual prowess and technical proficiency, including the opportunity to work on novel and cutting-edge products. I aspire to assume roles that involve a degree of responsibility and participation in the project leadership. I would also be keen to learn and assimilate new technologies as they emerge. My dedication and determination to excel have been regularly commended by my supervisors, who often entrusted me to assume self-direction in the execution of my projects. The CTO from one of my previous employments recommends me as having “exceptional coding and problem-solving skills”, with “a passion and enthusiasm for technology that is difficult to find”.
My academic specialization is parallelism, distributed computing, and high-performance computing. My industry experience has been varied, spanning development on educational tools, online services, document management, email archiving, financial applications, cloud-based reporting, and (most recently) sports betting.
Senior Software Developer @ Spreadex
I was a senior software developer with the sports betting platform team at Spreadex (St Albans, United Kingdom) from June 2016 to December 2017 (1 year 6 months). Under the system’s microservices architecture, I used: Redis, RabbitMQ, WCF, and Oracle on the back-end; ASP.NET Web API, WebSocket, Angular, and TypeScript on the front-end; plus Selenium and TFS.
I served as the project lead on three projects (each comprising 1–3 person months) for introducing new business features. In this role, I liaised with the business managers to: refine and concretize the specification; plan and schedule the work involved; lead the development team in the implementation; write up the high-level documentation and deliver presentations on the new behaviour; collaborate with business for testing; incorporate their feedback; and oversee the deployment to production.
I contributed as a full-stack team member on several other projects and technical improvements. Per the team’s agile continuous-delivery workflow, I typically delivered multiple releases to production per week, with the team working on multiple features at a time using branching. I streamlined and optimized the high-performance messaging system, built on Redis and WebSocket, which drove our website, using compiled lambda expressions to selectively serialize properties. I championed the pervasive use of asynchronous programming across our services to alleviate thread pool starvation. I introduced dynamic batching of operations (especially database updates) to improve throughput by increasing granularity during times of heavy load.
I resigned amicably due to my decision to leave the UK because of Brexit.
Senior Software Developer @ Ascent Software
I was a senior software developer with Ascent Software (Luqa, Malta) from April 2014 to January 2016 (1 year 9 months). I was a senior member of two product development teams for financial applications, and the tech lead for a cloud-based reporting solution. I designed system architectures, implemented core components, coached junior members, and liaised with partners and clients. I used SQL Server, Entity Framework, TPL, asynchrony, WPF, WinForms, ASP.NET Web API, TeamCity, Git, and SVN, and participated in the agile development process.
I worked on the Trident suite, a turnkey cash management system for pooled funds, for around ten months. I developed most of the database schema and business logic for bookkeeping and third-party payments, two new major modules released during my time. For the database, I championed the use of table inheritance (TPT) for structure, inline table-valued functions and indexed views for performance, and integrity-checking indexed views for efficient cross-table integrity constraints. I optimized the performance of some of the most taxing queries by multiple orders of magnitude, bringing their execution time down from minutes to sub-second. I improved the responsiveness of the desktop application by introducing asynchrony with the async and await keywords. I wrote T4 templates to automatically generate C# classes from static lookup tables in the database, eliminating hundreds of lines of manually maintained code in the spirit of the DRY principle.
I was the technical lead of a four-person team working on a cloud-based SaaS reporting solution for eight months, re-architecting the inherited system to improve its maintainability, performance, and stability. I reduced the size of the codebase for the data access layer by over 50%, replacing its reliance on ADO.NET and stored procedures by LINQ and Entity Framework. I put forth a redesign of the system’s security mechanisms, proposing transparent row-level security in the database based on auto-generated updatable views, and an automated infrastructure for partitioning tenants into separate databases for better isolation and scalability.
I was consulted by other teams for my expertise in parallelism and SQL query optimization. I voluntarily delivered training sessions to colleagues company-wide on TPL (offering insights on the inner workings of its work-stealing task scheduler), asynchronous programming (explaining how it alleviates thread blocking), and the new features of C# 6.0 upon its release.
I resigned amicably, intending to dedicate a few months to personal programming projects (including my GitHub library and my blog), and then relocate to the UK. I had informed the company of my plans more than five months in advance. After the end of my employment, I continued to provide handover sessions to my new replacement on a casual basis in January 2016.
Software Developer @ GFI Software
I was a software developer with GFI Software (San Ġwann, Malta) from May 2011 to August 2012 (1 year 3 months). I was a member of the product engineering team for GFI MailArchiver, an email archiving solution for small- to medium-sized businesses, used by thousands of customers worldwide. I used WPF, WCF, TPL, Add-in Express, and SVN, and participated in the Scrum development process.
I contributed several modules for upcoming releases of the product:
- I studied the IMAP standard (RFC 3501) and custom-built an IMAP client to download emails from Microsoft Exchange and Gmail.
- I lent my expertise in parallelism to assist with the development of an IMAP server, which we stress-tested to scale to thousands of concurrent users.
- I designed and implemented the GFI MailArchiver Outlook Addon, which permitted users to archive emails and files to our server. I integrated with Microsoft Outlook using Add-in Express. Through this component, I introduced the team to WCF as an SOA-enabling technology.
- I developed a WPF library to visually represent email communication patterns between users, as appearing in the Communications Flow Report (see sample report) of the MailInsights tool. I spontaneously came up with the custom-designed elliptical-layout algorithm, and it ended up being preferred by the product owner over off-the-shelf visualisation packages.
- I implemented a WPF tool that permitted developers to view, filter, and search the company’s custom log files. I optimized this desktop application for high performance on large datasets, employing asynchrony and multithreading (on background threads) to load, parse, and filter thousands of rows per second from multiple live log files.
I resigned amicably to pursue my full-time Master’s in Edinburgh, having informed the company of my intentions before commencing my employment.
Software Developer @ Atlas Insurance
My first permanent role was as a software developer at Atlas Insurance (Ta’ Xbiex, Malta) from April 2009 to April 2011 (2 years).
I was the lead developer of the document management system, an ambitious two-year company-wide project that empowered the company’s transition to a paperless office. I designed its system architecture and implemented most of its components across all tiers. I used WPF, WCF, SQL Server, LINQ to SQL, Add-in Express, and evolutionary prototyping.
I was involved by my supervisors in the full systems development life cycle from the outset, regularly meeting with the business managers (from the other departments) to evaluate their workflows and needs, delivering demonstrations and supporting the business users in learning how to use the system, and continually improving it based on their feedback and emerging requirements. I championed evolutionary prototyping as the development process, an approach that was enthusiastically received by the business users. I was officially promoted to project leader (under my managers’ supervision) following the success of the system’s deployment in several departments.
I was also the core developer of the back-end services for online motor insurance renewals, a four-month project that served as the company’s first online service developed entirely in-house (see Times of Malta article). I wrote a reusable module for integrating with the third-party payment gateway to process card payments.
I resigned amicably, following the completion of my main project, to pursue new opportunities in product engineering, having given the company more than a year’s advance notice.
Professional Experience (short-term)
Teaching Assistant @ University of Malta
I was a teaching assistant on a casual basis with the Department of Computer Science, University of Malta (Msida), from October 2013 to January 2014 (3 months). I delivered example sessions and tutorials for “Mathematics of Discrete Structures” (CPS1002) to a class of 89 first-year undergraduate students.
Research Support Officer @ University of Malta
I was a research support officer on a part-time basis with the University of Malta (Msida) in October–November 2013 (5 weeks). I prototyped a framework for a legal contract analysis support system, which incorporated a three-tier service-oriented architecture and Microsoft Word integration.
Research Intern @ Microsoft Research
I interned with Microsoft Research India (Bangalore) in July–October 2008 (16 weeks). I developed a software prototype that assists teachers in using a computer plus projector for whole-classroom instruction, and evolved it based on the team’s observations and the teachers’ feedback following real-life deployments. I created a webpage to describe our project, “Computers for Whole-Classroom Instruction in Developing Region Schools”.
MSc Computer Science @ University of Edinburgh
I studied for a Master of Science in Computer Science postgraduate degree at the University of Edinburgh in 2012–2013. My specialist area was Computer Systems, Software Engineering & High-Performance Computing. This was a taught full-time 12-month degree covering theoretical and practical aspects, intended to prepare students both for Ph.D. study and for careers in the software industry. I was awarded a STEPS Scholarship from Malta as the top-ranking applicant in the ICT Priority Area for the 8th Call.
My degree consisted of eight selected taught courses, all appertaining to my specialist area, and three mandatory research-oriented courses. All courses were SCQF Level 11 (Master’s degree level).
- INFR11011: Advanced Databases
- INFR11022: Distributed Systems
- INFR11023: Parallel Programming Languages and Systems
- INFR11024: Parallel Architectures
- INFR11028: Design and Analysis of Parallel Algorithms
- INFR11032: Compiler Optimisation
- INFR11088: Extreme Computing
- PGPH11077: Threaded Programming
- INFR11034: Informatics Research Review
- INFR11071: Informatics Research Proposal
- INFR11077: MSc Dissertation (Informatics)
My MSc Project was titled “Scheduling Task-Parallel Programs in a Multiprogram Workload” (see dissertation). I investigated and devised techniques for optimizing the performance of parallel programs running concurrently on a manycore machine. Building on the TPL task infrastructure of the .NET Framework, I developed a novel extension to the work-stealing task-scheduling algorithm for handling multiprogram workloads. Our scheduler infers each parallel program’s respective scalability, and partitions the machine’s processor cores among the said programs accordingly. Using a 64-core machine, I experimentally demonstrated that, for low- to moderate-scalability programs, our multiprogram scheduler can achieve modest improvements over mainstream thread and task schedulers. Technical readers will likely be most interested in the “Parallel Abstractions” section, the “Skeleton Designs” chapter (which includes C# and OOP discussions), and the “Scheduler Designs” chapter (which presents our task-scheduling algorithm).
I graduated with Distinction in November 2013; my overall grade average was 91%. During the graduation ceremony, I was awarded the 2013 Informatics Prize for MSc Computer Science, for obtaining the highest overall mark from the graduating class (cohort: 64). For a summary of my academic experience during this degree, refer to my article, “Going Parallel in Edinburgh”.
BSc IT (Hons) @ University of Malta
I studied for a Bachelor of Science in Information Technology (Honours) at the University of Malta in 2004–2008. The degree was a taught full-time four-year programme. I specialized in the Computer Science stream, which included an Artificial Intelligence component.
My Final Year Project was titled “Parallel Processing over a Peer-to-Peer Network” (see six-page paper). I designed and prototyped a parallel processing framework that distributes user-defined tasks over a peer-to-peer network. With a utilitarian vision of making supercomputing power available to non-specialist developers, I sought to develop a self-optimizing framework that could transparently deploy any submitted tasks onto the mesh of participants whilst ensuring fault tolerance. The prototype was implemented using the .NET Framework, making extensive use of multithreading and WCF Peer Channel.
I graduated with First-Class Honours in December 2008. My weighted overall grade average across the four years was 90%, achieving 95% in my FYP. I was selected by the Faculty of ICT as the “most meritorious student” within the course group, to be ceremoniously robed during the graduation ceremony. I was also one of the top three students to receive the Dean’s List Award for “outstanding performance” during the final academic year of my degree (being the first time such awards were held).
Matriculation and Secondary Education Certificate
The MATSEC Examinations Board is the Maltese authority responsible for setting and administering examinations at levels comparable to the GCSE and GCE in the UK.
I was awarded the Matriculation Certificate with overall grade A in 2004. My Advanced Level subjects were Pure Mathematics and Physics; my Intermediate Level subjects were Systems of Knowledge, English, Philosophy, and Computing. I was formally congratulated by the MATSEC Board for being the only candidate from the 2004 examinations session to pass all six subjects with Grade A. (The session cohort was 2,233 candidates.)
I was awarded an Advanced Level Certificate for Accounting as an individual subject in 2003.
I was awarded the Secondary Education Certificate in 2002. My Ordinary Level subjects were Maltese, Religious Knowledge, English Language, English Literature, Mathematics, Physics, French, Accounting, Computer Studies, and Chemistry. I was formally congratulated by the MATSEC Board for passing all ten subjects with Grade 1 (the highest).
I work on personal projects and other engagements in my spare time and occasional sabbaticals. I use “Douglas Williams” as alias for most of my online contributions.
I contribute on Stack Overflow as Douglas, mainly answering questions under the C# and .NET tags, having gained a reputation of over 39,000 so far (currently the second-highest from Malta). Globally, I am the 204th user to receive the C# gold badge; 240th for .NET silver; and 21st for TPL bronze (see rankings).
I maintain the DogmaMix.Core project on GitHub as a library providing additional general-purpose functionality, utility classes, and extension methods for the .NET Framework. This project, XML-documented and unit-tested, is intended to be of production-grade quality.
I occasionally publish technical articles on .NET Framework topics to my personal blog. I custom-built the rudimentary CMS that hosts the blog as an exercise in ASP.NET MVC 5 and responsive web design.
I developed Maltese Diacritics, an online tool for automatically adding diacritics to Maltese texts. The functionality is exposed as a public WCF service, and consumed through jQuery AJAX calls from the browser. The tool includes a Firefox add-on that can diacritize Maltese texts in-place on any webpage. Earlier, I developed the MIME Headers Decoder, an online decoder for RFC 2047, using the same technique of consuming a WCF service through AJAX.
ICTSA Programming Competition
I won the industry category of the ICTSA Programming Competition: in the 2010 Edition as the sole member of the Atlas team (see Times of Malta article); in the 2011 Edition as the team leader of the four-member Atlas team (see press release); and in the 2012 Edition as the team leader of the two-member GFI team (see Times of Malta article).
I contributed to the organization of the 2013 and 2014 Editions as a member of the judging panel. I implemented the scoring and visualization tools, including an interactive HTML5 multithreaded video player for our custom video format, and authored the Q&A.
Microsoft Imagine Cup
I participated in the Software Design competition of the Microsoft Imagine Cup 2007 as a member of the team Kablujen Digerati. Our system, KIKI, was designed as a platform for deploying educational software through an extensible architecture, providing inherent support for MultiPoint functionality, inter-computer communication, user identification, and progress tracking. Retrospectively, the system could be considered an early form of PaaS for hosted application developers and SaaS for schools.
We succeeded in winning the University of Malta internal contest, the Maltese national contest, and East Mediterranean regional contest of the competition, thereby proceeding to the Worldwide Finals in Seoul, South Korea (see Times of Malta article and special report). We were selected as the winners of the MultiPoint competition, organised by Microsoft Research India, and awarded a 16-week internship with Microsoft in Bangalore (as described above).
I held the position of executive secretary within the student company “Mercury” in the 2002–2003 edition of the Young Enterprise experience. Our product was an energy-efficient LED keychain-sized torch. We won first place in the “Best Use of Technology” award and third place in the “Best Product” award in the national final competition.
Patents and Publications
- Saurabh Kumar Panjwani, Kentaro Toyama, Karl Fenech, Luana Micallef, and Natalie Linnell, “Method of Creating a Presentation in Real Time”. US Patent № 2011/0029877. Published 3 February 2011.
- Saurabh Panjwani, Luana Micallef, Karl Fenech, and Kentaro Toyama, “Effects of integrating digital visual materials with textbook scans in the classroom”, International Journal of Education and Development using ICT (IJEDICT), 5(3), September 2009.
- Karl Fenech and Kevin Vella, “Parallel Processing over a Peer-to-Peer Network”, Proceedings of the 1st Workshop in ICT (WICT 2008), Malta, November 2008. Faculty of ICT, University of Malta. (My favourite paper to date.)
- Abigail Cauchi, Jennifer Fenech, Karl Fenech, and Luana Micallef, “KIKI – A Key to the Integration of Knowledge and Innovation”, Proceedings of the 5th Computer Science Annual Workshop (CSAW 2007), pp. 130–139, Malta, November 2007. Departments of Computer Science and Artificial Intelligence, University of Malta. (Authors contributed equally; names ordered alphabetically.)
I have a driving licence for category B (motor vehicles), issued in 2005 by the Malta Transport Authority and valid throughout the EU.
I enjoy embarking on adventures and exploring new cultures. I lived for 1½ years in St Albans (near London) whilst working for Spreadex, and in Edinburgh for a year whilst studying for my Master’s. I visited 15 European countries during a 15-day road trip with a friend in 2010, and travelled solo around India for 19 days in 2008, making new friends at the places where I stayed.
I participate in countryside walks organized by the Malta Youth Ramblers, aimed to encourage a healthy lifestyle and an appreciation of nature. I was a member of the Fgura Scout Group in 1995–2003, winning the Best Cub award in 1995, and later serving as the assistant patrol leader of the lion patrol. I play chess, having been a member of the Malta Chess Federation in 1999–2002. I competed in chess tournaments, winning the Best U/14 award of the Junior Championship 1999 and the overall award for the Students New Year Tournament 2000 (winning all nine games played). Today, I occasionally play tennis, table tennis, squash, and archery.