Photo of Douglas Johnson

Douglas Johnson

Systems programmer & software engineer

Idaho Falls, Idaho · me@dougvj.me · github.com/dougvj · linkedin.com/in/dougvj · bonnevilleinformatics.com

Systems programmer and software engineer with over a decade of professional experience spanning Linux kernel development, embedded systems, FPGA design, backend development, database management, and networking. Lead developer at Subsurface Insights and owner of Bonneville Informatics. Studied Computer Science and Computer Engineering at Utah State University.

Experience

Lead Developer Subsurface Insights

2013 – present
  • Developed FT260 UART Linux driver for component communication
  • Designed and developed FPGA-based ADC buffer and associated Linux driver
  • Developed low-level ADC drivers under Linux with near-realtime constraints
  • Built IoT device management infrastructure
  • Developed database query APIs for subsurface data analysis
  • Backend and infrastructure development for scientific data processing and management
  • Cloud engineering and DevOps
  • Frontend work (React, TypeScript)

Owner Bonneville Informatics

2015 – present
  • Small business server and software support company providing custom solutions for virtual offices and remote desktops

Software Engineering Intern Sky Research

2011 – 2013
  • Developed software for data workflows and scientific computing
  • Built frontend and backend for a data management site

Full-time Volunteer Brazil

2009 – 2011
  • Two years of full-time volunteer service; became fluent in Portuguese

Intern Idaho National Laboratory

2008 – 2009
  • Wrote C++ application infrastructure for an embedded robotic platform

Projects

mybios
From-scratch x86 BIOS implementation for legacy 386/486 hardware, with reverse-engineered chipset support
retros
OS kernel for retro x86 hardware
NES
Cycle-accurate NES emulator
dsrisc
Custom 32-bit RISC CPU architecture with assembler, emulator, and interactive debugger. My computer architecture talk for the Idaho Falls Programmers group runs as a program on the emulator: run it in your browser.
icebreaker-uart-video
FPGA UART to DVI/HDMI video display for the iCEBreaker board (Verilog)
raytracer
Multithreaded CPU ray tracer with SDL2 preview and Monte Carlo path tracing
md-linear
Revival of the deprecated and removed md-linear Linux kernel module; cited on the linux-raid list as a reason to revert the removal
m68k-tools-bootstrap
Builds QEMU for m68k, m68k GCC and LLVM toolchains, and the m68k Linux kernel
kvmap / concurrent_kvmap
Generic and lockless concurrent key/value hashmaps in C
phmap
Minimally perfect hash map in C
sirtet
Tetris clone built to learn shader programming

Also: refcnt, embed, rust-telnetd, gotek_util, udp-eth-tunnel

Skills

Languages
C (modern standards, RAII patterns), C++, Python, Rust, Go, Verilog, Java, Assembly (x86, ARM, RISC-V, m68k), Shell, PHP
Systems
Linux kernel development (FT260 UART driver, MD RAID bug discovery and patch, Intel Baytrail SoC errata patch), POSIX APIs, GNU toolchains, cross-compilation, OS development
Hardware
FPGA design (Verilog), real-time ADC driver, firmware development, embedded systems, sensor integration
Networking
Sockets programming (epoll), TCP/IP, WireGuard, NAT/routing, IPv6, embedded HTTP, TLS
GPU
OpenGL, OpenCL, CUDA, Vulkan
Infrastructure
AWS (EC2, S3), KVM/QEMU, NGINX, Apache, PostgreSQL, MySQL, Docker, Ollama, vLLM
Build / CI
Meson, Cargo, Git, GitLab CI/CD
Scientific
NumPy, pandas, ODMX, libhdf5
Testing
pytest, Meson test suites
Frontend
React, TypeScript
Other
Reverse engineering, retro computing hardware and software
Spoken
English (native), Portuguese (fluent)

Education

Awards & Leadership

Interests

Systems programming, retro computing, emulation, hardware design (FPGAs, simple PCBs), geology, philosophy, music, running (completed a marathon in 2025), biking, hiking, and two dachshunds, Denali and Tut.