Save Time with Bash Programmable Autocompletion

Save Time with Bash Programmable Autocompletion

Every developer should have at least a basic mastery of their command line. I'd argue that part of that mastery is to develop a set of customizations they take with them wherever they go. These customizations should make things you do all the time faster. Obviously there are diminshing returns here[^2].

Some of my customizations include bash aliases for my most used git commands

Posted on by
Thanks, ElectronConf
Image by Tina Hartung

Thanks, ElectronConf

Over the weekend, my usual sources for industry news exploded in response to the postponement of the first ElectronConf because the panel of speakers did not "reflect the standards to which we hold ourselves."

First: thank you. Thank you to ElectronConf and to GitHub for self-reflection and recognition that something is wrong. We need more leading members of our industry to stand up for diversity

Posted on by
Parsing JSON with Types (Part 1)
Image by Markus Spiske

Parsing JSON with Types (Part 1)

I like to have well-defined models of my application data, especially at service boundaries. I usually also define types in my application code to reflect these models. When data are sent from a service, their values are serialized and their types are mapped onto the type system of the serialization format. Then, when receiving data, I need to deserialize the values and also map the types back into the richer type system of my application code.

In statically typed languages, application frameworks or libraries typically handle this for me

Posted on by
Don't be a Hero
Image by Henry Hustava

Don't be a Hero

Last month, Noah and I performed what is commonly called an act of heroic programming: We had a demo due, and we stayed up until 4 am --- 2 nights in a row --- to finish the work. We came out the other end bleary eyed, but triumphant; the demo was on time, the client was happy, and some might have expected us to celebrate.

Instead, we went into our weekly debrief somber, apologetic, and ready for a post-mortem. Why? Because while it's called heroic, our actions were bad for our health, bad for our codebase, and bad for business. After our late nights, we spent hours refactoring code that should have been written correctly the first time

Posted on by
Preparing for Docker
Image by olafpictures

Preparing for Docker

It is a dark winter day at your desk in Maine and your boss gets back from sunny California and says "Docker is the best, we need to start using this for everything!". You internally groan because you just got all the infrastructure working correctly, but you start frantically searching how to setup and run Docker and jump right into figuring out how to apply it to your current projects because it needs to be done yesterday.

Before looking into how to setup Docker, let's fill in the basics of what you always wanted to know about Docker but didn't know you needed to ask.

What is Docker?

Docker is a tool for developing applications in a virtualized operating system, called a container, which can run on any hardware, guaranteeing that the software runs the same in any environment.

Docker containers allow you to install anything that would normally be installed on a server to run your application into a portable file that can be moved from environment to environment without any need to reinstall the dependencies

Posted on by
Caring for the Grindstone
Image by Vladimir Kudinov

Caring for the Grindstone

If I'm completely honest, I never meant to become a job creator (that's what we call ourselves, it was in the pamphlet). I've had a lot of career aspirations in my life: writer, designer, cowboy; whatever it was, they've all come with some kind of shape: some way to describe the job in a social setting that resonates with others.

Over the last two years, I've lost that luxury.

I like to tell people that my career in software started when I was 11. My grandmother needed a website for her accounting business, and I said (foolishly), "I can do that

Posted on by
Read the Source: Encryption Draft Bill
Image by Giulio Magnifico

Read the Source: Encryption Draft Bill

In the wake of the San Bernadino iPhone controversy the Senate Intelligence Committee has produced a draft bill that would force Apple and other software companies to decrypt data for the government when they receive court orders. The bill --- titled the "Compliance with Court Orders Act of 2016" --- would force Apple and other software companies to decrypt anything that they have encrypted.

There have been a number of critiques written about this bill already

Posted on by
Communicating Software Estimates
Image by Ryan McGuire, Gratisopgraphy

Communicating Software Estimates

Communication is hard. It's also extremely important. We're lucky that in the field of software development miscommunication tends to lead to project delays instead of loss of life.[^1] Estimates are also hard. It's challenging to produce accurate estimates in the first place, but even after a good estimate has been produced, comes the challenging work of communicating the estimates to interested parties

Posted on by
The Books I Kept
Image by Patrick Tomasso

The Books I Kept

I studied literature at Bennington College. There, I wrote my thesis on the past, present, and future of the book object. Five years later, I'm still fascinated by the subject. The role that bound paper has played not just in my life, but in the history of humankind, is staggering

Posted on by
Work & Passion

Work & Passion

Hi, I'm Niall. I'm the third hire (fifth including founders) at Apsis.

The first thing you ought to know about me is that I disdain work. I aspire at all times to [idleness](http://www.zpub

Posted on by
Work Sustainably

Work Sustainably

When we started Apsis Labs we never found it necessary to separate our values as founders from the values of the company. We did what felt right, and the company was an extension of ourselves. Its values were our values, and that worked for us. In our first year we tackled the usual early-stage problems: find clients, make them happy, get repeat customers, and build a reputation.