Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Contact

Profession: Software Engineer
Location: South Portland, ME, USA
Email:
Github: https://github.com/dcampbell24/
LinkedIn: David Campbell
Mastodon: @dlc

This is basic information about me and the social media websites I take part in. If you want to get in touch with me, you are best off sending me an email.

DLC Headshot

Resume

Objective

Research and build systems that improve quality of life, create community, and sustain themselves. Do so acting as a software engineer, writer, organizer, and leader.

Computer Skills

Used Professionally: Bash, fish, JavaScript, PHP, Python
Learned Independently: C, Clojure, Fortran, Julia, LISP, OCaml, Rust
Software: Apache, ArcGIS, Discourse, Git, LaTeX, MySQL, PostgreSQL, Visual Studio Code
Operating Systems: Windows, OSX, Linux: Arch, Ubuntu, Debian

Experience

Business Process Developer – Stone Coast Fund Services, Portland, ME Nov 2017-Dec 2021

  • Translated client requirements into functional application features
  • Created prototypes of applications
  • Used graphical software in application creation
  • Performed testing of applications after completing them

Software Engineer – CashStar Inc., Portland, ME May 2015-Jan 2017

  • Learned company needs and icreased revenue by setting up customers with many company products
  • Reduced setup times and offloaded engineer work by creating GUIs and configuration endpoints
  • Wrote system documentation to reduce training time for new hires

Developer – Photoshelter Inc., New York, NY Jan 2013-May 2014

  • Improved clients’ SEO by fixing longstanding sitemap generation and submission issues
  • Uncovered several bugs and improved site reliability with HHVM static analysis
  • Increasded scalability, reduced time and latency of image exports
  • Added real time image export reporting to reduce issue resolution time
  • Extended and improved handling of image meta-data for better page displays
  • Improved seller experience with Stripe Connect integration

Student – Recurse Center, New York, NY Summer 2012

Volunteer – Poverty’s Demise, Brooklyn, N July-Nov. 2009

  • Setup and maintained hardware, webserver (LAMP), Drupal installations
  • Copyedited business reports, public correspondance, technical documentation
  • Wrote project development plan, press material, internal documentation, reports

Indepedent Projects – Various Locations 2009-Present

Education

Graduate Studies – Computer Science, GPA: 3.41, 30 credits Spring 2010-Spring 2013

CUNY Brooklyn College, Brooklyn, NY

Bachelor of Arts – Liberal Studies, GPA: 3.15 May 2009

University of New Haven, West Haven, CT
John Collinson Philosophy Award recipient

DLC's Website by David Lawrence Campbell is licensed under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International

Biography

Biography

David is a software engineer passionate about open source software and exploring games, whose passions were sparked by an adventure into the world of Linux and strategic battles with friends over card tables, basement floors, and sidewalks.

He studied Computer Science at Brooklyn College, and has worked as a software engineer at PhotoShelter and CashStar. He also spent a Summer at The Recurse Center.

At PhotoShelter he wrote a script allowing HHVM to be easily used for static analysis of their code base that uncovered several bugs and increased the reliability of their site. His work on Stripe integration simplified the process of setting up seller accounts, and his architectural work reduced the latency and increased the scale at which images are exported from PhotoShelter.

At CashStar he did system work to onboard new customer companies and updated existing customers to use more CashStar offerings. Then he used that knowledge to build graphical tools automating the process and enabling technical account managers to do the work engineers had been doing.

Previously, he participated in the Annual Computer Poker Competition, wrote Texas Hold’em AI, and contributed to projects including Arch Linux, PyParted, Rust, and Julia. For more information about these projects see projects.

More recently, he has been contributing to the user applications in Redox OS, writing financial tracking software, and writing Hnefatafl AI, client, engine, and server1. For more information about these projects see projects.

DLC's Website by David Lawrence Campbell is licensed under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International

Projects

Projects

Hnefatafl 1 2

This is David’s current hobby. He built AI, an engine, a client, and a server for the game of Copenhagen Hnefatafl. Most of his current efforts are on the client and server. It supports ranking players, timed and un-timed games, 11x11 and 13x13 sized boards, sound, and a bunch of other features. The client is built using the iced framework and has been packaged for Windows, Linux, Android, and Redox. It also runs on MacOS and theoretically any platform supported by iced and Rust.

Financial Accounts 3

We all have finances and they are often in a bunch of different systems. Why not build a tool to track everything? Well that’s exactly what David Did. This tool tracks and gets updates from cypto-currencies, metals, Investor 360 and custom financial institutions.

Cubes 4 (Bash, C, Fortran, Go, Julia, Python, Rust, Tcl)

One day David was at his uncle’s house spending time with relatives and his uncle brought out some puzzles for everyone to play with. The puzzles consisted of a collection of polycubes which fit together to form 3x3x3 cubes.

While struggling to solve the puzzles by hand he quipped, “I bet a computer could do this in no time at all”, and so he decided he should get a computer to solve them for him.

Since writing the models of the pieces by hand that the program needs as input is tedious and error prone, he wrote a GUI program to create the models with. He also created a program to display what the solution looks like.

He discovered that, although, in general the space packing problem is hard to solve, it can be done very quickly for such a small region if some tricks are used to reduce the search space.

Important optimizations include caching previous calculations from the search, not looking at rotations of the first piece, trying to place the pieces from hardest to easiest, and using flood fill to find regions that can’t possibly be filled.

Julia Benchmarks 5 (Julia)

Julia is a language for doing scientific computing so it is important that Julia is fast. David wrote several of the benchmarks game benchmarks to show how Julia compares with other languages and to help prevent performance regressions.

DLC's Website by David Lawrence Campbell is licensed under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International