Senior Software Engineer2016 - PRESENTNeverfail
Technologies: Docker, VMware, REST, Java
- Continued development of the Vertiscale WaaS (Workspace as a Service) product under the new company's direction.
- Designed a highly scalable, event-driven workflow engine for performing asynchronous, long-running provisioning tasks.
- Analyzed product catalog to find overlaps and increase efficiency and quality through pooling and sharing development resources.
Senior Software Engineer2015 - 2016Vertiscale
Technologies: Maven, AngularJS, Guice, PostgreSQL, JDBI, REST, JAX-RS, Java
- Designed a schema for modeling data models, errors, synchronous services, and asynchronous services.
- Created a code generation utility to leverage the aforementioned schema to generate models, interfaces, and security interceptors.
- Defined a complex interaction structure for a secure, hybrid-cloud application.
- Designed reusable components for asynchronous messaging, database interaction, and security.
- Designed the architecture for a multi-project, multi-module environment.
- Assisted in driving product from idea to beta, allowing the company to be purchased by Neverfail.
Principal Software Engineer2014 - 2015Cloud Elements
Technologies: PostgreSQL, JAXB, Spring, REST, Java
- Provided technical expertise and support with scoping of consulting projects.
- Developed consulting solutions which incorporated the Cloud Elements platform and SaaS product.
- Managed and mentored a team of junior developers.
- Designed a workflow engine to serve immediate consulting customer needs as well as to be provided as a future platform feature.
- Created a RESTful API definition and project structure allowing pluggable implementations and strict versioning.
Co-founder2012 - 2014nuvosSDK
Technologies: PhoneGap, Java 2D, JavaFX, Android, iOS, HTML5, GWT, Java
- Participated in an incubator with emphasis on Lean Startup methodology, vetting and refining the nuvos business model.
- Co-designed and implemented a GUI toolkit allowing true write-once, run anywhere Java code through abstraction of drawing and event handling. Target platforms include desktop applications (AWT, SWT, JOGL), modern browsers (HTML5 Canvas via GWT), outdated browsers (FlashCanvas, JNLP, or Java Applets), and Android native.
- Built a set of device-agnostic APIs for accessing device features such as Contacts, GPS, and Accelerometer.
- Designed a SaaS product to create executables for various target devices (HTML5, Android, iOS) from a single Java codebase.
- Built an SDK focused on ease of use by developers including simple, asynchronous APIs and code generation.
- Designed and built an asynchronous NoSQL object database with abstract backing stores allowing pluggable storage systems.
Senior Software Architect2008 - 2012ThinkTank
Technologies: GWT, Java
- Designed and built an application from the ground up enabling a highly collaborative workflow.
- Developed and maintained a library of event-driven and resilient pieces including network libraries and databases.
- Designed an in-browser storage mechanism to facilitate a thick-client application with full offline support in browsers not supporting modern browser storage technologies.
- Developed custom GWT components to provide speed and flexibility while building a web application which felt like a desktop app.
- Managed a team of junior developers providing mentorship and training in the highly-specialized software stack.
Senior Software Developer2006 - 2008IntraMeta Corporation
Technologies: DNS, HTTP, DHCP, HTML, MySQL, Java
- Architected and implemented server architectures for building highly scalable Internet-based applications using Java. Solutions include a versioned and concurrently-accessible database, a network communication framework capable of ensuring ordered delivery of messages over unreliable networks, and a publish-subscribe framework distributing filtered results to thousands of clients in near real-time.
- Designed and built a corresponding client architecture to deliver a highly-collaborative and real-time application in a web browser using the Google Web Toolkit. Solutions include a client-side database designed to allow full offline use of the application and provide convergence upon reconnection and a modified MVC framework allowing any Java UI implementation without duplicating business logic.
- Assisted in design, implementation, and maintenance of Nuvos, a software library designed to be simple, scalable, event-driven, and programmer-friendly. Modules implemented include an asynchronous database architecture with pluggable back-ends, event-driven TCP and UDP channel socket services, a kernel framework for parallel and ordered execution of tasks with fine-grained locking, code generation utilities with both XML (used via Ant) and Java bindings, and both DNS and HTTP clients and servers using the aforementioned channel services.
- Orchestrated several release cycles of hosted applications. Responsibilities included organizing regression testing, managing build and deploy scripts, and managing actual deployment to servers.