About Me

I am a software developer with a broad background and lots of experience with various technologies. I am someone who can quickly master new technologies. I usually do things that have never been done before, where my skills and background can bring new ideas to life in software. Nothing I run into surprises me, and I am able to make technology work. These days, I mainly work in web development and Android.

E-mail: scott@skwc.com
Gmail: scott1329m@gmail.com


University of North Carolina at Asheville

Bachelor of Science degree in Computer Science 1994

UNCA is unique as a public university which provides a liberal arts education to all students. At UNCA, my primary area of research interest was with studying the transmission and processing of e-mail. My senior project was the implementation and production use of a Majordomo-like mailing list automation package written in Perl.



Software Developer 2011 - Present

After working part-time for SermonAudio.com almost two years, I joined full-time in November 2013. I work on enhancing and maintaining the SermonAudio Android app, Android apps for individual broadcasters, the back-end API endpoints, and other areas.

  • Android app I took over the SermonAudio Android app, which was designed for Android 1.x phones, and began working on modernizing it to support phone and tablet form factors, and support newer Android versions and features. The corresponding iOS app had been actively developed continuously, while the Android app lagged, so I had to catch up with features added to the other app. I added many features such as a download manager, offline mode, QR code support, Chromecast support, Amazon Fire TV support, and others. I also improved the audio player service with an almost total rewrite. Along the way, I made many improvements to the app's robustness. This sophisticated app uses many different areas of Android, as well as web services via SOAP (older) and JSON (newer).
  • Kindle port To support the Kindle platform, I created a Perl script that takes the main app's build directory and makes edits to source code, XML (using LibXML), and build files to create a Kindle port.
  • Broadcaster apps Individual broadcasters can have their own Android apps. I create these using a system of image editing scripts (using Python PIL) and build scripts to generate custom images, custom XML configuration, and so on. These apps are based on the main app's code base, so broadcasters get major new features when they are available.
  • REST API In March 2015, SermonAudio rolled out the initial group of JSON APIs which I wrote, intending to age out the older SOAP APIs in favor of something more modern and flexible. The API implementation will be an ongoing project as more APIs are needed. The APIs are written in C# using ASP.NET and ADO.NET, which was a new experience for me since I mainly have used Java in the past. These APIs unlock SermonAudio for broadcasters and developers, for integrating new tools. Features include getting information, extracting data, uploading sermons, site navigation, and much more. We use these APIs ourselves, so I built a Java object model for them to load their output into POJO Java beans which I use in the Android app.
  • Template engine I wrote a small, lightweight template engine, as an alternative to full content management systems. We wanted to be able to purchase themes from themeforest and others, to display information about events, sermons, broadcaster information, etc. The template engine is the glue that allows our data to be displayed inside the themes. Our web designer can take a theme, customize it, and insert our data to create a web page any broadcaster can use. We did not want the overhead of, and commitment to maintain, a full CMS. While developing the template engine, a lot of logic concerning the transformation of data into the right formats (such as generating links) was captured in a code library which has already been used in many other places.
  • Stripe I took over and finished a project to add Stripe support, which was originally started by others but never brought to conclusion. I finished the project, which enabled site visitors to send donations to broadcasters, and to pay for events at registration time.
  • Shoutcast I helped implement the streaming Shoutcast server on Linux. And implement playback support in Android.
  • Wowza module Since I knew Java already, I took over maintaining our custom Wowza module written in that language.
  • HTML5 audio player While this project was never released, it was a Soundcloud-like HTML5 audio player which showed the waveform of the audio being played and allowed scrubbing, etc. The project never integrated well with our existing infrastructure, and we never had time to finish it, but the demo looked awesome. I wrote the whole thing using the audio and canvas tags in HTML5, using low-level graphics primitives. (To generate waveforms for the HTML5 player, the package wav2png was used, but that package had never been built on Windows, so I had to create a Visual Studio build with all its prerequisites such as BOOST, zlib, libsndfile, png++, libpng, etc.)

SoftBase Systems

Senior Developer August 1994 - October 2013

