Morgan Allen
Full-Stack Developer - From The Bit to The Browser
morgan@oit.cloud morgan | morgan | /in/morgan-allen
About Me
As a life long learner I’m always seeking out new challenges, applying my prior experience to develop new skills. With almost two decades of full-stack development experience in a variety of fields I have the skills to tackle most problems that could arise. Throughout my career I have filled many roles outside just programming, from database administration to DevOps and Linux systems management.
Experience
Epicor
My primary role at Epicor was working on a highly customized Django framework application. In addition to the framework core, my responsibilities include supporting and mentoring more junior developers, performing code reviews and participating in planning meetings.
Etheric Networks (Regional Wireless ISP)
As incoming Senior Engineer it was my job to lay out best practices for a development team struggling to maintain a legacy Python code base by; establishing code health checks, Continuous Integration systems, development Road Maps and automating service deployments.
In practice this involved creating a new Django based Customer Support Portal and using APIs to gracefully migrate from the old system to the new one while minimizing downtime and easing user into the new system.
Amongst other things I had extensive use of
- Python / Django / Postgres / Django Rest Framework / Celery / Channels / Redis
- Javascript / React / CSS3 / Bootstrap / Tailwind
- Self-hosted GitLab for Issues, Road maps, CI/CD
- Docker / Docker Swarm / Kubernetes / LXC/LXD
Chabot Space and Science Center
Worked across multiple departments to bring interactive exhibits to the public in an amazing blend of programming, electronics and carpentry. Work included brainstorming ideas with the education department, planning with facilities for installation and maintenance schedules, collaborating with our events team for making special features. Many interactive exhibits were programmed in Python, JavaScript/NodeJS, C and even a touch of Ruby.
Tenon.io
Developed many backend microservices that provided primary functionality for the tenon.io crawling and analysis services. Heavy usage of async NodeJS to make services both naturally distributed and fault tolerant. Put in place extremely strict developer guidelines, adhering to rigid unit testing and code coverage analysis.
Ecologic
In charge of all aspects of Front End development, from laying out best practices, writing maintainable code, maintaining modularity to ease testability and integrating into multistage QA for testing and deployment. This was accomplished with custom router/page handler built on top of Ampersand (the spiritual successor to Backbone.js), interfacing with a Django/DRF backend. This was some of my early exposure to Django and I have been using it since.
TokBox/OpenTok
Lead developer for OpenTok API prototype application TokShow. Tasked with all development choices such as framework used, project structure, development priorities, code reviews and more.
- Extensive Backbone.js use, including TokShow API to Backbone abstraction (via collection syncing)
- Meeting with designs teams to prioritize development roadmap
- Weekly meetings with remote team to assign work.
- Successfully launched TokShow with American Idol contestant.
- Worked with API team to improve API, including filing bugs, suggesting features and improving API consistency.
Skype
Embedded JavaScript development for Skype Home in Skype for Windows.
- Working with specialized API deployed on custom embedded browser
- Developed custom M-V-pseudo-C framework.
- Kept framework modular, achieving modular deployments for different builds.
- Lead dev with code review and deployments.
- Created a NodeJS based build system to deploy minimum needed code for each platform.
- Extensive A/B testing with very large audience.
- Developed Continuous Integration, server-side unit testing and code coverage reports.
Skills
- Programming
- python - javascript - cdjango - celery - channelshtml5 - css3 - webcomponentnodejs - expressjs
- Hardware
- esp32 - esp-idfnrf - armfreertos - nuttx - zypher
- Databases & Visualization
- postgres - postgisredis - influxdbgrafana - d3.jsleaflet - openlayers - mapbox
- Service Administration
- gitlab ce - forgejo - giteawoodpecker - gitlab runnersnetbox
- Virtulization & Systems
- linux - lxc/lxd - proxmoxdockerkubernetesvmware - virtualbox
- Deployments & CI/CD
- ansiblevagrantdocker swarm