This is not your typical résumé. First things first: this page is the only
source for this document. Remember that a résumé is a document and that
documents are subject to copyright. There is no PDF version of this
résumé. Just this one right here, at https://mike.trausch.us/resume/
.
This page is just the tip of the iceberg—a broad overview. There are (or rather, will be; this page is still a work-in-progress) links throughout to additional details, portfolios, examples, and references. By the time you’re finished reading through this, you should know pretty well whether or not I can do the work you need done.
Systems and application programmer capable of designing, coding, analyzing, and modifying both linear and asynchronous systems. Fluent in low-level concepts such as interrupt handing on “bare metal” systems, highly fluent in POSIX® (in particular Linux® and FreeBSD®), versatile with most POSIX®/UNIX® systems both in terms of usage and programming. Capable of interacting with both documented and undocumented binary file formats, such as for data recovery or migration purposes.
This is a set of statistics about myself, as pertains to work.
Metric | Value |
---|---|
10-key data entry | 25 keys/sec |
Touch typing | 100 WPM with 99.5% accuracy |
These languages are in alphabetic order.
Language | Experience |
---|---|
Assembly 6502 |
Can read with reference Can write with reference |
Assembly x86, x86-64 |
Can read with reference Can write when necessary |
Assembly ARM |
Can read with reference Can write when necessary |
BASIC (Dartmouth) | More than 25 years |
BASIC (GW/QB/PDS/VB1) | More than 25 years |
BASIC (VB3/4/5/6) | More than 15 years |
BASIC (VB.NET) | More than 5 years |
C | More than 25 years K&R, C89, C99, C11, and C19 and GNU extensions |
C++ | More than 15 years C++11, C++14 and GNU extensions |
C# | More than 10 years .NET 2/3/4 |
GNU bash | More than 20 years Versions 2–5 |
Go | Less than one year |
HTML | More than 20 years 3.2/4/5 |
Java | Approximately 5 years 1.6/1.7/1.8 |
JavaScript | More than 20 years Pre-standard through ECMAScript 6 |
Lua | More than 10 years Lua 5.2 and earlier |
Pascal | More than 5 years Borland |
Object Pascal | More than 10 years FPC, Lazarus |
PHP | More than 15 years Versions 4–7 |
POSIX sh | More than 20 years POSIX-1 2001 |
Python 2 | Approximately 20 years (Since initial release) |
Python 3 | More than 10 years (Since initial release) |
Rust | Less than one year |
SQL | More than 20 years Several dialects incl. MySQL/PostgreSQL/SQLite |
XHTML | Approximately 5 years 1.0/1.1 (Strict and Transitional) |
Again, in alphabetic order.
Name | Description | Experience |
---|---|---|
2D Graphics | Writing 2D raster and vector graphics code. | More than 10 years |
3D Graphics | Writing 3D vector graphics code (shaders, etc.) | Virtually none |
3D Modeling | Creating and manipulating 3D models in e.g., Blender | Less than 6 months |
Artificial Intelligence | The study and employment of machine learning. | Less than 6 months |
Asynchronous Programming | Writing code that is reentrant and event-driven. | More than 20 years |
Audio | Writing code to capture, play, process, and/or synthesize audio. | More than 5 years |
Bare-metal | Writing code intended to execute without, or as, the operating system. | More than 20 years |
BSD Sockets | Writing network code which uses the BSD sockets API (and modern extensions). Includes UNIX, IPv4, and IPv6 as well as TCP and UDP. | More than 20 years |
Business Objects | Records and record processing, including batch | More than 15 years |
Cryptocurrency | Bitcoin, Etherum, Monero, etc. | More than 10 years |
Database (Flat) | Including CSV, DBF | More than 25 years |
Database (KVP) | Including dbm |
More than 25 years |
Database (RDBMS) | Including SQL | More than 20 years |
Domain Specific Languages | Code implementing interpreters or compilers for a language suited for a single purpose. | More than 10 years |
DSP | Writing code which takes a digital signal as input, analyzes it, and returns some result (such as “here are the frequencies present”). | Less than 6 months |
Finite State Machines | Machines which have fixed inputs, transitions, and outputs. | More than 15 years |
High-availability | Writing code intended to function in the face of multiple failures | More than 10 years |
High-security | Writing code intended for high-security environments, where compromise would lead to unacceptable property or life loss | More than 10 years |
Legacy UNIX® | Legacy tools (lpr , join , cut , etc.) |
More than 25 years |
MS-DOS® | Writing code intended to execute under MS-DOS® and compatible operating systems, both in real and protected modes. Includes writing device drivers. | More than 20 years |
Neural Networks | Systems of artificial “neurons” which are trained to respond to particular types of input | Less than one year |
POSIX®/UNIX® | Writing code intended to run on POSIX®-compliant operating systems, including UNIX® systems. Includes non-certified workalike systems, including Linux® and FreeBSD®. | More than 20 years |
Windows NT® | Writing code intended to execute under Windows NT® and compatible (and later. | Approximately 2 years |
Once more, in alphabetic order.
Name | Description | Experience |
---|---|---|
bzip2 | Compression I/O library | More than 10 years |
Cairo | 2D vector graphics library (on-screen and PDF) | More than 10 years |
clang | C and C++ compilers, part of the LLVM project | More than 5 years |
FreeDOS | A free-software clone of MS-DOS | Since release |
GCC | GNU compiler suite (includes C, C++, and more) | More than 25 years |
GLib | An object-oriented portability framework for C programs. | More than 20 years |
libalsa | Linux® native sound API (and what a pain!) | More than 20 years |
libc | Standard C library (DJGPP, glibc, MUSL, MSVCRT, and newlib) | More than 20 years |
libinput | Low-level input device handling library for Linux® | More than 5 years |
Linux | Since before Linux 2.0 | More than 25 years |
OpenSSL | SSL/TLS I/O library | More than 10 years |
OpenWatcom | 16-/32-bit DOS, OS/2, and Microsoft Windows compiler | More than 5 years |
PulseAudio | Sound server and API | Since release |
QB64 | Modern QuickBASIC-compatible compiler (with extensions) | More than 10 years |
ReactOS | Open-source replacement for Microsoft Windows | More than 10 years |
Samba 2 & 3 | NT4 domain client/server for POSIX® systems | Since release |
Samba 4 | Active Directory implementation for POSIX® systems | Since release |
systemd | Modern system management suite | Since release |
WINE | Executes MS-DOS and 16-/32-/64-bit Windows programs | More than 20 years |
zlib | Compression I/O library | More than 20 years |
This is a list of protocols with which I am familiar enough to reason about. As a point of note, I can generally learn any new protocol in as long as it takes to read the RFC document(s) which define it, plus a little time to study or experiment with it (depending on whether it is a new or existing protocol).
Name | Description |
---|---|
CGI | Common Gateway Interface, a protocol for interfacing between Web servers and the standard I/O of a program which provides a service. |
DHCP | Dynamic Host Configuration Protocol (both v4 and v6). |
DNS | The Domain Name System protocol, which currently powers name resolution for most of the Internet. |
FTP | File Transfer Protocol. An older method for moving data around the Internet; superceded by more modern methods. |
IP | Both IPv4 and IPv6, including routing protocols and multicast. |
HTTP | Hypertext Transfer Protocol, used for most of the traffic carried by the Web. |
IMAPv4 | An access protocol for electronic mail. |
IRC | Internet Relay Chat, an older protocol used for communications on the Internet. |
MIDI | Protocol used for the automated control of instruments, including synthesizers. |
NNTP | The protocol powering Usenet (“netnews”). |
POP3 | The Post Office Protocol (v3). A formerly popular method for accessing electronic mail messages, largely replaced by IMAPv4 and Web mail access. |
SCGI | A more modern replacement for CGI, using netstring. Limited to a single request per connection. |
SIP | A protocol most commonly used for VoIP call control functions, although it has other uses as well. |
SMTP | The protocol used to relay an electronic mail message to its destination. |
SSH2 | Secure session protocol providing a multiplexed connection to a host system, allows for the management of remote processes and terminals as well as remote filesystem operations. |
TCP | The protocol which provides a virtual digital bidirectional communications channel for most network applications. |
Telnet | An older protocol for remote terminal sessions over the network. Generally superceded by SSH. |
TLS | Transport Layer Security (also incorrectly known as SSL). Provides encryption and authentication services. |
To be completely honest, I know more file formats than I can list here, and I have likely forgotten even more than I know right now. File formats are rather easy for me to grasp and work with, even when they try to do clever things like use variable-length integer encodings (the Bitcoin blockchain and compatibles) or have broken or missing indexes.
This also makes data recovery easier for me, as I can easily work around what’s missing once I understand the context around it.