I worked at SoftBase for almost twenty years, in a variety of different roles including software development, system administration, building the company's web presence and customer portal, creating an automated product release system, maintaining the software build system, and software testing. I was involved with almost every aspect of the company's technical operations. The founder sold the company in 2011 to a private-equity firm, and the new management terminated my employment in October 2013.

  • Web and mobile front-end I did a proof-of-concept project to create a graphical web and mobile front-end for a mainframe-based performance monitor, using J2EE standard frameworks such as Struts and Hibernate, as well as jQuery controls such as the table control for displaying information. I also began an Android pilot project. (Originally a separate PoC app.) The ultimate goal was to have performance data available on any platform, and to build more sophisticated reporting and analysis into the reports. With the sale of the company, however, this performance monitor was canceled as a product, so this project was also canceled. The initial PoC was well received by other developers.
  • Product release system I wrote an early custom web platform from scratch to deliver mainframe software to customers over the Internet, in the days when physical tapes were being phased out and no solutions existed yet. The goal was to replace an error-prone manual product-release process with something automated and reliable. The software had a Java component that read release configuration files in XML format, and carried out the steps to create the release files and publish them to the web site. The software was general enough to be adapted to new needs as they came up. The software improved over the years to automatically update the web site with release information via variables stored in the database, and to allow developers to release to a "staging area" for final testing before going live. In addition to customer access, a web-based control panel allowed tech support to track who downloaded which release on what date, which made their jobs easier. Downloads also triggered an alert to tech support, a much-requested feature.
  • Java-based test framework I created a test framework using both C (to test mainframe jobs) and Java (to test simultaneous network connections using multiple threads), in order to generate a lot of SQL for our performance-data product to monitor. My goal was to find issues with the products before customers did. The framework had an object model that was scriptable to create repeatable test scenarios. (Also, scenarios were created during product development to debug the new code.) In addition, a Perl program would "spew" a lot of test cases to the mainframe for load testing. Test scripts were created using Jython to access the Java object model. The developer of the program being tested wrote: "This program, and its spewing driver, have already proven unbelievably beneficial."
  • SoftDate product testing We were the US distributor for Australian software from DDV that allows software developers to simulate times and dates for testing (such as end-of-month reports). I was involved with testing it from the beta phase, which included installing, testing, and upgrading. My testing led to numerous improvements to the product over the years. I created test cases to verify the software's features worked as documented, and didn't work for the cases it wasn't supposed to. Created Java test cases when Java support was added to the software. Over the years, I developed new tests for new features and did Q&A for the documentation and samples.
  • NetLert Enterprise Server (NES) I co-designed and implemented a tool which harvested data from real-time enterprise sources (databases, call center switches, etc) and cached it for delivery to user desktops. The tool was fully object-oriented with interfaces for writing data-harvesting component plug-ins, processing data with a scripting, caching data, and presenting it to the user (such as with HTML, JSP, XML, etc). The server was implemented in Java with a feature-rich core of APIs and interfaces for data gathering and storage (a key-value store; I used a NoSQL architecture before the term existed), a full cron-like job scheduling subsystem, and a plug-in architecture for adding interpreted scripting languages whose interpreters were written in Java (initially including JavaScript and Jython). The extensible NES framework is still in use as the core of the NetLert product today, although with a different emphasis.
  • Checkpoint/restart API written in portable C I implemented a mainframe API in portable C for a customer who wanted to bring mainframe applications to midrange platforms. The API had to be complete to the point of being compatible with undocumented behaviors, to allow applications to run with minimal code modifications. This code was ported to AIX, HP-UX, Solaris, Linux, etc; supported both 32- and 64-bit platforms; and supported DB2 and Oracle. I set up and maintained the hardware for each platform, and created and maintained the build process. I also wrote the product manual along with the test and example programs. Examples and tests had to be in multiple languages. (C, C++, etc.) The test programs triggered all documented error conditions to prove the software handled them properly.
  • Report I developed and maintained a report written in C++ which queried the SQL monitoring product's database and found candidates which could benefit from a different performance-improvement product. The code was challenging since the information needed by the report could not be gathered by direct SQL statements (some data was in binary fields inside the database), so I had to use intermediate STL data structures to store information. This report was going to be callable as a CGI program to generate a web page, but new management canceled the performance-improvement product before that could happen.
  • License key tool I wrote a Windows-based license key generator tool to replace an older MS-DOS program. This tool called algorithms which had been coded in several different languages (compiled as DLLs). Eventually, this functionality was folded into our customer portal, where the license generator was called from PHP, including assembling the customer's key for them using a Linux cross-compiler to dynamically create a mainframe load module.
  • DevOps I did system administration, planning, and other DevOps style tasks for our various mainframe emulators (R/390, FlexES, zPDT) which ran on UNIX and Linux. (I got involved with this area because of my familiarity with these platforms.) I also wrote various utilities such as a Perl program for Linux to inspect mainframe dumps we received to see if they transferred correctly. I mainained the company's Subversion repository and build tools.


