Ruffin Bailey
- Charleston, SC, United States
- rufwork@gmail.com
- http://ruffinbailey.com
Online Portfolio: http://ruffinbailey.com/pastwork
Stack Overflow profile: http://stackoverflow.com/users/1028230/ruffin
Sample GitHub repos: TagifyJS and SqlDbSharp
Overview
Mr. Bailey has over twenty years' experience in full-stack web application system design, construction, leadership, optimization, and maintenance.
Recent professional experience concentrates on "cradle to grave" web application work:
- Designing NoSQL document schemas for MongoDB and relational schemas for SQL Server, MySQL, and others;
- Architecting and coding .NET MVC and Node micro- or monolithic cloud or on-prem middleware in C#, JavaScript, or TypeScript using GraphQL, LINQ to EF, or direct data access;
- Creating Angular 2-9, AngularJS, Vue, and React powered front-ends;
- Testing work, most effectively with Test-Driven Development, using tools like Selenium, Jest, & Jasmine on the client and XUnit & Moq on the server-side.
All of these are done with particular attention to keeping code DRY, defensively written, and self-commenting.
Most work has been done in a Scrum environment, where Mr. Bailey has served as both a team and a project lead, coordinating stories, standups, and tasks with tools like Jira, TFS, and using kanban with Trello.
Mr. Bailey is also a proven communicator, with over eleven semesters' experience as an instructor at the university level, having taught courses in Business and Technical Writing, Cultural Studies of Video Games, and Electronic Media Writing. His academic work has been published in two collections, with one publication taught as part of Duke University's Information Science + Studies program. More recently, he co-authored, "Restarting Static: Television's Digital Reboot", which was published in the journal Television and New Media in April 2015 (online) and January 2016 (print).
As of May 2020, Mr. Bailey remains one of only two StackOverflow users to have been awarded the JSLint badge, and is in the top 3% all-time in StackOverflow's reputation league. You can review his answers on the site here and some of his favorites here: 1, 2, 3.
Areas of Expertise
TypeScript, C#, SQL, JSON, JSLint, JavaScript, .NET MVC, UWP, GraphQL, LINQ, LINQ to EF, SQL Server, MySQL, Angular 2+, AngularJS, React, Vue, jQuery, CSS, HTML, Bootstrap, Knockout.js, Xamarin, git
Work Experience
Contractor & Indie App Developer, Toptal and rufwork.com, LLC, July 2015 July 2018, January 2020 - Current
c#, typescript, angular 2+, angularjs, json, .net-mvc, graphql, sql-server, bootstrap & bootstrap grid, node.js, mysql, uwp, xamarin, vue.js, react, git
Portfolio direct link: http://ruffinbailey.com/pastWork/web/database.html#messagefactory
Mr. Bailey passed Toptal.com's careful screening process in 2015 as a full-stack web developer, and, via Toptal, has worked with everything from small non-profits to two Fortune 50 companies on coding projects, including the following:
- As part of an in-house disruption team, working with contractors and associates, was responsible for an Angular 9 module adding personalized care advice and procedure cost comparisons to a Fortune 50 healthcare provider's web presence, integrating with GraphQL middleware.
- Worked with a nonprofit workforce coordination program in a major US city to update and add features to their web apps responsible for student job applications and job matching. Technical stack included MySQL, .NET MVC and AngularJS.
- Re-architected a stalled GIS system that handled commercial land sales for a company with over $1 billion in revenue, moving from an over-engineered React and Redux codebase to a simpler "events up, props down" state management system.
As the owner of rufwork.com, LLC, Mr. Bailey has worked with many direct clients and performed independent app development, including the following:
- Worked with a small healthcare practice management SaaS create a site-wide, customized, HIPAA compliant chat service for providing site support and provider-patient communication. Leveraged XMPP and Strophe providers that were wrapped with a custom .NET WebAPI framework. The client code was created with React, JSX, Babel, and a home-grown routing system.
- Created a .NET MVC and jQuery based system to digitize asset management for customer-facing mail services for major Fortune 500 companies at one of the US's largest [snail] mail distribution companies.
- Used Xamarin to create an iOS app for the Hands of Christ nonprofit to create an app ensuring the fair distribution of clothes, school supplies, and other resources to grammar and middle-school aged tri-county students.
- Performed follow-on work at the Navy Enterprise Data Center (NEDC) from the previous position (see below) to keep the NEDC's PowerShell and PowerCLI reporting lights on after ESN's on-site contract expired.
rufwork.com has also released MarkUpDown, the most thoughtful Markdown editor for professionals on Windows 10. MarkUpDown is a Universal Windows Platform (UWP) application written in C# with server support in Node.js. The application is available in the Windows Store, and, aside from some icon design help, Mr. Bailey is solely responsible for all facets of MarkUpDown, from programming to website design and marketing.
Team Lead and Project Lead (Grantmaking), Blackbaud, Inc. July 2018 - January 2020
c#, typescript, angular 2+, json, mongo, sql-server, csla.net, Azure cloud hosting (database & server), bootstrap & bootstrap grid, git
Portfolio direct link: http://ruffinbailey.com/pastWork/web/database.html#grantmaking
Mr. Bailey served as project lead on an 18-month application rewrite for a Blackbaud's Grantmaking system, which brought in approximately $30 million/year in revenue.
The rewrite's tech stack utilized an Azure cloud-hosted, multi-tenant MongoDB datastore with interfaces exposed by a .NET Core MVC (but mostly using it to provide REST API endpoints) microservice-based application stack, with an Angular 6+ and TypeScript-powered client. This provided an interesting contrast to the legacy stack of about 1500 single-tenant SQL Server instances hosted in a single datacenter running against a Silverlight (and CSLA) powered client and server.
This project had bogged down before Mr. Bailey's arrival, and even after four years of development, had yet to allow users to create new entities. To jumpstart development, Mr. Bailey proposed a middle-way architecture, replacing the (strangely relational) Mongo/microservice backend system rewrite with REST APIs layered over the legacy CSLA services, allowing the team to dump the obsolete Silverlight dependency more quickly. The rebooted rewrite was operational less thank two years after it was restarted with the hybridized tech stack. (More details can be found here.)
As project lead, Mr. Bailey worked closely with product management to define strategy, make tech stack decisions, create the backlog (from the epic, feature, & milestone macro to Scrum story micro), and to set development priorities for four teams of developers. Mr. Bailey remained a key hands-on contributor as well, coding about 50% of each working day to demonstrate best practices, review new code, and to complete complex tasks.
Senior Programmer, Engineering Services Network, August 2014 - July 2015
powershell, smnp, vmware, wpf, c#, java, perl, powercli, git, GitLab
Portfolio direct link: http://ruffinbailey.com/pastWork/code/desktop.html#esnPowerShell
On-site contracting position at a Navy Enterprise Data Center requiring Secret clearance. Work began with the update of legacy VMWare Cops reporting PowerShell scripts delivered under another contract, and help coordinating the optimization of VMWare resources and EMC VNX storage.
Work included creating scripts to manage complex data diff and update uses, automation of VMWare utilization metrics, in-stream review and repair of code delivered to NEDC Engineering from other contracting sources, and update of all PowerCLI scripts to 5.5 compliance.
Mr. Bailey was the only on-site, full-time programmer at the SPAWAR LANT NEDC.
Senior Software Developer & Team Lead, PeopleMatter, October 2012 - August 2014
c#, asp.net-mvc-4, sql-server, fluent-nhibernate, javascript, ajax, jquery, jquery-ui, knockout.js, jslint, tfs, visual-studio-2013, sql, nhibernate-queryover, css, twitter-bootstrap, TFS
Portfolio direct link: http://ruffinbailey.com/pastWork/web/database.html#peoplematter
Member and lead of one of five Agile Scrum teams working on PeopleMatter's Schedule module, "an online schedule maker, manager and communicator." The PeopleMatter stack included fairly strict Microsoft MVC 4.0 with Microsoft SQL Server 2008 R2 on the server, and an exceptionally data-rich KnockoutJS powered client.
Mr. Bailey's team's work included development of PeopleMatter's Schedule component, used to schedule employees mainly in hourly service/restaurant positions, the creation of an employee background check service integration with products from Sterling Infosystems, and the creation of a JSLint-powered Team Foundation Server (TFS) build policy to ensure that all JavaScript code checked into the PeopleMatter repository is (reasonably) well formatted.
For the Spring 2014 release of PeopleMatter, Mr. Bailey was the sole coder for two features, the Save for Later status and the Reasons for applicant status changes, featured on the PeopleMatter Spring 2014 product release page.
GIS Programmer, SYNCADD Systems, Inc., January 2012 - October 2012
c#, javascript, extjs, jquery, oracle, mapserver, openlayers, ajax, wcf, sql, css
Portfolio direct link: http://ruffinbailey.com/pastWork/web/mapping.html#ArmyMapper
Performed as one of two programmers on the "Development 1" task of Army Mapper 3.0, the US Army's enterprise Geographic Information System (GIS). Army Mapper is used by the Office of the Assistant Chief of Staff for Installation Management (OACSIM) as a tool to visualize the current state of the Army's resource management across Army installations (ie, bases) worldwide.
Work in the Development 1 task included designing and creating exceptionally advanced, user-facing geo/database query tools, allowing Common Access Card (CAC) authenticated end users to visually construct and save ad hoc queries of what amounted to complex SQL joins. These joined data sources, cutting across any number of tables, could then be concurrently queried by data values and geospatial constraints. Other tasks included creating a Range Query Tool (RQT) that allows Army support personnel to quickly find firing ranges by munition or weapon type, or by querying a number of other range characteristics.
Army Mapper 3.0 employs MapFish, OpenLayers, and MapServer to interface with spatially aware and flat data in Oracle and ESRI ArcSDE. Work was done in PL/SQL, C#, Javascript, and ExtJS.
ASP.NET Developer, SystemTec contractor for SC Department of Health and Environmental Control, October 2011 - December 2011
c#, sql-server, jquery-ui, ajax, javascript, css
Portfolio direct link: http://ruffinbailey.com/pastWork/web/database.html#dhecImz
Performed alpha rewrite of Immunizations Directory for the South Carolina Department of Health and Environmental Control (DHEC). System allows pediatrician and other doctor offices in the state of South Carolina to manage registered children's scheduled immunizations, both those already administered and those due. Project included learning the schema of the existing database in DB2, coding user interfaces with detailed data quality assurance requirements in .NET, jQuery, and jQuery UI, and connecting the UI and data tiers through a shared middle data tier, then also in development. This was a planned two and a half month project, immediately after which Mr. Bailey joined SYNCADD Systems.
President/Contractor, rufwork programming, Inc., October 2002 - Current
c#, vb.net, php, sql, ado.net, sql-server, mysql, javascript, ajax, xamarin, lamp, css, xamarin.ios
Incorporated software development and consulting company in October 2002, and used it to create self-released software and to consult while attending graduate school.
Projects have included database design and maintenance, creation of web-based interfaces to those systems, GIS and geospatial database design, and custom, stand-alone application development.
Most web-based projects utilize AMP stacks (Apache Web Server, MySQL RDBMS, and PHP extensions). Geospatial work includes ArcIMS, ArcGIS Server, MapServer, and Google Maps. Stand-alone application design uses Java or Visual Basic (VB6 and VB.NET), and now in Mono/Xamarin for iOS.
Representative projects follow.
- Maintains and develops a number of open source projects, including SqlDb#, a hand-rolled RDBMS, available on github, written in C# using the Mono Project/Xamarin. (Ignore the Hungarian.)
- SpiderSavings.com (AMP): Mr. Bailey designed and built an online business directory and coupon management system for SpiderSavings.com, including an administration module, coupon provider module, and forward-facing search and display functions. This site also included allowing users to manipulate images on the server, geocode their business addresses, and used AJAX for several functions, including end a method allowing end users to send coupons to themselves via the site's SMS functions.
- Cruise Services USA (Java): Work included a customized job application processing system, created in Java, for a cruise line employment service. The application retrieves emails created by a web form (part of the client's existing workflow), parsed their contents, and placed them into Excel files using automation. As of 2010, the application is still in use and maintained by rufwork programming.
Lead Programmer, Rok Technologies, Inc., September 2003 - July 2004
vb.net, vb6, java, jdbc, jsp, tomcat, arcsde, esri, sql-server, oracle, sql, javascript, css, xml
Prototyped a replacement system for a land records/tax parcel system for a county government in North Carolina, previously written using UNISYS EAE. Lead programmer responsible for new database schema design all the way through to GUI design and integration with the county's GIS information. Development work done in VB.NET, using Windows.Forms for GUIs with some test work with Crystal Reports & html for reporting. Oracle 9i via ODP.NET was utilized for the creation of the data tier.
Was also responsible for web-enabling RDBMS systems that communicate with ArcIMS using JSP.
Custom Solutions Developer, Blackbaud, Inc., February 2003 - August 2003
vb6, com, sybase, sql-server, sql, ado, adox
Customization responsibilities included extending Blackbaud's suite of products through VBA, creating customized Visual Basic 6 stand-alone applications that interfaced with Blackbaud products through COM or directly with the Blackbaud database in Sybase or Microsoft SQL Server, and creating custom reports for Blackbaud products.
Was also responsible for the creation of a web-based online student application system, which interfaces with Blackbaud's Admissions Management application.
Mr. Bailey's single most important accomplishment was likely that he convinced the team to use SQL to map data for custom reports rather than using flat file exports and putting business rules into Crystal Reports directly. previously been done exclusively with flat files exported from the Raiser's Using the old tools, reports would sometimes run for days. Moving that logic to SQL, where it belonged, sped up new reports by orders of magnitude. No kidding.
The coolest thing Mr. Bailey did was to non-intrusively add historical gift reporting views to a schema where product development said such an addition was impossible.
Database Administrator/Internet Mapping Specialist, Technology Planning and Management Corporation, October 1998 - October 2002
vbscript, arcims, javascript, sql-server, arcsde, tomcatvb6, asp-classic, ado, sql, css, java
Served as the NOAA Coastal Services Center's (CSC) lead Internet mapping server programmer as well as one of two database administrators. Database experience below builds on responsibilities listed in the Database Management Systems Specialist description, below.
Most mapping systems utilized a template for which Mr. Bailey was the lead programmer. This code employed the Environmental Systems Research Institute, Inc. (ESRI) ArcIMS ActiveX connector (pdf), and provided functionality through dynamic html, cascading stylesheets, and javascript on the client side with Active Server Pages and Visual Basic Script on the server side. Designed and taught a one-day introduction to "The ArcIMS ActiveX Connector" for approximately ten employees at CSC. Received three TPMC President's Awards for project contributions, and had one site featured on USAToday.com.
Descriptions of Mr. Bailey's ArcIMS sites are listed at the following URL: ruffinbailey.com/pastWork/web/mapping.html
Led small programming team in the creation of the first stand-alone application released by CSC. The Build-A-PIVOT application helps National Estuary Program (NEP) and National Estuarine Research Reserve (NERR) offices build web sites interactively, without the need for an on-site html expert. Released to a small group of NEP leaders in Summer 2002, Build-A-PIVOT was made available to the public on CD in December 2002.
Initially served as junior of two database administrators contracting for a NOAA office of over one hundred employees. Responsible for maintenance of all existing systems as well as the creation of new, non-spatial database systems. These systems included the following:
- NOAA Coastal Services Center (CSC) Management Information System (MIS): The MIS assists CSC allot its fifteen-plus million dollar budget and nearly one hundred employees over scores of projects.
- CSC Information and Request Tracking System (IRTS): CSC solicits online customer information on a voluntary basis and the IRTS collects and reports this information for internal use.
- CSC Dynamic Product Pages (CSC home page): This system kept track of CSC products and descriptions, allowing employees to update the system with new products before in-system managerial review allowed their display in a standardized format on the home page.
Certifications
Security+ CompTIA, 2014-2019
Projects & Interests
Stack Overflow, http://stackoverflow.com/users/1028230, November 2011 - Current
Written 126 answers. Active in javascript, jslint, c#, sql and mono.
GitHub - SqlDbSharp, https://github.com/ruffin--/SqlDbSharp, November 2013 - December 2015
c#
SqlDB# (Moore's Database) is a simplest-case, minimally viable, embeddable, YesSQL datastore, written in C# and designed for crossplatform application prototyping.
Original author and current maintainer.
GitHub - PerlRunner, https://github.com/ruffin--/PerlRunner, January 2015 - February 2015
c#
Stand-alone desktop Windows application to edit & execute Perl scripts. Open file, edit, hit F5, profit. Disclaimer: It's not an IDE.
Original author and current maintainer. Honestly, I can't believe there's nothing [free &] this handy for Perl written "natively" for Windows already. There may be, but all I've found is an Eclipse plugin and a project that released v1.0 and went silent.
SourceForge - Obsolete: Open ActiveX ArcIMS Template (OAAT), http://sourceforge.net/projects/oaat
The Open ActiveX ArcIMS Template is a pre-built, modular, generic, reusable codebase for use with ESRI's ArcIMS version 3+ Internet Mapping Server's ActiveX Connector, created with dhtml, ASP 3, and vbscript for use on Microsoft IIS.
Writing
Meaning And Culture of Grand Theft Auto: Critical Essays
Playing the Past: History and Nostalgia in Video Games (chapter as pdf)
Restarting Static: Television's Digital Reboot
This article examines the digital television (DTV) transition with particular focus on technical protocols, political and legal decisions, and home hardware. We argue that approaching DTV as a 'reboot' serves as a model for investigating digital transitions more broadly in a new model of public service.
Tools
First Computer: C=64
Favorite Editor: VIm