James Sumners

A software engineer with a background in Linux server administration.

§ 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 like the flexibility of the prototypal inheritance and first class functions. I have also been spending more time with Go, and quite like its approach to things.

In my free time I enjoy working on Open Source Software. I am a core maintainer of Pino and Fastify, and the lead maintainer of ldapjs.

Outside of software development, my various hobbies include bicycling, music production, and video games.

Ideal Position

I like building tooling and frameworks that help developers get their work done. I also enjoy building core services that facilitate integrating internal data and services, as well as to integrate external third party services and data.

Open Source Projects

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

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.

Fastify [github] ~ [JavaScript]

Fastify is a developer friendly Node.js HTTP framework that is also extremely performant.

I was made a maintainer of the project in September of 2017. I came to Fastify by way of my work in Pino. I noticed that Matteo, an original author and maintainer of Pino, was working on a new HTTP framework. At the time, I was working with Hapi but the work being done in Fastify intriguied me. So, much as with Pino, I started submitting pull requests to solve issues on the framework that interested me, which led to me becoming a member of the team.

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 [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.