Once thought relics of a mouseless age, command-line interfaces (CLIs) are making a huge comeback in a new and evolved form. Go is an excellent platform for CLI development due to its raw power, easy syntax, and painless distribution. We can build much better operations tools than we are currently doing. So much work in recent years has gone into usability and design on the Web and mobile, but the command line is often forgotten—in spite of a dramatic rise of command-line programs being developed. Through awareness and better libraries, we can spark a movement into better interfaces.
Ashley McNamara outlines the techniques, principles, and libraries you need to create user-friendly command-line interfaces and command suites before walking you through building your own CLI tool. Along the way, you’ll cover everything from how to design and build commands to working with and parsing flags, config files and remote config systems, and how to work with environment variables and 12-factor apps. By the end of the workshop, you’ll have a working knowledge of Go and your very own functioning CLI tool.
A laptop with Go (version 1.5 or greater), Git, and the text editor of your choice installed (For people interested in a Go-aware editor, the IntelliJ IDE and the Go plugin work together really well on Windows, Mac, and Linux.)
Ashley McNamara is a Principal Technologist at Pivotal, where she acts as a bridge between third-party developers and Pivotal, driving platform adoption through the developer community and driving change into products based on real-world customer/developer feedback. Ashley was a 2014 Hackbright engineering fellow. In her spare time, she’s a mentor at WeWork, General Assembly, AngelHack, and CapitalFactory and is on the board of multiple engineering groups including Redis Austin, Big Data Analytics Club, and Austin All Girl Hack Night. Ashley is passionate about helping more underrepresented individuals join and feel comfortable in tech and is often a resource for new developers trying to find their way.