Resume
OBJECTIVE
I have one objective to achieve in my career: to make money doing what I love by being an indispensable benefit to the company that I work for. Employment is not only a means to make a living, it is also a means to increase my skill set, which makes me a better person and more valuable asset to my employer.
My ideal work environment is a small- to medium-sized development team that adheres to an Agile development methodology, implements best practices such as test driven development, continuous integration, and merciless refactoring, and works to cultivate the best in every developer.
EMPLOYMENT
Senior Developer, USfidelis :: May 2008 - Present
Technologies: C#, .NET 3.5, ASP.NET WebForms, ASP.NET MVC, Windows Communication Foundation, Windows Presentation Foundation, LINQ to SQL, Entity Framework, SQL Server 2005/2008, IIS 7, Visual Studio 2008 Team System, Team Foundation Server 2008, Subversion version control, Team City continuous integration, MSTest, NUnit, RhinoMocks
- As part of the company's growth strategy, I split the existing corporate website into three distinct websites and augmented the functionality of each. All websites were written leveraging the .NET 3.5 framework.
- I implemented two static mock-ups in ASP.NET MVC and worked with the design team to make sure web standards were followed. Functionality from the primary corporate site was migrated to each secondary site, respectively.
- For a rich-internet experience, I leveraged the jQuery JavaScript library and ASP.NET MVC’s Json support to retrieve data from the browser without executing postbacks.
- I wrote numerous Windows Communication Foundation web services to form an application tier which masked the underlying application data model. Each website consumed WCF services directly.
- I created a data model for each website in TSQL and used LINQ to SQL as the object-relational-mapping tool to interact with the data store.
- I added NUnit unit tests to each secondary site and used RhinoMocks to simulate application dependency functionality in each unit test. A Team City build server was deployed for continuous integration, and unit tests were executed for every source control checkin.
- To bring additional revenue to the company, I finished the re-design and implementation of the primary corporate site and worked with marketing on several web traffic campaigns using Google Web Analytics and Frontline Analytics. I also ensured that all regulatory compliance tasks were implemented in a timely manner.
- I re-factored the primary corporate site to eliminate code duplication, break up dependencies, and ease the maintenance process.
- I worked closely with the application administrator to clean up old environments and implement a standardized promotion process whereby each website was thoroughly tested in internal and external environments before being released. Each environment (development, staging, and production) consisted of a single IIS 7 web server, load balanced IIS 7 web service application servers, and a replicated SQL Server 2008 instance.
- To promote consistent release schedules, I worked with the project manager to re-factor Team Foundation Server source control and develop a change management process. We decided to use a semi-agile approach with small iterations and quick feedback.
- In order to mitigate the technological risks of re-engineering the existing line-of-business application, I was assigned to research, prototype, and make recommendations about chosen core technologies.
- Windows Communication Foundation (WCF) - I demonstrated that WCF proxies could be constructed dynamically by wrapping WCF's ChannelFactory<T>.Create() call in a custom class that acquired all endpoint settings from a custom data store. I also documented all WCF binding settings that directly affected our environment(s) for quick reference. In addition, I was tasked to demonstrate how clients could receive WCF messages on parallel threads and marshal those messages to the UI thread when UI updates were required.
- LINQ to Entities - After evaluating LINQ to Entities 3.5 and concluding that lack of POCO support, customizable entities, and self-tracking entities (in a disconnected state) were severe hindrances to our project, I began evaluating LINQ to Entities 4.0 beta. I created a proof-of-concept project that demonstrated the new T4 entity templating engine with customized entity templates, and self-tracking entities across a WCF service boundary. Problems with entity object graphs and maintaining entity state after database writes led me to conclude that additional ORM research was warranted because LINQ to Entities is not sufficiently mature.
- Windows Presentation Foundation (WPF) - I evaluated several possible design approaches for WPF user interface views, including Model-View-ViewModel (MVVM) and the Prism framework. We decided to use Prism due to its compatibility with Silverlight, it's robust EventAggregator messaging system, it's use of Microsoft's Unity Application Block for dependency injection, and it's support for reusable UI regions. I also demonstrated that WPF can enforce action-level security through its commanding system and control-level security through its visual and logical tree helpers.
- log4net - I demonstrated the robust logging capabilities of log4net by creating a custom WCF appender class that sent log messages to a WCF service asynchronously. Since our client applications live in a disconnected state, this will provide a tremendous benefit to developers who will no longer need to ask users to provide physical log files for debugging purposes.
- ININ ICELib - I evaluated ININ's .NET API for their voip telephony system in order to determine if we could integrate call center functionality into our applications without using ININ's standard client. I was able to connect to the server and perform all basic telephony tasks from within a WPF test harness.
- As part of the project leadership team, I took the initiative and wrote several standards documents for the team to consume.
- Coding Standards - Our coding standards document details mechanics of good variable naming conventions, commenting code, exception handling, etc., as well as best practice guidelines for refactoring, .NET Framework usage, event handling, etc. Coding standards were routinely invoked in code reviews to ensure that all developers were consistent in their practices.
- Solution Structure and Namespacing - In order to enforce consistency in Visual Studio solution/project organization, I created this standards document with code organization guidelines. All new projects adhered to its general recommendations.
- Source Control Structure and Branching Strategy - This document was developed in conjunction with our iteration plans to ensure that teams were working in appropriate source branches during development phases. All .NET library dependencies and database were moved into source control as well.
- Performed maintenance work on an existing legacy line-of-business application in preparation for a critical re-write
- Participated in numerous requirements gathering focus group sessions, as well as executive-level steering committee meetings to determine the shortfalls of the existing line of business application and triage feature requests
- Prepared initial documentation for new application architecture, focusing on the business domain and key functional specifications (artifacts included UML diagrams, risk assessments, a vision document, an integration document, etc.)
- Led a design patterns workgroup for existing developers to help educate and empower the development team in preparation for development on the new application
- Contacted third-party data and service vendors and analyzed external APIs in preparation for application integration
Lead Developer, Family Tree DNA :: September 2007 – May 2008
Technologies: C#, ASP.NET, SQL Server 2005, IIS 6, PHP 5, symfony, MySQL 5, Apache, Linux, Mantis bug tracking, Subversion version control
- familytreedna.com – Primary e-commerce initiative (IIS/ASP.NET/SQL Server 2005)
- Assessed business needs that were unfulfilled by existing public-facing website
- Documented existing business practices, and prepared suggestions detailing a software/hardware platform transition
- Established a bug tracking system and trained customer service representatives to use it
- Successfully resolved/fixed 217 of 293 reported bugs – roughly a 74% bug closure rate, averaging one bug closed every three hours, every business day from August to November
- Mitigated two separate system intrusion incidents, preserving all data and creating a security solution to prevent further compromises
- Delivered two iterations of upgrades to the site, coordinating with a remote team in China to integrate and deliver changes seamlessly; both upgrades were delivered on-time
- dnatraits.com – Secondary e-commerce business initiative (Apache/PHP/MySQL)
- Developed data model, business logic, and user interface components according to business criteria
- Determined priority of requirements and worked in iterative phases to meet deadlines.
- Worked with scientific collaborators in New York, Israel, and the United Kingdom to acquire domain knowledge
- Reviewed several PHP MVC frameworks and chose to develop the application using Symfony due to flexibility, community support, feature availability and documentation
- Developed a secure, comprehensive administration portal that provided user-friendly access to product, customer, and sale data, as well as financial reports; used Javascript/AJAX where appropriate to enhance user experience
- Developed an XML-based, Schema enforced data exchange with a partner lab in the United Kingdom to deliver order information, and receive testing results, on a regular basis
- Made significant enhancements to the public-facing checkout system, including a dynamic, client-controlled discount and coupon scheme
- Created dynamic PDF reports accessible via the customer portal to give customers access to their test results
- Integrated a third-party appointment tracking system to allow customers to schedule phone calls with in-house genetic counselors
Software Engineer, National Auto Warranty Services :: August 2006 – August 2007
Technologies: C#, .NET 3.x, WinForms, Windows Communication Foundation, Visual Studio 2005/2008 Team System, Team Foundation Server 2005/2008, Visual Source Safe
- Worked with a team of ten developers on an extensive Lotus Notes legacy system re-platform
- Gathered business rules and scenarios for several administrative departments to determine the appropriate functional and non-functional requirements for the replacement application
- Prepared high level documentation for company business scenarios
- Worked with the database administrator to form a data model consistent with the business model
- Implemented a C# .NET smart client (WinForms and web services) architecture using Microsoft Windows Communication Foundation for a 300+ user call center
- Designed and coded a significant portion of the customer service and contract fulfillment portions of the application, as well as the underlying web service components
- Designed and coded administrative portions of the application used for entering automotive data, team information, and pricing configurations
- Acted as a liaison between the primary application team and the accounting subsystem development team as a reference for the financial operations of the business
- Led a refactoring initiative for core components of the application that underperformed due to fluid requirements
Web Application Developer, River City Internet Group :: November 2005 – August 2006
Technologies: PHP 5, Java, Apache, Apache Tomcat, Linux, MySQL 4, Bugzilla bug tracking, Subversion version control, Zend Studio
- Worked in collaborative software development environment on an enterprise scale ISP management system IntraISP
- Acted as production support liaison between RCIG and clients by analyzing critical production bugs (both code and data), proposing solutions, and conducting follow-up meetings with clients
- Designed and coded software solutions in accordance with client requirements
- Performed bug analysis and implemented bug fixes for all parts of the IntraISP system, including customer registration and management, equipment activation, customer billing, financial reports, feature management, external/internal APIs, etc.
- Wrote custom software modules to extend PHP front-end functionality and PHP APIs
- Enhanced existing Java web services; performed troubleshooting for Java web service bugs
- Wrote high level and functional documentation according to customer specifications, as well as release notes and test cases for all implemented solutions
- Authored company-wide PHP coding standards document
- Wrote an internal PHP application that tracked software release notes
Web Application Developer, DSDirect :: July 2005 – October 2005
Technologies: C#, VB.NET, IIS 6, SQL Server 2000, Visual Studio 2003
- Performed requirements analysis for administration projects
- Designed portions of intranet sales application for auto warranty salesmen using ASP.NET (both VB.NET and C# as code-behind languages), Microsoft IIS, and Microsoft SQL Server 2000
- Wrote sales interface documentation
Web Developer, Protech Network Design :: May, 2004 – July 2005
Technologies: PHP 4/5, MySQL 4/5, Apache, Linux, FreeBSD, Zend Studio
- Acted as project manager and web application architect for numerous small/medium-sized businesses clients and individuals
- Performed requirements analysis, prepared sitemaps and cost quotes, and wrote documentation for web projects
- Designed, coded, and maintained a variety of websites and web applications
- Designed and coded internal web application that managed project information, customer information, purchase orders, credit card information, web hosting information, and generated a variety of reports
- Developed several PHP classes (security implementation, calendar) that were re-used in a variety of PHP applications
- Helped administrate a mixed network environment with Windows 2000 and FreeBSD servers
- Performed network installs, cabling, and testing; performed PC troubleshooting, maintenance, and upgrades for client computers
Partner, Bitmesa LLC :: March, 2008 – Present
Technologies: C#, .NET 3.5, WinForms, Apache, MySQL 5, Subversion version control, Mantis bug tracking
- Huntleigh USA
- Developed a .NET desktop application to record and manage scheduled wheelchair assistance for over twenty airports in the United States. The application was written in .NET 3.5 WinForms with a custom MySQL data access layer that communicated across a company VPN.
- I implemented an XML based caching module that saved data to a local machine if network connectivity was interrupted, or VPN access was unavailable.
- Custom reports were created in PHP to track individual airport team statistics.
HONORARY SOCIETIES
National Technical Honor Society
CERTIFICATIONS
Zend Certified Engineer
SKILL SUMMARY
Programming/Scripting Languages
- C# (up to 4.x)
- .NET base class libraries, including generics, reflection, threading, etc.
- Data access libraries, including ADO.NET, LINQ to SQL, and LINQ to Entities
- Web service libraries, including ASP.NET ASMX and Windows Communication Foundation
- ASP.NET WebForms and ASP.NET MVC
- Desktop development libraries, including Windows Forms and WPF
- PHP (up to 5.x)
- Core PHP function libraries
- PHP data access libraries, including Propel and Doctrine
- Symfony PHP web application framework
- Javascript
- Core Javascript libraries
- Prototype Javascript abstraction library
- script.aculo.us Javascript effects and UI library
- jQuery Javascript effects and UI library
Markup Languages
- XHTML/HTML
- CSS
- XML/Schema
- XAML
Software Design Methodology
- Object Oriented Programming
- Design Patters
- Unit Testing/Mocking (MSTest, NUnit, RhinoMocks)
- UML Modeling
Programming IDEs and Editors
- Microsoft Visual Studio.NET (up to 2010 beta)
- Zend Studio Professional (up to 7.x)
- Eclipse (up to 3.x)
- Macromedia Studio (up to CS3)
- NetBeans (up to 6.x)
Modeling Tools
- Enterprise Architect (up to 7.x)
- Microsoft Visio (up to 2007)
- Microsoft Visual Team System (up to 2010)
Version Control Systems
- Microsoft Team Foundation Server
- Microsoft Visual Source Safe
- CVS
- Subversion (TortoiseSVN and VisualSVN clients)
Issue Tracking
- Microsoft Team Foundation Server
- Bugzilla
- Mantis
Continuous Integration
- JetBrains Team City
Web Services
- Windows Communication Foundation
- SOAP/WSDL
Application Servers
- Microsoft IIS (up to 7.x)
- Apache Web Server
Relational Database Systems
- Microsoft SQL Server (up to 2008)
- SQL Management Studio Express
- TOAD for SQL Server
- MySQL (up to 5.x)
- MySQL Workbench
- SQLYog
- Microsoft Access
Operating Systems
- Microsoft Windows (up to Windows 7)
- Linux (Red Hat, SuSE, Ubuntu)
- FreeBSD
Graphic Design
- Adobe Photoshop
- Microsoft Expression Blend (up to 3.x beta)
Office and Productivity
- Microsoft Word, Excel, Access, PowerPoint, Outlook
- OpenOffice.org
Other Skills
- Regular expression proficiency
REFERENCES
To protect the contact information of my references from the dredges of the interwebs, said information will be made available upon request.
Print This Page