Michael Truog
Verified Expert in Engineering
Erlang Developer
Seattle, WA, United States
Toptal member since April 4, 2016
Michael is a top architect, engineer, developer, and entrepreneur with a proven ability to develop efficient, scalable, and fault-tolerant server solutions for complex problems. He has extensive experience and skills with all levels of software and architecture.
Portfolio
Experience
- Distributed Systems - 18 years
- Linux - 18 years
- C++ - 18 years
- Python - 15 years
- Erlang - 12 years
- OCaml - 4 years
- Go - 4 years
- Rust - 1 year
Availability
Preferred Environment
C++, C, Python, Rust, Go, Linux, Git, Cloud, Java
The most amazing...
...software I've developed is CloudI, an implementation of cloud functionality for polyglot programming written in Erlang and C++.
Work Experience
Founder
Nd FORGE
- Developed reliable distributed systems with a variety of different clients.
- Developed and maintained cloud technology as open-source R&D.
- Improved software to avoid future failure due to either human or technical errors.
Senior Software Engineer
NDT Solutions LLC
- Created source code for the stable operation of the C++/Qt graphical client. Fixed critical threading concurrency bugs to ensure end-to-end operation was possible. Identified and fixed memory consumption bugs.
- Improved the test and debug process to pursue a more stable development in the future. Dependable debugger use for concurrency problems was communicated and used. Pursued the usage of unit, integration, and regression testing.
- Streamlined a build process to ensure a repeatable build was possible after creating scripts that specified versioned dependencies.
Senior Software Engineer
VDX.tv
- Contributed to the Java JNI C integration with safe C fiber thread pool use and Java GC. Created efficient interfaces for IP database use, messaging, and JSON encoding/decoding with regression tests to verify correct reference counting.
- Replaced the libev C file descriptor event loop with more efficient level-triggered use of Epoll and Kqueue while adding FreeBSD support. Identified additional performance improvements for future C source code changes.
- Created cross-platform load-test results with a comparison to Nginx to justify C source code changes.
- Developed SWIG interface files for automating the generation of Java POJOs from C source code structs.
Senior Software Engineer
Amazon Web Services (AWS)
- Provided critical fix information for Babelfish for Aurora PostgreSQL functionality in preparation for its public release.
- Added Babelfish (SQL Server) client functionality to github.com/dbeaver/dbeaver.
- Identified several Babelfish for Aurora PostgreSQL pre-release bugs.
Senior Software Engineer
VDX.tv
- Created a distributed file cache for efficient, reliable concurrent atomic read, write, and delete access to any files with hierarchical redundancy. It included Solaris and Linux utilities for file cache tar/mv/rm/ln/touch/bootstrap-exec.
- Created an HTTP and HTTPS JSON OpenRTB router with include and exclude filter rules and dynamic configuration.
- Created a coroutine implementation using setjmp/longjmp to use the existing fiber implementation.
- Reduced fiber stack memory consumption, improved fiber reliability and efficiency, and fixed memory leaks.
Senior Software Engineer
AT&T
- Developed a Python automation API for reliable broadcast media pipeline modifications using Ansible and Terraform. Used the API automated tasks to complete processing within minutes that had previously taken months.
- Fixed a critical concurrency bug in the automation API that prevented the previous operation from being dependable due to the required use of global data and resources.
- Improved an internal media crawler by making its operation more dependable and less error-prone for unstructured JSON data processing. Fixed Nomad cron format usage for dependable job execution.
Senior Software Engineer
Exponential
- Eliminated more than ten memory leaks in the core source code library and fixed race conditions related to the memory leak checker's fiber use.
- Added JSON integration into more than 20 modules for runtime-type introspection to aid debugging.
- Added a concurrent module initialization system to clearly specify server initialization dependencies and avoid initialization-related errors.
- Added a minimal testing framework with backtraces using macros for simple reuse. Used the testing framework to verify two algorithms and migrate all use to the newer algorithm.
- Developed ad serving C source code for efficient real-time production use with a very specific style guide.
Senior Software Engineer
Samvia
- Did all back-end server development of the Timeshake iOS app for real-time presence matchmaking with voice communication.
- Created a matchmaking test for iOS client and regression tests and managed the dev/beta operations tasks.
- Added monitoring (Graphite, OpenTSDB, SNMP, StatsD) integration to CloudI.
Senior Software Engineer
Adroll
- Created a global deploy-and-rollback system for weekly production deployments of real-time bidding (RTB) servers.
- Used Python, Erlang, and Bash development with AWS and EC2 to create a dependable workflow for releasing source code.
- Automated a complex release process that would previously take more than eight hours when done manually.
Senior Software Engineer
Ubiquiti Networks
- Developed CloudI source code and provided CloudI integration support.
- Created CloudI API implementations in JavaScript, Perl, and PHP.
- Added CloudI services for Riak and OAuth v1 integration.
- Extended HTTP cowboy integration with WebSocket-related features and multipart handling.
Senior Software Engineer
Voalte
- Developed database integration and schema based on legacy system limitations.
- Created an authentication server with database objects using BossDB (from Chicago Boss).
- Used PostgreSQL to create a fourth normal form schema with Async presence notifications.
Senior Software Engineer
Jana
- Created a reusable, scalable back-end server for coordinating surveys and sweepstakes for mobile phone users within emerging markets for http://mcent.com.
- Developed the core database interfaces for CouchDB data and back-end service APIs.
- Used Python threads, Gunicorn, Eventlet, and Tornado to create reusable software that grew as required without any rewrites. Created the core business logic for the administration interface, surveys, sweepstakes, and authentication.
- Created an automated regression and integration testing framework and load-tested with Tsung.
Senior Software Engineer
SiXiTS
- Developed a Scala-based MMOG server. The server was used for the Facebook and Android game "Babies Everywhere."
- Created a quest system (known as Activities) with extensive usage of MongoDB.
- Created the item state machine representation used for all stateful in-game items.
Principal IT Architect
E*Trade
- Developed a C and Erlang server to replace installations of Oracle Tuxedo.
- Improved scalability by eliminating global state and added robust timeout and error handling.
- Utilized OTP behaviors and best practices in development to create a minimal amount of easy source code to maintain.
Senior Software Engineer
Nokia
- Created an integration-testing framework for validating two separate XMPP servers to determine compatibility problems.
- Developed Erlang XMPP server code to provide features found in a legacy XMPP server. Modifications made the transition transparent for legacy clients by ensuring protocol compatibility.
- Modified an Erlang Distributed Hash Table (DHT) implementation to provide fault-tolerant key timeouts for both the Java and Erlang API.
Co-founder
PortfolioWatcher, LLC
- Created an internet startup with a private investor to provide an investment tracking service using rule-based email alerts.
- Used PHP, Perl, and MySQL to create automated portfolio management.
- Developed a stock comparison program using Python, Qt, Qwt, Curl, and SQLite for financial and technical analysis, acting as a subscriber to free daily financial price quotes over HTTP.
- Created PreferredSearch, an open-source Python web scraper that utilized Qt, SQLite, PyParsing, Libcurl, Psyco, and Py2exe to show preferred stock yield and price data after processing information from both QuantumOnline.com and Yahoo.com.
- PreferredSearch required only minimal maintenance after its creation for more than 10 years (2005-09-22 until 2017-11-01) to provide reliable operation to any investor.
Senior Software Engineer
Sony Pictures Imageworks
- Developed bug fixes and features for an image and movie viewer using C++, Python, and Boost. The viewer has remote syncing capabilities as a server or client and subscribes to digital asset information through SOAP RPC.
- Modified the viewer to allow different resolutions and media types for remote sessions. The viewer is used throughout the pipeline in India and Los Angeles, from animators to directors.
- Added annotation features that improved various parts of the pipeline.
- Added audio and video sync calibration feature that solved longstanding lip-sync problems.
- Created a reusable, cross-platform point placement tool for manually manipulating motion capture data, successfully delivered within four days of request on both Linux and Windows using Python, PIL, and Py2exe.
- Created a testing framework for cut list generation to ensure data integrity with regression testing.
- Maintained various C++ libraries, adding bug fixes for 64-bit compilation, media formats, and business logic.
Platform and Server Core Software Engineer
Perpetual Entertainment
- Led the development of the C++ platform middleware (PEPSDK). Coordinated many features and made protocol additions by making the necessary changes within the PEPSDK, game server, and client.
- Developed the PepPublisher, a game server process used to report game content and persistence data to the platform for real-time updates of a player's progress within the online game.
- Fixed many elusive multi-threading and distributed race conditions and deadlocks within the game server and PEPSDK to improve game server stability.
- Created a socket connection thread pool that enforced a real-time quality of service with limited memory consumption for efficient XMPP chat communication. Designed to be protocol agnostic.
- Created a distributed integration-testing framework for the game server and client functionality.
- Added localization to PEPSDK API and data structures, including Regex functionality.
Software Engineer
Signature Research, Inc.
- Developed a physics-based global illumination renderer and ray tracer for army test and evaluation programs. Included three distributed systems that were cross-platform and multi-threaded, developed with C++, Boost, MPI, Pthreads, and UML.
- Increased the efficiency of RenderView, a Windows physics-based ray tracer written in Visual C++, by at least ten times after researching, implementing, and testing a spatial partitioning algorithm.
- Converted a legacy physics-based global illumination renderer written for an SGI with IRIS GL and Fortran 77 to Linux with OpenGL and C. Exceeded previous polygon limitations approximately six times faster when using hardware acceleration.
- Improved PRIMUS, a Visual C++ Windows OpenGL 3D model viewer and conversion tool that aided in-house integration of two physics-based thermal signature prediction programs.
Experience
CloudI: A Cloud at the Lowest Level
https://cloudi.orgThe bare essentials for efficient fault-tolerant processing on a Cloud!
Primitive Erlang Security Tool (PEST)
https://github.com/okeuday/pestCloudI HtmlUnit Service
https://github.com/CloudI/cloudi_service_htmlunitEducation
Bachelor's Degree in Computer Science
Michigan Technological University - Houghton, MI, USA
Certifications
Spring Framework Master Class – Java Spring the Modern Way
Udemy
Scala and Spark for Big Data and Machine Learning
Udemy
Artificial Intelligence A-Z: Learn How To Build An AI
Udemy
Machine Learning A-Z: Hands-On Python and R In Data Science
Udemy
Skills
Libraries/APIs
REST APIs, Node.js, Log4cpp, CppUnit, Qwt, Pyparse, Libcurl, OpenGL, PyQt, PIL, Java Message Service (JMS), MPI, Spark ML, HDF5
Tools
Git, pylint, Cloud Dataflow, Jira, Apache Tomcat, Tsung, GNU Debugger (GDB), Amazon Simple Notification Service (SNS), CMake, Ansible, Terraform, Elastic, NGINX, Apache, SWIG, Apache Maven, Gradle
Languages
Erlang (OTP), Go, SQL, C++, C, Python, Java, Erlang, Python 3, JavaScript, OCaml, Bash, HTML, C++11, C++14, UML, Objective-C, Perl, Haskell, Scala, PHP, R, C++17, Rust, Fortran
Paradigms
Concurrent Programming, Socket Programming, Design Patterns, Microservices, REST, API/Services Architecture, Functional Programming, Object-oriented Programming (OOP), Service-oriented Architecture (SOA), Microservices Architecture, Unit Testing, Object-oriented Analysis & Design (OOAD), Database Design, Mobile Development, Continuous Integration (CI)
Platforms
OTP, Linux, Solaris, Amazon Web Services (AWS), Docker, Amazon EC2, Mobile, FreeBSD
Storage
PostgreSQL, NoSQL, Databases, Relational Databases, Amazon DynamoDB, Data Pipelines, JSON, MongoDB, MySQL, SQLite, CouchDB, Elasticsearch, Microsoft SQL Server, DB, Amazon Aurora, Spring Data JPA, Spring Data
Industry Expertise
Trading Systems
Frameworks
Apache Struts 2, Qt, Boost, Realtime, CloudI, Spark, Flask, HtmlUnit, JNI, Spring, Spring Boot, JPA, JUnit, Mockito, Spring AOP, Spring MVC
Other
Distributed Systems, CTO, Cloud Computing, Cloud, Cloud Engineering, Cloud Security, Server Security, Multithreading, Concurrency, Concurrent Computing, APIs, Software Engineering, Back-end, Software Architecture, Architecture, Message Queues, Low-level Programming, WebSockets, Web Scraping, Integration Tools, Software Implementation, Software Integration, Data Scraping, Algorithms, Code Review, Large Scale Distributed Systems, Machine Learning, Big Data, Oracle Solaris, Distributed Caches, Technical Leadership, Leadership, Decentralized Systems, Database Schema Design, Startups, Data Science, Boost.Asio, Ejabberd, Py2exe, XMPP, Gunicorn, Eventlet, Tornado, APNs, MessagePack, Artificial Intelligence (AI), Nomad, Real-time Bidding (RTB), OpenRTB, HAProxy, Social Media Apps, Data Structures, Java Native Interface (JNI), Robotics, Spring Web Services, Abstract Syntax Trees (AST)
How to Work with Toptal
Toptal matches you directly with global industry experts from our network in hours—not weeks or months.
Share your needs
Choose your talent
Start your risk-free talent trial
Top talent is in high demand.
Start hiring