Post Job Free

Resume

Sign in

Lead/Senior full-stack software engineer and UX/visualization expert

Location:
Airdrie, AB, Canada
Posted:
December 10, 2020

Contact this candidate

Resume:

Garrett Gallant

Lead/senior full stack s oftware d eveloper specializing in scalable UX

Airdrie, Alberta, Canada.

ph. 403-***-****

email: adijxo@r.postjobfree.com

Total Experience:

* * *****

Industries:

Reservoir Simulation

Theatrical Lighting

“Smart” Power Grid

Interior Construction

Aircraft Maintenance

Video Games

Education

a hard worker with a strong background in OO P... ”

- Dr. Stephen Vermeulen, Critical Control, 2006

an extremely talented and capable individual . ”

- Kent Tong, SGC-Link, 2002

a true professional in all the tasks he undertakes . ”

- John McFarland, Calgary Catholic School District, 1997

“Garrett is naturally suited to lead UI development teams... brought a wealth of industry experience to the table

- Sean Rooke, Deltatee Enterprises, 2015

"[Garrett] provides high quality, visually complex software ... an excellent team player that benefitted all

- David Neely (SAS) & Kevin Matte, GE Energy, 2008 Full software life cycle: first principles, use cases, design docs, SWOT, tools/languages selection, API/protocol specification, patterns, data/code models, refactoring, profiling, simulation, bug/feature triage, coverage/performance analysis, unit/integrated testing, code review, code/user documentation. Large systems design and analysis: product architecture, API design, event coalescing, parallelization, multi-threading, load balancing, database optimization, deadlock prevention, fail- over, security.

SCADA: large-scale, mission-critical systems built/fixed for oil pipelines, electrical substations and theatrical lighting networks. UI/graphics: Performant UIs since 1991 in OpenGL,

HTML5/CSS3 (Canvas/SVG), WPF, GDI+, Java Swing/AWT, others. Version control and DevOps: CV S, SVN, g it; Visual Studio, Eclipse, GoLand; Jira, Bugzilla, Mantis ; make, yum, gcc, javac, ant ; InnoSetup, Bundler ; gdb, jdb; Cygwin.

Platforms: Windows, Linux, Web, Android.

Computer science: complexity analysis, data structures, algorit hms applied to leak detection, image recognition, game AI, 2D/ 3D rendering, etc.

Network programming : various TCP/UDP protocols (SSH, HTTP, IGMP, FTP/TFTP, SNMP, etc.); UDP multicast, VLANs, multi- homing, port sharing; Wireshark and syslog; NMEA0183 (GPS), DMX512, ANSI E1.20 (RDM), ArtNet, Pathport, Bluetooth LE. Databases: PostgreSQL, SQLite, MS-SQL, ObjectStore. Traditional graphics and documentation :

CorelDraw/Photopaint, MS Word/Excel/Powerpoint; mockups, layouts, app prettification (icons, splash screens, etc.); print/web advertising (brochures, trade show graphics, etc.); diagrams and screenshots; product photography.

Languages: Elevator Pitch:

Roles:

C/C++

UI/UX

0

0

5

some projects

10+ yrs

all

Java

networking & I/O

2D/3D graphics

algorithms, science, etc.

C# (.Net)

design & architecture

Python

databases

Asm (x68, PICx, MC68x)

HTML 5, CSS 3, Javascript

Bash, Visual Basic, Go, other

Summary of Skills

Full stack design and implementation of complex,

scalable software that has delighted users since

the Commodore 64!

Computer science and design patterns broadly

applied "from database to pixel" for inspiring

features and cleaner, more scalable code.

Fanatically optimized, liquid-fast bespoke UI

(e.g. interactively rendered giga-vertex 3D

models on a typical desktop PC).

Hundreds of technical challenges surpassed in

a wide variety of domains and roles.

Thought leadership, team mentoring and

collaboration.

Garrett Gallant - Lead/senior full stack s oftware d eveloper specializing in scalable UX Professional Experience

( denotes soloed projects where I performed 80% to 100% of the design and development) adijxo@r.postjobfree.com, 403-***-****

Computer Modelling Group, January 201 6 to Present IPSM reservoir/well/network simulation

Full stack developer on CMG's CoFlow, a large client-server reservoir-network (IPSM) simulator for Windows/Linux with cluster compute support and a traditional Windows desktop client (mainly in C#/.Net, WPF/XAML, PostgreSQL/MS-SQL).

