Mark D. A. van Gulik
Copyright © 2016 Mark van Gulik.
Contact
Mark can be emailed by humans at
The Avail Foundation.
Career Profile
Areas of expertise include:
- Language, compiler & interpreter design
- User interface design
- Smalltalk mentoring
- Object-oriented analysis & design techniques
- Object-oriented implementation
- Building frameworks and re-use libraries
- High performance & highly scalable systems
- Object-oriented databases
- Relational databases
Publications
- Wilf R. LaLonde, Mark Van Gulik, Building a backtracking facility in Smalltalk without kernel support, Conference proceedings on Object-oriented programming systems, languages and applications, p.105-122, September 25-30, 1988, San Diego, California, United States
Patents
Patents:
- US 9,830,348 — Persistent data storage techniques
- US 9,769,292 — Concurrent process execution
- US 9,665,403 — Executing algorithms in parallel
- US 9,652,287 — Using databases for both transactions and analysis
- US 9,613,112 — Structuring data
- US 9,189,536 — Maintaining a relationship between two different items of data
- US 9,092,411 — Understanding data in data sets
- US 8,935,225 — Persistent data storage techniques
- US 8,489,567 — Persistent data storage techniques
- US 7,512,610 — Processing Data Records
- US 7,587,428 — Maintaining a relationship between two different items of data
- US 7,689,560 — Persistent data storage techniques
- US 7,783,655 — Processing Data Records
Education
B.C.S. With Honours in Computer Science (Software), Carleton University, 1989.
Work History
The Avail Foundation LLC | Madison, Wisconsin and other locations | 1993 to present | ||
Role: | Developer, Co-Founder, Chief Technology Officer | |||
Environment: | PowerPC & x86 Macintosh, System 7.5.1 - MacOS 9.0, OS X 10.0-10.10.5, VisualWorks 2.0, 2.5.2, Power PC Assembly, C, C++, Java/JVM, Windows XP, Windows 7, Eclipse, IntelliJ/IDEA. | |||
Developed many of the deep core concepts of Avail (availlang.org), its syntactic mechanisms, and its semantic philosophy. Was sole designer and developer until 2008. The Avail Foundation was founded in 2012, nearly 20 years after work began on it. |
||||
CUNA Mutual Financial Group | Madison, Wisconsin | Mar. 2018 – Present | ||
Role: | Analyst V, Data | |||
Environment: | Windows, Azure, SQL Server, Visual Studio | |||
Worked within Predictive Analytics team to solve data engineering problems and plan additional data pipelines. Assisted in execution and evaluation of predictive models for marketing a variety of banking and insurance products. Advocated best practices in contexts such as code development and deployment, data governance, and quality assurance. Role included programming in SQL, R, and C#. |
||||
My Coverage Plan, Inc. | Madison, Wisconsin | October 2017 | ||
Role: | Independent Contractor | |||
Environment: | OSX, IntelliJ IDEA, Avail | |||
Reviewed code, fixed bugs, and tuned performance and security of a health insurance expert system written in Avail. The portion of the system reviewed includes a domain-specific language for specifying business rules and a compiler that produces JVM bytecodes. |
||||
Sonic Foundry | Madison, Wisconsin | January 2017 to June 2017 | ||
Role: | Software Design Engineer | |||
Environment: | Windows 10, Visual Studio, C#, C++, JavaScript | |||
Made bug fixes and created TCP/IP interface for closed-hardware device. |
||||
Madison, Wisconsin | January 2016 to November 2016 | |||
Role: | Software Engineer, SWE-6 | |||
Environment: | Linux, Eclipse, C++ | |||
Worked on a massive scale distributed RDMA-based in-memory key/value store in C++. Also contributed pieces to its underlying file system infrastructure. Designed and wired in event logging mechanism, and provisioned the network and storage resources for recording these events for system health monitoring, performance profiling, and post-mortem analysis. |
||||
MioSoft Corporation |
Madison, Wisconsin |
March 1999 to December 2015 |
||
Role: | Principal Developer | |||
Environment: | Linux, Windows 98 / NT 4.0 / 2000 / XP / 7, VisualWorks Smalltalk 3.0-7.10, Envy/Developer, StORE, Objectivity/DB, IBM MQSeries (now WebSphere MQ), Java, Eclipse (Helios, Indigo, Juno), JavaScript. | |||
Implemented vast majority of MioSoft's MioEdge consolidating context database engine, ETL / Data Quality tools, and related technologies. Implementation was from just above the file system and sockets, up through the user interface for schema and rule specification, interactive parsing and mapping of files/MQ/ODBC, reporting to files/MQ/ODBC, and integrated web server. Devised and implemented many very complex contention-free parallel algorithms for data consolidation (patented). Designed and implemented UML-based modeling tool with code generation, high quality automatic graph layout algorithms, extensive integrated file parsing and mapping tool, MQSeries (WebSphere MQ) interface, XML/XSL interfaces, parallel report generator, integrated web design tool, complete web server, indexing mechanisms, error-corrected transport layer on top of TCP/IP (to compensate for <10-13 bit error rate on internal bus), and translucent graphics operations in Smalltalk and C. Assisted construction of production databases using this technology with hundreds of cores and disks in redundant data centers, thousands of data sources providing petabytes of data, and over 30,000 users connected via WAN. Leveraged expertise in Java, JavaScript, Smalltalk, HTML, CSS, XML technologies, C, x86 assembly language, and Avail. Also contributed significantly in the design and implementation of Miosoft's Mioplexer®. Of lesser note, designed and implemented entirety of:
|
||||
Sprint | Overland Park, Kansas |
September 1998 to December 1998 |
||
Role: | VisualWorks Smalltalk Architect | |||
Environment: | Pentium Pro, Unix boxes. Windows NT, XWindows. VisualWorks 2.5.2, Envy/Developer. | |||
Architected "Partitioning Service" for the Sprint ION project. This service is the mechanism for coordinating ION services in the presence of planned and unplanned node failovers and hand-offs. Also developed uniform layer for starting and controlling external processes on either NT or Unix. |
||||
Honda Canada | Alliston, Ontario, Canada | August 1998 | ||
Role: | VisualAge Smalltalk Expert | |||
Environment: | Pentium Pro, Unix boxes. Windows NT 4.0, XWindows. VisualAge 4.02b, Envy/Developer. | |||
Assisted in very short term troubleshooting & coding (2 weeks). Order of magnitude performance improvements were made to graphics subsystem under XWindows. |
||||
Computer Sciences Corporation |
Oslo, Norway |
November 1997 to March 1998 |
||
Role: | Smalltalk Expert | |||
Environment: | Pentium Pro. Windows NT 4.0. VisualAge 3.0a, 4.0, 4.02b, Envy/Developer, TOPLink. | |||
Mentored other developers (about 20), mostly helping to debug framework quirks. Improved performance of framework by caching and recycling key windows. Helped design pieces of security subsystem. Assisted in deployment of system for a client using MVS DB2 3.0, by patching TOPLink. |
||||
Policy Management Systems Corporation |
Columbia, South Carolina |
August 1997 to October 1997 |
||
Role: | Smalltalk Mentor | |||
Environment: | Pentium, Dual Pentium Pro. Windows NT 4.0. VisualAge 3.0a, 4.0, 4.02, Envy/Developer, Micado Frameworks. | |||
Mentored team of >100 (of varied experience) in Smalltalk. Produced key tools for analysis of application packaging. Produced components for automated layout of screens. Critiqued portions of system (total system was > 90,000 methods). |
||||
Mitel Corporation (2nd contract) |
Ottawa, Ontario, Canada |
September 1996 to April 1997 |
||
Role: | Smalltalk and Languages Specialist | |||
Environment: | 486, Pentium, Pentium Pro. Windows 95, NT 3.51/4.0. VisualWorks 2.5, Envy/Developer, Gemstone, HP Distributed Smalltalk, Rational Rose. | |||
Mentored team of about 12 in Smalltalk and object-oriented design &
analysis, using Rational Rose. Delivered key pieces of an agent framework. Constructed
performance measurement framework. Constructed automated testing framework.
Interfaced Smalltalk to C code. Built layers for resource management and call control
abstract interface. |
||||
Marsh & McLennan | Toronto, Ontario, Canada |
February 1996 to September 1996 |
||
Role: | Smalltalk Developer and Troubleshooter | |||
Environment: | Pentium. IBM VisualAge Smalltalk. | |||
Tracked and corrected hundreds of bugs in a production insurance
claim processing system. Also extended functionality as per existing requirements.
Moved many business rules from code to database tables for easier maintenance
and distribution. Mentoring was also a significant portion of my activities. |
||||
Distributed Firmware |
Lynchburg, Virginia |
May 1995 to February 1996 |
||
Role: | Senior Smalltalk Specialist | |||
Environment: | 486 PC and PowerMac 8100. ParcPlace VisualWorks 1.0 & 2.0. | |||
Participated in design of C++ browser. Developed prototype
in Smalltalk. Prototyped portable window system layer in Smalltalk, started
translation to C++. |
||||
Mitel Corporation (1st contract) |
Ottawa, Ontario, Canada |
May 1994 to April 1995 |
||
Role: | Senior Technical Lead | |||
Environment: | 486 PCs. ParcPlace VisualWorks 1.0 & 2.0. ENVY/Developer. | |||
Participated in the design of a system to handle connections
between any two non-homogenous and homogenous digital systems. Built an
interpreter in Smalltalk to support the building of scripts within the
application. Scripts used enterprise model rules for resource allocation
and other policies. Provided mentoring, training, code and design reviews
to the entire team (>10 persons). Was responsible for most of the technical
implementation details, such as adding new user interface widgets and complex
functionality. Was ENVY Library Supervisor. |
||||
Knowledge Systems Corporation |
Raleigh, North Carolina |
December 1993 to April 1994 |
||
Role: | Senior Technical Lead | |||
Environment: | Diskless X-windows boxes connected to Unix servers. ParcPlace VisualWorks 1.0. ENVY/Developer. | |||
Was responsible for building various low level interfaces
to external data sources. Designed and built an object broker mechanism
to retrieve data from relational and object databases, as well as from
legacy systems. Was responsible for major technical issues, such as
performance. Provided support for code and design reviews. |
||||
Sietec Open Systems |
Willowdale, Ontario, Canada |
May 1992 to November 1992 & July 1993 to October 1993 |
||
Role: | Smalltalk Consultant | |||
Environment: | 386/486 PCs, OS/2 1.3, Windows 3.1, Digitalk Smalltalk V/ PM and V/Win. | |||
Smalltalk/VPM and Smalltalk /VWin knowledge resource for
the other (more than 16) members of the group. Previous experience with
bugs and caveats in these environments was fundamental to fulfilling this
role. Debugged and extended several modules that were heavily dependent
on detailed aspects of VPM's and VWin's windowing classes. Provided programming tools and tips to simplify development. |
||||
Canadian National Research Council & Simcon System Synectics |
Ottawa, Ontario, Canada |
February 1993 to May 1993 |
||
Role: | Smalltalk Consultant | |||
Environment: | DECstation 3100, Ultrix, X/Windows, VisualWorks 1.0, and ObjectWorks r4.1. | |||
Developed reusable components for an enterprise modeling
system. These components included graph layout classes, model based drag
and drop support and hypergraph (graph of graphs) editor. These components
were built inside the VisualComponent hierarchy in order to be able to
plug in arbitrary objects. Designed some of the look and feel. Provided
support for the tuning of the application, as well as debugging of low
level problems. Mentored the group of 5 developers on proper use of the
existing class library and general Smalltalk idioms. Porting of tools developed
in other environments was also done. These tools improved the effectiveness
of the load building process already in place. |
||||
Veritas Venture Incorporated & First Union Bank |
Charlotte, North Carolina |
December 1991 to April 1992 |
||
Role: | Consultant to First Union Bank | |||
Environment: | 386/486 PCs, 0S/2 1.3, Digitalk Smalltalk V/ PM. | |||
Design and development of a product (Customer Relationship
System) for internal use by First Union Bank. The product provided facilities
for selecting a customer and then viewing simple reports about the customer.
It acquired its data from a host by means of OS/2's APPC services, as well
as OS/2's EHLLAPI services for scraping data from 3270 screens. This was
the first project in Smalltalk for the rest of the programming team (from
Broadway & Seymour). Position required mentoring and transfer of Smalltalk
knowledge. |
||||
Veritas Venture Incorporated |
Lynchburg, Virginia |
October 1989 to December 1991 |
||
Role: | Smalltalk Software Engineer | |||
Environment: | 386/486 PCs, 0S/2 1.3, Smalltalk V/ PM, C, COBOL. | |||
Participated in the design and development of an expert system
for handling the resolution of credit card charge-backs. The team consisted
of 3 to 6 programmers, varying over time. Duties included: Building knowledge
engineering tools. Interfacing Smalltalk/VPM to OS/2 Extended Edition's
SQL Manager and 3270 screens. Building export and import utilities for
the domain data to and from multiple destinations and sources. Setting
up a simple CASE system to deal with teams of 3 to 6 programmers. Construction
of the expert system engine and user interface. Extension and correction
of the Smalltalk/VPM class library. Porting the system across multiple
versions of Smalltalk/VPM (alpha0.76, 1.0, 1.1, 1.2, 1.3). Near end of
project, the core of the system was ported to COBOL by myself & 3 others. |
||||
Artech Digital Entertainment |
Ottawa, Ontario |
May 1988 to September 1988 |
||
Role: | Assembly Language Software Engineer | |||
Environment: | AT PCs, C, 80286 Assembler, 6502 Assembler. | |||
Developed a real time simulation of motorcycle driving. The
simulation involved displaying a moving track from multiple points of view.
It also involved tuning acceleration and terrain effects for realism. |
||||
Carleton University, Department of Computer Science |
Ottawa, Ontario |
May 1987 to September 1987 |
||
Role: | Researcher | |||
Environment: | APPLE Lisa, Macintosh II, Tektronix-4405, Smalltalk-80 (Tektronix, r2.1). | |||
Produced many prototype applications based on different aspects of computer animation: ray tracing, world editing, experimental techniques of movie editing, and an object oriented way of describing movies (describing the interactions between objects in a world). A general equation solver was written in order to solve the constraints (differential equations) given in the description of a world. Many venues for stereoscopic viewing were investigated. |
Open Source
Over 20 years of work developing Avail, a novel multi-paradigmatic language for articulate programming. See the Avail home page for details. |
Technical Profile
Hardware: | Mac (68K/PPC/x86) x86 PCs SUN SparcStation I, I+, II DEC 5100 PDP 11-60 |
|||||||||||||||||||||||||||||||
Operating Systems: |
DOS, Windows 3.0 / 3.1 / 3.11 / NT4.0 / 2000 / XP / XP Professional 64 / Server 2003 / Vista Ultimate / Windows 7 / Windows 10 Macintosh System — MacOS 3.0 through Mac OS X 10.12.5 (Sierra) UNIX (FreeBSD, X Windows on Solaris) OS/2 (1.1 through 3.0) RT-11 |
|||||||||||||||||||||||||||||||
Languages: |
|
|||||||||||||||||||||||||||||||
Databases: |
Gemstone (an ODBMS) Objectivity/DB (an ODBMS) MioDB (a parallel/distributed ODBMS developed almost exclusively by me) Oracle Sybase DB2 (MVS 3.0, MVS 5.0 Universal, and Windows NT 5.0 Universal) SQL Server MS-Access |