More about Micky

As a seasoned entrepreneur, executive, and full-stack developer, I bring over 20 years of tech industry experience. I’ve successfully launched and strategically sold multiple startups, demonstrating my ability to navigate the business landscape. My ventures have raised over $10 million in venture and social capital, further solidifying my business acumen.

I hold an MBA with a concentration in Entrepreneurship, which complements my technical skills with solid business acumen. My passion lies in building innovative online products and continuously learning new technologies. This drive for innovation fuels my technical expertise, which spans PHP (WordPress and Laravel), JavaScript (React and NextJS), Docker, MySQL, HTML, CSS (Tailwind CSS), Networking, SMTP, Firewalls, and more.

I am currently working to grow a technology agency named Rackless IT. We focus on software development and systems integration. My theory? Stay-at-home mothers and fathers have untapped technology skills and a desire to use them. What do they need? Clients willing to offer flexibility. I am doing two things to help execute this vision:

  • Working to scale the operation
  • Building processes and tools that help make it easier for businesses and stay-at-home mothers and fathers to come together in a way that benefits both.

My experience in this field is extensive. I have successfully hired over 70 professionals at my agency, collectively contributing over 200,000 work hours.

You can review my professional recommendations at the link below:
https://www.linkedin.com/in/mickythompson/details/recommendations/

Leading a Large-scale Website Project

As the Fractional Chief Technology Officer for a non-profit Christian ministry, I lead a team of three members working on a fractional basis. Over the past two decades, I’ve spearheaded numerous technology initiatives for this organization. One particular initiative, which I’m eager to share with you, stands out.

There were concerns about the organization’s future following the founder’s passing. However, I was determined to sustain the organization’s vital online counseling service. When I first joined, I helped develop systems that would scale from 1 call center to distributing thousands of calls to live agents around the United States via phone. Today, we’ve successfully transitioned to a more efficient and accessible live chat method, demonstrating my problem-solving skills and adaptability.

What was the challenge the ministry faced? Rebrand the organization, redesign the website, and repurpose both the content and custom-built systems from being focused on communicating the message of one person (the founder) to being an organization that provides a valuable service deserving of donation and funding.

I worked closely with 2 of the organization’s donors: a branding expert and a technology investor (both of whom have hired me to advise their organizations). With funding of $250,000, we hired a Christian music artist with experience in marketing to oversee the rebranding. We had my team work closely with him to select the technology stack and execute his vision for the brand.

This process involved redesigning a WordPress site with over 2,000 pages, a custom-built customer relationship system (CRM) to integrate tightly with that site, and negotiating and deploying an automated Artificial Intelligence (AI) powered live chat system tightly integrated with the site and the CRM system.

For instance, I secured the AI-powered chat system, which had a retail value of $364,149.00 for a 36-month agreement at a remarkable 71% discount, showcasing my financial acumen and ability to secure cost-effective solutions. At the end of the three-year term, I negotiated  an even better deal, increasing the discount to an impressive 77%.

That ministry today, several years after the passing of its founder, is thriving and growing. This year, the organization will be cash-flow positive, and I am proud to have helped lead that initiative.

My Approach to Testing and Improving QA

When it comes to testing and improving quality assurance (QA), those who do testing and improve QA will have software development projects that will survive. Those who don’t do testing or improve QA have failed software projects. This statement is black and white to me and many professionals in the industry.

At the same time, I acknowledge there is a spectrum we should respect when it comes to testing and improving QA. A startup with a runway of less than 18 months of capital will have a different testing and improvement of QA from that of a Fortune 500 company.

With that spectrum in mind, let’s define what a comprehensive testing approach would look like:

  • Automated Testing: Implement a robust suite of automated tests, including unit tests, integration tests, and end-to-end tests. This ensures consistent and repeatable testing processes.
  • Continuous Integration/Continuous Deployment (CI/CD): Integrate testing into your CI/CD pipeline to catch issues early and often.
  • Test-Driven Development (TDD): Adopt TDD practices where appropriate, writing tests before implementing features.

If a company wants to get started, I would recommend, at a minimum, they do the following:

  • Do not allow testing on a production website or application. This is always a good rule and will force discipline in the team.
  • Implement End-to-End testing on the product. 
  • Provide the software development and product teams with environments identical to production to test.

Amazon Web Services and Digital Ocean