Major UX improvements including a bespoke, high- performance UI engine that interactively ray-traces giga- vertex 3D models, complex graphs and diagrams 100x faster than WPF/WinForms/GDI+, with a simplified API.

Collaboration with a diversity of engineers, physicists and other SMEs in a 40-member agile/C.I./TDD environment.

High fidelity design docs, benchmarks and UX expertise. Deltatee Enterprises, July 2014 to December 2015

Contract electronics and software design and development

Web HMI (Java, HTML5/CSS3, Javascript) for real-time visualization of giga-scale gas logger (WITS) time series.

Web management portal (Python/Django, HTML5/CSS3, Javascript) for a prototype stove fire protection device.

Android app (Java) for BT-LE tank volume sensing. Pathway Connectivity Solutions, May 2008 to June 2014 Supervisory control and monitoring of large theatrical networks

I ndustry-leading Pathport Manager 5 and Pathscape application s (1 8 0k lines in Java, C++, HTML5/CSS3, Javascript ); configs large theatrical networks at Disney /Epcot, CBC, Cirque de Soleil, Freedom Tower One.

Brand m arketing and technical graphics.

DIRTT Environmental Solutions, Oct 2013 to April 2014 3D interior construction design and manufacturing

Full stack c orrectness/performance fixes to ICE (3D collision detection, nD clustering, etc.; in Java).

Coverage/ benchmarks for reports driving >$150M in manufacturing per year (Java).

Misc. DevOps and git/SVN tools (Java, Python).

GE Energy Systems, March 2007 to Sept 2008

Supervisory control and monitoring of electrical power grids

C ritical safety/performance fixes and HMI/firmware for GE's D400 Electrical Substation Controller (C++, Java, HTML).

Real-time power grid and trend visualization module. 3ES Innovation, August 2006 to March 2007

Oil & gas team management/scheduling

Gantt chart and other visual components (Java).

General database/ performance/UX expertise.

Critical Control (Simulutions), March 2004 to August 2006 Leak detection and SCADA for oil & gas pipelines

Advanced pipeline leak detection algorithms based on SPRT, acoustics and fluid dynamics.

Real-time algorithm simulator / visualizer (Java, Python).

Multithreaded database client, network failover and other improvements to Pipeworks (C/C++, Java, Python) critical to factory acceptance at energy super-majors. Code Crew, February 2001 to March 2004

Contract/spec software for various industries

Touch point-of-sale system (Linux/Win32 C++, HTML).

GPS 3D web track er/visualizer (C ++, Java, HTML).

Serial printer driver for Shaw Cor (Win32 C++).

3D casino games and network test framework fo r eQube, for Alberta and Nevada markets (Win32 C++, OpenGL).

WAN print monitor (~1100 printers) for EDS and CP Rail. BMP Energy Systems, April 2000 to February 2001

Artificial intelligence-based gas chart processing

Automated chart scanner based on v isual pattern recognition, skeletonization and graph theory (ANSI C ++).

Gas chart editor (Win32 C++) to Improve BMP's existing chart scanning/editing workflow.

Transactions, Calgary: Sept 1999 to April 2000

Early stage e-commerce website for skilled trades

Full e-commerce website life cycle: design, development, security, analytics (HTML, ASP, Javascript).

Makeda Press / Canadian Airlines, July 1998 to Sept 1999 Document management and on-demand digital printing

Document management system for Canadian Regional Airline's aircraft maintenance manuals (Win32 C++).

Automation for OCE 3165 network photocopier.

Calgary Catholic School District, Oct 1994 to June 1998 Teaching, I.T. and programming for a Kindergarten to Grade 9 school

Pioneered Calgary's first K-9 broadband internet and 100BaseT multimedia network at Cardinal Newman School.

Partnerships with Microsoft (DevStudio), Corel (CorelDraw).

Custom K-9 CompSci/ robotics curricula.

Maintenance for 110 computers, >1000 users.

Software Dynamics, May 1993 to October 1994

Mass-market video game for Windows 3.1/3.11

Graphics effects and artificial intelligence for award-winning network multiplayer game Inner Space (Win16 C++) . S

S

S

S

S

S

S

S

S

S

S

S

S

S

S

S

S

S

Computer-related:

2005: "Fractal explorer" and tutorial website

teaching kids about chaos theory, for the

