category: technical deep dives

  • Secrets to Managing a Software Modernization Project
    Dec 13, 2022 Written by Andrea Goulet

    Using Empathy System Architecture, we can map out the fundamental skills required for effective empathy. Software System Architecture helps us identify the fundamental structures and relationships within a software system. Empathy can be approached the same way.

  • Spice Up Legacy Code Leftovers
    Nov 15, 2022 Written by Chris C

    Putting the source code on the counter you walk over to your shelf with all the cookbooks. Where is it... that old recipe book your grandparents gave you. Ah-ha! You pull out the Legacy Code Cookbook. This should have the recipe you need.

  • Platform Migrations - The Built Environment as a Metaphor
    Jul 26, 2022 Written by M. Scott Ford and Cassandra Carothers

    Platform migrations are a common challenge among teams that we interact with. Platforms need to change frequently, to keep up with the demands and needs of the software systems they support, and the teams that use and interact with them.

  • Model Relationships in Django REST Framework
    Jun 14, 2022 Written by Jason McDonald

    I've spent the last couple of months working on an API written using Python, Django, and Django REST Framework (DRF). The latter is a popular, well-established framework for building APIs in Python, so I assumed it would have decent documentation surrounding relational fields, which is a fairly common situation in any model-view-controller (MVC) framework. It turns out that was a faulty assumption.

  • Empathy System Architecture
    Apr 18, 2022 Written by Andrea Goulet

    Using Empathy System Architecture, we can map out the fundamental skills required for effective empathy. Software System Architecture helps us identify the fundamental structures and relationships within a software system. Empathy can be approached the same way.

  • Our Brains are Like Software, Not Hardware
    Oct 12, 2021 Written by Andrea Goulet

    Instead of thinking of the brain as hardware, it might be more useful to think of it as software.

  • Angular Leading Practices
    Jun 8, 2021 Written by Dave Farinelli

    A list of leading practices when working with Angular projects, which can be applied to both a new application, along with an existing application already in production.

  • How to Improve a Real-Time Data Processing Pipeline Using AWS - From Legacy Data Management Solutions to the Cloud, a Case Study
    May 25, 2021 Written by Maira Daniela Ferrari

    Move your company to the next level and allow your business to organize, manage and act on the massive amount of data that arrives every second.

  • Consolidating Git Repositories while Maintaining Change History
    Dec 1, 2020 Written by Nickie McCabe

    I recently helped a client incrementally migrate a customer-facing portal from Struts to Spring Boot. As part of the migration, we needed to consolidate five Git repositories into one. While completing the consolidation, we developed a number of scripts to follow to ensure that the change history for each repository was maintained and accessible.

  • Part Two, Upgrading to Python 3.x
    Oct 19, 2020 Written by M. Scott Ford

    Is your team still using Python 2? If so, now is the time to develop a plan for migrating to Python 3. We'll walk you through our recommended upgrade approach so you can rest easier knowing your software and data are secure.

  • Part One, Python 2 Sunsetting What Does This Mean for Your Business?
    Oct 5, 2020 Written by Melissa Todd

    By now we're sure that you've heard that the Python programming language is undergoing some big changes. It's true the developers who created Python 2 are no longer supporting that version of the language as of January 1st, 2020. Yes, nine months ago! They are encouraging everyone to upgrade to Python 3 but what does this mean for your business?

  • Install Fonts on Your Mac from the Command Line with Homebrew
    Jan 29, 2020 Written by M. Scott Ford

    One of the things that I always forget to do when I set up a new computer is to install all of the special fonts that we use at Corgibytes. In the past, I've found the process to be tedious and time consuming. But recently, I've found a really nice way to install fonts from the command line if you're using macOS.

  • Docker for Mac - Safely reset from factory defaults
    May 13, 2019 Written by M. Scott Ford

    Several months ago, I got a notification to upgrade Docker for Mac to version 18, and there was a note in the recent changes that caught my eye.

  • Introducing the Cukeness Project
    Sep 25, 2018 Written by M. Scott Ford

    I’ve had the idea for a new testing tool in the back of my head for years. I’ve been calling it Cukeness (more on that name later). I was actually working on the project when I first asked Andrea to join me on the Corgibytes journey. I did a horrible job of explaining to her why it needed to exist. So she said that I should put it on pause and focus on other things instead.

  • Converting a large VB.NET project to C#
    Sep 11, 2018 Written by Ben Johnson

    This wasn't the sexiest project we've ever worked on, but a combination of good tooling, careful preparation, and a fair amount of mind-melting compiler error resolution made this a one of our best remodeling efforts of 2018.

  • Lessons Learned from a Production Outage
    Aug 21, 2018 Written by Steve Desmond

    A little while back, I arrived at my desk to a message no one likes to receive: the production instance of a client's primary app was down. What's more, the site had just gone live earlier that week, and thousands of users were trying to login.

  • Quick Tip: Installing ruby 1.8.7 and rubygems 1.8.30 with RVM
    Mar 22, 2018 Written by M. Scott Ford

    We frequently work on projects where it's best to start out with an older version of ruby. Getting these to install correctly feels like a dark art sometimes. Here's a quick series of steps that we had to follow to get Ruby 1.8.7 using RubyGems 1.8.30 installed via RVM.

  • Interactive Notebooks - Part 2: Getting Advanced with nteract
    Jun 13, 2017 Written by M. Scott Ford

    As mentioned in my introductory post on the topic, while doing research for another article, I dug into nteract pretty deeply. It's how I like to learn about new things. nteract ships with the ability to run JavaScript code in notebooks, and I was wondering if it had the ability to do more than that. What I discovered revealed an entirely new level of awesome for using interactive notebooks.

  • Bash Tips - Tip 1
    May 2, 2017 Written by David Grieser

    Recently, I was pairing with a developer on a client's team. He was stuck and couldn't figure out how to fix the problem. I had a look and guided him through a series of bash and other shell commands until we found the solution. After thanking me -- he had been at it for hours -- he asked me 'How do you know all of this?'

  • npm Scripts: Tips Everyone Should Know
    Apr 18, 2017 Written by Kamil Ogórek

    npm is not only the package manager for JavaScript, it's also used to set up tooling around your codebase. Linters, transpilers, testing, and servers. Everything can be configured and run using the very same thing. Basic usage is really simple, too.

  • Hello, TDD!
    Apr 11, 2017 Written by Tiffany Gill

    Have you ever had one of those “down-the-rabbit-hole” experiences, in which one idea sends you careening through a wormhole of thought? Such a journey often yields unexpected results, yet the “mind map” of your travels can actually be even more surprising. Well, it was one such “Eureka!” moment that convinced me of the parallels between the classic Hello, World! program and Test-Driven Development (TDD).

  • Unlocking the Beauty of Patterns in Binary Data
    Mar 28, 2017 Written by Catalina De la cuesta

    Software engineers usually don’t deal with binary data directly. Most data is stored in well-known, open-format files and manipulated through libraries that know how to handle them. So bits and bytes are almost never in a developer’s mind. Apparently, they even scare people: all that random, unreadable mess not meant for human consumption...

  • Custom Azure Machine Frustrations
    Mar 7, 2017 Written by David Grieser

    I'm getting very comfortable with Hyper-V on my Windows 10 Pro machine, and I'm really happy I have this as a development environment. After updating Corgibytes' Chief Code Whisperer, Scott, about where I was at for a current client, we talked about remote machines and Azure. This lead to attempting to upload a VHD to Azure.

  • Integration Tests Can Be Fun!
    Feb 21, 2017 Written by Kamil Ogórek

    One of the most mundane and frightening tasks for many developers is writing integration tests. It's a time-consuming, fragile, and often difficult and frustrating task to accomplish. What makes it even worse is that it quickly gets out of hand and breaks often, which leads to frustration and dropping the idea completely.

  • Check Your Work: Ensuring Your Refactoring Doesn't Introduce Bugs
    Feb 14, 2017 Written by M. Scott Ford

    Code refactoring, as defined by Wikipedia, is “the process of restructuring existing computer code — changing the factoring — without changing its external behavior.” As such, refactored code should introduce no behavior changes. Otherwise, you're not refactoring. You're refactoring and doing something else.

  • Handling AWS Bounce Notifications from Simple Email Service
    Jan 31, 2017 Written by Don Denoncourt

    About a year ago, I had to code a Rails application to handle bounce notifications from AWS SES. Amazon Simple Email Service is ridiculously easy to configure and use in a Rails application. As the instructions at the GitHub gem page explain, all you need to do is add the aws-ses Rails gem and create a configuration file called config/initializers/amazon_ses.rb that contains your Amazon credentials (soft-coded of course). But, if you need your application to handle bounce, complaint, or delivery notifications, things get a little more complicated.

  • GIS Basics
    Jan 17, 2017 Written by David Grieser

    Do you use a GPS navigator on road trips? Or a GPS watch to track your run or bike ride? Then, you’ve been exposed to GIS. GIS stands for Geographic Information System. Even if you haven’t used the two items I mentioned, I’m confident you’ve experienced it, as most everyone has used GIS in one form or another. The most common usage is the maps application on a smartphone.

  • The Postman Always Helps Twice
    Jan 10, 2017 Written by Nickie McCabe

    In my role as Director of Operations at Corgibytes, one of my responsibilities is automating and optimizing our day-to-day tasks and workflow. As a result, one of the common patterns of my work is gathering, manipulating, and presenting data of various sorts. Thankfully, much of the data I’m gathering is accessible via API, which means I get to use one of my favorite technical tools: Postman.

  • Starting a Journey with Clojure and ClojureScript
    Jan 3, 2017 Written by Kamil Ogórek

    If you've never tried functional programming development, I assure you that this is one of the best time investments you can make. You will not only learn a new programming language, but also a completely new way of thinking. A completely different paradigm.

  • I Hate Testing Angular Applications
    Dec 13, 2016 Written by Catalina De la cuesta

    First, a confession: I recently wrote a blog post about unit testing an Angular application. Well, as it turns out, what I was in fact doing was trying to convince everybody of the joys of Angular testing. Including myself.

  • Boosting Confidence in Your Code
    Nov 29, 2016 Written by David Grieser

    I was looking for inspiration for my next blog topic and read through some of my old posts. I came across one called “Confidence From Your Code” that originally appeared on Femgineer in 2014. I thought: “Perfect! It's been a few years since I wrote that, I now work with Corgibytes and have even more legacy code experience, I'll update my thoughts.”

  • Testing an Angular Application
    Oct 25, 2016 Written by Catalina De la cuesta

    I recently started writing tests for an Angular application, so I had to go through the entire process of researching the tools, installing and setting up the libraries, writing the tests and learning the tricks. Here's what I discovered.

  • Autodeploying Angular Applications to AWS OpsWorks
    Oct 11, 2016 Written by Don Denoncourt

    Amazon OpsWorks is an excellent, low-cost option for Platform-as-a-Service hosting. OpsWorks provides relatively easy-to-use UI mechanisms to manage, deploy and host applications on AWS EC2. Corgibytes uses OpsWorks to host both Rails-based and Angular-based servers for one of our clients. Configuring the Rails-based OpsWorks hosts was easy – mostly because there are tons of blog posts on how to do it. But setting up the Angular server was a bit more problematic for me, as my good friend, Google, provided little help.

  • Setting up a Minimal, Yet Useful Javascript Dev Environment
    Sep 27, 2016 Written by Kamil Ogórek

    In an era of omnipresent frameworks, libraries and tooling, it may be hard to decide what tool to use and when. I know from experience, that the first thing you do, once you decide to write a module or CLI tool, is set up an environment. Some people love it, some hate it. But no matter on which side you are, you’ll most likely end up spending way too much time doing it, polishing every aspect of the setup.

  • Embracing the Red Bar: Safely Refactoring Tests
    Sep 20, 2016 Written by M. Scott Ford

    Do you ever refactor your test code? If not, I hope you consider making this part of your normal practice. Test code is still code and should adhere to the same high standards as the code that's running directly in production. As important as it is, refactoring your test code is actually a little risky. It's very likely that you could turn a perfectly valid test into one that always passes, regardless of whether or not the code that it covers is correct. Let's explore a technique for protecting against that possibility.

  • The IDE vs Text Editor Battle
    Aug 9, 2016 Written by Catalina De la cuesta

    There are 10 types of programmers: those who use an IDE, and those who think that the ones who use an IDE are not real programmers. I'll start by making it clear that I belong to the first group and do care _a little bit_ about the other group’s opinion. So I decided to dig a little deeper and collect opinions about this topic. The choice was either to become a real programmer and switch to a text editor, or to reinforce that I am a real programmer who uses an IDE!

  • We're Excited about Docker Distributed Application Bundles
    Jun 22, 2016 Written by M. Scott Ford

    Docker's new Distributed Application Bundles are an exciting development. They have the potential to be revolutionary for describing the structure of a distributed application and making that description something that can be deployed as a single file.

  • Portrait of an IBMi Modernization Project
    May 9, 2016 Written by Don Denoncourt

    I’m going to list tools and strategies that a state-of-the-art application development project should be using. Essentially a portrait of the infrastructure of a successful IBMi application start. I’ll start with suggestions on dealing with the daunting task of selecting a language and framework. Then, I’ll recommend tools for source control, testing, editing, collaborative communication, knowledge base management, and project management. And I’ll finish with some considerations for RPG integration strategies and database enhancements.

  • Engineers, Interruptibility, and Inception Layers
    Apr 15, 2016 Written by Andrea Goulet

    How do you interrupt your engineers appropriately? At Corgibytes, we use Inception Layers do describe how interruptible we are.