(click to expand the following sections... and click images to see more)
Childhood Computing (????-1999)
TRS-80, Commodore 64, Atari 520 ST... these are the machines of my childhood. Even for the time, they were by no means modern. I remember drooling over 386 and 486 computers when I spied them in a store-front window, but I knew we couldn't afford them. Even though plenty of games existed, that's not what was included in the hand-me-down tech that I was still gracious to receive. What was included were manuals, lots of manuals. So if this 10-year-old boy was going find anything interesting to do with these computers, he was going to have to write it himself! That's when I learned BASIC and thus began what was to be a life-long interest in programming.
Sometime during my freshman and sophomore years of high school, I took two programming courses at the local junior college. Although these were just introductory classes, they finally exposed me to some "real" programming languages: C and C++. I excelled during class but they left me wanting more. When I was 15 or 16, that time when most teenagers are busy earning their driver's license and procuring a car, I bought a computer instead. That is, I ordered it piecemeal from about 10 different companies straight out of Computer Shopper magazine. And it worked! Finally, I had a "modern" machine: Cyrix P200+ CPU and 32MB RAM.
Fresh from the programming classes and with a decent computer, it was time to dig in. Just one problem: I couldn't afford the sorts of tools we used in class (Boreland C compiler). Anyways, there was this new language similar to C++ I was hearing about -- Java. It was getting a lot of buzz and I wanted to make my own web page applet. So I got the book: "Teach Yourself Java in 24 Hours." That single source (tools included!) was all I needed to jump into Java 1.0 programming... and set me on a course of work for the next decade and beyond!
Starting in Seattle (1999-2002)
My junior and senior high school years were spent almost entirely at the local community college, thanks to Washington State's "Running Start" program which covered the tuition. However, after graduating in 1999 I did have a small amount of money, enough to cover first year at university, so I applied and was accepted to University of Washington.
Shortly after beginning studies at U.W. in the fall of '99, I took an on-campus student job with the university's Computing & Communications department. Though starting in a junior technical support position, I soon moved up to providing account support to university staff. It was during this time I met some amazing people and was there during the grand opening of Mary Gates Hall (presented by Bill Gates) -- our new workplace. At U.W. was also where I was first introduced to Unix systems, and after installing Red Hat Linux 6 on my own computer and joining the local Linux User's Group, I was hooked!
It was after my first year at university that I was faced with a difficult choice: stay in school and go into debt, or attempt to get that ideal job which was the main reason I was in school, but without finishing first. I did the latter in October, 2000 when I was hired on at HCM (Human Capital Management) as their youngest ever hire!
HCM was a great place to work, in the beautiful Leschi Park area of Seattle right on the shore of Lake Washington. Specializing in HR software for Fortune 500 companies, we built tools for things like employee satisfaction surveys and complete benefits management. As an international organization, I performed work on defining and coding standards for localization (language, dates, currency, etc.) of our web services.
When HCM partnered with a Spanish company called Meta4, we began to use some of their tools including a JSP tag library. Unfortunately, problems were found in the implementation which we were unable to get resolution on until I identified the root causes by working through the decompiled output of the provided Java classes. This work was vital to our production and significant enough that HCM flew myself and one other developer out to Madrid for two weeks so that we could advise and oversee the solution to our satisfaction. What an amazing experience for 19-year-old me!
Making it in Montana (2002-2010)
It was early 2002 and HCM was struggling to keep us paid on time, apparently just one of many victims succumbing to the after-effects of the dot-com bubble. But thanks to my membership on the SeaJUG (Seattle Java User's Group) mailing list, I was pointed in a new direction: a company called ATM Express in Billings, Montana was hiring. ATM Express had recently transitioned from ASP to a Java-based MVC framework for their ATMReports.com web offering and were seeking to add another developer to their team. I had nothing holding me back in Seattle so they flew me out for an interview and weekend stay in Montana and I immediately fell in love with the place.
At ATM Express I was able to work through some real challenges and grow as a developer. We were recognized two years in a row by Inc. 500 as the largest privately-held ATM distributor in the U.S. At the time, the organization was small enough that I worked on all areas of our software: from core MVC framework, data modeling, web-based reporting and step-by-step wizards, to direct client-server data feeds with financial institutions and ATM event messaging encapsulation.
My work at ATM Express was long term and satisfying, so when we merged with a company called Payment Alliance I played a significant role bringing the two sides of the business (ATM and bankcard/point-of-sale) together into a single cohesive web platform. This started with a week spent in West Palm Beach, Florida gathering requirements for PAI's side of the business and culminated with the development of a new internal event-driven billing system following standard double-entry general accounting principles and PCI compliance. I ultimately left once the major tasks of merging were completed in order to pursue my own business interests but continued to do work for PAI for a couple more years as an independent contractor.
In April, 2021, PAI was acquired by Brink's for $213 million.
Independent Initiative (2010-2013)
Even while I had regular employment it was still important to me to play a part in the larger community, so I joined the BillingsLUG shortly after moving to Montana. Through this group I met some wonderful people and learned about useful technology and techniques. By personally organizing and presenting at a number of meetings I was able to give back by sharing my own experiences.
On January 16, 2013, myself and others in the BillingsLUG were interviewed for a segment about Linux on the local NBC affiliate KULR-8 News @ 10:
Aside from the BillingsLUG, I also participated in the BillingsJUG (Java User's Group), MTSpace, TecNet, the first TEDxBillings, and was local Billings organizer for the MT Programmers Meetup group.
In 2011, I started writing code for what was to become the largest project I've ever independently undertaken. The idea was simple, but profound: a web development platform which follows Unix design principles. As a well-defined and multi-platform "systems" language, Java was chosen for the core. Data would be encapsulated as XML, and XSLT used to present it on the web or terminal. Simple BASH-like shell scripts tie it all together.
Although still not considered "complete", the IOVAR platform did mature enough that it was ultimately used in production for a number of websites, including MTRadio.Net (more on that in the next section).
Various Ventures (2013-2017)
On the afternoon of November 5, 2013, a friend mentioned to me how he was interested in starting a podcast. I replied that I had always had a passing interest in broadcasting, so how hard could it be? He left to have a couple drinks at the nearby pub and upon his return we were ready to go live with a cheap microphone, Shoutcast stream, and simple website player. Thus began a four-year immensely entertaining adventure in broadcasting!
MTRadio.Net blossomed into a full-fledged custom broadcasting platform built on top of the IOVAR platform and other open-source tools. The custom player presented an image rotation of the currently playing artist over a backdrop of the town/city they were from. Focused on Montana talent, we engineered and aired a number of weekly live radio shows, curated playlists of a number of local bands, and sponsored some small local concerts.
I met Eric Petersen when he was a guest on MTRadio.Net's The IntelScanner show and it wasn't long before we were chatting about technology and his Arduino-based rover project. This was my first introduction to Arduino technology but we quickly found we made a good team and were able to push a number of projects forward. Our small team came to be known as Alpha Griffin and we developed working prototypes for a rover, quad-rotor UAV, and remote control system all running our own proprietary software platform named AutoMobile.
On October 21, 2015, Eric and I live-streamed our AutoMobile presentation to the Billings Montana Programmers Meetup:
Beyond Arduinos, Alpha Griffin continues to develop technology in the areas of IoT devices, A.I. (artificial neural networks), financial trading, and more.
With all the R&D involved with the above (IOVAR, MTRadio.Net, Alpha Griffin), and the more personal time that they consumed, there was an increasing necessity to attempt to commercialize this work and streamline development. Virgo Venture was formed for this purpose. Though ultimately unsuccessful, the attempt is now immortalized in our first and only edition of the newsletter known as Virgin Alamanac:
Coding with Cryptocurrency (2017-2019)
Bitcoin went public in 2009, and sometime in the first couple years of its operation is when I heard about it. It piqued my interest because I was also thinking deeply about concepts of money and currency at the time, but when I came to understand more about the energy requirements for its operation I started disregarding it since it was not compatible with my ideals.
Fast-forward to spring 2017 and the landscape of cryptocurrency and blockchain technology was now very different than its early years. Specifically, the rise of the Ethereum computing platform was fascinating to me, so I began to dig deeper into the growing plethora of projects and start some small-scale trading.
Because I'm a programmer, not a financial trader, I spent a few months through the summer just learning the fundamentals of fintech and developing my own tool to help me out which I call CryptoCoinEx (short for Cryptocurrency Coin Exchanging). It's separated into a client-server model with a Python client utilizing the Qt GUI toolkit communicating with a server-side process with SQL database.
It wasn't enough that I program tools for cryptocurrency, I wanted to program on the blockchain itself. I was already following the Aventus project because I liked their idea for event ticketing, but noticed they had a bug bounty posted for the crowdsale contract for their upcoming ICO on Ethereum. This only gave me about a week's notice, but I went all in and learned Solidity and identified a few issues in the contract and claimed the reward.
In July, 2018 the Bitcoin Cash team were seeking proposals to implement BCH tokens. I was a late contributor with my entry but did get quite a bit worked out in that time. It was fun getting to know the internals of bitcoin processing and I did make a small contribution that was accepted into the BitcoinABC implementation.
Art and K-OS in Arkansas (2019-2022)
In summer 2021 I moved to rural Arkansas to be with some family so we could help each other out. The quiet isolation has allowed for the development of some new ideas and techniques...
K-OS (pronounced "chaos") is my most recent development. It is named somewhat ironically because it is not a true operating system in the traditional sense. So what is it then? K-OS is a glorified video editor, media player, live remixer, realtime capture and paint program. K-OS is fun to use. K-OS is fun to develop.
Developed in Python, K-OS utilizes pygame, pygame_gui, and ffmpeg libraries. Since it currently has a YouTube focus, it also uses youtube-dl to retrieve videos.
In tandem with K-OS development I also discovered a technique for the creation of digital art from video:
Future Focus (2022-????)
I am actively looking for work in the Billings, Montana area or remote: view résumé