Calgary Science Centre (Java, HTML/CSS).

1997: Tutorial robotics /microcontroller projects

(PIC16384 asm) for the University of Calgary

and Parallax Inc.

1995-1998: Volunteer computer teaching and IT support at various Calgary schools.

1994-1996: Co-organized and judged the annual Calgary Youth Programming Competition.

1994: 3D "asteroid" game for AmigaOS featuring fast

"chunky -to-planar " raster (C/C++, MC680x0

as sembly ).

1992-1995: Monthly club (OOPSIG) teaching object-

oriented design and software to adults and

kids.

1989-1993: Misc. utilities for DOS/Win16 (C, x86 asm). 1985-1989: Various utilities and games for the Commodore 64 and Apple II (MOS6510 asm, Basic).

Not computer-related:

2018-2019: Airdrie Lionesses' Christmas hamper program. 2012-2014: "Feed the Hungry" at St. Mary's Cathedral. 2006-201 2 : "Garage Giveaway", "Backpacks for Kids" and other charitable events at Foothills Alliance

Church.

2001-2004: IT resource for Calgary Nose Hill Constituency Organization (Diane Ablonczy, M.P.)

1994-2000: "Shrove Tuesday" cook, intramural referee and other roles at Cardinal Newman School.

Time/memory complexity analysis

C lassical statistics ( Wald SPRT, deviation, correlation, etc.)

N -degree polynomial curve fitting, L-Norms

Wavelets ( Haar, Daubechies, etc.)

