Hi,

One sec...

Enter

If you’ve ever written a skateboard or rode an application, you’re well aware how the tiniest mistake can cause everything to crash. Unlike that last sentence where the error is benign, coding and skateboarding involve humorously similar trial & error attempts to prevent unexpected outcomes.

The video below highlights this rewarding and frustrating process and ends with the most common solution to programming problems 🙂


Why skateboarding is good for your child

If you’re a parent worrying your child starts skateboarding, she’ll be rolling with the wrong crowd (that’s a pun) she probably will. But that’s not because she skateboards and more likely a proclivity for defiant behavior.

The benefits she will gain, besides supernatural balance and jumping ability(I can easily reach rim on a basketball hoop and I’m 5′ 9″), are the following:

Architected a microservice to offer multiple apps document storage where the User decides how their data can be used.Features
Client Journey:

Initial Client Meetings

  • Identified redundancy of multiple apps having document storage system
  • Considered user’s perspective on need for transparency and security with document sharing

Consulted on these items:

  • Limitations on file types & size to avoid scope creep and ensure client receives expected deliverables
  • Files be saved automatically to folders to avoid manual data entry and simplify UI

Project Completion

  • End users thrilled they know how their data is used
  • Developers relieved they only maintain one document storage system


Led a team of 3 developers on a nightly job to migrate School District data to remove burden of manual data entry.Features

Problem

Our company had built a robust learning management system (LMS) but we didn’t have a way to sync to a school district’s existing system; their schools had to do it manually through Excel uploads or by filling out forms on the front end, which required maintaining data in two places. For small schools this process was time-consuming and error prone and for school districts it was a deal-breaker.

Our CEO asked me to build a system that would allow our platform to sync with any external LMS system. A discovery phase revealed most school districts model their data after IMS standards and make their data accessible through CSV files or a REST API.

Impact

Schools were unable to use the LMS for up to 3 days or longer depending on the school size. The school day would be interrupted due to manual entry errors (e.g. Student is registered in the wrong class) and that would impact the student’s, teacher’s, counselor’s and IT staff’s day trying to resolve the error.

Solution

An ETL application (Extract Transform Load) that would sftp into a school district’s server and monitor changes in CSVs and update our LMS system nightly and have the foundation for eventual REST integration.

After researching SaaS products that could handle this process for us, I realized none of them was an “end to end” solution that could handle our complicated data massaging hence I needed a custom ETL tool.

I came up with an architecture that would include a cron job to check for new CSV records nightly, migrate them to S3 for archive purposes, and trigger a lambda to handle our complex data massaging and update the necessary databases across our APIs. I additionally designed our application to allow IT users to enter their SFTP and REST credentials to instantaneous sync their data with no manual involvement on our apart.

After completing a prototype, I assigned the remaining tasks to my development team for completion.

Sprinkle of Sales

I made sure to build transaction monitoring into the scope because I learned from previous ETL jobs the importance of knowing the source of data movement. This feature could later be built into a full-blown dashboard for school districts to monitor their data pipelines. The Sales team loved this idea because we could potentially charge more for it.

Architectural Diagram

Results


Video Overview

Architected .NET middleware application to automate processes for a health foundation to coalesce three different APIs – Survey Monkey, Dynamics CRM, SharePoint.Features

Problem

We implemented a CRM integration for a health foundation to provide data visibility across their departments and automate routine workflows. However, the Advocacy department was reluctant to use the CRM and the integration needed “buy in” from them to be successful.

This integration would help other departments but how does it help us? –Advocacy Department

A discovery phase revealed that they did have many manual processes that could be automated with the CRM being a key player.

Impact

Advocacy department: Unnecessary time spent distributing, collecting and sharing the results of surveys.

Health foundation: Inability to make business decisions due to limited insight into the Advocacy department’s throughput and user base.

Solution

To replace their existing manual data collection methods, we built a custom middleware application that would leverage webhooks in their survey software (Survey Monkey) to monitor for submissions and then populate the results in the CRM. Subsequently it would generate PDF documents and store them in SharePoint with the proper association in the CRM.

I suggested we don’t just build this middleware for this standalone service, but requested for a larger engagement to allow this service to be abstracted to allow any kind of sync with an external system. The Advocacy department’s automation would be the first of many. Our COO was delighted by this suggestion because it meant a larger proposal.

Results


