Dan MacDonald, Java Developer in Victoria, BC, Canada
Dan MacDonald

Java Developer in Victoria, BC, Canada

Member since July 21, 2016
Dan is a highly skilled and self-motivated consultant. He loves to learn new technologies, programming languages, and approaches. He enjoys challenges and solving problems and works well alone or as part of a team. He can communicate well, and writes clear documentation. His focus is getting the job done carefully, efficiently, and cost-effectively. He has extensive experience with SQL, database design, data modeling, and IoT projects.
Dan is now available for hire




Victoria, BC, Canada



Preferred Environment

Unix, Linux, Oracle, MySQL

The most amazing...

...project I've contributed to is a prototype system on a very limited budget for early situational awareness during a major regional disaster.


  • Systems Analyst

    2019 - PRESENT
    T4BI, Inc.
    • Provided support and bug fixes for a large health insurance system that was recently developed. The system uses a series of Java front-end subsystems corresponding to business areas. All database logic is coded in PL/SQL packages within an Oracle database. This is a very large and complex system with a lot of business rules and logic.
    • Supported teams which are currently part of the overall business process (e.g., Sales, Finance, Enrollment). I am part of the Sales support team. All code goes through rigorous code reviews and follows a careful deployment and promotion plan.
    Technologies: Oracle, PL/SQL, Java
  • IoT Programmer

    2019 - 2019
    Toptal Clients
    • Developed programs for an Arduino Mega and an Nvidia Jetson Tx2 to communicate back and forth. The Arduino program read buttons and limit switches as well as controlled LEDs and stepper motors. The Jetson Tx2 captured and analyzed camera images and sent information to the Arduino. The Arduino sent "process state" information back to the Jetson Tx2, which then displayed images on an attached HDMI screen.
    • Collaborated with the client to flesh out requirements, determine optimal processing paths, and debug issues on the actual hardware installation.
    Technologies: Arduino, Nvidia Jetson Tx2, IoT, Hardware
  • Software Developer

    2017 - 2019
    T4BI, Inc.
    • Worked on a team developing RESTful web services in Java to support a client's new redevelopment effort, with a very large Oracle 12c database back end.
    • Enhanced and maintained two legacy applications (one with JSP code, and the other using Oracle Forms and Reports). There was some design work and requirements gathering involved, as well as some data modeling and PL/SQL work. All of these projects used an agile scrum-based approach.
    • Developed Java web services with Java 8 and Spring, using Lombok automation to provide getters and setters and deployed on Kubernetes.
    • Maintained web service documentation in Apiary and Confluence. Task scheduling was done in Jira.
    Technologies: RESTful Web Services, Java, JSP, Oracle Forms, Oracle Reports, PL/SQL
  • Oracle Specialist

    2016 - 2016
    ITI Technologies
    • Configured, troubleshot, and tested an Oracle Fusion Middleware setup.
    • Ported a custom-built reporting solution from 10g to 12.2 with Oracle Reports, mod_plsql, and Pro*C components.
    • Investigated and ensured consistency in database objects and grants across development, testing, and production environments.
    • Assisted in recompiling and troubleshooting Oracle Forms and Reports modules.
    • Investigated and developed documentation on configuration steps. Documented troubleshooting steps to assist support personnel.
    Technologies: SQL, PL/SQL, Oracle Forms, Oracle Reports, Oracle Fusion Middleware, Linux, Oracle Pro*C
  • Website and Application Support Specialist

    2015 - 2016
    Peninsula Yoga Society
    • Provided support and enhancements to a nonprofit website.
    • Developed reports and provided data analysis using SQL directly against their MySQL database.
    Technologies: Drupal, MySQL, SQL
  • Oracle Specialist

    2012 - 2015
    T4BI, Inc.
    • Developed PL/SQL packages for member and dependent re-instatement processing in a large medical insurance system, based on use case requirements.
    • Developed Oracle Reports as per use case requirements.
    • Coded PL/SQL packages for data validation/verification for a custom built rules engine.
    • Developed PL/SQL packages to convert six million data records into new data structures (to ultimately run within a two-hour window) according to use case requirements.
    • Investigated and documented inconsistencies in data conversion input data (for correction by another team).
    • Attended weekly status meetings via phone and/or online meeting software.
    • Participated and worked effectively and reliably as part of a large remote team, communicated well, and ensured availability during core hours.
    Technologies: SQL, PL/SQL, Linux, Use Cases
  • Lead Designer and Developer

    2011 - 2015
    EMGI Systems, Inc.
    • Developed a PC-based system with Filemaker Pro for Windows and Mac, for a situational awareness system for major/catastrophic events.
    • Designed and developed handheld "reporter" applications with a SQLite data store, in Java and Objective C, for iOS, Blackberry and Android devices to collect and send data to a PC-based analysis system.
    Technologies: Filemaker Pro, SQL, SQLite, Java, Objective-C
  • Application Development and Support

    2007 - 2012
    BC Ministry of the Environment (Provincial Government)
    • Developed enhancements and bug fixes for a number of corporate and/or business-area applications.
    • Led JAD sessions with end users to define requirements for system enhancements. Translated requirements into designs and develop enhancements and patches.
    • Investigated bugs, diagnosed issues, and developed solutions.
    • Ensured that all work and processes adhered to government and ministry standards and guidelines.
    Technologies: SQL, PL/SQL, Java, Oracle Forms, Oracle Reports, Unix, Shell scripting, Oracle Application Express (APEX)
  • Data Modeler (Contract)

    2006 - 2009
    Integrated Land Management Bureau (ILMB; Provincial Government)
    • Developed data models for business areas.
    • Created/generated scripts for object creation and data loading.
    • Worked with business areas to model their data sets for including into the corporate spatial warehouse.
    Technologies: Oracle, Oracle Designer, Oracle Data Modeler, SQL, ESRI, Oracle Spatial/Locator
  • Corporate DBA and Oracle Support (Contract)

    1996 - 2006
    BC Ministry of the Environment (Provincial Government)
    • Provided corporate database administration support across the Ministry for all their database instances, including troubleshooting, upgrades, and planning.
    • Supported application deliveries by vendors to the Ministry infrastructure. Developed guidelines and standards for application delivery.
    • Assisted and guided vendors and business areas in SQL queries, tuning, etc.
    • Participated in JADs and vendor client meetings to ensure that all solutions are reasonable and follow all standards and guidelines.
    • Troubleshot database and application issues.
    • Provided ad-hoc queries for business areas.
    Technologies: Oracle Toolset (Database, Forms & Reports, APEX, Discoverer, Designer, Spatial/Locator, SQL, PL/SQL), Java, Unix, ESRI, Scripting


  • DAISJamaica (Other amazing things)

    We developed a prototype system on a very limited budget for early situational awareness during a major regional disaster. The prototype was successfully deployed in Jamaica in 2013 but further development has stalled due to a lack of funding.

    Early situational awareness immediately following a catastrophic event such as a hurricane or an earthquake has been demonstrated to reduce casualties enormously through the correct deployment of (limited) resources in the hours immediately following an event. Our system replied on a low-technology limited infrastructure analysis tool that could be started immediately (without the need to mobilize a coordinated response center) and is fed point data reports from "community reporters" using hand held devices. This system allowed planners to develop an understanding of the scope and scale of damage within 15-30 minutes after an event.

  • Peninsula Yoga Society Website (Development)

    The Peninsula Yoga Society is a nonprofit organization dedicated to teaching Iyengar Yoga in the Saanich Peninsula area. I have been brought on board to assist with their website, and to mine their registration and member data from a MySQL database to assist them in their daily operations and planning.

  • Alberta Blue Cross (Other amazing things)

    I was part of a large team, mostly working remotely, to redevelop a large medical insurance database and move them from a series of disparate data sources (including COBOL and Excel spreadsheets) into a single integrated system based around Oracle 12c. I worked on a number of different components, including PL/SQL packages for member and dependent re-instatement, various reports, and PL/SQL packages for data validation and verification in a rules engine.

    I also worked extensively as part of the data conversion team and was tasked to write, test, and optimize PL/SQL packages that would convert source data into the new structures. I was responsible for about 6,000,000 records. I was only one of about eight enrollment streams. Once the conversion process was tested for data correctness, we had to optimize the code so that when we did our data loading during the "Go Live" event, my part of the conversion had to complete within two hours (I got it to one and a half).

    It was immensely satisfying to have participated in the Go Live event that went off without any major hitches.

  • Customer-facing System (Development)

    I was part of an agile team of developers and QA people involved in the redevelopment of a series of J2EE Spring web services to support a large automobile warranty supplier. We took a microservices approach and developed about 20 services, each with 5-10 endpoints. The data was all stored in an Oracle 12c database. We had daily scrums and two-week sprints, coordinated through Jira. All documentation was maintained in Confluence and Apiary.

  • Introductory Programming Course with Arduino (Other amazing things)

    I developed an eight-lesson course for 11-13 year old Scouts to introduce them to programming Arduino-based microprocessors. I wrote the entire lessons, put together the kits, and led the youth through the lessons. We used Adafruit Feather Huzzah (ESP8266) microprocessors and programmed in C. I wanted to introduce the kids to lower-level programming than they commonly got in their traditional school courses. The material was pretty simple, but we covered LEDs, buttons, reading and writing data to the cloud (MTQQ), temperature sensors, and analog input (photoresistor).

  • Arduino/Jetson Tx2 Project (Development)

    The details of this project are covered by a NDA, but in general the system was developed to allow two way communications between an Nvidia Jetson TX2 and an Arduino Mega Uno, to read multiple buttons and switches, and to control LEDs and stepper motors in pre-defined patterns. The Jetson Tx2 captured and processed images through a camera and that information was send to the Arduino to incorporate into its sequencing.


  • Languages

    Java, Pro*C, SQL, C, UML, C++
  • Tools

    Eclipse IDE, Oracle Reports, Oracle Forms, MySQL Workbench, Oracle Application Express (APEX), Xcode, Enterprise Architect
  • Paradigms

    Database Design, Spatial Databases, Agile
  • Platforms

    Oracle, Oracle Database, NetBeans, iOS, Linux, Oracle Application Server, MacOS, Unix, Arduino
  • Storage

    Databases, Database Modeling, Database Administration, MySQL, SQL Developer, Oracle SQL, Oracle PL/SQL, Oracle 12c, Oracle 11g, MySQL/MariaDB, Data Integration, SQLite, PostgreSQL
  • Other

    Query Optimization, Data Migration, Data Cleaning, Data Analysis, Data Modeling, Data, Oracle Spatial, Data Quality Analysis, Documentation, Oracle WebLogic Application Server, Code Generators, IoT Protocols, Sensors & Actuators, Microcontroller Programming
  • Frameworks

    Spring, Oracle ADF
  • Libraries/APIs

    jQuery, Arduino RTC


  • Bachelor of Science degree in Computer Science
    1980 - 1983
    University of Victoria - Victoria, BC, Canada

To view more profiles

Join Toptal
Share it with others