Code

With over 35 years of software engineering experience, my most comfortable medium is working in code.

Spatial Dashboard and Mobile Controller

Spatial Sound Studio

Custom software developed for the Spatial Sound Narrative, “Transitions”. Presented as part of Thesis Presentation, May 2023. Developed with p5.js and node.js.

Features:

  • Server Based software suite, combination of both Sockets and OSC to communicate with a 50 speaker sound studio
  • Participants can control the placement of sound by going to a QR code with their Mobile phone
  • Controls eight different scenes of sound, each scene allowing for up to 16 sounds to be programmed to move throughout the space
  • Sounds operate as "sprites" allowing the user to select from pre-programmed paths or custom paths

Custom VJ Deck in Touchdesigner

Personal Project 2021

Based on a tutorial by Matthew Ragan [link], this project was enhanced to suit my performance and artistic requirements.

Some features that were added:

  • Developed a component to access FFT parameters of audio as well as interface controls to fine tune parameters
  • Developed a component to sample photographs for the purpose of defining the color palette
  • Created a Kaleidoscope effect
  • Created a Mirror effect
  • Interfaced the system with a MIDI controller
  • Created a component to mix video
  • Created an additional 12 sketches that can be mixed
  • Created a method to allow sketches to have multiple modes

Burst Media Ad Network

Co-Founder and CTO from 1995 to 2011

Over 15 years I defined the product and led the development of one of the first online ad networks. Our product and services were used by thousands of companies, including MTV/BET, Reed Elsevier (RELX), Discovery Networks, Facebook, AOL, Microsoft

Accomplishments:

  • Invented a method to allow websites to display ads from an ad server
  • Provided thousands of independent web publishers with revenue from advertising
  • Designed an Ad Serving Infrastructure to handle hundreds of millions of transactions daily across three data centers
  • Invented a unique ad scheduling algorithm to prioritize campaigns by revenue and performance
  • Led the development of sales management tools to build proposals and manage campaigns
  • Led the development of a publisher dashboard to give clients control over the ads running on their website
  • Developed tools to interface with financial software to handle bills and payments
  • Linux, Apache, C, Perl, Windows Server, ASP, .NET, Delphi, Microsoft SQL Server
Click for Screenshots of Advertiser Management

Nerd World Media

Founder and CEO from 1995 to 2001

Created one of world’s first internet directories and search engines offering advertisers paid placement.

Accomplishments:

Recognized as one of the top websites in the World by PC Magazine (1997) and selected as 1 of 5 recommended internet directories by Netscape (1995).

MidiConductor

Coming Soon, LiveCoding Platform

MidiConductor is a LiveCoding Platform for creating and performing Music and Visuals. It is a unique environment developed to allow a LiveCoder to take traditional music ideas and efficiently put those concepts into code. The platform allows for TinyNotation data entry as well as realistic playback nuances. It works with any MIDI compatible device and software. Created with Javascript and Electron.

My goals for this project include:

  • Using MidiConductor as my preferred LiveCoding environment
  • Web-based to support minimal setup and configuration
  • Ability to share code snippits inline with other artists
  • Ability for a Midi event to trigger additional Midi events
  • Ability to trigger visualizations from musical events

LiveCoding Library

Python Library to enhance FoxDot

From 2018 to 2020, FoxDot has been my preferred environment for LiveCoding music. To assist performances, I created routines to simplify the ability to enter music notation in FoxDot (TinyNotation) and created an algorithm to generate Bass accompaniment (Bass Generator).

FoxDot, created by Ryan Kirkbride, is an easy-to-use interactive programming environment for LiveCoding and interfacing with the powerful sound synthesis engine SuperCollider to make music.

TinyNotation

Added to LiveCoding Library in 2018

Influenced by short-hand data entry techniques for Music Notation software, TinyNotate is a function that parses short-hand music notation into data that is easily consumed by FoxDot.

Bass Generator

Added to LiveCoding Library in 2019

Function to generate loops of Bass accompaniment for LiveCoded performances.

By passing a list of notes, number of musical measures, maximum note duration and maximum number of rests, the routine generates semi-random music notation that sounds great and can be played in FoxDot.