· 6 years ago · Oct 02, 2019, 01:42 PM
1[redacted info]
2
3SUMMARY
4Web developer with 18 years experience. I have an emphasis on managed content, web publishing, and frontend Javascript development.
5
6SKILLS
7Bare metal Javascript expert
8Accessibility (Section 508)
9ASP.NET / C# / SharePoint
10Python / Zope
11PHP
12SQL
13CSS
14XSL
15
16AWARDS
17National Merit Scholar semifinalist, 2002
185x International Baccalaureate certificate recipient
19
20LANGUAGES
21English (native speaker)
22French (some proficiency)
23
24EXPERIENCE
25Self-Employed, Woodbridge, VA — Software Engineer
26November 2001 - PRESENT
27My last project was constructing web frontend and intranet (Microsoft SharePoint) components, for a large Canadian IT and management consulting company (CGI Group), on a contract basis. Previously I provided such services to American Management Systems, a company they acquired. I build managed content and brochure sites for local small businesses.
28Exmplar, Inc., Fairfax, VA — Software Engineer
29August 2007 - January 2008
30I built internal web tools with ASP.NET and C# to manage campaigns for clients such as Staples and West Marine, at an analytics and email marketing company.
31Siteworx, Inc., Reston, VA — Software Engineer
32February 2005 - April 2007
33I built web frontend components for clients such as AOL, the College Board, NAFSA, and National Geographic. I contributed to the codebase of an enterprise-grade content management system built in Python 2.
34
35
36
37EDUCATION
38Virginia Tech, Blacksburg, VA
39August 2002 - August 2004
40Pursued undergraduate studies in computer science and entomology.
41Gar-Field Senior High School, Woodbridge, VA
42August 1998 - May 2002
43Received advanced diploma, received 5 IB certificates, took 3 AP exams including both levels of Computer Science and Government and Politics.
44
45PROJECTS
46CynerGI — Corporate global intranet publishing platform
47From 2011-2019 I built and maintained frontend components for a large, heavily customized set of SharePoint installations for CGI Group. I implemented features such as a drilldown search powered by AJAX, with infinite scrolling, and a unified system of multilingual navigation and page headers with crosslinks between languages.
48
49
50QAE - Internal data processing tool
51At Exmplar, I developed an internal tool called QAE (Query Analyzer Eliminator) that provided the ability to run stored procedures required by their jobs to employees that formerly used Query Analyzer from Microsoft SQL Server. Before the QAE tool, we had as many as 15 people using the Query Analyzer on a given day. Some of the queries returned HTML that was directly used in email marketing campaigns. QAE was built using ASP.NET and C#, and used the Telerik RAD controls. In a particularly elegant fashion, I found a way to dovetail the HTML from the database with the grid from the RAD controls, for a unified output that could immediately be utilized. Managers were able to use QAE to run stored procedures as a sort of dashboard, to view the status of ongoing or past campaigns.
52ShopNGVideos.com — DVD retail site
53In 2007, I constructed the content management system for National Geographic’s DVD store, while at Siteworx. I built the Zope backend, wrote the middleware connector and payment processing connector in Python, and scripted the batch import of the item catalog and the thousands of image assets related to the items. I contributed to frontend development, including form validation and the checkout workflow, which used continuations across multiple page requests and handled the back button.
54
55
56Middleware connector - payment processing and fulfillment
57Before we could build the National Geographic Site, at Siteworx, we had to build a connector to the payment processing and fulfillment system. I was selected to develop the middleware connector, in Python. Amusingly enough, the middleware provider was called Middleware, Inc. and they wanted all communications over the wire to be done via SOAP envelopes. I did a week or so of research into Python or C++ based SOAP libraries, settled on SOAP.py, and wrote the code necessary to communicate with the middleware API. I learned a lot from this process, as it was lower level code than I ordinarily get to write. Instead of using Selenium tests, I got to write PyUnit tests, and I had to write a dummy server. Error handling was very tricky, and I had to use all of my debugging skills. I overloaded the repr function on my Python objects to render as XML for the SOAP envelope.
58AOL SmartBox — Suggest-as-you-type search enhancement
59At Siteworx I also built the Javascript frontend for a competitor to Google Suggest that lived on search.aol.com. The frontend component progressively enhanced a regular search input field with a dynamic list of suggestions for searches, based on what was entered in the input field. Special care was taken to ensure functionality across multiple domains (using a <script> element instead of AJAX), and to reduce input latency and predict text input in a smooth and responsive manner. The suggestion output was accessible and constructed in a semantic format that was conducive to screenreaders and other assistive technology.
60
61
62America’s Community Bankers - End-to-end Javascript managed content
63In 2007, Siteworx developed a new web site for a DC-area association called America’s Community Bankers. The new site was the first large project to use a new content management system we were developing, based on the Mozilla Rhino (JS for the JVM) and Helma projects. I was responsible for constructing the form validation, which used the same Javascript code in the browser that it used on the server side. I got to lay down best practices for future sites built with this CMS, from little touches such as not validating email addresses with regular expressions, to broad strokes such as the shopping cart for the association management system, which used continuations to provide a wizard-like interface that handled the back button properly. Finally free of Internet Explorer 6 support, I extended a lot of the built-in primitives by adding functions to their prototypes; this was the standard at the time, as libraries such as JQuery had not yet gained popularity. Having Javascript as the language of both the front end and the backend really fired me up for maturity of such technology, and I am eager to work with tools such as Node.
64
65
66NAFSA - Association of International Educators
67While at Siteworx, I constructed a complex content management system for NAFSA, including forms whose choices autopopulated via AJAX. The backend was Zope 2, with enhancements. I used Python scripts that filtered ZODB objects and outputted JSON, in combination with the output of SQL queries. The relational database we used was PostgreSQL, and I married results from the relational database to the object database in a way that optimized ZODB caching. In addition to constructing the content management system, I assisted in the redesign and rebuilding of NAFSA’s public site using CSS and Javascript to enhance the output of the CMS. I also built an application form for one of NAFSA’s services that they offered to students, using AJAX to narrow down the options available at each stage of the form.
68
69
70Dr. Sauer
71Also at Siteworx, I built a detailed project search form for an engineering contracting firm called Dr. Sauer. This form had access to an object database of all of the past and current projects of the firm. I wrote a recurring script to extract the project information from a Microsoft SQL Server database and cache it in the Zope ZODB, so that the form (in Zope) could contain the right options. The client specifically requested a single-page search application, so that each dropdown that was used to narrow the search results would narrow the options that were available in the other dropdowns, and entry in the text fields would automatically narrow the results via full-text search. Optimization of this project for performance in the browser and short loading times was very tricky.
72
73
74AOL Education - Topic search
75While at Siteworx, I built a topic search widget for AOL’s Education channel. Behaviorally, this widget was based on the Column mode of macOS’s Finder file manager, in that it provided a “trail” of selections to show history, and a hierarchical view of selections at any given level. The possible selections were loaded via AJAX, as Javascript objects. The unique feature of this widget was its accessibility: using a screen reader, the user was able to navigate the topics, with the screen reader guided to each new level automatically. For low-vision users, a clear delineation of hierarchy was provided via arrow icons, at each level. The result was a cross-browser, accessible solution to what previously required a complex site map that required multiple page loads to navigate.
76
77
78CollegeBoard PowerFAIDS Net Partner - Financial aid office online application
79For several months in 2006, I took over maintenance of an ASP.NET application called Net Partner, which was a component of the PowerFAIDS product that CollegeBoard distributes to financial aid offices at colleges and universities. Net Partner was designed to allow students to automatically register for financial aid and additional services. It was very much a challenge, because rather than the C# I was used to, I had to interoperate with VB.NET and C++ code. I added many new features to the system, including a way to intelligently warn the user that he was about to exceed the character limit of a textarea, without cutting him off, and a complex validation system that utilized the same schema on the server side as it did in the Javascript frontend.
80
81
82Lance Armstrong’s Tour of Hope
83In 2005, I was assigned by Siteworx to update Lance Armstrong’s Tour of Hope web site. The Tour of Hope was a fundraising program for charity, with Armstrong as spokesperson. The web site had a complicated registrant entry system written in PHP. I rewrote parts of the PHP for better browser compatibility, and provided progressive enhancements via Javascript, wherever possible, to make the entry forms easier to use. This project provided me with the opportunity to update an older PHP site that used legacy system functions such as register_globals, to use more modern techniques that were more secure.
84
85
86
87AOL Travel - XSL to HTML conversion and Javascript calendar control
88In 2005, Siteworx was tasked with updating AOL’s Travel channel, which at the time used the Travelocity API to expose a booking interface for hotels and flights. While my coworkers modified Java code that took the API data and converted it to XML, I wrote XSL transformations that produced the actual web page output. The key attribute we were looking for in this endeavor was low load times, because it was sure that if the user’s page loads took too long, they would use another travel booking site. We minimized the Javascript that was necessary for each page, but one of the Javascript enhancements I developed was a complex calendar control: the user could select start and end dates for his travel and hotel stays on a single calendar, with intelligent handling of overlapping date ranges.
89
90
91GetPrepped - LSAT prep student center
92From November 2004 to February 2005, I worked on the online student center for an LSAT preparation company. This project involved PHP and Javascript. I developed an online testing module that could be used to gain analytics on individual students and on each class of students. Test results were stored in a MySQL database and were exported to Excel when needed. This project was the first time I tried to enhance PHP with Javascript, and I dealt with a lot of interesting problems, such as how to handle the back button in a multipage form that used continuations. I learned a lot about what was needed to migrate from PHP 4 to PHP 5, and how to enhance form fields with Javascript to prevent a lot of validation errors later, when the user tried to submit the form.
93
94References available upon request.