mailing label: | 5936 Lohr Rd. | Ann Arbor, MI 48108 |
email: | wolf@zv.cx |
A generalist with a broad background, I am a top-notch software engineer, documenter, architect, implementer, debugger, and an excellent resource for the rest of the team. My wide range of experience allows me to jump into any situation and become productive immediately. I can travel, work on-site or remotely; join or lead a team, or work alone. I am also an experienced public speaker with a love (and a talent) for teaching.
I feel purpose most in raising up the people around me by helping them, teaching them, and by advertising their accomplishments. I feel purpose in being useful in the situation and getting my job done. I define success as the success of the team around me, if I have done my job, been useful, and raised up members of the team. I value integrity, kindness, honesty, usefulness, and learning (both for me and for others). I am a life-long learner.
I am expert in Python having used it since 1998. That is my current primary language. In Python, I am a heavy user of Qt, Pandas, and geometry (and the corresponding PostGIS tools in Postgres). My JavaScript/TypeScript and my PHP are all strong but I have not been focused on any of them recently. I am currently learning Rust (some samples linked below). Some time ago I was an expert in C++, but I could probably still write code in it (or almost anything else) given a little preparation and an open book.
I am good at a lot of things, but I am an authority in Python and Git.
In databases, I have several years of recent PostgreSQL experience, more than a decade of MySQL, am reasonably proficient in SQLite, and have some experience using MongoDB. I have written plenty or command-line scripts, cross-platform apps, typically using Qt, and apps native to macOS. I'm a Bash expert, which means on Windows I gravitate towards Git Bash for Windows, and WSL2 rather than cmd.exe. With respect to the web, I am a full-stack developer, well equipped to deal with both the front-end and the back-end. I am at home on Linux, Mac, or Windows, and have been writing cross-platform code since 1991. I can live happily with the IDE du jour (where my favorites are PyCharm, RustRover, and for other languages IntelliJ) or with nothing but the command line (where I have used many editors, but mostly use and have a great deal of skill and experience with Vim/NeoVim). I have recently been working with Cloud services, mostly AWS. I wouldn't call myself an expert yet, but I'm working on it.
I am an algorithms guy with experience in programming languages and scripting; applications (both native and cross-platform); web interfaces and implementations; encryption/authentication; search; compression; text systems; database use; build system machinery; various application frameworks; and making things go faster.
I have distinguished myself as a public speaker, technical evangelist, and educator. I am a receptive and persuasive communicator, both face to face and in lower-bandwidth settings, including technical writing and email. I have extensive experience in Open Source and distributed development.
some of my C++ from Mozilla/Firefox
At DMP I write Qt apps in Python using PostgreSQL, PostGIS, Pandas, and several AWS services. These apps are used internally by experts in building highly precise maps.
At Genomonen I wrote back-end code in Python and a little in Go. I used Docker extensively; worked with AWS SQS and S3, and LocalStack to simulate them; plus Terraform to manage it all. Genomenon is a genomic intelligence company which means the core of its offerings are data related and service related. The data half focused on a complicated pipeline that made scientific papers referencing genes and variants available in Elasticsearch. We used PostgreSQL along with Elasticsearch and a variety of languages: JavaScript, Go, Python, and Ruby.
The service half of the business involved human curation of genes and variants. The dev team also wrote tools to help them do their jobs.
At LAZ, I was a full-stack application developer building literacy tools for K-6 students. I worked in PHP and JavaScript with deep use of MySQL. I worked on the mobile team writing back-end code, and focusing on our latest writing program. That means I was almost entirely PHP-focused for that work. Initially, I spent time doing DevOps-related tasks such as researching CDNs and implementing our use of one (settling on AWS Cloudfront); implementing an additional code staging area (known as postprod); researching, setting up, and initially managing an on-prem Git hosting facility (GitLab); and converting a large code-base and equally large development team from CVS to Git. As the team's Git expert, I did both regular training on the available tools, and one-on-one problem solving with individual developers.
On the non-coding side, I ran our annual intern program: "mentoring the mentors" and handling issues outside the scope of an individual mentor. I also ran our twice-yearly engineering Hack-a-thon. I love coding, but mentoring and the hack-a-thon both gave me a lot of pleasure and satisfaction.
I worked on network analysis tools, written in Python, that examined and filtered the flow of IP packets across the cell network. Arbor Networks is now NetScout.
Here, I worked on a new implementation of SourceForge. This implementation is written in Python atop TurboGears and Pylons. It uses MongoDB, RabbitMQ, and a great many Python packages. The client-side functionality is JavaScript relying heavily on jQuery.
Slashdot is a popular technology news and discussion site. My job there was to implement modern web UI using client-side browser facilities including JavaScript, AJAX, CSS, and the DOM as well as server-side tools including Perl, the Template Toolkit, MySQL, Apache, and others. I've implemented web features such as dynamic loading of stories, drag-and-drop arrangement for Slashboxes, a dual-thumb slider for setting comment viewing thresholds, dynamic nod/nix menus, auto-completing text entry, remote `badges' to submit pages to Slashdot, and more.
Trolltech (now The Qt Company) is the maker of Qt. As Evangelist, my primary role was to be a public speaker and educator. I have spoken at open conferences, including FISL, LinuxWorld, SIGGRAPH, LinuxLunacy, OSDW, Microsoft PDC, ADHOC, Gnomedex, and others. I have also spoken at internal conferences for customer companies, including Synopsys, and Roxar. I was on the road as much or more than I was at home. I wrote software built on Qt so that I could understand the problems Qt users face; and continually encouraged the team to support the complete set of C++ features and facilities, including compatibility with the C++ Standard Library and Boost. I interacted directly with the engineering team, with customers, and with Open Source users. I served on external standards committees to represent Trolltech's interests, getting the Linux Standard Base to accept Qt as an industry standard.
Ann Arbor Digital Arts (A2DA) is, principally, a software research and development firm which also provides contract engineering, consulting, and IT support. At A2DA I designed and built the web-based UI for a Department of Education Phase I pilot program bringing to educators and school personnel usable survey results of the substance abuse patterns and practice of their students. I built Palm-based medication reminder software with a UI targeting older adults as part of a NIH SBIR Phase I research grant, no. 1 R43 AG19558-01A2. I served as software consultant on a Phase I Navy STTR research project, no. N03-T004, proposing the development of a new heuristic (the Neighborhood Covering Heuristic, NCH) for the general mixed integer problem in optimization.
In joining mozilla.org staff, in addition to my Netscape engineering tasks, I also took on the tasks of driver, super-reviewer, and technical evangelist. In these roles, particularly the latter two, I became responsible for educating engineers and potential engineers: teaching them the underlying architecture of Mozilla, from the big picture all the way down to rules and techniques to improve their code at the lowest levels. As a technical evangelist, I bring engineering expertise to companies and groups interested in exploiting the Mozilla code-base. I bring them up to speed on the code and on interacting with the community to reach their goals. As a key player in our Mozilla University effort, I have traveled to universities across the country giving technical lectures to CS students and faculty to bring new and bright engineering talent into the Mozilla project, as well as exporting Mozilla's UI building machinery to academia as a framework for use in their own research. My role with mozilla.org continued even beyond my association with Netscape.
I designed and implemented the bulk of Mozilla's XPCOM type-safe and leak resistant object management facilities (note, however, that there is a great deal more to XPCOM than just that machinery). I designed and implemented Mozilla's string library which far surpassed its predecessor in efficiency and flexibility. I served terms as module owner of both XPCOM and Strings; and I was a key resource for other module owners in their architectural work. I was the original architect of the XPToolkit team, which produced XUL, our cross-platform, XML-based, user-interface description language, and related services. I was also the architect for several key tools including MacCVS Pro and the Macintosh (classic) build system.
In 1998, as part of bringing the Netscape browser to Open Source, I first encountered and began using Python. It has been a favorite ever since.
In 1999, AOL bought Netscape. In January of 2001, AOL and Time Warner officially merged.
I was the lead engineer for the Macintosh SDK and a turn-around engineer for the email client.
According to Wikipedia, NetManage went defunct in 2008.
I designed and implemented a user-level scripting language for compiling video effects, such as transitions, within our cross-platform framework. I wrote the bulk of the scripts that made up our development environment. Macromedia sold our project to Apple Computer where it is now known as Final Cut Pro.
In 2005 Adobe acquired Macromedia.
I designed and implemented a persistent store (stochastic locality-optimizing) with a back-end interface allowing OEMs to quickly bring up new devices. PagedTStore was a 30% net speed improvement over extant code. I wrote import/export for the Newton Connection Kit 2.0, including a transaction-oriented database language. My work ran on Mac, PC, and Newton.
I wrote the Grabber, a Macintosh system extension for Arrange, an outliner/idea-processor. The Grabber integrated Arrange data-exchange into other applications, so one could cut and paste into Arrange from any running application, even when Arrange wasn't, itself, running.
I designed and implemented the text system; invented an efficient database compression strategy (generationally-adaptive predictive encoding); made significant contributions to the design of Telescript and to the MagicCAP UI; built a compiler integral to the OS effort; was responsible for security considerations including a protocol for secure communication.
With one other engineer, I wrote the database-engine for a nuclear imaging system.
As the architect of SoundDroid, a large-scale audio post-production tool that was both a UI for NED audio hardware and a database for sounds, directors notes, etc., I designed its internal architecture; designed and implemented a persistent object store around an extent engine; and educated the team in MacApp and C++.
I was one of the principal implementers of FullWrite Professional 1.0 (a full-featured WYSIWYG word processor for the Macintosh) at Ann Arbor, and leader of the tools group for the Mac division at Ashton-Tate after the acquisition. I contributed to the UI design, and much of its implementation; designed and implemented the menu manager and a smart (MVC) dialog manager.
Furnished upon request.