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


Introduction

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. I enjoy the flexibility of the prototypal inheritance and first class functions.

Outside of JavaScript, my most recently heavily used languge is Java. Dealing with an Oracle database is much easier in Java than other similar 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 with 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. Once deployed, I manage my servers with Ansible.

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 pick up the Swift language.

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.

Pino [github] ~ [JavaScript]

Pino is a logging library for Node.js. It was developed to be a very fast logger so that applications can spend less time on logging and more time on their actual work.

I was made a maintainer of the project in September of 2016. I came to Pino because I was annoyed with other loggers in the ecosystem and was researching whether or not I should write my own. Luckily, Pino had the exact feature set I was looking for. I liked Pino so much that I submitted fixes to filed issues, and submitted my own improvements. These actions are how I earned maintainership.

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 [github] ~ [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.