MATTHEW CRAIG Raleigh, NC, 27605 (734) 623-7908 matt_at_mcraig.org OBJECTIVE: Work with a team of smart, motivated professionals on a product that offers challenges and opportunities for learning. KEY SKILLS: LANGUAGES: Javascript - nodejs, SQL, *NIX shell scripting, PHP, Perl RELATED TECHNOLOGIES: PostgreSQL, Redis, RabbitMQ, mocha testing framework, Jenkins CI, git, JSON Schema, RelaxNG, XML, EDI X12 OTHER THINGS I LIKE KNOWING: Amazon Web Services (RDS EC2 S3 ELB among others), chef, vim, how to produce quality documentation WORK EXPERIENCE: Senior Software Engineer/Integrations Architect: PeachWorks (formerly known as WhenToManage) February 2007 - Present: Worked as senior engineer with the company founder (product designer) to design our original SaaS/LAMP (Linux, Apache, MySql, and PHP) application for restaurants. In the early 2010s, we decided to rebuild the product on nodejs+postgres and a fully cloud-based API. My focus moved to away from monolithic stacks and into strictly backend API development and various B2B integrations (POS, food suppliers). These integrations are core to the business and based on our own microservices designs communicating through RabbitMQ, where we also understand the importance of good documentation not only to help our partners, but also so we know exactly what we’ve done. Since then I’ve been leading the team of engineers who optimize, build out, and maintain our systems as the customer base and demands on our software grow. Lead Programmer/System Adminstrator Leade Health, Inc. (Purchased by Ceridian in 2006) July 2000 - February 2007: Designed and implemented a full-featured, web-based Health Coaching System on Linux/Apache/PHP/PostgreSQL for our distributed network of coaches (in 2000 Leade's Health Coaching system was still based on a single MSAccess database.) Led the team in 2005 which rewrote the system, updating it to be standards-based and improve performance and interactivity through a JavaScript interface talking to a PHP backend through XMLHTTPRequests. Other major projects: Installed and administered Leade's initial systems; web and database servers, an office file server, a fax server, and several firewalls. In 2006, with assistance from one other sysadmin, added both database redundancy, in the form of Slony-I replication, and web site failover with 2 redundant load balancers serving requests through four actual web servers. Designed and implemented a web-based report generating tool with web-based editing and output in PDF format. Provide training tips and user support for around 30 non-technical users of the Coaching Database. Programmer/Researcher with Prof. Dragomir Radev at U of M Aug. 2003 - April 2004: Participated in research involving using topical web-crawlers and document surrogates to reduce bandwidth usage during real-time web searches. Technologies used included the open-source search engine, Nutch (www.nutch.org), which is a customized Java web-crawler, document summarization software developed at U of M, and Perl code, both home-grown and CPAN modules, to analyze our results. Programmer Spring Management Aug 1999 - June 2000: Lead programmer on an Electronic Medical Record system. Worked with Project Manager, who had medical office experience, to create a web-enabled system with which a doctor's office could manage all patient care. Project coordinator on the city of Toledo's Y2K desktop update team. EDUCATION: University of Michigan, MS Computer Science and Engineering, Dec. 2003 Indiana University, Bloomington BA Physics/German May 1995 Year abroad Universität Hamburg (Germany) 1992-1993 RELEVANT EDUCATION: Operating Systems: Internals of an OS including processes and threads, scheduling, memory management and networking. Artificial Intelligence: Familiar with many of the general paradigms of AI, including planning, various search techniques, constraint satisfaction. Experience programming in LISP and Prolog. Algorithms: Knowledge of all basic CS algorithms. Understanding of designing and implementing efficient algorithms. Natural Language Processing: Familiar with parsers (both statistical and grammatical), taggers, stemmers, finite state machines used in NLP. Real Time Systems: Knowledge of designing RT systems, scheduling, fault tolerance, timing/clocks, and guaranteed performance. Information Retrieval: Web search, social networks, methods of calculating document relevance. References available upon request.