Programming Examples
Though most of my work with code supports web services and web-based interfaces, I do have an increasing number of stand-alone applications that were coded from "scratch".
MarkUpDown, my independently designed and coded Markdown editor, is the project I'm proudest of... currently. It shows a great example of my ability to execute a concept through to completion with a high-quality outcome.
But I enjoy having created everything on this page. SqlDb# is a particularly ambitious project to write a relational database system completely in C#. It was an excellent way to apply and improve my low-level development skills (here's one example). It already works well enough to use while prototyping, and I'm currently working on porting it to a Portable Class Library and adding indexing.
As the Internet was still reasonably new, I created a few desktop applications using Java and Visual Basic 6, from a Quake 2 server pinger (though long since retired) to a shareware email application to a web-page designer for members of the National Estuary Program.
Some of my application work is owned by those for whom I did the programming, though I would be happy to provide examples on request.
MarkUpDown (2016-)
In January 2016, I worked part-time on a Markdown editor for Windows 10 called MarkUpDown. It's an independently released application written in C# for the Universal Windows Platform. As of September 2016, it's entered beta testing, and will be released on the Windows App Store. Combined with a few open-source libraries, it is wholly original code, and is already, I believe, the best stand-alone dedicated Markdown editor for Windows.
MarkUpDown is an editor specialized to make creating Markdown code easy for beginners and experts. With helpful toolbars for beginners, GitHub Flavored/Multimarkdown table support, and keystroke shortcuts & Easy Actions for the expert, MarkUpDown is ready to help anyone create perfectly formatted Markdown files.
If you're new to Markdown, MarkUpDown will hold your hand as your learn Markdown syntax, ramping you up as quickly as you're comfortable.
If you're already an expert, MarkUpDown's Easy Actions will make markup flow from your fingers even faster. You'll keep your hands on your keyboard longer, and that means you'll spend more time typing, not tagging.
I'm shamelessly stealing text from my own marketing copy here.
To learn more about MarkUpDown, check out MarkUpDown's page on rufwork.com or on the Windows App Store.
PowerShell scripts (ESN for Navy Enterprise Data Center, 2014-15)
Work at Engineering Services Network, Inc. was on-site programming support for a Navy Enterprise Data Center, where I was the only full-time programmer on staff. I "inherited" a complex system of reporting that had been created under a previous contract with VMWare for custom services, and my task was give or take simply to maintain and run those reports. Instead, I took it on myself to essentially finish the last 20% of the customization to fit our day-to-day reporting requirements, automating as much of the reporting requirements as possible to minimize the amount of time the NEDC staff was spending in Excel and text editors crafting and finishing reports.
The system itself was a strange amalgamation of technologies, using VMWare's vCenter/vSphere Web Client (Java servlet) and PowerCLI as data sources, piping data through PowerShell and mapped drives to SQL Server Reporting Services, Java Servlets and Server Faces, Perl, and/or PowerShell to massage that data into reports -- some html, some simple comma separated value, some Excel documents. These were done through cron jobs, Windows Services, and occasionally manual executions. It really was, as Martin Fowler puts it, a snowflake.
Though my assignment was technically only maintenance, one of the first tasks I took once on site was to update the PowerShell scripts (which were the roundhouse for much of the data being thrown around) to match current customer requirements and requests -- addressing the practical pain points. The scripts would take measurements from VMWare virtual machines using PowerCLI, and the original script would only do this for a hard-coded list of VMs, and only for hard-coded VM traits.
After I was finished, the scripts were able to take any list of VMs by name from a CSV, report on any VM traits (several prepackaged selections plus the ability to take a list from the same CSV that contained names), and essentially perform all sorts of customizations that the initially narrowly focused scripts could not support. And the scripts were wonderfully documented to ensure they were maintainable and useable by engineers whose experience wasn't in PowerShell. I also had to update the scripts to support PowerCLI 5 and 5.5, which included moving from Get-Attribute
to Get-Tag
, a process I automated for our NEDC installation.
In any event, I became exceptionally well acquainted with PowerShell and using .NET syntax within PowerShell when needed. I connected custom PowerShell scripts to all sorts of web and reporting services, going as far as customizing code in Perl, Java, .NET, and php to automate workflows that were previously "manual" affairs.
Related Experience:
- Blog posts I wrote on PowerShell (mostly during ESN work).
- PerlRunner, a quick Perl IDE I wrote in WPF to make debugging Perl on Windows easier.
- StackOverflow answer on the best way to customize
Write-Host
. Trivial, but PowerShell specific. - A comma separated values StackOverflow answer based on work I'd done in part to support PowerShell.
SqlDb# (2013-)
SqlDb#'s goal is to be a simplest-case, embeddable, crossplaform, YesSQL datastore written in C#. Its ongoing emphasis is on a laconic, yet easy to understand and maintain, codebase that enables the serialization of data to files using a select subset of ANSI SQL.
Using SQL has many benefits over using a custom-rolled text file as an application's datastore, facilitating both initial coding as well as changing to another, more fully-featured database when a project requires it. At this early stage, SqlDb# is best used for crossplatform application prototyping. It has been tested on .NET 4.0, Windows Phone 8 & 10, and Xamarin's Mono.
The master branch should compile without edit for Mono and conventional .NET. A quick and dirty port to Windows Phone 8 can be found in the WP8 branch, and a prebuilt dll for WP8 can be downloaded here. Note that the WP8 branch should work fine on the other target branches with a single line change currently, the major difference being the use of a shim for the dbms' System.Data usage.
Build-A-PIVOT (BAP) Visual Basic Application (2001-2)
The BAP application is unique to CSC in that it is the first piece of software designed to be installed on a user's computer. One of CSC's signature product lines is the CD-ROM. When I started at CSC, CD-ROMs released had only static content. They held simple text and images in html format along with some spatial data that people could use only if they had expensive Geographic Information System (GIS) software like ArcView (now called ArcGIS for the Desktop). To get more dynamic content onto CDs, I first helped create dhtml pages with Javascript to include everything from simple mouse-over image swaps -- a "poor man's GIS viewer" -- to a Javascript-powered full-text indexing application that could highlight search terms once the user moved on to an html page with a hit, all from a CD with no software installation.
The browser as a means of delivery, though successful, was fairly limited. The BAP is the culmination of integrating CSC's html skills with truly dynamic content without browser constraints. By moving outside of the browser into Visual Basic, product users could not only read a tutorial of how to foreground their issues on a web site, now they would have their web pages created for them as they followed along and consolidated their information together. By using the Internet Explorer engine in the BAP application, the PIVOT team was able to continue to leverage CSC's html design abilities. The embedded IE engine also allowed simple hyperlink clicks to set off processes, like writing out files or creating html image maps, that could not have been easily done within a traditional browser's security constraints.
BAP was released to a select group of National Estuary Program (NEP) leaders in Summer of 2002, and is set for general release to the public in December 2002.
Screenshots, in jpg formatChecklist Project Entry/Edit page
Project page with review window open
Wizard, "What are we doing?" page
Wizard Finish page with example output in browser
The Digest Handler (2003-4)
You're subscribed to an email list. The traffic is brisk, so you subscribed to the digest version. You no longer get emails every fifteen minutes bothering your busy day, but the digest is unnecessarily difficult to read. Enter The Digest Handler. Now digest emails will stop looking like endless streams of text like this, and start looking like something manageable, like this!The Digest Handler isn't a mail handler. You don't have to give up Eudora or Netscape or mutt. Instead, The Digest Handler is made to work in tandem with your mail handler as it scans your inbox for new digests, downloads them, and parses them into an easy to read format. Download The Digest Handler and give it a try today! The Digest Handler is available for Mac OS X, 10.0 or higher, today. Windows (95 through XP) and Mac Classic versions are on the way!
(You'll note I didn't claim to be great at writing marketing copy.)
And just for fun, here's an archive.org backup of that Quake server browser!