James DeFord Mack, Jr

James DeFord Mack, Jr

Software Engineer

Lifelong coder with a Bachelor of Science in Computer Science from University of California, San Diego. Coding Enthusiast, Avid Gamer, Collector of Wolf’ly Objects, and Zombie Defense Consultant.

Curriculum Vitae

 

Software Engineer

OneVigor / Edisen

  • Development on application and supporting platform for scheduling, recording, playback and analysis of media content. C++.
  • Migration of large, multiple component/library project build process to CMake to unify Linux and Windows build and release process.
  • Implementation of Web Authentication, associated user password features and session management for server application user control and configuration pages. JavaScript / C++.
  • Feature development on Node.js web application facilitating support and management of servers running platform software.
  • Implementation of FFmpeg library to add hardware-accelerated media decoding for existing media transcoding server process. C / C++.
  • Integration of Samba event logging into application’s existing logging functionality via rsyslog and required configuration. C++.
  • Implementation of HTML5/CSS overlays into application’s video transcoding pipeline utilizing Chromium Embedded Framework. C++.
  • Design and Implementation of media Content Cataloger module with live monitoring via linux inotify and transmission to Redis for REST API access and automatic detection/scanning of USB/SDCard devices and content syncing to S3 for Camera2Cloud feature. C++.
  • Design and Implementation of Stream Switcher module providing access, control, and status monitoring of Ateme TITAN transcoding devices to REST API including stream thumbnail gathering and upload to S3. C++.
  • Security analysis of server application feature development.

October 2020 – December 2023

Software Engineer

Ubiq Security

  • Development on Encryption Security Engine SDK. C++11.
  • Feature development on REST-based Key Management Server for Client Applications. C++14, μWebSockets
  • Java Native Interface (JNI) development for Security Engine SDK. C++11, Java 8.
  • Java Client Library development for JNI Object-Oriented interface. Java 8.
  • Java/Android Client Application development utilizing Security Engine SDK. Java 8.
  • REST Service development for interface between AWS KMS and Security Engine SDK.

February 2020 – July 2020

Software Engineer

Northrop Grumman

  • Feature dev and bug fixes on cross platform Windows and Embedded Integrity applications in C++ on software defined radio project.
  • Code Reviews (Code Collaborator) and Static Analysis Bug Triage (Coverity)
  • Debugging and Diagnostics of embedded software integration with new production hardware.
  • Training and Mentoring of Software Engineers.
  • Software Lead for System Diagnostics Software Component.
  • Software Lead and Architect for customer facing Log Reporting Web Application. Node.js
  • Created and executed process for gathering, verifying and delivering firmware source to customer per their requirements.
  • Code maintenance and integration support for interface app transferring packets between Ethernet interface and FPGA. C++, Linux.
  • Designed and executed end of year project demo for company executives and again at trade show to develop new business.
  • Initial design and development of UDP messaging service for receiving and executing commands on embedded device. C++, Linux.
  • Design and development of XML schema driven data filtering service. C++, Linux.

June 2015 – January 2020

Software Development Intern

BAE Systems

Development team had recently switched from Rational ClearQuest to JIRA. Independently developed in Java a JIRA plugin to provide previous ClearQuest functionality of automated Issue generation from automated emails. Assisted in Perl scripting to provide development tracking integration between Rational ClearCase and JIRA.

July 2014 – Sept 2014

Software Engineering Intern

Sony Network Entertainment

Independently developed a reporting tool in JavaScript utilizing JQuery that extracted data from a software lifecycle management application via a REST API and created interactive reports for development iterations. Independently developed a search tool that expanded the search capabilities of the user search interface for the software lifecycle management application allowing for more complex queries. Expanded an existing Java JSP data collection and reporting application and administered its Tomcat instance and MySQL database. Participated in a group development project to rebuild an existing C++ testing framework in Java using TestNG.

June 2012 – Sept 2013

QA Intern

Websense

Assisted in drafting and revising SOX compliant test plan documentation for internal enterprise applications. Executed test plans and reported/documented defects and assisted developers in locating and resolving defects. Wrote and executed queries with MS SQL for data validation in testing.

Aug 2010 – Nov 2011

Engineering Intern

Qualcomm

Worked in a System Administrator team supporting a group of approximately 100 developers. Assisted in the system administration of 1200+ RHEL servers including developing Perl scripts for automated administration. Independently developed a tool for the dev team that provided DNS zoning functionality via a Perl script driven by a PHP web frontend utilizing a MySQL database.

Jan 2008 – Dec 2008

Information Systems Intern

Petco

Supported the WAN group in Information Systems with their project to convert 700+ Petco stores to their new ISP. Included configuring Cisco routers and assisting stores in setup and migration to new network. Also assisted in day to day operations including troubleshooting store connectivity issues and providing support.