Complexities

Some departments were hesitant to join the CRM due to data privacy; we had to carefully impliment policies to ensure all contacts were shared but not all data was visible for each contact.

Ensuring we understood the Advocacy department’s goals and workflows so the CRM brought them benefit otherwise their reluctance would thwart the CTO’s efforts to democratize the foundation’s data. We had to really flex our consulting and onboarding skills to unify all departments to sharing data and using one system.

Led a team of 3 developers on a nightly job to migrate School District data to remove burden of manual data entry.Features

Problem

Our company had built a robust learning management system (LMS) but we didn’t have a way to sync to a school district’s existing system; their schools had to do it manually through Excel uploads or by filling out forms on the front end, which required maintaining data in two places. For small schools this process was time-consuming and error prone and for school districts it was a deal-breaker.

Our CEO asked me to build a system that would allow our platform to sync with any external LMS system. A discovery phase revealed that most school districts model their data after IMS standards and make their data accessible through CSV files or a REST API.

Impact

Schools were unable to use the LMS for up to 3 days or longer depending on the school size. The school day would be interrupted due to manual entry errors (e.g. Student is registered in the wrong class) and that would impact the student’s, teacher’s, counselor’s and IT staff’s day trying to resolve the error.

Solution

An ETL application (Extract Transform Load) that would sftp into a school district’s server and monitor changes in CSVs and update our LMS system nightly and have the foundation for eventual REST integration.

After researching SaaS products that could handle this process for us, I realized none of them was an “end to end” solution that could handle our complicated data massaging hence I needed a custom ETL tool.

I came up with an architecture that would include a cron job to check for new CSV records nightly, migrate them to S3 for archive purposes, and trigger a lambda to handle our complex data massaging and update the necessary databases across our APIs. I additionally designed our application to allow IT users to enter their SFTP and REST credentials to instantaneous sync their data with no manual involvement on our apart.

After completing a prototype, I assigned the remaining tasks to my development team for completion.

Sprinkle of Sales

I made sure to build transaction monitoring into the scope because I learned from previous ETL jobs the importance of knowing the source of data movement. This feature could later be built into a full-blown dashboard for school districts to monitor their data pipelines. The Sales team loved this idea because we could potentially charge more for it.

Architectural Diagram

Results


Video Overview

Series of presentations I’ve given to CEOs, upper management and colleagues. Although the goal of most of these presentations was to improve existing company operations, the same format has been followed when I’ve given demos to clients – leading with the solution in mind while keeping content concise and engaging with a sprinkle of personality.

“Voltron” – Company Reimbursement Initiative

Problem: Company felt it was a waste of money to pay for learning subscriptions like Pluralsight because no one was using them.

Solution: A partnership between colleague and company to achieve bidirectional growth where the employee gets learning resources reimbursed but must write up a review of resource or create marketing material.

Outcome: Company cut costs on learning resources by 28% first year and 63% second year. Employees felt supported in their learning growths.


 


Architectural Review Process

Problem: Bugs were repeatedly appearing despite use of unit tests due to developers working in silos.

Solution: An architectural review process where developers must create an Entity Relationship Diagram (ERD) of their proposed architecture that must be approved by a two different senior devs prior to writing code.

Outcome: Applications became more scalable; Poor architecture was caught before code reviews saving heavy refactoring time; A precedent  was set to document all new applications.

 

 

 

Ice Cream Business Pitch

A presentation I created to help my friend pitch her ice-cream business to a national food service corporation (Aramark).

Code 4 Baltimore Weekly Meeting

Weekly presentation we gave to kickoff our meetings with a clear agenda, past accomplishments and meeting goals.

 

Led a team of 3 developers on a nightly job to migrate School District data through CSVs instead of burdening school administratorsFeatures with manual data entry.
Client Journey:

Initial Client Meetings

  • Came up with an architecture to pull CSVs from their servers nightly
  • Advised their IT teams on how to structure their exported data

Consulted on these items:

  • Usernames of parents should be their emails to make it easier to remember
  • Not spend development time handling > 300K records since nightly updates are only ~100 records.

Project Completion

School principals thanked us for never having to fill out a student form again.



Video Overview:

Architected a microservice to offer multiple apps document storage where the User decides how their data can be used.Features

Problem

