Best Practices for Dev. Project Resurrection

Recently, I have been put in a challenging position of having to do short gigs on three projects that have been mostly dormant for a significant period of time. Additionally, they have been using technology stacks that I am not all that savvy in. While this has been difficult and frustrating, it has also been a fun challenge and allowed me to hone my skills in the area of project resurrection. Read more on Best Practices for Dev. Project Resurrection…

Google Sheets’ Query Language

Many of us at Atomic Object leverage spreadsheets for various purposes (estimates, hours tracking, finances, etc.), and since we have strong technical backgrounds, we tend to leverage a lot the functions that spreadsheets provide (avg, max, min, ceiling, sum, etc.). We also tend to push the boundaries of spreadsheets by leveraging multiple functions in one cell and doing some complex filtering. Read more on Google Sheets’ Query Language…

Creating Man Pages in Markdown with Ronn

As brewdo (my tool for sandboxing package management tool Homebrew) expanded and gained more and more options, it became more important for me to document it in an easy-to-use way. Since it’s a command line tool, that meant a man page.

But while the tools for making classic man pages are powerful, they’re also, how shall I say it… historical? And definitely not things I use every day. Thankfully, there’s a modern option that gets me from zero to man page without having to think about skills I left in the dust long ago. Read more on Creating Man Pages in Markdown with Ronn…

Working with Text at the Command Line – Tools for Searching & Editing

I spend more time working with text than anything else. The multi-monitor, high-resolution graphics revolution hasn’t brought me graphics, just dozens of windows full of text. If you’re a software developer, chances are you are swimming in text too. Source code, documentation, configuration files, templates, logs–they are all searchable text. For special purpose tasks, like searching Java classes, I rely on my IDE, but for many things I run a command in a terminal. Read more on Working with Text at the Command Line – Tools for Searching & Editing…

A Comparison of 5 Uniprocessor OS Scheduling Policies

In my recent post on Uniprocessor OS Scheduling Policies, I covered the algorithms for five short-term operating system scheduling policies:

  • First-come-first-served
  • Round robin
  • Shortest process next
  • Shortest remaining time
  • Highest response ratio next

But I didn’t compare, analyze, or go over the use cases for each policy. I would like to do that in this post. Note that the concepts covered in my previous post are required to understand this one.

Read more on A Comparison of 5 Uniprocessor OS Scheduling Policies…

Sticky Documentation, Part 2: Source Control History as Documentation

Last week, I introduced a concept I’m calling “sticky documentation” and reviewed a few ways that we can make the most of the “stickiest” documentation we have: the code. Today, I’d like to talk about another form of “sticky” documentation: source control history. Read more on Sticky Documentation, Part 2: Source Control History as Documentation…

Specifying the Destination of an Unwind Segue Programmatically

I once wrote an iPad app to help people take self-guided tours through a museum. One of the interesting parts of this application was that many of the views were implemented by the same view controller. The functionality of each screen remained the same with slightly different assets in each view. This would be a problem if I needed to Unwind to certain screens in my application.

Read more on Specifying the Destination of an Unwind Segue Programmatically…

Sticky Documentation, Part 1: Code as Documentation

I support and maintain a variety of applications in production. Some of these applications consist of what might be considered “legacy” codebases. When troubleshooting issues with these applications, detailed and accurate external documentation is not always available. I often find myself acting as a code archaeologist, reliant on only the contents of the source code repo to get to the bottom of a thorny problem. Read more on Sticky Documentation, Part 1: Code as Documentation…

Using Reflection to Test Complex Objects

“Looking back” by Susanne Nilsson, licensed under CC BY-SA 2.0

Having code with automated tests keeps our quality high and makes us more efficient. But some code can challenge that efficiency—when code is simple in function yet complex in structure, making minor structure changes can be problematic. We don’t always completely think through the impact of those changes, sometimes accidentally leaving pieces of functionality untested and creating bugs. Thankfully, there’s a way to reclaim that efficiency and maximize our test coverage. Read more on Using Reflection to Test Complex Objects…