Skip to content
View B8Z's full-sized avatar

Block or report B8Z

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Content in all repositories owned by your account will be closed.
Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
B8Z/README.md
Adam Bates — I build services, device interfaces, and the tools to verify them. Distributed systems, physical devices, and applied optimization.

I’m Adam Bates, a Senior Software Engineer. I work across distributed services, physical-device interfaces, and the tools that make their behavior easier to test and understand.

At JPMorgan Chase, I implemented Kafka messaging for a Java/Spring Boot trade-routing platform. At Capital One, I built customer-facing ATM interfaces, led the interface modernization team, and developed Python/Playwright automation to check behavior and visual changes on QA hardware. Earlier, I built Python NLP services at Width.ai. My graduate research connects this work to applied optimization under capacity and delay constraints.

Much of my professional work lives in proprietary employer repositories. These independent projects let me show the decisions, tests, and experiments behind my engineering without publishing employer systems.

Two ways to inspect my work

Project Start here What to look for
Device Recovery Lab Break communication, inspect recovery → Durable worker ownership, externally injected faults, actual process crashes, and matched concurrency experiments.
Placement Tradeoffs Explore recorded experiments → How I define constraints, compare algorithms fairly, and explain when a simpler method is enough.

Both browser viewers show recorded output from real local runs. Each repository also starts with python run.py for live experiments, without a cloud account or runtime package installation.

01 / Device Recovery Lab

The door opened. The reply didn’t.

The door opened, but its reply was lost. A captured simulator run shows one physical action while the service remains uncertain; guided recovery checks the controller evidence.

I built a parcel-locker simulator with separate service and device processes, durable journals, and a visible event timeline. Introduce duplicate delivery, lose a completion response, or disconnect the device and restore its link. The recovery controller queries the execution journal before deciding to resend. The illustration follows captured observations; the local lab runs the processes.

Then I remove the assumption that makes reconciliation possible: terminate the actual controller process before or after a pulse, while completion is still unrecorded. Both restarted journals report the same uncertainty. One locker has acted; the other has not. The service preserves that uncertainty and requires inspection because retrying would risk repeating a completed action.

I also compare one and four recovery workers under identical queued workloads, with faults injected by a separate HTTP proxy. Durable claims prevent stale workers from overwriting newer decisions. The tests kill the service during an outstanding response and reject a deliberately broken worker that claims success without completion evidence.

In the recorded experiment, all 864 measured operations passed the recorded invariants. Four workers reduced the typical completion time, but one mixed-fault batch was slower with four. I keep that exception visible because the experiment supports a conditional result, not a universal speedup.

Inspect: expected behavior · recovery controller · process-crash tests · worker ownership tests · matched workloads and the slower run

The diagnostic device panel can see behind a broken link; the service cannot use that panel as completion evidence. These are synthetic correctness experiments; they do not establish exactly-once physical execution or power-loss safety.

02 / Placement Tradeoffs

A placement can be feasible and still block a better combination.

Actual solver output: greedy scores 23 while genetic search and exhaustive enumeration reach 27 under tight deadlines. The placement map shows capacity use and the search trace.

I compare greedy placement, seeded genetic search, and an exhaustive reference on the same small model. Change capacity, deadlines, or cost, then inspect the admitted requests, rejected requests, capacity use, and objective gap.

In the recorded experiment, greedy reaches the optimum in three configurations. Under tighter deadlines it scores 23 against an optimum of 27; genetic search reaches 27 in the five tested seeds. I retain the inputs, timings, variability and source revision so the tradeoff can be checked rather than generalized from a headline.

Inspect: model contract · three solvers · hand-solved correctness checks

This is a new October 2026 implementation. My 2022 master’s thesis at Christopher Newport University addressed a richer VNF-placement problem with Python, NumPy, NetworkX and a Gurobi MILP comparison. I keep the historical research and current experiments separate: read my thesis note.

How I use tools and evidence

I use AI assistance in these projects. The useful part is what I can verify: an explicit behavior contract, a small reproducible case, and results that retain their workload and measurement conditions. A passing test supports the behavior it exercised; a simulation result stays a simulation result.

LinkedIn · Recovery lab · Placement experiment

Popular repositories Loading

  1. 327_proj1_make 327_proj1_make Public

    Forked from CNUClasses/327_proj1_make

    327 project 1, C++ and make introduction

    C++

  2. 327_project2_starter 327_project2_starter Public

    Forked from CNUClasses/327_project2_starter

    C++

  3. Library_Vector_starter Library_Vector_starter Public

    Forked from CNUClasses/Library_Vector_starter

    Project 3 skeleton code

    C++

  4. 327_proj3_test 327_proj3_test Public

    Forked from madalynlmillen/327_proj3_test

    C++

  5. 327_proj3_stringparser 327_proj3_stringparser Public

    Forked from madalynlmillen/327_proj3_stringparser

    Makefile

  6. 327_proj3_fileIO 327_proj3_fileIO Public

    Forked from madalynlmillen/327_proj3_fileIO

    Makefile