James Sumners

A well rounded Linux administrator and web developer. Adept at everything from network operations and OS administration to server-side and client-side development.

§ Curriculum Vitae: html, pdf, rtf, docx, md


I am a self-taught programmer and Linux administrator with a B.Sc. in Mathematics. I started programming around age 13 (~1992) with BASIC, and have taught myself multiple languages such as: C, C#, Objective-C, JavaScript, Python and Java. My current favorite language is JavaScript. It clearly has idiosyncracies, but I really enjoy the flexibility of the prototypal inheritance and first class functions.

Outside of JavaScript, the language I work in the most lately is Java. Dealing with an Oracle database is much easier in Java than other languages, and the programs I write at work require such. I do like the strong typing of Java, though. It’s nice to have the guarantee that data will conform to a predefined structure. Still, I tend to have more fun in a weakly typed language like JavaScript.

I started getting into Linux when I was 17 or 18. I believe I started with SuSE 5.2, but the first distribution I really spent significant time with was Debian 2.1 (Slink). By the time Debian 3.0 (Woody) was released, I was using Linux full-time as my desktop operating system. Nowadays, I manage many Red Hat Enterprise Linux servers, for which I build barebones kickstart profiles and package RPMs as necessary.

Ideal Position

While my most developed skill set is in the Linux administration domain, my ideal position would be on a small(ish) team doing interesting web development. I would love to work with a designer, or two, implementing their ideas in a Node.js environment. If possible, I'd like for the position to include regular, or mostly, telecommute days.

I think it would also be fun to work on phone applications. Specifically, iOS applications. I’d love to get back into Objective-C or even Apple’s new language, Swift (I’ve played with it and it’s rather nice).

However, I understand that ideals are few and far between. So I'm not holding out for this exact position. I am open to a variety of other positions.

Open Source Projects

Listed here are a few highlights of open source projects I have created, or contributed to, in my free time:

JSCAS [github] ~ [JavaScript]

JSCAS is an implementation of Apereo's Central Authentication Service (CAS) written in JavaScript.

I created this project because I need to run a CAS environment, but I find the reference implementation cumbersome. The goal with this project is to make it as easy to use and extend as possible, while adhering to the protocol specification.

Crypto Util [github] ~ [Java 8]

Crypto Util is library that wraps the native JDK cryptography functions making them easier to use. It provides easy to use classes and methods for common scenarios. It also provides a simple interface for using uncommon algorightms.

PL/JSON [github] ~ [PL/SQL]

PL/JSON is a set of Oracle PL types and packages that provide JSON support to the Oracle PL language.

I was made a maintainer of this project in November of 2014. I spearheaded moving the project from SourceForge to GitHub, in an effort to make it more attractive to new contributors, and reorganized the structure of the project's source files.

Prior to becoming a maintainer, I had contributed patches to implement JSONP support. I had also monitored the SourceForge forums and helped others learn the library.

Thymeleaf Layout Interceptor [github] ~ [Java 7]

Thymeleaf Layout Interceptor is a Spring request interceptor that facilitates using a Thymeleaf template as a layout definition.

Tomcat RPM [github] ~ [Bash] [RPM Spec]

Tomcat RPM is a project that simplifies building a Tomcat package for Red Hat Enterprise Linux, and similar distributions.

This is my own fork of work previously started by another individual. I greatly overhauled the build script to perform the build within an environment totally maintained by the build script. I also added in building the Tomcat Native library and bundling it into the RPM. Finally, I added JSVC to the generated RPM.

The result of my work on the project means that generating a custom Tomcat package with all the bells and whistles is as simple as running:

$ ./build.sh

WinLN [bitbucket] ~ [C#]

WinLN is Windows tool I wrote to manage symbolic links. It makes creating symbolic links in Windows very easy, and it retains a record of each symbolic link created with the tool.

This tool is written in C# .NET using the Windows Forms library.