Our company was building a document sharing application for healthcare and education providers to gather research from marginalized communities. I repeatedly heard from stakeholders that users in the community were apprehensive about sharing data. They didn’t want it shared with a 3rd party without their consent, worse-still, shared with government authorities due to poor experiences with law enforcement officials.

Impact

The providers were not getting “buy in” from their users hence application use was minimal or certain features that required users to share personal information was being ignored.

Solution

I suggested we build an application that went beyond document sharing to include data transparency as the core of the data model to ultimately let the user know exactly how their data is being used. It could have further features to empower the user such as setting expiration dates and deciding permissions on the documents they share.

I made sure to emphasize that the data model and overall application architecture honor the permission levels set by the user and not have the front end decide what can be shown.

Application Flow
  1. Admin user (e.g. HR department) requests to see an employees document through the web app.
  2. Admin input what they plan on doing with the data.
  3. Enduser notified on their mobile app about the request.
  4. Document is automatically added to Admin user’s desired folder (saving time on manually dragging/dropping)
  5. Enduser notified via push notifications for any document activity they want to monitored (e.g. sharing, opening).
  6. Background activities commence based on enduser preferences (e.g. document deletion)

Results


Video Overview

Architected .NET middleware application to automate processes for a health foundation to coalesce three different APIs – Survey Monkey, Dynamics CRM, SharePoint.Features

Problem

Our company was midway through a CRM integration for one of the largest health foundations when they hit an impasse. One department was reluctant to adopt the CRM because they felt it wasn’t useful. The project’s success was contingent on every department using the CRM seeing as the ultimate goal was to provide data visibility across the organization.

If they don’t join, it’ll thwart the whole project’s effort to democratize our data. Foundation CTO

The Advocacy department’s primary responsibility was surveying the foundation’s user base for outreach feedback. During discovery I learned their workflow had many manual steps that were ripe for automation and they were using 3rd party reporting and document sharing tools to compensate for a unified system.

Impact

Advocacy department: Unnecessary time spent distributing, collecting and sharing the results of surveys.
Health foundation: Inability to make business decisions due to limited insight into the Advocacy department’s throughput and user base.

Solution

To replace their existing manual data collection methods, I built a custom middleware application that would leverage webhooks in their survey software (Survey Monkey) to monitor for submissions and run this workflow:

  1. Create/update contacts in the CRM based on survey responses
  2. Create relevant meta entities and relationships in CRM
  3. Generate a PDF document of their results and associate with contact
  4. Create SharePoint folders to store generated PDFs
  5. Notify the Advocacy department of contact changes

To handle high survey throughput we utilized concurrent processing to process responses 5x faster. I additionally made a custom dashboard for them to monitor survey activity and contact changes to provide full visibility and reporting on their user base.

Sprinkle of Salesmanship

I suggested we don’t just build this middleware as a standalone service; I proposed a larger engagement to allow this service to be abstracted to allow any kind of sync with an external system. The Advocacy department’s automation would be the first of many. Our COO was delighted by this suggestion because it meant a larger proposal.

Results


Complexities

Some departments were hesitant to join the CRM due to data privacy; I had to carefully implement policies to ensure all contacts were shared but not all data was visible for each contact.

Ensuring we understood the Advocacy department’s goals and workflows so the CRM brought them benefit otherwise their reluctance would thwart the CTO’s efforts to democratize the foundation’s data. I had to really flex my consulting and onboarding skills to unify all departments to sharing data and using one system.

Spearheaded company’s full stack initiative to cross train developers (devs) and implement best practices in both stacks. Features Pioneered architectural review process requiring developers to create entity relationship diagrams ERDs prior to writing code.

Client Journey:

Initial Meetings

  • Onboarding new devs was time-consuming
  • Backend devs built APIs without considering Frontend and vice-versa
  • Time wasted on rejected Pull Requests because architecture wasn’t approved

Consulted on these items:

  • Training developers to be “full stack” would simplify assigning tickets
  • Creating videos and live-course training material would expedite onboarding
  • Putting an “architecture review process in place” would catch poor decisions early

Project Completion

  • Nascent “full stack” devs worked in tandem
  • Applications built with scalability in mind
  • New devs relieved they could follow tutorials

Mentor Skills:

  • Empathetically mentored junior developers taking their experience, interests and learning styles into account
  • Balanced developer interests and skill sets when assigning tickets and encouraging all to “leave comfort zone”


Video Overview: