A History of Vince
Hi, I'm Vince! Some may know me by my full name Vincent Milum Jr, or by one of my online handles: Darkain, DarkainMX, Darkain Multimedia, or Darkain Dragoon.
Who am I? A nomadic developer. This page details a chronological list of these projects along with many external references. I've also contributed to several large and small open source projects as well. Over the years I've had to assume the many roles of Software Engineer, Database Administrator, System Administrator, Network Administrator, and Electronics Hobbyist to accomplish the tasks required for each of these projects.
At age 11, I placed 25th in the K-12 Chess National Championships.
At age 12, I started learning electronics, creating simple digital and analog circuits on a solderless breadboard.
At age 13, I built my first LAN using systems donated from Boeing Surplus using 10-BASE2 networking hardware on a pair of Intel 386sx 16MHz computers running Windows 3.11 for Workgroups. First successful networked application was Microsoft Hearts multiplayer. Later in the year, helped build networks for a computer lab and library for Gault Middle School, which I was attending at the time.
Visual Basic Games
Created a Tic-Tac-Toe game a Lights Out game using Visual Basic form controls.
Alpha Game Engine
Created the "Darkain Alpha Enigne", a tile based RPG game engine written in Visual Basic 6.0 and DirectX 7 (DirectDraw, DirectInput, DirectSound). The Darkain Alpha engine includes a basic game editor which uses Win32 GDI API for painting tiles on the canvas.
Dreamcast VMS/VMI Editors
Created simple editors to edit VMS and VMI content for the Sega Dreamcast. VMS is the hand-held game system that doubles as a memory card. VMI is an animated icon format to display on the VMS while not running a game. Editors are written in Visual Basic 5.0
Freak-Z / DooVoo IRC
Created an IRC chat client in Visual Basic 5.0 that was released under the names Freak-Z IRC and DooVoo IRC.
Created the initial RM-900 infrared remote control plugin for Winamp using Visual Basic to interact with the Creative Labs driver. Support was later expanded to include support for the RM-1000 remote as well.
Due to the success of the RM-900 plugin, friends asked me to make a plugin for Winamp which would allow their gamepads to change songs, control playback, and change volume. Using DirectInput once again, this plugin was known as DX-Joystick.
RM-X General Purpose Control
Following the success of RM-900 and DX-Joystick, I merged these two plugins into a single plugin, RM-X General Purpose Control. I added a third module to this plugin known as API-KB which allowed global keyboard shortcuts and multimedia keys to control Winamp while the application is out of focus or minimized.
RM-X was awarded "Feature Component" by Winamp.com on August 8th, 2002 with the staff comment "a plethora of remote controlling."
Contributor to the Wasabi Development platform. Wasabi is a cross-platform application development SDK targeting Windows, Linux, and Mac.
Wasabi - DeJaVU Meter
Created a simple volume meter, spectrum analyzer, and oscilloscope visualizer component for Winamp3 using the Wasabi SDK.
Wasabi - Playlist Script Object
Created a wrapper object to allow the Maki scripting engine to interface directly with Winamp3's playlist. This component allowed other developers to embed custom playlist layouts directly into their application skins.
Wasabi - Web Server
Created a web interface for interacting with Winamp3. This allowed playback control and playlist access remotely from anywhere in the world.
Wasabi - Games
Created a minesweepers clone as Llama Sweepers using the Wasabi SDK, playable within Winamp3.
Started utilizing VMWare Workstation for multiple operation system testing of software I was developing. I actively tested RM-X on Windows NT4, 95, 98, 2000, ME, and XP through virtualization on a single workstation.
Wasabi - Internet Relay Chat Client
Created a full featured IRC client using the Wasabi SDK. This IRC client is fully stand-alone, not requiring Winamp3 to run, possibly the only Wasabi application ever released that wasn't Winamp3 itself.
The Wasabi IRC client supported full skinning and scripting, the same as Winamp3. I also created a full rich-text viewer to support formatted text from IRC, such as bold, italics, and color changing. The user interface also works similarly to how modern web browsers work, it is a tabbed interface where tabs can be pulled out of the parent container into new containers, and then later rejoined into the original container.
Created a homebrew clone of the PC game Matrix Attack as the GameBoy Advance game Matrix Advance. Entire game written in C/C++ and some ARM ASM. Matrix Advance is a hexagon board based puzzle game featuring two simultaneous boards. Match five continuous gems of the same color on the active board to clear them. Gems can also be flipped between the active and passive boards.
Discovered an exploit in Microsoft Excel that allowed for full SQL access through VBA instead of the intended support of only SELECT statements. Used this exploit to write a full SQL INSERT data entry front end and SELECT data reporting system using VBA in Excel 2003. Scripts have since been ported to Excel 2007. To date, I've yet to publish knowledge of this bug and as far as I know it is still fully exploitable. However, Microsoft has significantly locked down running VBA scripts, so risk is extremely minimal.
Homebrew / Indie Video Game Developer & Advocate
Acted as moderator and community leader for the unofficial Nintendo DS community on LiveJournal with nearly 2,000 members. I used this and other online platforms to advocate for Homebrew video game developers, which eventually went on to become the modern Indie Video Game development community. During this era, homebrew game developers were not seen as part of the industry, but instead were treated like outcasts that did not belong. The big-three console gaming platforms at the time only wanted large AAA $60+ titles. By developing homebrew games and advocating for other developers using public internet channels, this helped shaped the indie gaming community and industry we have today on platforms such as Steam and the Nintendo Switch.
Beyond advocacy, I also developed a micro-kernel, user interface, application loader, and several demo applications within the Nintendo DS homebrew community as an operating system under the title DarkStar (wordplay on my handle, Darkain). I built basic clones of Tic-Tac-Toe, Minespeepers, and Lights Out and a Paint Program as demo applications to show how the multi-application loader functioned. Other developers used it as a way to distribute their homebrew games and applications in larger bundles.
I created the DS-Paint demo to illustrate some of the rendering API available within DarkStar. These features included full touch screen support, 15-bit RGB color, brush drawing, shape drawing, gradient drawing, anti-aliasing, and alpha blending.
Renamed RM-X General Purpose Control to RMX Automation and released it as open source software under the BSD license.
The public release of RMX supports Windows Media Player 7, Winamp 2, Winamp 3, Winamp 5, foobar2000, Radlight Player, BSPlayer, and as a stand-alone Win32 Application all from a single binary binary file by exposing multiple DLL entry points plus a WinMain entry point.
RMX Automation includes LuaPlus, an object oriented version of the Lua interpreter to make RMX fully scriptable. This release also includes 30 RMX Plugins which include support for integration with many more hardware and software platforms, such as X-10 home automation and several methods of TCP/IP network access. By writing a plugin once for RMX, it instantly works with all softare and systems listed above that RMX can communicate with, without the plugin needing any knowledge of those systems whatsoever.
Released Image Metabase
Created a tool for indexing, searching, taggin, and previewing images from the internet. Image Metabase utilizes the LAMP stack.
Created a conceptual cosplay oriented social network. Code based on the Image Metabase project.
Created a public URL shortening service that also included analytics tracking.
Spent the year working 100% remote from the middle of the Rocky Mountains in Montana.
Lead data recovery efforts after a 100% total loss of all on premise computer equipment after a devastating warehouse fire. By previously instituting a combination of online cloud backup and off site tape backup rotation, virtually no data was lost.
After data recover, lead the effort in designing new on premise infrastructure, including all equipment in server and networking room, client workstations, and building wiring for networking.
Created an Android app that allows basic playback control of either Winamp or foobar2000 media players on a desktop through LAN UDP broadcast messages. RMX Automation received a beta update at the same time to act as the RMX Server component.
Forked and updated bmem by Brennen Underwood as vmem. Added support cleaner true-type font rendering and for real-time CPU clock speed display on systems with Intel SpeedStep (or AMD equivalent). Entire application written in C/C++.
PHP Universal Database Library (PUDL)
Open-sourced my PHP library for connecting to and interacting with SQL databases. Created a SQL query generator that transparently works with MySQL, MariaDB, PerconaDB, PosgreSQL, SQLite, Microsoft SQL Server, and general ODBC servers. Unlike PDO bundled with PHP, the PUDL library works virtually identical with all engines with just a simple connection configuration change.
PUDL also has direct support for Galera multi-master clustering, including load balancing, high-availability, and multi-datacenter awareness.
Launched my high performance and scalable PHP framework. The Altaform framework is built on top of the PHP Universal Database Library, Getvar, and TinyButXtreme.
Released a simple PHP library in a single class for easier access of HTTP GET and POST data. GetVar supports automatic data normalization, UTF-8 safety, and the ability to decode JSON.
Forked the TinyButStrong (TBS) HTML template processor by Skrol29 as TinyButXtreme (TBX). Initial fork was due to dispute over a bug that the initial developer refused to fix. Afterwards, I reorganized all source code and simplified the entire library API. Legacy and insecure features were removed. Fixed several other bugs that persisted in the original code base. New code is now extended with countless new functionality. Code updated for PHP 5.x and modern PHP 7.x support.
Developed and launched the web site Cospix.net as a high quality photo hosting web site for the global cosplay community. Cospix uses the Altaform framework, runs on both PHP and HHVM, uses MariaDB Galera Clustering, Redis caching, and ZFS Raid file storage across multiple systems in a cluster and across multiple data centers.
Cospix Photo Studio
Founded the Cospix Photo Studio at Anime Expo (AX). Recruited and lead a team of 20 volunteers to help run the photo booth, including Photographers, Photo Editors, and Social Media Specialist. Anime Expo handles over 100,000 unique attendees over five days and our team captures over 10,000 photos each AX.
I created a distributed file storage system to synchronize photographs between camera tethered laptops, photo editing workstations, and printing/sales workstations.
Rewrote entire Cospix front-end for a responsive design, mobile friendliness, new image presentation, and infinite scrolling on the homepage. This is the design that is currently live today. Also migrated back-end infrastructure.
Open Source Advocate
To help promote various open source projects, I set up a 24/7 torrent seeding machine on a 1gbps WAN connection. I use this machine to host archives of Linux distributions and other open source projects. One example is the entirety of the Debian 7 CD and DVD archives for i386 and AMD64 platforms (70 ISOs in total). I also use host security focused ISOs such as Kali Linux and Tails. Beyond software, I also seed the complete Overclocked ReMix collection from their official torrents archive, featuring over 4000 original video game music remixes.
Not every organization that produces large software, operating systems, music collections, or other large data sets have the financial means to support the bandwidth to distribute their content. I help these projects out by donating my own bandwidth to their causes. Not all open source contributions are strictly code, and I believe this is a good way to me to help this open source and open content creators to share their works with the world freely.
Microcontrollers and Custom PCB Design
Designed and created a prototype portable power supply with an ARM CPU paired with two ATTiny85 microcontrollers for controlling four independent LED arrays. Board is controlled remotely using Bluetooth game controllers. I ported the Bluetooth stack from AVR to ARM. The entire system was debuted at BlizzCon 2017.
After initial prototype, I modeled an improved circuit design using Autodesk Eagle CAD, had the PCB printed, and then I assembled by them by hand. I also changed the design to use Wi-Fi with a custom web server with access via a cell phone instead of accessed by Bluetooth game controllers.
FreeBSD on Raspberry Pi
Custom tuned ZFS for Raid-Z1 (3x USB thumbdrives) on Pi 3B+ to be used with a FEMP stack.
I fixed IPv6-to-Text, and Text-to-IPv6 conversions to be RFC-5952 compliant by converting to standard inet functions.
I also fixed the ZeroTier port for the Raspberry Pi 1, 1A, 1B and Zero on FreeBSD by adding proper ARM NEON detection.
I use ZeroTier as a SD-WAN service to create a virtual multi-premise network. Each node connected to this network is a OPNsense router running OSPF. This enables any device connected to any private LAN at any location to be able to talk directly to any other device in any other location. This is the backbone for my MariaDB Galera cluster and ZFS multi-site replication.
Lua on Microcontrollers
Ported the Lua programming language to ESP8266 and ESP32. I used this to create LED animation libraries for the SpiderBoard.
ESP8266 Web Server
Entirely rewrote the ESP8266 Web Server class. The initial server class by the ESP8266 community had countless stability issues that I fixed with my rewrite. This enhanced web server was built for the "Spider 2" LED board to support an embedded Lua script editor and uploader.
FreeBSD on Raspberry Pi
As of this writing, over 100,000 unique users and 1,500,000 messages have been logged to a Raspberry Pi 3B+ on a 3x 16GB USB ZFS Raid-Z1 array.
Launched a web site dedicated to the documentation of the PHP Universal Database Library (PUDL). As of this writing PUDL-Docs is still a very early work in progress.
Things To Improve
There are still references to old source code released that are mentioned on the Archive.org Wayback Machine. I still have these source code archives in the exact state they were published and uploaded in many years ago. These archives, however, are now spread all over the place. It is time to start locating all of these archives and combine them into a single repository hosted on the Darkain.com web site.
At this time, there are still about 20 code repositories that have not been uploaded that have been successfully found. These are all early works in Visual Basic and C++. The more recent code has been managed through GitHub since 2012 already.