Darren Duncan
Victoria, BC, Canada - darren@darrenduncan.net - GitHub @muldis
Versatile software developer who can support your ideas from vision to reality. Polyglot, software archaeologist, and detail-oriented communicator, specializing in database applications, web services, and e-commerce.
Domain Skills
Confident supporting any project step, from business analysis, architecture, integration, design, coding, scaling, security, testing, technical writing, and delivery.
- Software development 28+ years.
- Enterprise applications 7+ years.
- SaaS API development, integration, and testing 7+ years.
- Web development 20+ years.
- Healthcare 2+ years.
- REST APIs / Swagger, SOA, Enterprise Application Integration, MVC, ETL, multi-tier, OLTP.
Technology Skills
- Java 6+ years, with Spring Framework/Boot, Hibernate, JUnit, Tomcat, Selenium.
- .NET/C#/VB (Core/Framework) 2+ years, with Entity Framework.
- Perl 8+ years, with Moose, Dancer, DBI, DBIx::Class, Starman.
- PHP 3+ years, with Laravel, Drupal, PHPUnit, Blade.
- JavaScript/TypeScript 2+ years, with Node.js, React, jQuery, Nest, Backbone; learning Vue and Angular.
- Databases/SQL 30+ years, SQL/PL 15+ years, with Aurora, PostgreSQL, MySQL, MS SQL Server, Oracle, SQLite, and more.
- Regular expressions 10+ years.
- HTML 27+ years, with CSS; also JSON, XML, YAML, Markdown.
- Shell scripts, Python, Ruby, Raku, CQL/ELM, FHIR, C++, C, FoxPro, Pascal, PowerShell, UCUM, Unicode, XSLT, and more.
- Git 16+ years, Maven 4+ years, Gradle 1+ years, Jenkins 3+ years, Docker 3+ years, GitHub 15+ years, Jira 7+ years, Checkstyle 4+ years, Subversion 7+ years, cron, rsync, Snyk, Sonar.
- AWS 5+ years, Azure 1+ years, Heroku.
- Apache, IIS, NGINX, Active MQ, Redis, Asana, Confluence, Crystal Reports, IntelliJ IDEA, MS Visual Studio, Postman.
Leadership Skills
Team player, mentor, and leader. Passionate to find right solutions to satisfy requirements.
- Senior Staff / Volunteer 17+ years running a community convention with 2000+ annual attendees; up to 8 volunteer direct reports some years.
- Ran programming training classes of 10-20 students 2+ years.
- Mentored programmers 10+ years.
- Agile 7+ years.
Work Experience
Contributed to success of startups and larger organizations. Open Source creator (Muldis Object Notation and Muldis Data Language) and contributor.
Benevity - Senior Software Developer (Apr 2018 - Jan 2023, Victoria, BC)
- Developed flagship financial SaaS, used by 650+ client companies and 20 million+ users, that processed over 2.5 billion dollars a year.
- Satisfied very demanding standards of big-name clients such as Apple/Microsoft/Google/Amazon, helping Benevity's 98% client retention rate.
- 4 years Java "Platform" API Service.
- 1 year PHP "Spark" Web Application which consumed that API.
- Launched (with a team) new headline Platform+Spark feature "peer matching", so a client employee could automatically match donations to their favoured cause made by their coworkers.
- Took ownership for paying tech debt in Platform, making it more secure and easier to maintain. Featured updating to latest versions of third-party deps, refactoring usage of first-party libs to reduce coupling, reworking Maven/Gradle build systems.
- Took ownership of Java coding standards enforcement using the Checkstyle tool, by customizing Benevity Checkstyle config with updated rule sets, including hand-crafted custom rules, integrating with Maven/Gradle build systems and IntelliJ IDE, customizing reusable IntelliJ code formatter config to complement it, updating Platform code for conformity, writing docs and giving support for their use. This led to Platform being much easier to develop for, made regular manual code reviews easier as they could focus on logic and not style issues.
- Performed code reviews and provided other assistance to my peers.
- Fixed volunteer report scaling, so larger results took seconds rather than failing or taking minutes; this helped Benevity retain some large clients.
- Evaluated (in a team of 3) a major Spark migration from legacy PHP Drupal framework to modern Laravel framework.
- Upgraded Spark tests to newer PHPUnit, improving security.
- Documented Versaic Grants dev setup so new hires could onboard quickly; other Versaic Grants work.
- Lead ADR (Architectural Decision Record) process to pick a DBMS. Assisted an ADR to pick app languages.
- Consulted for analytics team to help with PostgreSQL upgrades and performance improvements.
- Skills: Java, Spring/Boot, Hibernate, PHP, Drupal, Laravel, .NET/C#, JavaScript, Node.js, SQL, Aurora MySQL, MS SQL Server, PostgreSQL, AWS, JUnit, PHPUnit, Tomcat, Maven, Gradle, Docker, Jenkins, Checkstyle, Selenium, PowerShell, Active MQ, IntelliJ IDEA, MS Visual Studio, Git, Jira, Confluence, Asana, Snyk, Sonar, JSON, XML, HTML, CSS, Shell Scripting, Regular Expressions, LAMP, Risk Management, Electronic Payments, Agile Methodologies, REST, SOA, data modelling, ETL.
HarmonIQ Health Systems Corporation - Independent Contractor (Feb 2015 - Mar 2018, Orem, UT)
- Regular contributions to HL7 Clinical Quality Language (CQL) standard and ELM, open source reference implementation, example CQL libraries/measures, testing, and user documentation, FHIR and QDM.
- Main developer for National Pollen Database (NPDB), where collectors host accurate pollen/mold data so physicians/etc can better care for people suffering asthma etc. Added major features, tech specs, data models, tracking allergen data provenance, importing multiple formats (MS Excel, HTML, PDFs, etc) with various methods (email via IMAP APIs, web servers, file system, etc) extracting their data (species, count, date, location, etc). Automated data import task / ETL, REST API for querying database.
- Added feature to Asthma Ally.
- Made several enhancements and bug fixes to Dataphor, an open source database-centric application development platform.
- Contributed to large medical data migration project, featuring documentation and implementation of HL7 Message output.
- Learned medical industry standards and proper handling of Protected Health Information (PHI). Certifications: HIPAA Awareness, HIPAA Security.
- Skills: .NET/C#/VB, Java, SQL, MS Visual Studio, Azure SQL Database, MS SQL Server, IntelliJ IDEA, Postman, Azure, Oracle Database, PostgreSQL, MS SQL Server Management Studio, Azure Data Studio, Oracle SQLDeveloper, HL7 Messages, CQL and ELM, UCUM, Entity Framework, S22.Imap, Excel Data Reader, HTML Agility Pack, Visual Basic for Applications, Gradle, Maven, TestNG, JSON, XML, Git, Subversion, Jira, Confluence, Dataphor/D4, CQL Ruler/Runner, Windows Server on AWS, Shell Scripting, Regular Expressions, Agile Methodologies, SOA, data modelling, ETL.
ChargeSmart / VeriFone - Senior Software Design Engineer (Feb 2011 - Oct 2014, San Francisco, CA)
- Primary maintainer 3+ years of chargesmart.com, a bill payment website with thousands of daily transactions and a million-plus users. Third core development team member of 8+ for prior 6 months until the 2 prior developers moved to new projects. Design, coding, documentation, reviews, testing, reporting.
- Created new features, enhancements, tech specs, and data models, including payment processor migration, AMEX support, new fee schedules for promotions, admin reports, conversion analytics, auditing, backup procedures, related partner sites, and more.
- App consumed third party APIs, for credit card processing, bank settlement, risk analysis, analytics.
- Learned payments industry and card processing including risk management.
- Primary release manager of chargesmart.com for 1+ year, performing production releases, including QA and review of code commits, code releases, schema changes, and release announcements.
- Designed and implemented PostgreSQL database, tech specs and data models, for payment site built over VeriFone's SAIL micro-merchant service.
- Mentored co-workers in various aspects of chargesmart.com and related projects, providing initial training, and writing process and procedure documentation.
- Skills: Perl, SQL, MySQL, PostgreSQL, Apache+mod_perl, Starman, NGINX, Moose, Dancer, DBI, DBIx::Class, JavaScript, jQuery, Backbone, JSON, XML, HTML, CSS, cron, rsync, Trac, Subversion, CentOS, Debian, LAMP, Risk Management, Electronic Payments, Shell Scripting, Financial Databases, Regular Expressions, Agile Methodologies, REST, data modelling, ETL.
Traveller's Inn - Web Developer (Mar 2006 - Jul 2009, Victoria, BC)
- Primary technical architect and developer for multiple complex web applications, reporting directly to Traveller's Inn's owner or webmaster. Collaborated with webmaster, visual design, and other staff.
- Main project HotelsMotels.com, directory of businesses of interest to travellers in 30K+ global locations. For listed hotels, visitors can check room availability directly from site using affiliate network, then book available rooms. Rewrote HotelsMotels.com from static site to dynamic database-backed site. Added full searching. Added admin function for non-technical staff to manage it. Added features so visitors could submit businesses to directory, or review them, and staff can approve them. Project had up-front ETL from legacy directory, and recurring ETL from affiliate network.
- Second feature project BidOnStay.com, let visitors book hotel rooms at Traveller's Inn, any available hotel or time period, by "bidding" with a desired price per night; if over a hidden threshold, they can book room for that price. Created BidOnStay.com as new project. BoS talked to affiliate network directly, being a front, had no local database.
- Created new project VictoriaAttractions.com.
- Worked on other projects, some with data mining or ETL.
- Skills: Perl, PHP, SQL, MySQL, HTML, CSS, MVC, Unicode, Linux, Apache, Plesk, LAMP, Risk Management, Electronic Payments, Shell Scripting, Regular Expressions, data modelling, ETL.
Anthony Macauley Associates (AMA) - Application Developer (Sep 2000 - May 2003, Victoria, BC)
- Created new major product GOL/GTools; 1 of 4 initial/core team members of 20+; multi-tier, PHP back-end service API, ASP web app front-end consumer.
- Maintained AMA's flagship product GX (a government-level financial management system).
- Primary maintainer of AMA's QA/ticket-management system.
- Wrote programmer/user documentation. Performed system testing and QA procedures. Learned government financial processes.
- Skills: SQL, Oracle, FoxPro 5/6, Crystal Reports, PHP, JavaScript (server+client), MVC, XML, XSLT, HTML, CSS, .NET/C#, Financial Databases, MS Source Safe.
Government of BC - BC Public Service - British Columbia Buildings Corporation - Intranet Developer (Aug - Dec 1999, Victoria, BC)
- Deployed/maintained corporate Intranet.
- Rewrote message-board web application.
- Troubleshooting and user assistance.
- Skills: IIS, ASP/VBScript, Perl, HTML, CSS, SQL, MS SQL Server.
Open Source Developer (2000 - Present, Global)
- Muldis Object Notation (MUON) - Source code and data interchange format. General alternative for JSON, YAML, XML, SQL, etc; for service/database APIs to express queries, results, and portable business data models; for persistence and debugging; for config and log files. Full spec at https://github.com/muldis/Muldis_Object_Notation.
- Muldis Data Language (MDL) - Relational database application programming language. General portable type system for business data models shared by databases, applications, and APIs; general alternative for SQL/PL and ORMs with user-defined types, schema, queries, and routines; mitigate database vendor lock-in; translate SQL/PL. Outdated spec at https://github.com/muldis/Muldis_Data_Language.
- Muldis Reference Data Tools - Reference implementations of Muldis Data Language, Muldis Object Notation, and related tools. In-progress versions for Java and .NET at https://github.com/muldis; other languages pending.
- Set::Relation - A relation data type. Perl-native way for an application to organize and process data using the relational model, without using a separate DBMS. Early proof of concept for Muldis Data Language. Functional now, on CPAN at https://metacpan.org/dist/Set-Relation.
- Older (2000 - 2003) Perl modules for use with web applications. Functional now, on CPAN at https://metacpan.org/author/DUNCAND.
- Newer projects at https://github.com/muldis/Muldis_Skill_Demos to show I can work with more tech.
- Long-term contributor (2000 - Present) to the global community of the Perl and Raku programming languages, and other projects.
- Skills: Java, .NET/C#, Perl, TypeScript/JavaScript, Node.js, Nest, Express, React, JSON, REST APIs / Swagger, Raku, Python, Ruby, PHP, IntelliJ IDEA, MS Visual Studio, Git, GitHub, Subversion.
Tsukino-Con - Senior Staff / Volunteer (2006 - Present, Victoria, BC)
- Part of senior volunteer staff, organize well-loved community-oriented pop-culture convention annually with 2000 attendees a year.
- Managed up to 8 volunteers for 6 years, provided training, organized schedules.
- Assisted presenters with technical or non-technical needs such as computers and projectors.
- Managed attendance tracking for 100 talks at each event.
- Liaison with Victoria Nikkei Cultural Society, organizing contributed presentations, table swaps, and volunteering with their annual Japanese-Canadian cultural fair.
- Liaison with local comic conventions, organizations, guests, organizing table swaps, volunteering at their events.
Camosun College - Programming Tutor/Trainer (1998 - 2001, Victoria, BC)
- Tutored/trained groups (of 10-20) and individuals of first year students in programming Perl and assisting them in understanding various lab assignments.
Software Developer (1996 - Present, Global)
- Defense In Depth (May - Jul 2023, Toronto, ON): Add features to database web application. Skills: PHP, MySQL, Laravel, Eloquent, Blade.
- KLIQ Mobile (Sep 2015 - Aug 2016, Birmingham, MI): Add features to database and video streaming web application. Server-side Perl REST API for user accounts, contacts, shared events, consumed by Android/iOS apps for media sharing; used Redis queue to manage background workers. Setup, test NGINX-based Media Streaming Server. Skills: Perl, NGINX, nginx-rtmp-module, MySQL, Redis, Ubuntu, Starman, Dancer, Moose, DBI, DBIx::Class, Perl modules that call APIs for email, social networks, image processing.
- Various (2003 - 2006): PHP and MySQL.
- Volunteer (2003, Global): Organizer for online pop culture fan work showcase/competition, made new website where public could create accounts, submit creative works (stories, art, etc), vote on competing works, and privileged moderators screen submissions. I gathered and organized volunteer submission moderators for the competition. Others ran event manually 1995-2002; I automated it, so it scaled more.
- Government of Canada - Pacific Forestry Centre (Aug 1998, Victoria, BC): Unpaid work experience; wrote Perl scripts to convert data on forest pests from Windows 3.1 CD to format used by new web-based program.
- Government of Canada - Institute of Ocean Sciences (Summer 1996, Victoria, BC): Unpaid work experience; wrote Pascal program to convert river temperature sensor data between formats; created web site for river temperature project.
Education
- Camosun College - Computer Systems Technology Diploma (Oct 1997 - Jun 2001, Victoria, BC).
- The Reger Group - "Independent Employment: An Introduction to Entrepreneurship" (Jul 2003, Victoria, BC).