Image for post
Image for post
Photo by Sara Kurfeß on Unsplash

If you collected every single different type of Linux distribution that has ever been created, you would probably need a data center the size of a small country to hold it all. The Linux operating system is an integral part of computer history and also one of the most popular operating systems today. Linux is free, efficient and supported by an open-source community that spans the entire planet. With the ability to easily customize and extend Linux, its no wonder there has been a sea of different versions produced.

There is a high likelihood you could find a flavor of Linux geared towards just about any specific task or interest. There are distributions for gaming, hacking, serving and even the average Anime fan (though we won’t cover that one). Linux provides the building blocks for specialized distributions of any suit. If you love cars, within a few hours you can build your own distribution that is “geared” towards cars. Maybe it includes a database of car stats and open-source diagnostics tools for cars? The limit is really imagination and some basic software skills. …


Image for post
Image for post
Photo by Charles Deluvio on Unsplash

Ansible is fast, efficient and easy to use. On it’s own it can handle deployments of just about any size and let’s you build out large-scale infrastructure with nothing more than a simple YAML interface. Sometimes, Ansible playbooks, roles and modules can grow to become inefficient and unweildy over time. The more complicated a role becomes and the more moving parts, cause that once elegant YAML to look and perform like a nightmare.

Iterating multiple times over the same collections, not using filters efficiently, or just burying everything under a complex conditional rats nest can leave Ansible sluggish and confusing. …


Image for post
Image for post
Photo by Markus Winkler on Unsplash

Managing backups is the technological equivalent to the big, ugly elephant in the room. Everyone knows its there, but nobody wants to deal with it. What’s worse, there are hundreds of different ways to implement a backup solution. You can purchase some off-the-shelf software, use an open-source solution or roll-your-own custom project. There are pros and cons to each type of solution and depending on your environment and the sensitivity of data you might not even have much choice.

If you’re tired of using third-party tools that don’t perform the way you want and you have the flexibility to settle on a bespoke path forward you should consider building your own solution. When you craft a custom backup solution you have total control over when, how and where the data gets backed up. …


Laptops and papers on desk with men working
Laptops and papers on desk with men working
Photo by Scott Graham on Unsplash

Web dashboards are everywhere. Lately, it seems like every new SaaS product that hits the market ships with a smooth-looking management dashboard. Whether its server statistics or sales metrics there’s a high probability you have used one of these dashboards recently. Styles, color schemes and overall themes differ across many modern dashboards, but the overall layout is generally the same. Split pane view, some sort of navigation bar, notification area, etc. So why exactly do all these different products use roughly the same dashboard idea?

The answer is simple: consistency and ease-of-use.

There are exceptions to the rule, but most users want a similar and consistent experience across applications. It’s easier and a more pleasant experience when you know where buttons are located and how simple concepts like navigation should work. This allows users to focus on the actual content of the application, not the figuring out the layout. …


Image for post
Image for post
Photo by Zan on Unsplash

You can’t write code 24/7. In fact, you shouldn’t. If you find yourself pulling more and more all-nighters or marathon coding sessions then you are probably pushing subpar code. If you don’t take breaks to let your mind work on other things, or stop to consider the design decisions of your project then you won’t operate at your best. Your brain needs time for reflection, and to zone out. You need time to step back and examine big picture items.

The longer you go down a rabbit hole of writing line after line only prolongs the inevitable. You’ll burn out, get discouraged and lose focus. What’s worse, you might even make poor architecture decisions that only lead to more work in the long run. …


Image for post
Image for post
Photo by Alfons Morales on Unsplash

Extending code libraries across Jenkins pipelines can seem like a daunting task. There are many different ways to accomplish the same thing in a Jenkins pipeline. Deciding between declarative or scripted pipelines. Choosing where and how to import libraries. There’s a laundry list of tasks for the Jenkins developer to work through. Not to mention keeping track of the environment and state of a pipeline as it evolves. So what’s the best way to share common functionality in different pipelines?

Using shared libraries (or Global Pipeline Libraries) we can easily and automatically pull reusable functionality into pipelines. Configuration is handled by Jenkins and there’s no messing about with manual path entries or environment variables. …


Image for post
Image for post
Photo by Glenn Carstens-Peters on Unsplash

We’ve all been there. You’ve been working on a new project for a while and battling setback after setback. Just when you’re ready to call it quits and work on something else, you finally start to make some real progress. The code starts to come together and function as you had imagined. Success! It works now. Time to push all this code up, get it reviewed and wash my hands of it… Right?

Wrong.

The minute you actually start to put together functioning code is only the beginning. Even though this is a nice hit of dopamine and makes you feel accomplished, its also a signal that you should begin (or continue) to make preparations for actually packaging your code for review. That’s right, not only do you have to write the core functionality, you also have to write the supporting material for it. …


Image for post
Image for post
Photo by Nicole Wolf on Unsplash

Testing your code for speed and efficiency is a crucial aspect of software development. When code takes too long or consumes too much of a resource like memory or CPU you can quickly run into a wide range of issues. The machines your code runs on can become unstable, your code can produce unintentional side effects and in some cases even data loss. Making sure to examine glaring performance issues as they arise is helpful, but it is equally as important to establish performance baselines and profiles as well.

Code should be tested for functionality from start to finish during the development process, but it is also important to test for performance as well. Building good habits of testing your code for things like speed and resource utilization while writing it will save you headaches down the road. …


Image for post
Image for post
Photo by Lorenzo Herrera on Unsplash

Linux is awesome. For developers Linux is a dream. There are tons of great open-source tools for building software, but not a whole lot when it comes to games. Compatibility is a huge problem, and most Triple-A titles are really only available on Windows. Whether you run a dual-boot system or a virtual machine, the options for setting up a smooth transition between multiple different operating systems are fairly limited. Having to boot into another system to play a game and then boot back into Linux is annoying. So what are some other options if Linux is your daily driver?

Aside from the obvious “use a different OS”, you can try some new, different and less well-funded games. Games made to run directly on Linux without any fuss. …


Image for post
Image for post
Photo by Tirza van Dijk on Unsplash

Not every programmer is a designer. In fact, a lot of great engineers are lost when it comes to effective user interface design. Specialization can be a good thing, despite the recent trend of “full-stackifying” every single developer role. Being really good at writing server code and dealing with the specific problem set to solve in that realm is important, and shouldn’t necessarily translate to the frontend. So, what if you fall into this category but you need a quick GUI?

If you’re prototyping a new application that would benefit from a basic UI bolted on, it might feel like your options are limited. In some cases it feels like you either have to build the entire thing from scratch or get someone else to do it (which might not be an option at all). In the world of Python your options are more than just binary. The Python community has a world of drag-and-drop and low-code UI editors that you can build fully functioning graphical user interfaces with. …

About

Tate Galbraith

Software Engineer @mixhalo & die-hard Rubyist. Amateur Radio operator with a love for old technology. Tweet at me: https://twitter.com/@Tate_Galbraith

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