James DeFord Mack, Jr
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.
I do stuff n’ things here also.
February 2020 – Current
I do stuff n’ things. I should update this…
June 2015 – January 2020
Software Development Intern
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
June 2012 – Sept 2013
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
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
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
Associate of Science in Mathematics with Honors
- 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
- Computer Networks
- Introduction to Computer Security
- Database System Principles
- Server-side Web Applications
- Enterprise-class Web Applications
- Computer Graphics
- MS SQL
- Visual Studio
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.
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.
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.
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.
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.
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
Qualcomm - DNS ToolTool 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 - PhoneDBA 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.
Qualcomm - Request Form FrameworkA 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.
Sony Network Entertainment - Test Set Reporting ToolWeb 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.
Sony Network Entertainment - RallySearch ToolWeb 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.
BAE Systems - Siebel Mail Handler PluginJIRA 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
The Left BehindCross 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.
GearDBWeb 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.
Quarter CalendarWeb 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.
File OrganizerCross-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.
GSL TrackerWeb 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.
Photo Rename ScriptPerl 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.
Love LettersText based implementation of the Love Letters card game demonstrating object-oriented design principles including polymorphism for the representation of the different card types.
Sudoku Checker/SolverPerl 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.