Jan 27, 2017

Lesser Known Tools We Love at Kiwi.com, Part 2 of 3: Mac and Web

As promised last November in an article about our favorite CLI tools, we’re continuing the list with our favorite macOS and web apps, as developers. Since the whole point of this is to become more efficient, let’s not waste time on more filler. Here comes the list!

Numi (macOS)

Numi is a calculator app. Sounds boring? I know, but bear with me. They apparently like to stress that it’s ‘beautiful’ as their main selling point, but what I find really amazing is how its interface feels sort of like writing code with an awesome debugger. Since it ditched the ‘press buttons and see a number at the top’ design that has to be a remnant of old hardware limitations, Numi has:

  • A line by line breakdown of every step in your calculations
  • An understanding of units (including CSS units like px and pt!)
  • Named variables
  • Comments to explain specific steps
  • The possibility to go back and edit previous steps to see the changes propagate to each later step instantly

Before discovering Numi, I often found myself copying intermediary results into plain text files and writing notes about what they were. Having a calculator app that’s actually designed around this idea is just amazing.

Numi making it super easy to see how much I’ll have to pay for the Nintendo Switch

Spectacle (macOS)

Spectacle is a tiny app for organizing windows with keyboard shortcuts. Tiling window managers are pretty cool, right? Well, since we’re stuck with macOS’s window manager, the second best thing we can have is a window tiling… helper. I guess it doesn’t have a proper name, but you should get the point!

In just a few keypresses and less than two seconds, Spectacle has made a real journalist out of me!

There’s plenty of alternatives, but sadly you’ll often find the developers of similar apps focusing more on crazy, overcomplicated features, instead of making the core functionality actually work properly.

Caffeine (macOS)

Caffeine is an even more barebones app, but one that solves its problem beautifully. Here, have a look at it:

Yep, that’s the whole app

Just an empty cup of coffee sitting patiently in your menu bar. Click it to turn it on:

And yep, that’s the only thing it does

And tada! Your Mac is safe from going to sleep during your conference talk.

Keybase (web)

Keybase is sort of like a GitHub for encryption. If you’re anything like 99% of the population, you have no idea how to even get started with sending encrypted messages or signing them to prove they came from you. Keybase’s nice web UI makes PGP as easy as using git via GitHub. And it does all this without compromising the security of PGP—a pretty amazing feat if you ask me.

This is me desperately trying to prove my identity

And what better way can you imagine to try it out for yourself than verifying the authenticity of this message of mine? Just paste the below block into the text box on the verify page and click the button. (Make sure you have the blank lines though, apparently copying text from here can be a bit messed up.)

Hash: SHA512I swear it's me writing this article!
Version: Keybase OpenPGP v2.0.62
Comment: https://keybase.io/crypto

Now ideally you would know the article really is written by me. Of course, Keybase only proves that it’s the same person as whoever controls my other online identities, and the message totally could’ve been written referring to a different article… so I guess there’s still no getting around understanding at least the concept of cryptography. But to be fair, this applies also to GitHub, which you can’t really use without an understanding of version control, either.

Dash (macOS)

Dash is a documentation browser, and is one of the two absolute must-haves for developers from this entire list. We all spend a huge chunk of our time looking for and reading documentation; Dash optimizes this process as much as possible. It has editor plugins that bring up the documentation of whatever your cursor is on with one keypress. Even if you’re not using Dash like that, you can press a global keyboard shortcut to bring it up, then type a few letters and peruse its fuzzy matching search to find anything from the docs you’ve configured it for.

Always just 10 keypresses away from remembering how aiohttp websockets work

Do you think it’s pointless to shave off these few seconds of Googling and clicking on results? Well, you couldn’t be more wrong. Having docs no more than 2 seconds away is literally life-changing.

iTerm2 (macOS)

iTerm2 is an alternative terminal emulator, and it’s the second ‘essential’ on this list. There’s nothing even comparable (which is just shocking, to be honest—one would expect Linux to have a better terminal than macOS, but iTerm2 is just vastly superior to all the alternatives.) I can’t fill the whole article with all the awesome convenience features iTerm2 provides, so let me just mention my favorite: it records everything that’s displayed in your terminal, and lets you literally watch a replay of what you’ve seen. This is super useful when managing multiple servers in the same window, or when you need a process ID from htop that you had open 5 minutes ago.

Going back in time to see what happened after I typed `sl`

Airflow (self-hosted web)

Airflow is sort of like a (much) smarter version of cron, with a web UI. It’s a bit of a stretch to include it as a ‘web app’, but I just had to fit it in somewhere. Basically, Airflow allows you to define a set of tasks to run periodically which can be as simple as running a shell command, but they can also utilize Airflow’s advanced DB management features, for instance). Airflow will then manage the periodic execution of these tasks, while also resolving the dependencies between them (to make sure one task runs only after another has completed, which can be used for example to run data aggregation tasks after the tasks that copy the raw data in place.)

The airflow web UI showing the status of our super important hourly jobs

So, great, we can look at the status of some jobs online, what’s the big deal, right? Well, the big deal is all the random goodies Airflow showers you with after this point. You get awesome visualizations of your cronjob health, charts of how long each task execution took to run, email alerts if jobs are failing or are slow, SQL query templating with the task execution’s target date, database credentials management, variables in your job being configurable on the web UI, and many more.

Wakatime (web)

Wakatime, our last app in this article, is one for the all the quantified self data geeks out there. You just install a plugin in your editor, and Wakatime will start keeping track of what you work on. It even supports integrating with shells and browsers, to really accurately track your time. It can then tell you how long you spent on each project, each file, and even each commit of yours.

Yeah, I guess I really should learn how to use vim properly

It can be super interesting to then dive into all this data to figure out patterns and trends in how you work. It’s also a really nonintrusive way to do time tracking that will satisfy your managers; not only is it less cumbersome than manual tracking, but it’s also more accurate, which makes everyone happy.

And there we go, that’s eight cool things for you to play around with until our third installment lands. If you’re using a Mac, and you like just dumping lots of new stuff on it without thinking, you can install the above macOS apps in one go by running this:

brew cask install caffeine dash iterm2 numi spectacle

And, of course, don’t forget to follow code.kiwi.com if you want to be the first to know about part 3 of this series when it comes out, which will focus on our favorite lesser known Python libraries!


Featured articles
Generating SwiftUI snapshot tests with Swift macros
Don’t Fix Bad Data, Do This Instead