Code Craft

Software is equal parts Art, Craft, and Engineering

Resume of Lawrence P.C Dol

I have been programming since age 12 and received formal training at age 17 attending the Central Institute of Technology in New Zealand. I have since worked professionally for over 35 years in New Zealand, Australia, and the United States of America. I am now a naturalized US citizen, and my wife and children are native-born US citizens.

I take personal pride in my work, pursuing excellence while being able to make appropriate accommodations for business needs and time constraints. I am adept in all aspects of software engineering, with a proven track record of high quality craftmanship. However I prefer the technical and engineering aspects over the business side of things, because that is where my greatest strengths lie. Put simply, I am a “coding geek” constantly exploring new advances in technology, languages, and coding, and I make an ongoing effort to keep up with industry developments.

On a more personal note, I am committed, balanced, loyal, place a high value on integrity, and I enjoy learning across a broad array of interests. Although naturally introverted I am good with people and have done a lot of public speaking in my personal life as well as taking on leadership roles; I particularly enjoy moderating discussions in group settings. Although I am very accomplished in my chosen field, I endeavor to remain humble and teachable.

Technology Summary

Technology Years Knowledge
Javascript, CSS, HTML 12 Extensive
Java 20 Extensive
C 32 Extensive
Basic 6 Extensive
Assembly (Z80a) 2 Good
Bash Shell Script 27 Good
Pascal 3 Good
RPG 30 Fair
SQL 5 Fair
COBOL, Visual Basic Fair
C++, Objective-C, Swift, C# Familiar
Go, Haskell, Nice, Rust, D, Kotlin Rudimentary
DOS / Windows 33 Extensive
IBM-i 32 Extensive
QNX RTOS 12 Extensive
Linux 12 Good
Burroughs BTOS 12 Good
Data General Unix 1 Good
Cryptography & Security 24 Extensive
Communications API Design 9 Extensive
Distributed Computing 19 Extensive
Functional Programming 10 Fair
GUI Applications 17 Extensive
GUI Toolkit Design 4 Extensive
Internationalization 10 Extensive
Memory Management & Garbage Collection 17 Very Good
Messaging System Principles 22 Extensive
Multithreaded Programming 20 Extensive
Object Oriented Programming 20 Extensive
Optimization & Performance Tuning 22 Extensive
Procedural Programming 40 Extensive
Real-Time Programming 10 Extensive
Relational Database Design 7 Good
Serial Communications & Protocol Design 6 Extensive
Software API Design 15 Extensive
TCP/IP Networking, Encoding, Decoding, Parsing 26 Extensive
Virtual DOM Web UI 8 Extensive
Web Services 16 Very Good
Web Technologies & Protocols 26 Extensive

Employment History

Advanced BusinessLink Corporation - 1991 to Present

Historically a pioneer in telecommunications for IBM AS/400. Subsequently evolved to doing remote access, early B2B systems, and internet middleware for IBM-i. Now also developer of SaaS web applications running on Linux and IBM-i.

Current Position: Director of Software Engineering.

  • Oversight of all software development.
  • Mentoring software engineers.
  • Product design, input, and oversight.
  • Development procedures, standards, and tooling.
  • Authored numerous tools facilitating software development.
  • Frequently engaged for deep systems analysis and performance problems.
  • The go-to guy for the most technically difficult problems.
WebCluster Platform
  • Cutting-edge pure-Java web application platform.
  • Responsible for the concept, design, and 100% of the code until the HTTP server core was replaced with an open-source solution in 2018 to support HTTP/2, web sockets, and beyond.
  • Message oriented system for dynamic data, with safe-by-default document template substitution.
  • Fully message oriented; all services outside the messaging core are provided by independent and isolated handlers.
  • Transparent wide-area distributed messaging.
  • Reliable local and distributed message queues.
  • Set-and-forget file transfer.
  • Service-oriented message routing over HTTP with built-in JSON encoding/decoding.
  • Multicast messaging.
  • Asynchronous event notifications
  • Full native-language services.
  • This software platform was the core of several large customer-specific products.
  • This software platform now provides the host platform for all extant company products.
  • Designed and wrote a tiny, super-fast, failure resilient datastore, which now has accumulated millions of hours of error-free operation, even in the face of many sudden power loss events without a UPS.
  • Roles-based remote access system for IBM-i.
  • This system runs on the WebCluster Platform.
  • I was responsible for the middleware, API, and most of the software.
  • Involved numerous enhancements to the WebCluster Platform.
  • Implemented a flexible JNI interface library for the IBM-i.
  • Implemented third-party authentication with the IBM-i system.
  • Integrated our Java 5250 emulator for host task support.
  • Eventually assumed complete responsibility for the project during a long hiatus of development.
  • After assuming sole responsibility, I designed, wrote, and integrated a JavaScript 5250 emulator to replace the Java client in the browser.
  • After some years of neglect by management, I took the initiative to engage with the customer and, with a single support person, was able to revitalize the product, preserving a significant revenue stream, and generating significant new business as well.
  • During this time I designed and wrote an extension programming API for the 5250 emulator providing the customer with a deep ability to customize and extend the front-end client well beyond the customer’s expectations.
  • Currently integrating a cleanroom rewrite of the roles-based client application framework.
  • This software was awarded multiple patents.