Graph theory ( Dijkstra’ s, Prim's, etc.)

RNG ( Mersenne Twister, feedback shift registers, etc.)

Rabin-Miller pseudoprime test

Domain transforms (FFT, Hough’s, etc.)

G lyph skeletonization and classification

S orting and clustering algorithms

M ulti-level feature classification

C lassical 2D/3D graphics (matrices, convolution, gauarad/phong shading, texture/lighting effects,

compositing, scene graph/LOD, collision detection)

CPU-based r ay /path -tracing

S pace partitions ( bin/ quad/octrees, etc.)

Rsync (incremental checksum)

F ractals and SFCs (Mandelbrot, Hilbert, etc.; just for fun )

I play tennis, bike and compose classical music; all poorly.

I met my wife in World of Warcraft, and we're now raising two little gnomes of our own!

As a kid, I harvested parts from a Teddy Ruxpin to build a 1- bit audio digitizer for my Commodore 64 that sounded like a badly tuned radio.

I've used a half-inch drill to build decks and mix (lots of) pancake batter.

I'd love to meet you and your project!

Professional references and demos available on request. Volunteering Applied Math & Computer Science

(sample; not a complete list)

About Me

Garrett Gallant - Lead/senior full stack s oftware d eveloper specializing in scalable UX adijxo@r.postjobfree.com, 403-***-**** High Performance UI in C#/WPF: an abstract by Garrett Gallant 1. The Problem and Investigation

This abstract highlights my high-performance UI/UX project (in C#/.Net/WPF) in 2019 for Computer Modelling Group. Enjoy! In 2019, I volunteered to investigate and solve critical UI runtime performance and API complexity issues preventing our application (a reservoir-network IPSM simulator with a WPF UI composed of dozens of guided dialogs with various graphs, tables, property grids, 2D/3D projections, dockable panels and other custom visualizations) from being applied to real-world models: 20 million cells and thousands of network nodes evolving daily over 20+ years with 100 scalars per cell, i.e. ~150 TB, 10k-vertex trends, 100M-vertex 3D models. To understand WPF's internals, I developed a benchmarking harness to accurately measure WPF's measurement, rendering and compositing stages (via GDI+ screen grabbing, GPU tracing, etc.).

Then I created a battery of tests to exercise most aspects of the WPF pipeline: rendering, layout, data binding, virtualization/recycling, freezing, viewports, converters and templates; hundreds of tests in total that yielded dozens of insights, e.g.:

- Data template realization is slow, e.g. a non-trivial ListView's scroll rate drops precipitously to 6 frames per second when scrolling a page at a time, with or without virtualization and recycling. Bulk mutation is also slow.

- Rendering via frozen DrawingVisuals (the fastest method recommended by MSDN) is inadequate for scientific

visualization: only 100k/sec for 4-pixel lines, dropping to 8k/sec for 1024-pixel lines; plus copious trash for the GC to cleanup.

- For some primitives (e.g. ellipses and rotated font glyphs), each pixel row is CPU-tessellated (extremely inefficiently) to a triangle for the GPU.

I also discovered that WPF's data-binding and notification model encouraged bad patterns (absent of great care by the caller) such as redundant VM state and converter/notification spaghetti manifested as stale or redundantly updated UI. Inspection of our in-house code and open source code on the Internet confirmed this problem is common in WPF

applications.

To scale to large models continuously mutated by input from the user and network (e.g. a reservoir simulation, live Disney show or SCADA system), a better approach was needed. 2. The Proposal and Proof of Concept

I proposed a bespoke UI framework based on WPF to deliver a world-class user experience for our customers that performed to hardware limits, with a simplified API for faster development and improved maintainability.

As a proof of concept for stakeholders, I wrote a Mandelbrot Set explorer as a custom WPF control, featuring multi- threaded C# sampling, interactive pan/zoom to 1 trillion magnification at HD resolution, 1000 iterations per pixel, fractional escape smoothing, spatially progressive update and other computationally expensive effects.

A live demo is available. Screenshots follow:

Figure 1: "Mandelbrot explorer" early proof of concept

(c) 2020 Garrett Gallant

High Performance UI in C#/WPF: an abstract by Garrett Gallant Page 2 4. The Payoff!

I built several reusable UI controls based on my WPF framework that performed at "video game" speed and substantially improved the overall UX of our application:

- A diagramming control that interactively renders ~100k on-screen nodes/edges (versus ~200 in our old control - a 500x speedup).

- A 2D graphing control that interactively renders ~1M on- screen vertices (versus ~3k in our old control - a 300x speedup).

- A table control that interactively renders complex, continuously mutating lists, property grids, etc., with no lag on user input or scrolling.

- A 3D control (in early development) that interactively ray- traces ~100M-cell models (versus ~1M cells in our old control - a 100x speedup) and degrades sub-linearly with vertex count, allowing the user to fluidly orbit and plane- cut reservoir models at scale.

- Various WPF layouts to support esoteric requirements of our UI that were cumbersome with Grids and dockable panels (especially in XAML).

3. The Solution

As proposed above, I soloed a bespoke UI framework based on WPF, featuring:

- High speed, abstract transform/rendering of primitives

(lines, blits, polygons, etc.), with three implementations:

- traditional WPF DrawingVisuals (slow, baseline)

- heapless multithreaded C# to WriteableBitmap (fast)

- Vulkan to GPU (very fast, in early development)

- A featherweight sprite layer for efficient layout of tens of thousands of on-screen UI elements in real-time.

- A high-level graphing layer for 2D graphs and diagrams, featuring logarithmic zoom, axis grouping/linking, proximity-based picking, camera hysteresis, etc.

- A notification model based on a reactive "forward transform and merge" model common in modern video

games. The source graph is arbitrarily mutated, then notifications are coalesced efficiently to handlers (like a makefile) that merge the new source state to existing destination state, thereby eliminating notification spaghetti by design, simplifying viewmodel logic and making UI development a more pleasant experience.

- Support for custom C# UV shading for all primitives.

- HDR (floating point) color compositing.

- Coalesced background dispatch of non-UI tasks (e.g. fetching live simulation results from another process).

- Automated UI testing utilities.

For most purposes (basic rendering, data binding, etc.), my framework is typically 100x faster than vanilla WPF. A PDF with detailed benchmarks is also available.

Figure 2: example primitive rendering performance

(40-core Intel Xeon 6148, nVidia Quadro P4000 @ 71 Gpx/s) Figure 3: interactive performance: old versus new WPF controls

(40-core Intel Xeon 6148, nVidia Quadro P4000 @ 71 Gpx/s) WPF DrawingVisuals

old

anti-aliased lines (4x1)

2D diagram nodes

(195x)

(500x)

(76x)

(300x)

(71x)

(100x)

(232x)

(29x)

(0.82x)

(27x)

AA lines (64x1)

2D graph vertices

AA lines (1024x1)

3D solid model cells

filled rectangles (64x32)

filled rectangles (4x2)

filled rectangles (512x256)

AA font glyphs (8x8)

C# to WriteableBitmap

new

10M 100M/sec

100M

1M

10M

100k

1M

10k

100k

1k

1k 10k

(c) 2020 Garrett Gallant



Contact this candidate