The foundational building blocks of your software determine what’s easy and what’s not. It’s important to know how the choices you make at the lowest level will affect your ability to build features down the road. When your software architecture doesn’t match the problem domain, it feels like walking uphill. When you get it right, features seem to come together on their own.
While certainly not the most elegant of debugging techniques, logging to a console is sometimes the most effective technique, and in many cases it’s your only lifeline. During development, sometimes a simple
“I am here” print statement can be a life saver.
Working as a maker at Atomic Object means being a generalist. Generalists must be able to quickly move between projects, languages, and tech stacks. We are expected to quickly pick up new languages and technologies–drawing from our expertise in the technologies that we already know well.
One tool I’ve found useful in picking up new technologies (or just trying things out) is CodeRunner. CodeRunner bills itself as a “code editor for Mac.” It’s an editor that’s preconfigured to build/run code in a variety of languages. In this blog post I will describe some of its features and cover how I’ve used it in my work. Read more on CodeRunner: A Generalist’s Swiss Army Knife…
I’ve recently started work on a project that will be translated and localized. While translation is rarely prioritized early in the development cycle, leaving translation work until late can cause great sadness if you find you’re weeks away from an intended release date but you’ve built an application with systematic translation flaws.
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…
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…
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…
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…
In my recent post on Uniprocessor OS Scheduling Policies, I covered the algorithms for five short-term operating system scheduling policies:
- 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.