Application Development; HTML, VB, VBA, C#, JavaScript, PHP, Perl, SQL
Curiosity
From an early age I'd always been curious about how things worked and what made them tick. I was very fortunate to have a very loving mother that
gave me an opportunity to tinker and learn. Mom "gave" me our first color console television set that she'd previously deemed too expensive to have
diagnosed and repaired by a qualified individual. That opportunity started me down an exciting path.
My Brother Paul
I remember first meeting my bother sometime in 1965 or 66. I must've been around 6 or 7 years old at the time. I was playing near our detached garage at our
home near Lemon Grove, California when I saw my mother burst out of the door to our house and began hugging this tall man in a uniform. I found out a few minutes
later that that man was my brother. I knew I had an older sister at the time but did not recall a lot of conversations about a brother (yeah, I know... I'm sure
it was talked about but how much attention does a 6 year-old pay to details?).
At any rate, getting to know my brother Paul was a great experience for me. I truly looked up to him in those days and continue to do so to this day. Paul took
me on my first fishing trip to Green Lake in Seattle. He also spent countless hours playing catch with me under the freeway overpass next to our house. These were
fantastic memories for me since I always had a difficult time feeling like I fit in anywhere -especially with kids my own age. It was Paul that fostered my interests in
anything mechanical or electronic. It was Paul that taught me how to bleed the brakes on our family car. He even trusted me enough to rebuild his carburetor on his
V8 Ford while he was at work. Paul also taught me to solder (a skill I put to great use during my High School years).
Speaking of High School -I focused my elective-credit efforts in the vocational area. My freshman year I began my endeavor into mechanical drafting -ultimately progressing
through four years of that subject. As a Sophomore, I also took as many courses in electronics as my schedule would allow. Tinkering with electronic components and devices
became my hobby. I remember blowing my $20 monthly allowance on resistors, capacitors and digital IC's at our neighborhood Radio Shack on a routine basis.
The Great Audio/Light-Box Project
It was Paul again that suggested we turn his living room bookcase into an audio-controlled lightbox. Remember, these were the days before printed circuits could be
made in your kitchen... so using a schematic I developed, we procured some SCRs and other components and proceeded to solder-up the circuit using a simple wood plank and nails
for the connection points. It wasn't elegant, but it was very functional. Finally, we installed a string of C2 Christmas lights in the bookcase, connected the three-tiered
audio filter/driver to them and finally encased it in a sheet of prismatic plastic Paul procured from a local supply house in Seattle's SoDo district. The completed unit worked
quite well... two separate displays (stereo, you know), each with 3 tunable channels of color (red for bass, blue -mid, green -treble). I think both were quite proud of our
joint project.
Experiments During My High School Summers
In my High School years I continued to tinker with the components I was able to obtain. I remember making a calculator (remember, these were the days before hand-held or
even electronic desktop devices were readily available) using a huge industrial surplus volt meter. It was a simple device, using two separate adjustable-voltage circuits which
by placing them in parallel produced the sum. After careful thought, I ultimately came up with a multiplication circuit using a resistance-ladder technique. The whole unit
must've weighed over 90 lbs! Again, not elegant, but I was still proud of it.
I remember having obtained several of the hard-bound Texas Instruments data books in those days. These were a great resource for me, as they helped guide me as I continued
to experiment with discrete transistors and ultimately migrating to simple analog and digital integrated circuits. I did a lot of tinkering with the common "555" timer, simple
Flip-Flops, Nixie-tube drivers, AND, OR, NOR, NAND gates, etc. I'm sure I was viewed as a geek, but I had a blast in those days.
Fast-Forward to Adulthood...
I began a long career with a local dot-matrix printer manufacturing company, met and married my lovely wife, started a family with two wonderful children and had less time to
devote to tinkering. When personal computers began to become available in the workplace, I received my first exposure with the ever-popular IBM PC-XT. Although we only had a
handful of them in our company, I was able to find time to play around with MS-DOS and a few other simple (by today's standards) applications. By the mid-90's just about
everyone (including me) in our company had a PC. I was hooked.
Introduction to Object-Oriented Programming
In 1996 I took my first Visual Basic programming class at a local community college. This was a blast and I used every free moment (much to the dissatisfaction of my family
I'm sure) to do my homework, as well as work-ahead and experiment with new routines, etc. VB 4 was the current version at the time, but I seem to remember VB6 being available
by the time I completed the coursework. For my class project I chose to develop an application called "Cycle-Companion". As I was also heavy-into bicycle riding and was a
part-time racer with a local team, I thought this was a natural fit. The application featured a gear-inch calculator, chainring and cog gear-ratio selector, daily training guide
and diary and a few other select features.
Initial MS Access Projects for Work
Soon after being promoted to Production Manager at the company mentioned above, I discovered that several of our test processes were both inefficient and provided few metrics.
Ah, now I could put some of my new-found education to work. I began by transferring all of our test procedures that were only available in paper form at the time -to HTML. This
allowed them to be updated remotely and instantly. It also provided a means of controlling our documentation from an ISO-9001 perspective (i.e., no more having to manually return several
floor-copies of an old document in exchange for a new revision, etc.). I was pretty proud of this idea, as it provided an interactive means of conveying the applicable steps of a
given test process -new trainees loved it.
Next I tackled the test metrics issue. Using MS Access, I created a client-server database where the test results of each device could be entered by our technicians (as part of
the HTML step-by-step guide mentioned above). Now with our data in one repository, creating reports & graphs from Access Jet-engine was a snap. My superiors and colleagues were
always impressed with my "one-click" reports that were provided to them in our weekly quality and production meetings.
My First VB Shareware Application
My daughter began playing basketball -first at the Jr. High and AAU level (this must've been around 1999 or so). Being a geek, I searched for a cost-effective way to record her game stats... no luck. Well, necessity is
the mother... -What a perfect opportunity for me to develop an app while keeping my coding skills in good practice. BasketScore was born. This project was a true work-in-progress
as it literally took about 18 months of incremental improvements before I felt proud enough of my work to release it to the world. I won't go into too much of the operational details
and features here, as you can take a closer look at it on my VB page.
A New Career Brings New Coding Opportunities
After 27 great years with my "first" company, my work ended abruptly -along with about 200 other fine individuals, as the company fell victim to the tough economic conditions
experienced by several other manufacturing entities. We merged with our main competitor and transferred our production operations to Reynosa, Mexico. I had the dubious "honor"
of having to lay-off my staff of over 100 as the last of our printers made their way down the factory. As each manufacturing cell completed its job, we prepared its equipment
for shipment and turned off the lights.
I was initially confident in my abilities and accomplishments -thinking I'd have a new job in no time. By the 9th month (yes, it was a long time) I was pretty depressed. I must've
applied for close to 100 jobs -I even applied to sell insurance, cellphones -anything to pay the mortgage. I then got a call from a 1 year-old start-up with about a dozen employees
(coincidently just a few miles from my home). I was ultimately hired as the warehouse manager for Integrated Healthcare Systems. Although it wasn't as prestigious as my previous
job (nor did it pay nearly as well), it was the perfect environment for me. My duties ranged from purchasing our production equipment to coordinating shipments and deliveries.
Development of a Pretty Standard, but Important Inventory Database
But the best news? Being a start-up, IHS kept virtually no records of what was purchased, shipped, sold or returned. We had no central MRP system. This was a great
opportunity for me to develop a database to finally begin tracking our six-figure product packages. Using my old friend MS-Access I created another client-server database -this
time to track each of the products purchased (ranging from Ethernet cables, to PCs, servers, barcode printers & scanners, etc.) and ultimately shipped to our customers. The database
gave IHS the ability to finally understand where its products (and money) were going. The built-in metrics also gave instant information on which customers were slow to reorder
consumables, etc.as well. Shortly thereafter, IHS became known as Talyst -an industry leading provider of pharmacy-automation hardware and software.
VBA Inventory Database
My next project for Talyst was much more involved; The cornerstone of our product line was the sale of a value-added medication dispensing device for in-patient pharmacies. These devices
required a special, custom-configured canister for each size/shape of pill that it was to dispense. Depending on the model chosen, these "packagers" as they're known will contain
anywhere from 150 to 500 canisters. Our customers would order canisters from us based upon the specific National Drug Code (NDC) parameters for each pill dispensed. Similar to our
purchasing and shipment history (or lack thereof), IHS did not have a formal means of tracking which canisters were ordered for any of our customers... this no doubt was a problem.
Because the only spare time I had was in the evenings it took several months before I was able to roll out my first iteration of "CaniTrak". CaniTrak is the app I'm most proud of.
Some of the features include;
Auto-generated graphs of canister/NDC popularity, order history, failure mode, etc.
Currently, the database is a 49MB monster tool that continues to evolve with added features on a weekly basis. As you can see, I've been very fortunate to work for a company that
affords me the time to develop tools as the need arises. To Talyst I am extremely grateful.
Medication Dispensing Kiosk User Interface (C#)
In 2017 my (three member) team was commissioned to create a POC medication dispensing kiosk for a retail environment. Our company had purchased five cosmetic-sample dispensing systems from a company known for
designing and placing similar vending systems (DVD's, coin-collection, etc.) outside of grocery stores. After installing several of the cosmetic-sample kiosks inside stores across the country,
the project was cancelled (I'm sure for business reasons), and the kiosks were removed -thus giving Talyst an opportunity to purchase the devices at a very favorable price.
The cancellation of the manufacturer's kiosk program made it extremely difficult to obtain much, if any development documentation, etc. Our team had to essentially reverse engineer
just about every aspect of the kiosk in order to understand its operation and prepare it to be repurposed for our use. The most challenging aspect was understanding the design of the
purpose-built robotics controller CBA and its firmware (written in C++). However, my colleagues were ultimately able to successfully modify and recompile the code to suit our needs.
My initial task was to create a user specification for our newly-repurposed unit's touch-screen user interface. Due to our time constraints (we had intended to have a POC ready for
trade-show display in just four months time) we had intended the UI to be created by an outside partner. I completed my rather detailed UI spec within a week and submitted it to a
familiar partnering engineering firm we'd utilized in the past. After reviewing my specification, the firm returned with a bid of about $300k for the UI. This figure nearly equaled
our budget for the entire project! As an alternative, I asked for (and was granted) an opportunity to try my hand at creating the user interface myself.
Again, with almost zero documentation available, I spent approximately one week evaluating the existing code structure and controller board architecture in order to develop a coding strategy.
Within the next three days I had a working UI (C#), and successfully dispensed a pill vial. Over the course of the next several weeks my team and I incorporated a barcode label
printer into the kiosk and had a fully operational pill vial dispensing kiosk in our lab.
Here are some of the features I incorporated into the kiosk: