Sept. 2013 - Present Revionics Austin, TX
Senior Software Engineer - C#, ASP.NET MVC, JQuery,
Backbone.js, RequireJs, ASP.NET WebAPI, Unity, StructureMap,
TFS, MSSQL Server, NUnit, RhinoMock, RhinoAutoMocker,
MSTest, Moq
At Revionics, I am part of the Portal team that is responsible for the web
applications for all of the company's products. For most of my time here, I
have been working as a lead developer on the new version of the
Promotions Management product. This product is a complete rewrite of
the existing version and is implemented as a SPA (single page application)
with a RESTful API backend.
Feb. 2013 - Aug. 2013 SymphonyVideo, Inc. Syracuse, NY
Director of Software Development - C#, VB.NET, ASP.NET MVC,
JQuery, Prototype, ASP.NET WebAPI, StructureMap, TeamCity,
MSSQL Server, NUnit, RhinoMock, RhinoAutoMocker
This position was a combination of software engineer, software architect,
software development manager as well as project manager. My
responsibilities included designing, developing, testing and maintaining
features of the [login to view URL] platform. I also manage all software
development projects and releases. This includes negotiating with the
business side of the company for feature sets to include in releases as well
as planning and scheduling all software development efforts. In addition to
this, I managed and mentored all of the software developers. The following
are some of the things that I accomplished in my time with
SymphonyVideo.
- Implemented new cloud transcoding service using the Zencoder API
([login to view URL]) to serve as an alternative to the current ProMedia
CarbonCoder based implementation.
- Implemented IOC/DI using StructureMap.
- Implemented abstraction layers and concrete implementations for
configuration, logging, caching, file system access, messaging,
serialization, services, data access and transcoding.
- Implemented continuous integration service using TeamCity.
- Implemented unit/integration strategy using NUnit, Should,
RhinoMocks and RhinoAutoMocker.
- Integrated Echo360, Camtasia Relay and Crestron Fusion output files
into the EnsembleVideo workflow framework to import that content
into the application.
Oct. 2012 - Feb. 2013 Perficient (GreenDot Project) Austin, TX
Technical Architect - C#, NServiceBus, RavenDB, MSMQ, MSSQL
Server, MSSQL ServiceBroker, SSIS, NUnit
I was rehired by Perficient to work as part of the GreenDot engagement in
Pasadena California. While on this project, I worked on a few proofs of
concept applications using NServiceBus, MSMQ and MSSQL
ServiceBroker. I also did a lot of research for a project to upgrade their
critical transaction detail table's primary key and performed all of the
necessary code changes to support this effort. I also did a lot of analysis of
their existing MSSQL Server stored procedures, custom functions, SSIS
packages and jobs in order to put together a Technical Design Document
for the work to rewrite a number of them as .NET applications. The end
goal was that these critical business processes would be written is such a
way that they can be better monitored, tested and reused.
Aug. 2010 - Sept. 2012 Dell (via SpeakTech/Perficient) Austin, TX
Architect/Senior .NET Devoper - C#, ASP.NET MVC3, JQuery,
CQRS, REST, StructureMap, MassTransit, RabitMQ, Solr, Topshelf,
Nancy, Razor, Memcached, Entity Framework, AutoMapper, Unity,
Azure (Queue, Blob, Table, ServiceBus), MSSQL, TFS, NuGet,
NUnit, RhinoMocks, Nbuilder, NSubstitute
Initially, I was hired to work on a reputation management system that was
intended to run in the Azure cloud environment. This system consumed
activity information from external applications via a RESTful API and
awarded points to those activities. Those points were then used to award
badges that were associated with a user's profile. All of this reputation
information was then made visible via a RESTful API and javascript
widgets that could be plugged in to external applications. After this work
was completed, I joined a team working on the administration tool and
client facing portals of an affiliate marketplace application. In my time on
this project I have architected and developed several distributed and highly
scalable enterprise applications including the following.
- A system to import merchant product feeds into the applications
catalog in various different formats including Google shopping,
commission junction, channel intelligence, dozens of custom
merchant formats and our own canonical file format.
- A notification system with an embedded Razor templating engine that
is used to send e-mail and text messages.
- A custom CDN implementation with a pluggable resource library
backing that can be used to serve images, video, audio, text, and other
file formats. I implemented versions of the resource library backend
that stored these resources to Azure BlobStorage and to binary files.
- A pluggable queuing framework with implementations for Azure
Queue, MSMQ and RabbitMQ that allowed us to switch the queuing
backend for our applications.
- A moderation system for products, images, stores and blog entries
that allowed application administrators to moderate these items and
reject offensive (or otherwise inappropriate) ones.
- A REST API that exposes the product catalog to applications so that
they can display our products. Currently, this API is being used to
build custom stores fronts, embeddable product list JavaScript
widgets and dynamic "hot spot" components that allow users to
augment their websites with products from our catalog.
- A pixel tracking system that allows us to track conversions from
products that are part of our catalog. This system manages leads,
tracking pixels, order information, commissions and cancellations for
all applications that expose products from our catalog.
- A generic version of the tracking system described above that can
track any item and subsequent transactions associated with it and
generate reports for all of this activity. This version can also interface
with our product catalog to calculate commissions but an item does
not have to be in the catalog to be tracked in this system.
- The administration application for creating users, stores, products on
top of the catalog system described above and reporting on web
analytics and order management.
- The frontend application for stores created on top the product
catalog and embeddable product widgets.
Nov. 2008 - July 2010 Newgistics Austin, TX
Senior .NET Developer - C#, VB6, MSMQ, MSSQL, Team
Foundation Server, NUnit
At Newgistics, I was brought in to help work on their new logistical
systems to handle outbound packages. Newgistics was already processing
returns and needed to expand their existing systems to process and route
outgoing packages. Specifically, I was brought in to work on the label
generation framework that would be used to render labels for all of their
packages and containers in several different formats (ZPL II, PDF, GIF,
JPG, PNG and BMP) and configurations. After having completed this, I
was tasked with porting a lot of their legacy VB6 COM libraries over to
C#. Later, I worked on enhancing their existing "advanced notification"
subsystem so that it would generate and process the new messages
associates with outbound packages. After completing my contract through
TekSystems, I was asked to join the Newgistics team as a permanent
employee. My responsibilities were extended to include the support and
extension of their Intellistation suite of tools used to generate labels,
research packages/containers, generate quality samples and reports among
other things. I also supported, maintained and upgraded the messaging
systems that were used to communicate between software products
deployed at the processing facilities around the country, the central
processing system and all of their clients. This includes a custom document
processing system that consumes and generates XML, CSV, EDI and a few
other file formats. I also was tasked with maintaining and troubleshooting
BizTalk 2006 R2 custom maps, orchestrations and libraries.
Jul. 2008 - Nov 2008 Technology Navigators(BHI) Austin, TX
Senior .NET Developer - C#, VB.NET, ASP.NET, Visual Studio
Tools For Office, JavaScript, MSSQL, NUnit, Nant,
[login to view URL]
At BHI ([login to view URL]) I was brought in to work on the billing
system that was used by the financial and sales department to collect
information about all of the BHI clients and generate reports and invoices
on a monthly basis. My first task was to convert the application from
VB.NET 1.1 to C# 2.0. Then, I had to automate the generation of several
Excel reports that were used to compile the information that would then
be used to generate monthly invoices in the Microsoft Great Plains system.
After this, I worked on adding tools for defining and maintaining the
various products and fees that can be associated with a BHI client. Then, I
used these items to define billing cycles and generate invoices that can be
edited online by each account manager before they are submitted to
Microsoft Great Plains. The invoice system includes auditing and approval
systems that guarantee that all changes can be traced and must be approved
by the appropriate users before they can be posted to the Microsoft Great
Plains system or written out to Excel reports.
Apr. 2008 - Jul. 2008 TekSystems(Wachovia) San Antonio, TX
Senior .NET Developer - C#, ASP.NET, Perl, JavaScript, Web
Services, MSSQL, Visual SourceSafe, CVSNT, NUnit, Nant,
[login to view URL], ExtJs Toolkit
At Wachovia I was part of the Internet Loan Services team, an Agile
development group. In this position, I was responsible for the maintenance
and enhancement of existing web applications as well as the development
of new Web 2.0 applications. During my time there, I worked on several
different types of applications including web services, database driven
applications, a framework to generate PDF documents, build script, and
test fixtures. I also led the conversion from Visual SourceSafe to CVSNT
and was a major part of the conversion from Visual Studio
2005/ReSharper 3/.NET 2.0 to Visual Studio 2008/ReSharper 4/.NET
3.5.
Feb. 2008 - April 2008 Freelance San Antonio, TX
Software Developer - C#, ASP.NET, ASP.NET AJAX, Cold Fusion,
JavaScript, Web Services, MySQL, MSSQL, ExtJs Toolkit, NUnit
After leaving SWBC in early February, I worked as a freelance software
developer building applications is many different environments and
programming languages. These applications include personal websites,
custom IE/Firefox toolbars, enhancing a TIFF viewer ActiveX control and
e-commerce websites.
Sept. 2006 - Feb. 2008 TekSystems (SWBC) San Antonio, TX
Senior .NET Developer - C#, ASP.NET, ASP.NET AJAX,
JavaScript, Web Services, MSSQL, NUnit
In this position, I was responsible for the development of new database
driven desktop and web applications in .NET 2.0 as well as the migration
of existing Delphi applications into .NET platform. During this time, I
worked with another contractor to build the .NET framework that was
being used to port all existing Delphi applications. I also conducted training
sessions for all of the existing Delphi/Cobol programmers in my
department to help them learn C# and the new framework that we were
developing. After being hired on as a full-time employee, I finished the
.NET framework that was started while I was a contractor and used it to
port about 10 different applications that are part of the SWBC's FocusNet
platform into .NET. At the same time, I continued to mentor the
Delphi/Cobol developers in C# programming.
Sept. 2000 - Sept. 2006 [login to view URL] San Antonio, TX
Software Developer - C#, ASP.NET, Cold Fusion, Perl, C++, VB6,
JavaScript, MS SQL, FTP, XML, NNTP, RSS, SMTP, NITF
For my first 3 years at [login to view URL], I was responsible for the
design, development and maintenance of the software applications that
were used to publish and maintain the [login to view URL] websites. This
included the automated applications that import data from
[login to view URL] partners and content providers, the applications that
export data to 3rd party companies that use it on their own websites, the
web and desktop tools that were used to maintain all of the databases that
[login to view URL] utilized and the actual web pages that are accessible
through [login to view URL] and the other websites that
[login to view URL] maintains.
Web Development Manager - C#, ASP.NET, Cold Fusion,
Perl, C++, VB6, JavaScript, MS SQL, FTP, XML, NNTP, RSS,
SMTP, NITF
After 3 years of working for [login to view URL], I was promoted to the
Web Development Manager position. In that role I was responsible for 3
software developers, 3 web designers and a technical assistant. As their
manager, I was responsible for assigning tasks and making sure that they
were completed on time and met all acceptance criteria. In addition to this,
I met with our clients and partners to gather requirements and set
expectations and deadlines. At the same time, I continued to design,
develop and maintain the applications that are listed below.
The following is a partial list of the applications that I worked on for
[login to view URL].
- Created automated applications in C#, Perl, C/C++, Java, Visual
Basic and Cold Fusion to import data from [login to view URL]
partners and 3rd party content providers into a MSSQL server so that
it could be published on the website. These included news articles
from the San Antonio Express-News and the Associated Press,
announcements, obituaries, classified ads, high school sports data,
police reports from the San Antonio Police department, real estate
listings, recipes, and weather feeds.
- Created automated application to batch process images that are
displayed on the [login to view URL] website alongside text that is
imported through automated processed listed above. These included
applications for processing comic strips, story photos, announcement
photos, obituary photos, real estate photos and web cam images.
- Create a desktop application to automate the process of encoding,
optimizing and upload videos for our website.
- Create dozens of tools that are available online and were used to
maintain most of MySanAntonio's different web applications and
database. These include tools to create/edit/delete and publish
articles, obituaries, announcements, classified ads, slideshows, e-cards,
real estate properties, employment listings, vehicle listings, weather
data, contests, polls, surveys, elections, keywords, quizzes and videos.
- Installed, configured and maintained IIS, Cold Fusion, Real Media,
MSSQL and file replications servers that were used to develop and
host the websites that we maintained.
? Created custom web application, COM objects and maintained
existing applications for clients including the San Antonio CVB, The
San Antonio Symphony and The University of the Incarnate Word.
1998 - 2000 Applied Computing Systems, Inc. Los Alamos, NM
Software Developer - C++, Perl, Visual Basic, Oracle, CVS
Applied Computing Systems was a government contractor in the chemical
weapons program whose primary product was called EMIS (Emergency
Management Information System). During my time there, I was
responsible for the development of complete software products including
custom database servers and portable window based client applications.
- Developed a database server that was capable of processing
approximately 35 SQL commands including the ability to create,
drop and populate database tables with optional index fields. It
also provided for locking of individual items, columns, rows, or
entire tables. The ability to create large binary objects was also
supported. Probably the most advanced feature that this server
provided was the ability to register an interest in a specific column.
This feature allowed a user to be notified asynchronously of
changes to that column without having to poll the database.
- Developed several utility servers that supported a couple of client
applications that were developed at ACS. These included an
authentication, file lock, and mail lock server.
- Worked with another developer on a C++ graphical user interface
toolkit that was used to create portable interfaces for some of our
existing products. This toolkit used an embedded Perl interpreter
to create portable Perl/Tk widgets. All of the complexities that
were associated with communicating with a Perl/Tk widget from a
C++ object and from a C++ object to a Perl/Tk widget were
hidden inside of C++ widget classes and Perl/Tk composite
widgets.
- Worked on several bug fixes for a Visual Basic application that was
developed by another company. This involved looking through
thousands of lines of Visual Basic code as well as ArcView GIS
scripts to find such things as variables that were not properly
initialized or instances where the improper format was being used
to display information.
- Developed a portable GUI application to track the flow of data in
an Oracle database that was used by the same 3rd party application
described above. This allowed the users of this application to
determine, in real-time, whether other clients had received the data
that was sent to them. The necessary information was tracked
through the database system by looking for specific bits of data
inside of different database tables.
- Worked on several SQL and PL/SQL scripts that interacted with
and Oracle database.