Get to know me
I'm a Philadelphia based Full Stack Software Developer with a backend focus. I started teaching myself how to code when I was 8 years old by modifying Visual Basic 6 source code for a StarCraft: Brood War bot. My passion for technology has endured, and I've continuously released projects and worked on projects for clients since then. I have been working professionally in the industry since 2016 and have extensive system design, project management, and development experience working directly with clients. I enjoy solving complex problems and building scalable, maintainable, and secure systems while working with clients to help them achieve their goals and solve their problems.
Joseph Duell
29
Philadelphia, PA
More about me
I enjoy scuba diving, cycling, hiking, camping, and other outdoor activities. I also enjoy playing video games, playing board games, and reading. I frequently attend local events in Philadelphia, some of which I help organize such as a weekly Board Game Night in Center City.
I have a lot of technology related hobbies as well. I like to build computers, work on open source projects, and experiment with new technologies.
Technologies I've worked with
I have developed on or with 33 languages, 6 code editors, and 2 operating systems.
Check out my Resume
At Fivebase I work as a consultant for clients primarily in the government and healthcare sectors. I work with a team of developers to build bespoke software solutions for our clients, extend existing EHR software, and provide support for our clients. I also work with clients to help them understand the software development process and how to best utilize technology to solve their problems.
SugarBombed.com started in mid-2015 as a community forum and news website dedicated to the Fallout video game series. I partnered with several content creators in the community to create SugarBombed.
I was responsible for the design and development of the website as well as community engagement, staff coordination, and content creation. See SugarBombed.com in the Portfolio section for more information.
I joined Blommer Chocolate in 2015 in the cocoa roasting department. I was trained on the operation of three types of industrial roasters and the cocoa grinding process. In late 2015 I took an open position in the cocoa press department and was trained on the operation of the industrial hydraulic presses to produce cocoa butter.
I joined Quality Air & Sheet Metal as a delivery driver and warehouse worker in mid-2014. I was promoted to Warehouse Lead in late 2014 and took over the organization of the warehouse and the ordering of materials.
See the Portfolio section for a more in-depth review.
I relocated closer to Center City Philadelphia in 2021. I joined the Philadelphia Discord Community and quickly took over running the weekly Board Game Night. I also assisted with the organization of other events such as the weekly Happy Hour.
In 2022, I was asked to be a Moderator and later an Administrator. I wrote a custom bot for the server to assist with our needs. See SpudBot in the Portfolio section for more information.
In 2020 I contributed to the Trigedasleng project. This project is a dictionary for the fictional language from the TV show The 100. The maintainers were looking for help with their project and I volunteered to update their existing codebase to use Laravel 7.
I attended night classes part-time to further my education. Northampton Community College taught C++ in their Computer Science program. After the 2020 Fall semester, I took a break to prepare for relocation amid the COVID-19 pandemic.
Courses and other education taken that provides proof at completion.
I was awarded the dean's list multiple times while attending Northampton Community College for maintaining over a 3.75 GPA while taking 7 or more credits.
Some of my skills
Some of the projects I've worked on
Projects will only appear here in detail if it's been publicly announced, the project is open source, or I've received prior consent to do so.
General descriptions will be provided when it's possible to do so, otherwise they are omitted entirely.
In 2021, I joined a local Discord server that hosted events in Philadelphia. I was looking for a place to hang out and make friends, and the community was a great fit. I quickly became a regular, and eventually an administrator.
Starting later in 2022 the server had experienced rapid growth and the existing Discord bots were no longer able to meet the demands of the community. I was asked to help with the existing bots, and eventually I decided to write my own from scratch.
Initially I had wrote the bot in PHP to accomplish the simple tasks we needed at first. As the community continued to grow, I decided to rewrite the bot and utilize existing community frameworks to release a fully open-source version. I named it SpudBot after my username, and it's currently in use on Discordelphia.
The bot performs functions such as tracking user comments in real-time for moderation and role application, providing a custom command system including allowing users to verify each other, enhancing native Discord forum functionality to provide a better UX, and providing a custom event system for the community to use. SpudBot is built to function similarly to a plugin system, allowing other developers to quickly extend its functionality.
Templating was added to allow for dynamic commands and better formatting of responses.
In 2020, I was tasked with upgrading a legacy open enrollment portal for a regional nonprofit health and retirement benefits provider. The portal was to be used by their customers to enroll in health insurance plans, and by their employees to manage the plans and customers.
One of my first tasks was to update the enrollment portal from PHP 5.6 to PHP 7.4. This involved updating the codebase to use modern PHP features, and updating the dependencies to support PHP 7.4. Knowing that PHP 8 was right around the corner, I intended that all the updated code also worked with PHP 8 as well. I also updated the codebase to use Doctrine DBAL and Doctrine Migrations to provide a more modern database abstraction layer and to allow for easier database migrations. Where possible, I migrated inline PHP code to Twig templates to separate the presentation layer from the logic layer. Lastly, I implemented a performance monitoring system to track the performance of the portal, to identify bottlenecks, and catch errors.
After the initial upgrade, I was tasked with adding new functionality to the portal. I worked with the client through recurring meetings and ticketing systems to identify their requirements and to provide updates on the progress of the project. Using these requirements, I determined what architectural changes were necessary to the existing system to support the requested features. I then designed and implemented the new features, and worked with the client to test and deploy them.
One of the major changes that was made to the enrollment portal was the addition of a dynamic wizard enrollment system instead of an enrollment form. The wizard system was required to has full feature parity with the existing enrollment form. I designed the system to be modular, allowing the client to easily add new steps to the wizard, and to customize the steps as needed.
Over the projects life I have implemented over 400 new features and bug fixes, and have overhauled large sections of the legacy code to ensure security compliance based on independent system audits.
In 2020, I was assigned at Fivebase to design and complete an integration between the Endur ID wristband system and Netsmart MyAvatar. The integration was to facilitate the transmission of key patient information (admissions, allergies, etc) within a unit from MyAvatar to Endur ID, which provides employees with real-time data updates.
A custom-built PHP CLI application is triggered when client targeted events are triggered within MyAvatar and sends the data to Endur ID via HL7 messaging. The application was designed to be modular, allowing for the addition of new events and data types as needed.
The Trigedasleng Dictionary is an open source and community driven dictionary dedicated to constructed language used by the The 100 TV series.
In early 2020, the maintainers were looking for help with the project and I volunteered to update their existing codebase to utilize Laravel and create a seeding system to import the existing data. I refactored the backend code, restructured the database, moved the existing layout to Blade, and extended the existing REST APIs.
After I completed the backend refactor, other contributors refactored the blade templates to instead have a React frontend. This completed the primary effort to modernize the codebase and there had been discussion about adding additional features. The cancellation of the prequel series and the end of the original series resulted in a decline in interest and the project was put on hold.
In 2020, I was assigned at Fivebase to design and complete a bidirectional integration between Gateway Foundation (Netsmart myAvatar) and the CaredFor using their RESTful APIs. The integration was designed to allow for the synchronization of client data between the two systems on a regular basis based on specific criteria. The modular nature of the integration allowed for criteria to be easily adjusted.
The integration included a simple frontend that allowed employee's to view the status of the integration and manually trigger synchronization. The frontend was built using Slim and Twig, while the backend was written in PHP 7.2 and triggered by scheduled tasks.
In 2022, I was tasked to update the integration to have more requested functionality, including the ability to add new supported locations.
MrMattyPlays approached me in late 2019 to extend the existing website for H.A.M. Radio Podcast to support a new podcast he was launching. The new podcast, BF-GF-AFK, was a gaming podcast that would be distributed on iTunes and other platforms. The website needed to support the distribution of the podcast and provide basic metrics similarly to H.A.M. Radio Podcast.
The conversion included a rebranding to "AzuleCast" and was intended to be released as FOSS. A part of this project was the conversion of the existing code to use Laravel and vanilla Javascript. The expanded functionality allowed for individual podcast feeds on the same platform, as well as the ability to add new podcasts in the future and internal member registration.
The project was later abandoned in 2020 due to the cancellation of the podcast at the start of the COVID-19 pandemic and the FOSS release was put on hold indefinitely.
In 2017 I was a contributor to the r/Defranco subreddit for news content creator Philip Defranco. I noticed that the subreddit had a recurring issue with members posting the same video in a short period of time (leading to multiple posts) or not posting it at all.
I decided to make a bot to automatically retrieve the latest video from Philip Defranco's YouTube channel and post it to the subreddit. The bot was written in PHP 7.2 and ran on a Docker container on a VPS. The bot was designed to run every minute and would only post if the video was not already posted. The bot was promoted to moderator by the subreddit staff and I extended the bot to make and rotate sticky posts as needed.
Eventually I ran into an issue where the YouTube API would be updated less frequently than was ideal. Other members would post videos instead, causing the same issue as before the bot was made. To fix this issue I decided to move away from the YouTube API. I scraped the Twitter and YouTube HTML to determine when a new YouTube link was posted and used that to determine when to post to the subreddit. This changed reduced the time between the video being posted and the bot posting it to the subreddit from 5-15 minutes to a minute at most. The API integration was kept as a failsafe.
The bot was retired in 2019 due to repeated changes made by YouTube/Twitter that broke the bot. I originally intended to release the functionality as a FOSS project, but it was put on hold indefinitely.
Starting in 2017, I began being assigned to EDI integration projects. The first of these was with a large regional behavioral healthcare provider in the United States. The project was to deconstruct a legacy EDI integration and rebuild it to have a client facing UI. This started the series of EDI "re-compilers" that allowed their employees to build EDI files from EHR exports and meet the unique county criteria for transmission.
Since that time I have worked with several clients on different types of EDI integrations (compiling existing EDI files to new EDI files, generating EDI files from source data, and deconstructing EDI files). Every integration is unique to the clients needs and contains different components. Some of these components include: parsing EDI files, generating EDI files, keeping historical records of past EDI files, and generating reports.
Some of the file types I've generated are: 837, 835, 846, 810, 850, 856, 270, 271
When I first started working at Fivebase in late 2016, VoiceComm was my first client. VoiceComm was using a custom-built ERP platform built initially with an old version of PHP and since updated to PHP 5.3. I helped complete the update to PHP 7. VoiceComm also had an existing SOAP API that was extensively used by their clients that I maintained and improved. I also helped maintain the frontend, Endless Aisle, VMI services, and a bespoke warehouse management system.
While working with VoiceComm I successfully made the case to the client to make system and process improvements. I implemented version control (Git) and went on-site to VoiceComm to train their team on how to use it. I later implemented a basic CI/CD pipeline using the Git repository for some of the projects environments using Bitbucket Pipelines. I also noticed that maintaining the codebase and ensuring everything was synchronized required a lot of effort. VoiceComm had several site variations (for example, dropship resellers had their own site) which required multiple implementations for the same code. As a result, I had worked on standardizing the codebase, so that they could eventually be merged, and moving some of the code to microservices that was used in multiple locations. An effort to create automated tests was also started and I had created automated integration tests to ensure that the shipping services functioned normally.
A significant blocker to the backend upgrade was the extensive use of the mysql_* procedural functions. I had to refactor the codebase to instead use a PDO Facade that I had written to make refactoring straight forward. During the upgrade we ran into an issue where the multiple connections would be instantiated and the database would either run out of connections or terminate an existing necessary connection. I had to refactor the codebase to use a singleton pattern for the PDO Facade to ensure that only one connection was ever instantiated and introduced keep-alive to ensure that the connection was not terminated. Changes such as these eliminated issues such as SQL injection attacks, improved the overall security of the system, and resulted in significantly improved performance.
I also handled the implementation of several integrations and features. I implemented a new EDI integration to communicate with clients and vendors regarding stock levels. I implemented a FedEx microservice that allowed VoiceComm to communicate with FedEx to generate shipping labels, track packages, and estimate shipping costs based on box dimensions. I also added support for Hazmat shipments to the existing UPS integration and extended this to FedEx. I also created a method for VoiceComm to generate dynamic Authorized Reseller forms (ARP) that consolidate the various questions the selected manufacturer requires into a single form and allow customers to apply once.
Towards the end of my time working with VoiceComm, I had helped work on their new 3PL and 4PL service offerings and extended the existing code to support this functionality.
H.A.M. Radio Podcast was started by the content creator MrMattyPlays and two of his friends. MrMattyPlays had been a founder of SugarBombed.com and I expressed interest in helping him distribute his podcast on iTunes so listeners could subscribe and listen to it on their phones. At the time the podcast was exclusively available on YouTube.
This initially began with a basic C# WPF application that would upload media files and a generated RSS feed to a server for consumption. As it's needs grew this was converted instead to a PHP website with a custom CMS. The website was hosted on a LAMP stack and used Cloudflare for DNS and SSL. The website was built using PHP 7, Bootstrap 4, and Javascript and was later converted to Laravel to support the addition of BF-GF-AFK.
The initial launch supported dynamic RSS feed generation for iTunes. MrMattyPlays could add, remove, update, and schedule episodes for launch. Future iterations added support for unique listener tracking and basic episode metrics. Later updates added support for other distribution platforms (Spotify, PocketCasts, etc). The podcast was initially distributed on the same server as SugarBombed.com, but was later moved to a dedicated VPS.
SugarBombed.com was founded in mid-2015 as a community for fans of the Fallout franchise to discuss the games in anticipation of the Fallout 4 launch later that year. I was one of the original three founders, the other two being a fallout community social media personality (Monte) and a Bethesda YouTuber (MrMattyPlays). The purpose of SugarBombed was to create a positive space for fans of the Fallout franchise to discuss the games, and to provide a platform for content creators to share their work with the community. The majority of communities dedicated to Fallout were mostly negative at the time which is why we decided to create our own.
Over the few years that SugarBombed ran, I took on several roles. I was the lead developer, the lead designer, the lead administrator, and the lead community manager. I was responsible for the design and development of the website, the management of the community, and the management of the over 50 volunteer staff. I was also responsible for the creation of the SugarBombed social media accounts and managing them through various platforms such as TweetDeck.
The original website was built on phpBB to gauge interest. After the community was determined to have sufficient demand, the website was migrated to Xenforo 1.5 and eventually Xenforo 2.0. I built a variety of custom plugins and modified the Xenforo code to fit the communities needs. Initially the website was hosted on a shared hosting plan with Bluehost (cPanel). As SugarBombed rapidly grew it was moved to a VPS on Vultr (Plesk) and eventually a dedicated server with Psychz to accommodate our needs. The dedicated server was running a LAMP stack with NGINX as a reverse proxy, two Minecraft servers, a nightly internet radio show, a staff chat server, a public chat room, a mail server, and a variety of other services. SugarBombed used Cloudflare for DNS and the CDN to serve its assets. I extended the website to include a news section, a wiki, a custom theme, a public chat, a public content creator showcase, and a variety of other features. In late 2017 I began experimenting with authenticating to Xenforo using C# and allowing members to chat through a desktop application. This was never completed. The majority of the design and logo concepts were created by a volunteer staff member, DarkKitarist, but I did work on translating these into CSS alongside them.
Early on I led efforts to increase SugarBombed.com's exposure. The news section was introduced to create articles by volunteer staff members and content creators. I onboarded our initial set of writers with Monte taking over writing duties in late 2016. Our increased exposure allowed us to secure early access to products and exclusive interviews a variety of staff involved with Fallout development, including Chris Avellone and Brian T Delaney. Our new-found status in the Fallout community enabled me to secure press passes for some of our writers to the E3 Expo. Additionally, I continuously introduced new features to the website to increase engagement. I added a content creator showcase to allow content creators we partnered with to share their work with the community, and a digital currency system (Bottlecaps) to reward members for their contributions to the community.
Starting in 2017 I was unable to dedicate as much time to SugarBombed.com as I initially did. The day-to-day management fell to Monte and eventually SugarBombed entirely shut down for good as community interest began to decline. The website was taken offline after the domain had expired. At it's peak, SugarBombed had over 15,000 members with an average online presence of over 400 at a time and over a 5 million unique visitors per month.
Feel free to contact me anytime
I'm always available for freelance work or just to chat!