Sean O'Donnell

Software and Systems Engineer

Copyright © 1999-2020 Sean O'Donnell

DevOps Engineering and CI/CD Automation

As a Development Operations (DevOps) Engineer, the tools available to automate the entire software development workflow are evolving rapidly. From local development environments, to integration testing, staging and production environments, the ability to collaborate, develop, integrate, test, validate and deploy code is becoming far more complex, every day.

Continuous Integration and Continuous Deployment (CI/CD) is becoming the defacto practice for small and large software development teams. The benefits of embracing these practices and technologies outweigh the option to ignore them.

As a Senior Software Engineer at DirecTV, part of my role was helping a large group of ~200 Software Engineers evolve from an archaic software development life-cycle, to a robust automated CI/CD process, by integrating new collaborative tools and technologies into the software build, integration testing and release process.

One of the major milestones of that effort, was migrating legacy codebases away from old Source Control Management (SCM) systems, such as CVS, Subversion/SVN and Mercurial, to Git. Using GitLab and the Gitflow workflow to automate the CI/CD process for embedded Linux software that powers ~50 million customers, was no small feat. This involved a team of highly competent and technically skilled engineers, who were able to collaborate effectively and look beyond the complacency of the past.

Linux Systems Engineering

As a hobbyist and professional, I'm a huge fan of Linux, and have been using it since the late 90's. The 1st distro that I used was Slackware Linux, which helped me learn a lot about how things work 'under the hood' within the Linux eco-system. Back before there were automated package management systems such as yum and apt, I was forced to compile everything from the source. This was a painstaking and time consuming effort, but did teach me a lot about glibc dependencies, as well as using 'make' and the gcc compiler.

Fast-forward to 2019, there are many Linux distributions to choose from. The main distros that I focus on working with, include RedHat Enterprise Linux (RHEL), CentOS, Debian GNU/Linux, Ubuntu and Kali Linux.

They're all very similar and have their own pros and cons when it comes to the distributions themselves, but for the most part, they all serve their own unique purposes accordingly.

Embedded Linux

The world is now powered by Embedded Linux systems. Beit SmartTVs, Smart Phones (Android), Network Appliances (Modems/Routers and NAS/SAN storage systems), Rasberry Pi devices and Cable/Satellite Receivers and DVRs, the majority of people are now using some form of Linux, whether or not they realize it.

During my 9 years working at DirecTV, I was involved in everything from automated testing of the core Satellite Receiver and DVR products they produced, to integrating code within the middleware that powered the user interfaces using HTML5 and WebKit.

Linux Systems Administration

Most web sites today are powered by some flavor of Linux. Whether it be a on-premises or cloud-based provider, Linux has revolutionized web site development and hosting over the last 20+ years.

I've been helping companies maintain their web hosting infrastructure using Linux-based systems since 2001. There are many tools that I've worked with over the last 18 years, that have helped make my job as a Linux Administrator, so much easier, especially with all of the automation tools that are currently available in the open source world.

Network and OS-level Security, Configuration Management Automation, and Infrastructure as Code (IaC) are some of the examples of things that I'm focused on, in terms of continuously learning new skills.

PHP Programming

I've been using PHP for web application development and shell scripting since 2000, or roughly around the archaic 'dark ages' of time when .phtml and .php3 file extensions were common place.

Over the years, I've watched the PHP community expand, implode, cannibalize itself and eventually evolve into a solid community of underestimated developers and tools that continue to drive millions of web sites today. There is quite a stigma that the PHP Development community has had to overcome, especially with the communities of other scripting languages, most notably Python, but for those who exclude themselves from the inter-development community flamewars, there are many who recognize that each language has it's own flaws and benefits, accordingly.

MVC Frameworks

Although I've mostly stayed away from open source MVC frameworks throughout the years, that has changed over the last few years. Popular framworks such as Symfony and Laravel have helped create a vast rapid development toolset, and these frameworks really have a solid community of contributors, so it's almost impossible to ignore.

Composer Packages

Another huge fundamental shift in the PHP Community, was the introduction of the PSR, as well as the Composer Package library. This allowed developers to abide by basic coding standards and practices that have also greatly improved the once loosely defined PHP development community standards. Gone are the days of PEAR dependencies, and very few projests still require PECL extensions.

API Development and Integration

One of the more common use cases for today's PHP applicaions, is developing or integrating RESTful Application Programming Interfaces (API) services for web applications that perform a large amount of the interface rendering, on the client-side via JavaScript (i.e. jQuery, Angular, Vue and React). PHP is well suited for such data abstraction and delivery methods, and has a lot of libraries and packages that help ease the time of development required to perform such tasks.