Hi I'm

Brian Ouellette

I'm a Portland, Oregon area full stack developer interested in programming, technology, cosmology, and game design.
Currently working as a senior frontend dev at Coinbase working on their institutional products primarily with React + Typescript.
Previously I was working at Intel on data warehousing/analytics/visualization and building web apps for use across their global factory network.

Projects

meme dreams

Tools Used

Node
Python
StyleGAN2
Solidity
Truffle
IPFS

I launched a collection of 7800 neural network generated profile pictures issued as NFTs on the Polygon blockchain. The generative adversarial network was trained on hundreds of thousands of other profile picture NFT projects.

I handled everything personally end-to-end including bulk downloading the source imagery, setting up and training the machine learning model, generating the final imagery, metadata generation, IPFS upload, writing the smart contract, and creating the project site.

Game Prototypes

Tools Used

Unity
C#
Cg/HLSL

I'm learning Unity fundamentals and touching on related skills such as 3D modeling and animation by working on prototypes for a few different game ideas. Current prototypes are focused on procedurally generated terrain (using both procedural meshes and various forms of mesh tilesets) and 3D character and camera controllers.

Everything is still very much in flux and not polished enough to publish but throwing things together has been a blast so far and has certainly been sharpening my spatial skills.

Concarneau

Tools Used

Node
Express
Mongo
D3
jQuery
socket.io

I created an open-source online implementation of one of my favorite board games, Carcassone. It is feature complete and includes support for a few expansions beyond the base game. I'm quite happy with how everything turned out. The site has been running stably with >100 users for years now.

As my first project built with Node and Mongo I learned a lot and really appreciate the Node ecosystem for small single-developer projects like this one. It also reinforced my growing love of D3.js. After you really grok the mental model required to use it properly for dynamic updates it makes real-time gamestate updates and animations quite simple and with an expressive code structure.

HHHFreshBotRedux

Tools Used

Node
PostgreSQL
Snoowrap
octokit

I used to find a lot of new hip-hop music through a Reddit bot that would trawl the hip-hop subreddit (r/HipHopHeads) for new music posted there and generate daily and weekly newsletters with everything new. When it stopped working one day I had to start looking through new posts manually for a while but was missing a lot when not checking regularly as Reddit limits fetching recent posts to the past ~3 days. I found a repo with some early source code of the original Python-based bot and after some work trying to get it up and running again decided to reimplement the bot from the ground up.

I didn't end up using any of the original source but replicated the original features of the bot (archiving new posts to a database, daily and weekly newsletters via PM subscription, and posting weekly updates to the subreddit) in a Node project running out of a Heroku instance. After matching the previous behavior I enhanced it to archive all posts to a GitHub repo and built a GitHub Pages site to allow new music to be easily traversed with media embedding, post filtering, infinite scroll, and the ability to hide seen posts.

Cosmological Pursuits

Tools Used

C#
Octave
MathJax

This is a small blog created while self-studying cosmology to provide a place to structure and organize my thoughts whenever I reached a topic complex enough to require it. As part of this I created a software package in .NET to generate color mapped images to visualize spherical harmonics across a range of degrees and orders.

Dojo

Tools Used

Java
Swing

Dojo is an online game client for my favorite (sadly now defunct and sold to new owners) trading card game, Legend of the Five Rings. At the time there were a few Magic specific clients and some generic clients built to use for any type of card game but Legend of the Five Rings includes a lot more rules than most card games with two separate decks and three game areas plus a hand for each player. Dojo implemented all the non-card specific rules specific to Legend of the Five Rings to drastically reduce the amount of user input needed to play a game and supported all the functionality needed to play complete games. It was built out on Java specifically to be cross-platform.

Work

Coinbase

Tools Used

React
Typescript
Ruby
Go

I'm currently working (mostly) remotely for Coinbase as a senior frontend developer as part of their institutional division.

At the moment my work is composed mostly of feature delivery for their Coinbase Prime platform with particular focus on implementing end-to-end staking, governance, and vesting functionality.

Intel

Tools Used

C#
MS MVC
IIS
D3
Oracle

I worked out of Intel's research fab in Hillsboro, Oregon for about a decade. More specifically in the Decision Support Systems group in Logic Technology Development Automation. They are the group responsible for warehousing and analytics on the operational data coming out of the fab.

My work there involved understanding the variety of data domains across the factory and designing loaders and schemas to capture and store the data for analysis then building and supporting custom reporting and analysis systems, typically delivered to the factory as internal web apps or exposed for direct use in the one of our warehouses. Custom data visualization played a big part of effectively communicating actionable results from the flood of data coming out of the factory. The volume and complexity of the data involved kept this quite interesting with new requirements coming out of the factory constantly. The software we developed and deployed in the research fab was deployed and supported across Intel's "virtual factory" network of fabs worldwide.

ArrayFire

Tools Used

C
CUDA
MATLAB

ArrayFire is a startup providing HPC solutions focused on GPU acceleration and distributed computing. I worked in their Core Systems Group primarily developing custom CUDA kernels to GPU accelerate image processing routines. Their primary product at the time was a drop in GPU acceleration library for MATLAB that would provide behind the scenes acceleration of MATLAB code, now released as a general purpose library independent of MATLAB.

They are a high-caliber team and were great to work with. The work itself was certainly satisfying as well. Nothing beats working the feeling of working on something technically complex and seeing it work perfectly with speedups of >1000x at the end of the day!

Georgia Tech Research Institute

Tools Used

C
MATLAB

I worked in the Remote Sensing Group, part of their Electro-Optical Systems Laboratory, doing contracting work primarily for the Department of Defense. Most of the projects I was involved with are classified so I can't discuss individual projects but I worked on designing and building optical systems along with their associated signal processing and simulating and analyzing deployment of infrared countermeasures. I was also involved in data collection and analysis for a variety of projects as well.

Georgia Tech Computer Aided Design Laboratory

Tools Used

C
GAMBIT
FLUENT

During my undergraduate work I was lucky enough to be able to work with GTCAD and Sung Kyu Lim on the 3D-MAPS project, the first taped out 3D many-core processor from an academic institution. I worked with one other undergraduate to set up a custom thermal modeling pipeline using ANSYS GABMIT and FLUENT to evaluate the thermal properties of the unrealized design.

As major CAD tools at the time could not handle TSVs or the concept 3D stacking the lab had a custom tool chain to handle the design. We developed scripts to translate and combine the labs custom layout files into a format usable with solid & thermal modeling tools and to set up and run the simulations to get thermal characteristics from the designs.

!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~