I have extensive experience with Amazon Web Services (AWS) and Digital Ocean managing large infrastructure projects on both. Both vendors are powerful tools in the right hands. In the wrong hands, they can each be expensive. For example, we used to allow our software developers to manage their own EC2 instance until one day a developer accidentally selected a $1,700/day server. Why? He wanted much power. Luckily, we caught it within a few hours and AWS credited us for the mistake. My team and I became experts in Amazon IAM, Amazon Web Services permission policy manager, after that day, and now we restrict that type of access to only pre-approved senior team members trained on those systems.

Keeping Strange Hours

As an entrepreneur, I’m accustomed to adjusting my schedule to meet project needs. Unusual hours? Absolutely. I’m comfortable working unusual hours when necessary. With my background in managing startups, I understand the importance of being available during critical situations, regardless of the time. If a site goes down at 7 pm EST, I’d be ready to address the issue immediately. However, know that I have over 20 years of experience. Do I want to deal with emergencies or would I rather do the work upfront to avoid them? I choose the latter and I have a track record to prove it. Most of the apps I manage have a 100% uptime for years, so trust I am motivated to avoid downtime.

ASP.NET Application Outage

With that said, outages are only sometimes avoidable because some situations are beyond your control. Our most recent outage was when AWS decided to sunset a version of Microsoft ASP.NET that contained a specific dependency we happen to be using. We received no notice, and AWS Seniors didn’t know immediately why their systems began to automatically shutdown our EC2 instance. We jumped into action and started to spin up a new server at Azure. By then, AWS support was able identify the dependency triggering the shutdown. They helped keep the instance running while we updated the code and remove that dependency.

WordPress Website Outage

Another outage was due to a WordPress plugin that corrupted theme settings stored in the database (our client was using a page builder that released an update that had went bad). It took several hours to get that site back up as we worked to restore the theme. The vendor didn’t make the process easy as they had given us poor instructions for removing the flaw which required us to shuttle that effort and go to a backup. While working with and waiting on the vendor, my team and I were able to take advantage of the outage and upgrade some aging plugins and infrastructure, such as performing a major PHP upgrade. So, the client was better at the end of the day.

Database Corruption

One of my clients experienced a significant database corruption issue during a peak traffic period. When talking to young people entering the technology field, I describe this as the 36th floor experience. When I learned that the database had been corrupted, I remember looking at the window at the view from the 36th floor. There are some that when the stress gets so bad, they would have thoughts of jumping. Then there are those with enough experience, they know this is par for the course and your experience will guide you. The seasoned professionals have lots of 36th floor experiences.

Immediately, when I learned the database was not working and this was halting production work for the sales team at the company, I knew this was an expensive outages. Here are the steps I took:

  • I immediately hired an expert on corrupted databases from New York City I know who was available immediately to review the data and give us his recommendation.
  • I had the IT team implemented our backup recovery plan while the expert worked to review the production database.
  • Communicated transparently with stakeholders the two paths we were taking.
  • Began conducting a root cause analysis as I didn’t want to restore the database to only have the event occur again.
  • Implemented additional safeguards such as triple backups and more often during this period.

The expert was able to uncorrupt the data and restore it to production within 2 hours. Ever since I have insisted on two backup methods for data.

The outcome was a successful recovery with minimal downtime, improved backup processes, and strengthened customer trust due to our transparent communication.

Automating Repetitive Tasks

I approach automation by identifying repetitive tasks, evaluating potential tools, and implementing custom scripts when necessary.

For example, I have implemented multiple continuous integration/continuous deployment (CI/CD) systems across multiple applications for different clients to improve the deployment of new features. Often, a software developer will what is often referred to as ‘cowboy code’ to get to a solution fast without taking into consideration the longterm effects. It isn’t that cowboy coding is sometime necessary, it just should be rare. If shooting from the hip is a daily experience, then that is a technology plan rife with flaws and doomed for failure.

I could speak to this more. For example, I could speak about developing custom bash scripts for log rotation and backup management or utilizing Docker for more consistent software development and production environments. However, these are just details. The main point is to identify areas where repetitive tasks occur and work to automate when and where possible.

Staying Current with DevOps and More

Having over 20 years of technology and executive experience, I have seen a lot of innovation and change. To stay up to date, I do the following:

  • Regular participation in online courses (e.g., Udemy, Coursera, YouTube)
  • Attending tech conferences and webinars
  • Active involvement in DevOps communities on platforms like GitHub and Stack Overflow
  • Subscribe to industry newsletters and podcasts

A recent innovation I’ve adopted is incorporating Docker infrastructure for local development, and I plan to use it for staging and production. This has significantly improved my ability to manage and version control our infrastructure, leading to more consistent and reproducible deployments across different environments.

Related posts