Home Resume
Resume
Cancel

Resume

Please see the pdf for a condensed version.

Introduction

My name is Thomas Bidne, and I am a software engineer with 10 years of professional experience. I have been writing code since I was 14, for both academic and personal reasons.

I write code most days, whether it is paid work, open-source contributions, or just plain experimentation for fun 🙂.

My programming experience is broad. Briefly, I have worked in the following areas:

  • FinTech (with a heavy emphasis on correctness)
  • Web programming:
    • Data processing and visualization
    • Applications modeling complex workflow
    • Personal websites
  • Distributed simulations

This has required extensive usage of the following technologies:

  • Programming languages: Haskell, Java, Java/Typescript, Python, C++.
  • Web frameworks: Angular (JS), Node, React
  • Databases: PostgreSQL, Oracle, SQLite
  • DevOps: Nix, Docker, OpenShift
  • CI/CD: Github Actions, Jenkins, Gitlab

See my Professional Experience for more details.

Education

2009-2013: Bachelor of Science in Computer Science

  • University of Maryland, College Park
  • College Park Scholars Graduate
  • Minor in Astronomy
  • Selected coursework:
    • Software Engineering
    • Networks
    • Algorithms and Data Structures
    • Cryptology
    • Number Theory

Professional Experience

2023 - Present: Independent Contractor

  • Improved outstanding issues in poorly understood Haskell voice analytics software:
    • Added LLM integration with OpenAI, for running natural language queries on audio transcripts.
    • Added documentation, extensive test suites, and Github CI/CD.
    • Refactored code to remove difficult dependencies.
    • Designed, implemented, and demo-ed new features.
    • Fixed long-standing bugs.

2020 - 2023: Platonic.Systems

Senior Software Engineer

For Platonic.Systems I have worked with multiple clients. Below are short descriptions of the work I have done for each, in reverse chronological order.

  • Smart contracts

    Implemented financial systems that come with rigorous guarantees. This includes, for instance, maintaining system invariants e.g. that transactions are “atomic” i.e. either fully-complete or encounter some error. This work has primarily used Haskell and Nix, both with large, open-source projects (i.e. cardano) and custom, private ones.

  • Data Visualization And Machine learning

    This client wanted a website that could make market predictions for their product line, based on sales data and machine learning. I designed and implemented the website, using Python and the dash data visualization framework, per the client’s wishes. I also implemented the DevOps instances with Microsoft Azure.

  • API Correctness Enhancements

    For this project I was tasked with improving the robustness of the client’s software. In particular, the client had applications that communicated through various untyped APIs. This software was fragile in the sense that changes to an API in one place necessitated corresponding changes in another, yet there was nothing to verify the second updates had been made. This led to numerous bug reports and production issues.

    I led a small team that addressed this issue. We did this by porting the mutable portion of the APIs into Haskell. Haskell’s static type system ensured that any changes made to one end of an API must also be accounted for at the other. We were able to integrate this statically typed Haskell code into the client’s javascript codebase via GhcJS, a haskell <-> javascript compiler.

    This project required considerable research on our part due to how niche haskell’s web integration is. Despite those risks, we were able to satisfy the client’s requests, and their systems are more robust as a result.

  • Supply-chain analysis

    For this client I worked on a full-stack Haskell web-application designed for monitoring and analyzing supply-chain risks. I implemented new features, fixed bugs, and improved performance in numerous areas.

2016 - 2020: BridgePhase - USCIS, Washington D.C.

Senior DevSecOps Engineer

Supported the Electronic Immigration System (ELIS) for the U.S. Citizenship and Immigration Services (USCIS). ELIS is a web-application that provides USCIS officers the ability to process cases corresponding to a person applying for a USCIS benefit (e.g. U.S. Citizenship, Permanent Resident).

The frontend is AngularJS and the backend is Java/Spring with an Oracle database. Continuous Integration/Development (CI/CD) utilizes Jenkins.

I maintained several microservices, utilizing:

  • Angular/Typescript
  • PostgreSQL
  • Docker
  • Openshift

Other responsibilities included:

  • Maintaining a Red Hat Enterprise Linux virtual machine for automatic deployment/testing.
  • Participating in multiple “tiger teams” for creating cross-team solutions to specialized problems.
  • Coordinating production deployments and triaging build pipeline issues on a semi-regular basis.

2013 - 2016: GBL Systems - NAS Pax River, Patuxent MD

Software Engineer

Worked on the Next Generation Threat System (NGTS) for the U.S. Navy. NGTS is a real-time distributed simulation, modeling real-world aviation scenarios, primarily written in C++ with Qt. Responsibilities included:

  • Implementing network plugins using protocols such as TCP and UDP.
  • Providing network support for new features (e.g. new planes, radar systems).
  • Integrating NGTS with third party software. This included designing/implementing APIs and traveling to customer sites to provide support.

Opensource Experience

My personal projects are on my github. These projects range from experiments, libraries for public consumption, and applications that I use every day. For a quick overview, see projects.

Futhermore, I have made contributions to the following open-source communities.

Haskell

I have contributed code to several widely used haskell libraries such as:

  • criterion
  • Glasgow Haskell Compiler (GHC)
  • hashable
  • katip
  • liquidhaskell
  • text
  • unliftio

Additionally, I participate in online discussions, such as the ghc-proposals process, where changes to the language (GHC) are discussed.

Nix

I have contributed several packages and bugfixes to nixpkgs, a package manager for the NixOS linux operating system.

Contact

Contents