A primer for designing applications for the public cloud

Image for post
Image for post
Photo by SpaceX on Unsplash

The image above might be rocket science, but changing how you develop programs for the public cloud isn’t!

There are many ways to successfully write code that works in Microsoft Azure, Amazon Web Services, Google Cloud Platform, or IBM Cloud. I’m not here to promote one platform over the other —so please don’t ask which one is better.

In this piece, I’ll refer to scaling vertically and horizontally. Here is a quick definition of each in case you don’t know.

  • Vertical Scaling — Adding hardware resources (CPU, RAM, Disk Space) to a server to handle more requests.
  • Horizontal Scaling — Adding load-balanced instances of a server to handle more requests. …

Hi, I’m Bob, and I write bad code

Image for post
Image for post
Photo by Steve Johnson on Unsplash

At different points in your software development career, you will experience at least one, if not all, of the problems listed here. My goal is to inform you of things that could discourage you from becoming a developer, before you reach them. This will prepare you to handle them, using a plan you’ve devised with a clear mind.

Why? Because development is hard and it will take persistence to get better.


The first truth of programming is that you will fail. I do all the time. The compiler (or interpreter) is good at reminding me of my failure rate.

What it is not so good at is telling me “Good job!” when I fix those pesky bugs — I have to do that myself. Learn to appreciate the failures, small and large. Look at failed compiles and program crashes as learning experiences that make you better at what you do. If you want to be the sharpest tool in the shed, you have to find and remove the burrs! …

An essential checklist of fundamentals

Image for post
Image for post
Photo by Clément H on Unsplash

This article assumes you already know at least one programming language; however, the concepts here will help you get started with programming.

When I was in school, a teacher told me something I share with new developers: The hardest programming language you’ll ever learn will be your second.

Don’t let this be disheartening — it means that when you first learn how to program, you have all of these preconceived ideas about programming. You end up making more syntax connections and assumptions than you should. Because of this, you have to “unlearn” these assumptions when you learn your second language. …

Everything’s fine until suddenly it’s not-what happens then?

Image for post
Image for post
Photo by Nik Shuliahin on Unsplash

You Didn’t Make the Cut

When a company lays off workers, it can be one of the most stressful times for employees of that company. Not only are you worried about your job, but your friend’s jobs too.

If you have a lot of friends at work, you’ll be happy you do. Most of your friends will be looking for open positions in their departments, or dust off the old gray cells for where they heard about an open position.

Don’t Panic

You’ve probably heard this a hundred times but it’s different this time because you have lost your stability. …

How I became a developer in three years

Image for post
Image for post
Photo by Carl Heyerdahl on Unsplash

Getting started as a developer is no easy task; it takes hard work, a lot of learning, persistence, some creativity, and sometimes a little luck.

I’ve spent most of my professional developer career as a COBOL developer, albeit only four years. Before this, I was a systems admin for eight years.

I first started COBOL in 2014. I was amazed at the lack of information online about how to do anything in this language. You have to read the documentation to figure it out.

Because my job was split between dev and admin, I didn’t have much of an opportunity to write code. I spent most of my evenings and weekends trying to learn how to write COBOL. …

Sunset in Najaf
Sunset in Najaf
Sunset in Najaf, Dec. 29 2005

The Life of a Soldier and Dealing with PTSD

The Beginning

When I was 17, I was in high school, my girlfriend had recently broken up with me, and I had too much idle time on my hands. If I continued down this path, I would have surely ended up in jail before the age of 21.

One day I received an unexpected phone call. “Is this Robert Roebling?” asked the unknown caller. “Yes, it is,” I replied. When the unknown caller introduced himself as a recruiter for the U.S. Army National Guard, I wanted to hang up immediately as if it were some telemarketer trying to sell me something. …

Wrapping up with workplace optimization

Image for post
Image for post
Photo by Khai Sze Ong on Unsplash

In Part 16 of Beginning Python Programming, we covered testing.

Hopefully, you will use what you’ve learned to ensure that your code is safe from bugs.

In this piece, we’ll talk about optimizing your workflow. You already know everything you need to get started on your own, but if you are looking for hints and tips on setting up a development environment to make your workflow more comfortable, then stick around.

A friend and work colleague helped me get started developing professional Python programs; it is only fair that I credit him for these tips. Thanks, Shawn!

As a disclaimer, this is just a workflow that works for me. If you find it too difficult or too limited change it up to what works for you. …

Let’s talk about test-driven development

Image for post
Image for post
Photo by Michal Pechardo on Unsplash

In the previous article, we covered multi-processing, finishing async.

In this article, we will cover the most critical aspect of any programming language.


The two most popular modules for testing code are unittest and PyTest. I’m choosing to cover unittest in this article because it ships with Python.

unittest is a framework provided by Python that allows you to create assertions about your code. If the assertions are true, the test passes.

Before we get into testing, we should cover a few things about testing code, some which the community is very divided over.

There are several different forms of…

An introduction to multi-processing

Image for post
Image for post
Photo by Brian Kostiuk — @BriKost on Unsplash

In the previous article, we covered multi-threading.

Here we will be covering another library provided by Python called multiprocessing. Likethreading, multiprocessing allows us to run code concurrently; however, this code runs on multiple processors. Let’s start with a definition.

  • Global Interpreter Lock (GIL) — used to ensure that Python bytecode only runs on one thread at a time when locked. If released, it allows using multiple cores for processing.

So far, we’ve been able to dodge this complexity, as we have only been dealing with single core computations. …

An introduction to multi-threading

Image for post
Image for post
Photo by Franck V. on Unsplash

In the previous article, we covered asyncio and just hit the surface of asynchronous code.

Today, we are going to keep moving in the direction of async by looking at another method called multi-threading. If you haven’t read the previous piece, I strongly suggest you read the introduction as a primer.

Let’s zoom out for a second and think about the big picture again.

  • Process — an individual program that runs to perform work. (e.g., Google Chrome, Firefox)
  • Thread — a worker queue to which a program sends tasks.
  • Thread Queue — a list of instructions that the processor will handle in a first-in-first-out (FIFO) way. …


Bob Roebling

Bob is a Senior Systems Administrator and tech evangelist with a background in multiple programming languages.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store