June 2005 – Aug 2005

University of California, San Diego

Bachelor of Science in Computer Science

March 2015

Grossmont College

Associate of Science in Mathematics with Honors

May 2007

Relevant Coursework

Core

  • Basic Data Structures and Object-Oriented Design
  • Computer Organization and Systems Programming
  • Software Tools and Techniques Laboratory
  • Advanced Data Structures
  • Design and Analysis of Algorithms
  • Software Engineering
  • Principles of Computer Operating Systems
  • Programming Languages: Principles and Paradigms
  • Compiler Construction
  • Components and Design Techniques for Digital Systems
  • Introduction to Computer Architecture

Technical Electives

  • Computer Networks
  • Introduction to Computer Security
  • Database System Principles
  • Server-side Web Applications
  • Enterprise-class Web Applications
  • Computer Graphics

Proficient
  • C++
  • C
  • C#
  • Java
  • Python
  • JavaScript
  • HTML/CSS
  • Unity

Prior Experience
  • Perl
  • PHP
  • Bash
  • Android
Databases
  • MariaDB
  • MySQL
  • PostgreSQL
  • MS SQL
  • SQLite
  • Redis

Tools
  • Git
  • Subversion
  • Perforce
  • ClearCase
  • Vim
  • Eclipse
  • Visual Studio
  • VSCode

Academic Projects

CSE 12 - Basic Data Structures and Object-Oriented Design

A complex expression calculator iteratively implemented with different data structures: an array based stack with null pointers for data in C, a linked list with null pointers for data in C, a symbol table implemented via a hash table with a base class type for data in Java, a binary tree with generics in Java, a binary tree with templates in C++ and a binary tree stored in a binary file on disk in C++.

C, C++, Java

CSE 70 - Software Engineering

A quarter long project developed in a team of 6 implementing a GUI cross-platform IRC client following RFC 1459. The project was developed using the principles of extreme programming including test driven development and pair programming.

Java, JUnit, Eclipse, Ant, Subversion

CSE 100 - Advanced Data Structures

Reads in a directed graph as a series of node pairs via an istream and performs a topological sort on the nodes.

Implementation of a hash table with templates via binary tree hashing and passbits.

Implementation of a priority queue with templates and implementation of disjoint subsets (union-find). Structures used to solve the traveling salesman problem for inputted graph.

C++

CSE 120 - Principles of Computer Operating Systems

Implementation of specific OS functions for a Unix based operating system. Process creation and context switching with saving and restoring contexts. Scheduling via first in first out, last in first out and preemptive scheduling. Synchronization including the implementation of a semaphore structure and shared memory. User-level thread package supporting a variable number of maximum threads.

C

CSE 123 - Computer Networks

Implementation of a file server for the TFTP protocol using sockets. Implemented over UDP and handling packet loss, timeouts, configurable port number, TFTP error cases, and multiple simultaneous clients conforming to RFC 1350.

C

CSE 127 - Computer Security

Various exploits granting root shell access against C programs exploiting buffer overflows, off-by-one errors, integer overflow, a bug in an implementation of free() and string formatter vulnerability. Exploits written in C.

A heap spray attack against a network service that gains shell access to steal a target data set. Target program was implemented in C, exploit written in Python.

Various exploits against a web application to circumvent login authentication and modify server data. Exploits utilized cookie theft, cross-site request forgery, SQL injection, password theft and a worm submitted through a web form. Target application implemented in PHP, exploits in JavaScript.

C, Python, JavaScript

CSE 131 - Compiler Construction

A quarter-long project developed with a partner implementing a compiler that provides syntactic and semantic analysis with error message and line number output. Performs operations for the Reduced-C programming language which is a hybrid of C, C++ and Java features and syntax. Performs code generation for 32 SPARC architecture into assembly code and uses the clang assembler to create an executable binary. Also included a test case framework written in bash scripting that will compile individual test case files and compare with corresponding expected output file.

Java, CUP, Bash, Solaris, Git

CSE 135 - Server-side Web Applications

A quarter-long web application project developed with a partner implementing a university graduate admissions website. Features user authentication and authorization with access control for multiple account types with different access rights. Student accounts submit applications, reviewer accounts review and approve applications and chair accounts accept applications. Applications, accounts and reviews stored in PostgreSQL database.

Java, JSP, Struts framework, MVC, JavaScript, Ajax, PostgreSQL, Subversion

CSE 136 - Enterprise-class Web Applications

A quarter-long web application developed with a partner implementing record creation, searching, viewing and deletion of entity relationship data. Designed with MVC principles and implemented in separate business driven layers: presentation layer, service layer, business logic layer, data access layer and the database.

C#, .NET, MS SQL, Git

CSE 167 - Computer Graphics