Software Developer 1998 - 2005

I worked in a part-time capacity with SKWC for a number of years, helping them with software development projects which were beyond their scope as web designers. By the mid-2000s, they were using the turnkey Miva package and weren't doing custom programming, so my direct involvement ended.

  • Quote system I developed a web-based quote system which looked up item SKUs in the corporate database, which was originally in a desktop DBMS (FoxBase) but imported into PostgreSQL for the web, calculated shipping based on item categorization (using an expert-system style rule-set derived from a manual process), and e-mailed a quote. The original plan was to test the software in late October, and roll it out after the busy Christmas season, but they were overwhelmed by manually responding to holiday quote requests that my system was turned on without the full testing period. The system ran flawlessly from the beginning despite transaction volumes being an order of magnitude above the client's best volume estimates, and continued to run for years with no significant bugs or downtime. (The only changes I ever made to it were to fine-tune the rules for shipping calculations.)
  • Used car search engine Web-based used car search engine (before these were common) for a network of dealerships. This was a proof-of-concept project, to establish the feasibility of having a full system built. What I wrote worked well enough that the dealers used it as their production system until the final one could be built.
  • Miva Merchant interface to Channel Intelligence I integrated Channel Intelligence into a retail web site by writing a custom Miva module. (Channel Intelligence is a service that allows retailers to track leads from other web sites. Acquired by Google in 2013.)
  • Cold Fusion Before Miva, SKWC used Cold Fusion as their web platform, and I wrote many modules and tools for them such as a user login/validation system which allowed for the dynamic creation, approval, and administration of user accounts.

Computer Answers

Software Developer 1993 - 1994

Computer Answers was a VAR for the Medical Manager package, and I was hired to write reports while I was in college. At the time, MM's built-in reporting utility was primitive (basically a screen of row-column fields which had to be in a rigid order), so I wrote a program in C which allowed me to draw reports (similar to using Perl's format strings) and directly modify the underlying Btrieve files rather than using the primitive report utility.


I have done a wide variety of projects using many different programming languages, platforms, and tools. Too many to make a comprehensive list. These days I primarily work with back-end database code, particularly creating REST-ful API endpoints. I also write apps for Android.

  • Years of experience with Java and J2EE: all of them.
  • Apache Tomcat, J2EE, JSP, JavaScript, jQuery, jQuery mobile, Spring, Hibernate, JUnit, SQL, DB2, Oracle, SQL Server, MySQL, PHP, etc.
  • Android mobile development, REST, JSON/SOAP, etc.
  • Java, C, C++, C#, Perl, Python and Jython, etc. Subversion, git, make, ant, etc.
  • Visual Studio, ADO.NET, EF, etc.
  • Btrieve (ISAM) and VSAM files. Processing binary file formats using DSECTs or structs.
  • Technical writing and documentation.


  • Exceeds expectations. … Scott accepts all assigned tasks with a willing attitude and is quick to recommend solutions. He demonstrates a pleasing personality and communicates well with fellow employees. … Exceptional organization skills. Provides very thorough research and documentation… Highly skilled in UNIX platforms and communications. … Scott…has been a most valuable asset in the success of the company. He has a very strong work ethic and documents his tasks in great detail. He presents a professional demeanor and is always a pleasure to work with.

    Excerpts from February 2013 evaluation
  • Scott's quality of work is exceptional. He documents thoroughly all procedures that he performs in a very concise manner. … Scott has shown the initiative to develop new skills. … Scott has shown superb analytical skills and a very methodical approach to problem solving. He is very quick to grasp the nature of a given problem and his in depth knowledge of computer science allows him to provide exceptional research. … I have found it a pleasure to work with Scott and consider him an extremely valuable asset to the company. I would place him at or near the top of all…employees as regards technical skills and capabilities. Quote from the Director of Development and Support, a retired Marine with high standards of excellence.