F5 Archive
@ Theo | Thursday, Aug 9, 2018 | 4 minutes read | Update at Thursday, Aug 9, 2018

Back in 2013, I led a “proof of concept” test for an enterprise-grade load balancing solution. We evaluated many products, but had a shortlist of 4 vendors, and ultimately selected F5 Networks. While the selection criteria was different, I personally liked F5’s extensibility. I continued to work with F5 for a few years, earning my professional-level certification and engaging with the DevCentral community.

Management API

While many network professionals grew up on CLI-based tools, at that time I knew the importance of having an API for managing devices. While CLI-based tools work, they offer very little in programmability and orchestration. Any orchestrated solution using a CLI has to account for the various ways of connecting to the CLI–which are always subject to change by the vendor. APIs offer a standard interface for connecting to and managing a device, and are often themselves extended by a provided CLI or SDK that communicates with the API.

F5’s original “iControl” API was a SOAP-based API. Anyone who wrote a SOAP API call knows why they stopped, but F5 also provided bigsuds, a Python library that would call the API. Bigsuds made it easy to programmatically connect to any F5 and accomplish any goal.

I created a set of bigsuds scripts and published them to buzzsurfr/f5-bigsuds-utils and DevCentral. They range from connecting to the active device in a HA pair to locating orphaned iRules (iRules not associated with a Virtual Server) to finding a Pool/Virtual Server based on a Node IP Address.

In 2013, F5 also released their first version of iControlREST, a REST-based API, and the f5-sdk, which offered a cleaner interface and object-oriented code for maintaining a F5 device. I converted some of my scripts to use the f5-sdk and again pushed them to buzzsurfr/f5-sdk-utils and DevCentral.

Programmable Logic

Hardware vendors have historically struggled with keeping up with the pace of innovation in technology. One time, we were evaluating a core network refresh. Instead of discussing what the products can do, we spent more time discussing what they will do in the future. I recall a colleague asking all the major vendors when they would support TRILL (don’t judge 😀). Almost always, the answer required new hardware, and it would be no sooner than 18 months.

While I understand the need to put this type of logic directly into hardware, why not have a stopgap? Put a process in place to code the feature in software, then promote it to hardware at a later date. F5 was the first time I saw this business model, and I was immediately drawn to it. If the F5 didn’t have a feature I needed, then I just wrote the logic in an iRule. iRules take my logic and process it as part of the F5’s routing logic. Suddenly, I stopped asking my F5 representatives about when a feature would release and instead on how I could program that feature myself.

F5’s come with preloaded iRules, but I had to create my own over time, and collected them in buzzsurfr/f5-iRules. A few examples:

  • One time, I had a customer with a broken app that would intermittently respond with multiple Content-Length headers (which breaks RFC 2616). They weren’t sure why, but it needed to be fixed. We fixed it with an iRule until they could find and resolve the bug in the application. This wasn’t a load balancing problem, but we still used the load balancer to workaround the problem and remove customer pain.
  • I had a need to implement Content Switching, which wasn’t supported by F5 at the time. With iRules, I was able to create content switching at both the host and path until the F5 supported content switching.

I don’t spend much time with F5 products these days, but I still use the programmable logic model. In my current role at AWS, I often find gaps in features that are needed by my customers, and many times we’re able to develop a Lambda function to fill the gap until the feature is released. I’ve watched this same model serve both F5 Networks and AWS well, and I hope the trend continues with other products as we continue to evolve.

My F5-based repositories

About Me

Self-described technology enthusiast working with containers, DevOps, networking, load balancing, etc.


After college, I came back to the family business, this time to force-feed technology into the business instead of passing around a QuickBooks file and design templates on a Zip disk. This ended up as a good trade–I was able to both freely learn and implement new(er) technology and gain powerful business experience. I am fully capable of explaining any technical topic to a non-technical audience. I taught my mother about files/folders on a hard disk by showing her the files and folders in her file cabinets.

I spent a short time as a law firm doing more of the same, but wanted more. I joined a state-level government agency and began to specialize in networking. I quickly moved through the ranks moving from Junior to Senior status, and spent a few years as a Network Manager. I dove into “network service” technologies and tools like load balancing, name resolution, monitoring, logging, and analysis. My success there came from four principles:

  • Work with the customer–ensure your decisions are for their benefit.
  • The borders of your responsibility are soft–learn about how your department affects other departments. A little cross-team knowledge goes a long way.
  • Don’t waste time repeating processes–if you’ll repeat it, script it and let the system work for you.
  • Automate yourself out of a job–if you do, they’ll give you a better one.


I went to Florida Institute of Technology in Melbourne, FL, USA and received my Bachelor of Science in Computer Science. While the degree is a great résumé builder, the knowledge and experience gained were much more valuable.

We didn’t just focus on learning a programming language–we learned WHY a language was developed and what separates it from others. Concepts were more important, because that led to a language-independent programming skill. As a result, I can now write code in any language.

I also got a taste at other IT-related skills. The program provided enough electives for us to branch out and “test the waters” around different disciplines. As a result, I got a breadth of skills to help complement my degree: cryptography, computer vision, system administration, OS concepts, database design, etc.

My senior project was a collaboration between Aerospace, Mechanical, Computer, Electrical, and Software Engineers. We built a scale model of a V-22 “Osprey” with a design for mid-air transition while carrying heavy cargo. Since it was a scale model, we also used a wireless serial transmitter and ground interface to control the osprey using a Radio Controller hooked up to a computer screen. My job was the GUI/software for the Flight Control System and interface as well as the scripts to perform the advanced aeronautical calculations. It was a great team experience that further expanded my breath of skills and abilities.


My family and I wanted to move from Tallahassee, FL, USA, to Charlotte, NC, USA and we got the opportunity when I was offered a Network Engineer position with an insurance company that had a regional headquarters in Charlotte. I joined the Network Services team and found my passion for improving processes through orchestration/automation. I also got my first taste of cloud and cloud networking, which required a new education on cloud networking. For many years, I had watched other network professionals accelerate their knowledge and experience on networking to a point, then stick with that knowledge until otherwise forced to change. I realized that I’m not an “old school” networker, as I think being an expertise in networking doesn’t mean knowing every command in a CLI. Cloud networking is different, and requires a new way of architecting–traditional networking tools only work until the cloud border. Ultimately, I spent a short time at the insurance company because I was recruited by Amazon.

The Early Years

Ask my mother, and I was always going to work in technology. At age 5, I set the clock on the VCR and programmed it to record my shows.

My family owns a swimming pool contracting business in Tallahassee, FL, USA and I spent my childhood and teenage years learning how to run a business. Technology was a hobby, and I had fun exploring building my own gaming rig, writing plugins for software, and begrudgingly providing free technical support to friends and family.