An OpenGL renderer for the real-time rendering of of 3D scenes with features implemented iteratively during the quarter. Vector and Matrix classes for affine geometry transformations. Camera class to control viewing perspective. Importing and displaying OBJ files and point clouds. Manual rasterization with shading, z-buffers and manually variable point sizes. Scene graphs and manual object-level culling. Mouse trackball rotation of objects. Fixed function lighting and per-pixel lighting via shaders. Environment and texture mapping. Basic animation and particle effects.

C++, OpenGL, GLee

Professional Projects

Qualcomm - DNS Tool

Tool primarily implemented via a Perl script that takes in command line options and will add, delete or move an IP address between DNS zones. It checks out the DNS zone file from Subversion, performs the changes, then commits the changes back in. Also features a PHP web front end for developers to easily run the tool and view a diff of the DNS changes.

Perl, PHP, Subversion

Qualcomm - PhoneDB

A web application created for auditing purposes to keep track of development phones and their current software/firmware versions. The front end allowed for the adding phone records, updating, deleting and searching with data stored in MySQL.

PHP, MySQL.

Qualcomm - Request Form Framework

A framework for the admin team to rapidly develop and deploy request forms for the development team to use. Intended to replace high volumes of request emails with simple web forms to provide consistent format of incoming requests to increase productivity.

PHP

Sony Network Entertainment - Test Set Reporting Tool

Web application providing iteration testing reports for QA Manager. Tool utilized 3rd party API for Rally ALM to collect data and display a hierarchical report of test sets and their test cases and performed additional queries to display related defects and user stories. Test sets were collapsable and all objects provided links to view in Rally. Tool featured options to run report on any project or iteration. Provided a table of metrics and a separate printable format for official documentation. Tool reduced management auditing phase from several hours to less than 40 minutes.

JavaScript, JQuery, HTML/CSS, Rally App

Sony Network Entertainment - RallySearch Tool

Web application providing custom advanced search functionality for defects, user stories and test cases in the Rally ALM. Tool utilized 3rd party API to perform queries against Rally’s database and provide results with object information and links into Rally. Allowed for greater search options and combinations of parameters than the included default search functionality of Rally. Could be run inside Rally as a plugin or independently as a stand-alone client-side web application.

JavaScript, JQuery, HTML/CSS, Rally App SD

BAE Systems - Siebel Mail Handler Plugin

JIRA plugin that would run as a mail handler on JIRA and create issue objects trigger upon incoming emails from Siebel CRM. Incoming emails from Siebel were parsed and details extracted to auto-populate new issue fields.

Java, Atlassian SDK

Personal Projects

The Left Behind

Cross platform (Windows/Linux) real-time strategy game built from scratch with a custom engine and featuring 2D sprite animation, event handling system, A* pathfinding, and state machine driven AI behavior. Resources and content loaded via XML files.

C++, SDL

CW Vote

Web application providing polling functionality. Designed to be embedded in an Enjin page as HTML and JavaScript and use the Enjin API to gather user data. Communicates via AJAX with a PHP web service to store poll and vote data in a database. Has functionality for standard users to vote and admin users to create and manage polls.

JavaScript, JQuery, AJAX, PHP, MySQL

GearDB

Web application that stores records of gear items in World of WarCraft. After items are inputted it scores each item based on weighted stat values to facilitate selecting the optimal item per gear slot.

PHP, MySQL

Quarter Calendar

Web application providing a clean 10 week calendar for a quarter at UCSD. Reads an accompanying text file with class assignment and holidays. Caldendar updates to grey out days and assignments that have passed and highlight the current day. Designed to provide a quick impression of the quarter as a whole.

PHP

File Organizer

Cross-platform (Linux/Windows) program that recursively processes a directory and subdirectories, renaming and organizing the files based on the extension and regular expression pattern matching to determine what type of file or media it is. Moves the resulting files to a sorted and categorized directory. Originally developed for command line operation and later expanded to a GUI with Swing.

Java, Swing

GSL Tracker

Web application to keep track of the current viewing progress of a seasonable eSports tournament called the GSL. Implemented as a client-side page that communicates with a web service that stores the data in a database.

JavaScript, Ajax, PHP, MySQL

Photo Rename Script

Perl script that will rename all the jpegs in a directory with sequential names based on the date the photo was taken read from the photo’s metadata. Designed to deal with the naming collision of the default photo names from digital cameras.

Perl

Love Letters

Text based implementation of the Love Letters card game demonstrating object-oriented design principles including polymorphism for the representation of the different card types.

Java

Sudoku Checker/Solver

Perl script that can read a solved sudoku puzzle in and verify the solution is valid. Also performs a solving algorithm on incomplete puzzles and outputs the solution.

Perl

Contact Me

7 + 5 =

Follow Me