Strategi Web Platform
  • World’s first native web application platform for the IBM-i.
  • Responsible for roughly 90% of the web server code (HTTP 1.1), and about 60% of the host system on IBM-i.
  • Ported our remote 5250 emulator, managed file transfer, and HSM distributed messaging host support from the ATFM QNX system.
  • Wrote a Windows client for TCP/IP connected 5250 emulation, managed file transfer, and HSM distributed messaging.
  • Wrote a Java client for TCP/IP 5250 emulation, managed file transfer, and HSM distributed messaging.
  • Responsible for sourcing and maintaining our first SSL implementation (SSLeay).
  • Designed and wrote an extensible binary object/attribute packet encoding very similar to XML (which was unknown at the time). This allowed us to create incredibly efficient, yet flexible wire protocols.
  • Fun fact: I had to be licensed by the NSA to work with the cryptographic libraries for this product.
JavaScript 5250 Emulator
  • Pure JavaScript 5250 emulation client.
  • Utilizes a vDOM engine.
  • Deep extensibility API.
  • Custom theme support.
  • Lean and fast (< 50K on the wire).
Java 5250 Emulator
  • Pure Java 5250 emulation client.
  • Extensively customizable.
  • Rules-based GUI enhancement.
  • Pattern recognition engine capable of efficiently scanning for thousands of patterns concurrently.
  • Designed and wrote a property-oriented GUI toolkit designed to inherit properties, quite similarly to CSS (which was unknown at the time).
  • A full service SaaS venue-management system, covering nearly all aspects of hotel, catering, venue operations.
  • This system runs on the WebCluster Platform.
  • I am a contributor for this project.
  • I wrote the native-language and internationalization support.
  • I wrote the SQL abstraction layer used by this product which is 100% injection-safe.
  • I designed and wrote the roles-based client application framework, used by the client app.
  • I have been extensively involved in mentoring the developers on this project.
  • Automotive parts servicing and catalog system.
  • This system runs on the WebCluster Platform.
  • I am a contributor for this project, responsible for creating web UI components for the next generation of the frontend.
  • SaaS system for receiving and managing end-user self-service appointments.
  • This system runs on the WebCluster Platform.
  • I am responsible for the Java backend, and web administration app.
  • I designed and wrote the roles-based client application framework, used by the administration app.
  • I wrote the SQL abstraction layer used by this product which is 100% injection-safe.
  • Utilizes a clever design to optimize locations for appointments and fulfillment.
  • Includes an iPad application (not written by me) for the representatives’ daily schedule and route.
SOAP Web Service Platform for IBM-i
  • Java message-mapping and SOAP web services runtime for the IBM-i.
  • Wrote a comprehensive Java GUI for mapping messages from SOAP to HSM.
  • Wrote the Java runtime for both consumer and provider web services.
  • WSDL reading and writing.
Modem Bridge (Modem to TCP/IP Multiplexor)
  • Java multiplexor appliance to manage a bank of serial-attached modems and route connections into a TCP/IP network.
  • Fully asynchronous, event-driven design.
  • Written in two weeks, start to finish, with minor bug fixes over the first three months of deployment.
  • Worked reliably for years in multiple installations without a single bug report after the initial debugging phase.
  • Managed up to 16 modems on a single PC.
  • Beautiful GUI monitoring system.
  • Java GUI application for writing and testing message handlers.
  • Used for developing WebCluster services.
  • Provides insight and management of the messaging system.
  • Can run a WebCluster instance for enhanced visibility and development.
Pocket Strategi
  • Small-footprint, web application platform in Java for client PCs and handheld devices.
  • Supported HTTP 1.1, HSM local and distributed messaging, and file transfer.
ATFM (Advanced Telecommunications & Fax Machine)
  • Multifunction telecommunications software platform for IBM AS/400.
  • Maintained the attached DOS PC communications system with Fax and Telex support.
  • Wrote a replacement message-based communications platform using QNX RTOS on X86 hardware.
  • Wrote communications replacement for fax using fax-enabled modems.
  • Wrote communications support for pagers, and the host integration.
  • Wrote communications support and DOS client for dial-up remote 5250 emulation.
  • Wrote communications support and DOS client for dial-up managed file transfer.
  • Wrote communications support and DOS client for dial-up HSM distributed messaging.
  • Wrote Windows client for dial-up remote 5250 emulation, managed file transfer, and HSM distributed messaging.
  • Wrote distributed local-area networking support for our QNX software allow any number of boxes to be used concurrently.
  • Fun fact: Due to memory constraints, I wrote support to manually swap out executables, saving their state, and restoring it when they were reloaded.

Kambrook Australia Corporation - 1990 (Part Time)

Small appliance manufacturer.

Final Position: Programmer.

Inhouse Manufacturing System
  • Business Reports.
  • Bug Fixes.

New Zealand Department of Social Welfare - 1988-1989

IT division for the government department which manages all aspects of the social welfare system in New Zealand.

Final Position: Programmer (receiving multi-grade pay increments at every review).

Emergency Benefit Payment System
  • System to write checks, with audit recording and reporting for emergency benefit payments.
  • System also managed the office users and administrators.
  • I was responsible for detailed design and implementation.
  • Installed in over 20 offices nationwide by the time I left.
  • Installed in over 60 offices nationwide within another 2 years.
  • Fun fact: My system was chosen for exclusive national deployment over a competing solution from Magix Solutions Inc, where I had previously interviewed for a position.

Formal Education

Certificate in Programming and Business Studies, Central Institute of Technology (New Zealand).

Certificate in Relational Database Design, Central Institute of Technology (New Zealand).

Informal Training

Countless hours of my own time invested in reading and watching videos on all aspects of programming in order to increase my knowledge of the state of the art. Along with a similar amount of time spent in personal programming, including in dabbling with a wide variety of languages just to “get a feel” for them.

Self-taught programmer at age 12, in BASIC and Z80 Assembler, writing 2D games and utilities for the Sinclair ZX-81, Sinclair ZX-Spectrum, Commodore VIC-20, and Commodore 64. Wrote an assembler for the ZX-81.