From gitignore to docinclude

Creative documentation techniques

We have a lot of documentation at Vertalo: policies, procedures, regulatory information, and loads of technical docs. The later are scattered around all of our code repositories and are periodically gathered into a centralized internal documentation site alongside non-technical documentation. During a recent project to revamp and improve our methodologies for both developing docs locally within a repo and the gathering of repo-specific technical docs into the internal docs site, we encountered and interesting opportunity. [Read More]

Useful gmake Recipes

Reusable targets for gmake

The venerable make program comes in many flavors. It has numerous quirks. And it offers only a very restricted interface. Yet it remains an important tool for organizing project builds, deploys, and other operations. If you use make in your projects, chances are that you use gmake. Here are some useful tricks to use with gmake. Which make? Do you work on a system where make is not gmake? If you inadvertently invoke make, do you get a long list of syntax errors? [Read More]
gnu  unix 

Shell Is Underrated

Essential unix skill

How much time do you spend at the command line? Most programmers say they are very comfortable there. Most also say they are good shell programmers. Shell programming is quirky, and not particularly elegant. Yet it is both universally available under unix and extremely powerful. Programming in shell is an easy way to cobble together simple experimental programs, especially if you master the art of unix filters. Sadly, very few people are competent shell programmers. [Read More]

What Do You Mean Atomically?

Know your filesystem

Once I worked on a project whose origin predated the widespread use of DNS. They used /etc/hosts files to map host names to IP addresses. This system had grown to thousands of hosts, and the /etc/hosts file was about 1M in size. After any update, which was handled by a sysadmin, they pushed this file to all production hosts. “Wow! You update those files atomically when you push, right?” I asked the sysadmin. [Read More]

Unix Filters

A powerful building block

What is a unix filter? A unix filter is a program that reads data from standard input, writes data to standard output, and logs to standard error. (Some definitions do not include logging to standard error — YMMV.) Anyone who has spent time on the command line in a terminal has worked with unix filters. Questions What makes the unix filter a powerful concept for processing data? What cool things have you done with unix filters? [Read More]