Skip to content

AWE Detail

Background

I first joined AWE (Advanced Workstations in Education) during my first co-op (internship) through Drexel University. At the time, the company had 9 other employees and was a computer services company primarily servicing public libraries and Boys and Girls clubs in the region, and they were in the early stages of transitioning into a product company. During that first co-op I helped roll-out the first major deployment of V1 of their new product, the Early Literacy Station (ELS). The ELS is essentially a standalone PC loaded with educational content for young learners and locked down in such a way as to ensure that it is safe, secure, and requires no maintenance. After finishing my first co-op with AWE, I continued to work with the company part-time while I finished my degree. I also spent a second co-op with them.

Joining the company full-time after graduation as a full-time developer, I was part of a very small development team that continued to add new functionality to the product and the supporting portal and web services. I soon became the lead software developer in the organization, and we watched the product line continue to blossom to where our products are in 45% of libraries across the USA, and are in Canada and and several other countries around the world. The company grew to roughly 50 employees, and the development team grew to as many as 8 full-time developers.

Job Responsibilities

  • Lead developer on the main product produced by the company for 8 years
  • Led the product development team which did all development of the company’s products and internal tooling to support sales and internal processes
  • Assisted other developers when they encountered technical or design hurdles to analyze the situation and engineer appropriate and effective solutions
  • Guided sprint planning meetings, retrospectives and turnover meetings
  • Developed several new products
  • Actively contributed to virtually all product design decisions and implementations
  • Led requirements meetings with senior management, focusing product visions and documented decisions for the rest of the development and QA teams
  • Worked to ensure that everything the development team worked on was in line with the business needs
  • Designed relational databases and database changes to support new product features and oversaw the database implementation
  • Implementation of numerous internal tools including a customer management system, internal-only facing websites, and the customer web portal
  • Maintaining development tools and infrastructure
    • Includes maintaining the build server, CruiseControl.NET implementation, SVN server, OnTime server, QA and automated testing environments, Nagios server, TikiWiki server, etc.
  • Publishing changes to production and overall maintenance of production environments
  • Advocating for continuously introducing industry best-practices and adoption of new technologies where they best fit the company’s needs (LINQ, EF, ASP.NET MVC, etc.)
  • Ensured that object oriented programming concepts were appropriately applied, as were code design patterns
  • Strove to build and maintain the best possible development team with team members with a variety of backgrounds, skills and specialties

Development Process Initiatives Spearheaded

  • Transitioning from an informal waterfall development methodology to Agile/SCRUM
  • Implemented and maintained a source control system (SVN) and trained users
  • Implemented and maintained a continuous integration system (CruiseControl.NET)
  • Strongly encouraged Test Driven development
  • Transition to using Axosoft OnTime as our Bug/Feature tracking system
  • Nagios monitoring solution to identify server issues early
  • Transition of infrastructure to virtualized server instances
  • Created a developer recommended reading list

Examples of development work

  • Created a print management solution to control how much children could print and allow libraries to charge for printing
  • Implemented a custom user interface for managing network connections (both wired and wireless) including troubleshooting capabilities to work around some shortcomings of the provided Windows user interfaces for our user base
  • Integrated a multitude of applications from 3rd party vendors into our products
    • Often this would involve tweaking the application, whether that meant modifying config files, source code, or using windows APIs to manipulate the application at run-time (auto entering data, hiding elements from the screen, changing windows positions, etc).
  • Migrated a child-friendly safe browser product to Android using Xamarin
  • Implemented a custom child-friendly web browser for Windows systems that was based on the CEF rendering engine
  • Created an ASP.NET MVC website to provide easy access to all types of reports, from how often specific product features were used to providing business intelligence on customers
  • Maintained a client/server process to keep student data and system configuration settings synchronized between machines
  • Developed a VMware ACE-based product to deliver a software-only solution that customers could install on existing hardware
  • Developed an automated build process that could build an ELS starting with running the operating install through applying all required software packages (including all of the latest code changes), operating system customization’s, etc. all with no user interaction
  • Developed product licensing solutions for both connected and disconnected environments
  • Migrated product line from Windows XP to Windows 7 and then again to Windows 8 & 8.1
  • Introduced a solution for very easily reusing ASP.net MVC custom controls without having to have copies of any resources between projects (used Razor Generator)
  • Created a custom tool that integrated with three different internal systems  and auto-generated UPS shipping labels for support and product delivery
  • Created an upgrade process for disconnected systems that saved the company over 3 million in shipping costs alone
  • Developed a number of libraries for sharing code between projects
  • Unit tested legacy code and brought up to current coding standards