Welcome to my home page. My name is Bart and I'm an electrical engineer by education presently working as a quant developer on an algorithmic options trading desk. In my spare time, I enjoy writing software (especially emulators and games), investing, paleontology, and hiking. From time to time, I'll be adding some of my work here.

Software


HoloLens

Most of my free time these days is spent playing with Microsoft's amazing HoloLens. I've had mine since June 28, 2016. I'm an active member of the NYC HoloLens Developers Meetup and try to attend all the events. Stop by and say 'hi'! At the moment, I'm still learning the platform using Unity. At some point, I hope to be generating enough useful code and demonstrations to add some sort of regularly-updated news feed to this page. For now, check back from time to time or follow me on YouTube for the latest progress.

A demo of my HoloLens work. This was presented at two meetups in New York City in November 2016.

Meetup Presentations

Supermodel

Supermodel emulates Sega's Model 3 arcade platform, allowing a number of groundbreaking 3D arcade classics to be played on Windows, Linux, and Mac OS. Model 3 made its debut in 1996 with Virtua Fighter 3 and Scud Race and boasted the most powerful 3D gaming hardware of the era. Developed by Real3D, with a heritage reaching back to some of the earliest 3D flight simulators, Model 3 featured capabilities such as hardware transform and lighting that would not appear in consumer GPUs for several years.

Popular games running in Supermodel. From left to right: Virtua Fighter 3, Scud Race, and Star Wars Trilogy.

This project began its life way back in 2003 as a collaboration between Ville Linde, Stefano Teso, and myself. We reversed engineered the system from scratch using little more than ROM images and produced a functional but incomplete and largely unplayable emulator. The project eventually lost momentum, I went off to grad school, and Ville ported it to MAME. In late 2010, I decided to rewrite it from scratch and get it to a playable state. The first version of Supermodel was released on April 1, 2011.

Supermodel is written in C++ and uses OpenGL and SDL. On Windows, it supports force feedback and XBox 360 controllers.

libmodel3

Recently, I successfully booted up what is probably the first new code written for Model 3 in 17 years -- and certainly the first-ever written by someone outside of Sega and Real3D -- on an actual board. Originally purchased to help reverse engineer Model 3, my Virtua Fighter 3 board ended up gathering dust for years until December 2015 when I found myself home for the holidays and resolved to finally put it to use. You can read a more complete discussion here.

libmodel3 is written in C and PowerPC assembly language. Running code on an undocumented bare-metal board without the aid of any official firmware turned out to be more tricky than expected and I only got as far as displaying text using the 2D tile generator chip. To compile the code, you will need a powerpc-603e-eabi gcc cross-compiler and newlib. I built my own toolchain on Windows and would be happy to upload it. To program the ancient 27C4002 EPROMs, I used the MiniPro TL866 device programmer and a surplused UV eraser I found on eBay.

My Model 3 workspace and Virtua Fighter 3 board running the libmodel3 test program.

Really Old Stuff

I've been programming since elementary school. In high school, I learned assembly language and C, and explored a broad spectrum of topics ranging from firmware-level code to 3D graphics. Although I was fairly prolific, I produced few complete programs worth releasing (apart from a Sega Genesis emulator for DOS) because I always felt there was something new to learn about. Below are just a few of the more esoteric programs from that era lurking in my backup storage. Good luck trying to compile any of these!

  • 2D BSP trees (C, x86 assembly): a Win32 application to draw 2D maps and compile them into BSP trees, and a DOS-based 3D renderer to explore them.
  • 3D BSP trees (C, x86 assembly): a 3D BSP tree compiler and software 3D renderer.
  • Motorola 68K debugger for Sega Saturn (C, SH-2 and 68K assembly): an interactive debugger with support for single-stepping, breakpoints, setting registers, etc. The interface ran on DOS. Code was uploaded to the Saturn's audio co-processor using a Pro Action Replay catridge connected by cable to a special ISA card in the PC. I'm impressed with my younger self. If you're wondering whether I went to prom, the answer is 'no.'
  • Bitmapped graphics demo for Sega Saturn (C, SH-2 assembly): displays an 8bpp image on the Saturn using its video processor. Requires the same hardware setup as my 68K debugger. Saturn had impressively powerful 2D capabilities and I intended to write a game before moving on to other projects.

Hardware


BartStation: A Homebrew 8-bit Video Game System

This was one of my senior projects in college. It uses an 8-bit Zilog Z80 CPU and an FPGA for VGA video output. Game code is stored on a flash ROM chip and a Sega Genesis control pad is used for input. I entered it into a regional IEEE competition in 2006 and won!

The BartStation and me at an IEEE Region 6 event in 2006.

Semiconductor Research


My doctoral work involved modeling processes that occur during semiconductor device fabrication. Fabricating integrated circuits or solar cells is like baking a very complicated inedible cake. Materials are patterned in alternating layers atop a substrate (usually silicon). Heat treatments that can range as high as 1400° C are applied to drive materials into the substrate, grow films, repair damage, or control impurities and crystalline defects.

Conducting experiments and then measuring the results is costly and time-consuming. Wouldn't it be nice if physical models could be constructed and simulated on computers? That's the idea behind TCAD. Working with Prof. Scott Dunham at the University of Washington, I developed TCAD models for oxide precipitates and dislocation loops in silicon, two types of defects that can affect both wafer strength and the electrical performance of devices. I am no longer active in this field but you can read my dissertation and a paper on my oxide precipitate model below.