Discover more from hrbrmstr's Daily Drop
Bonus Drop #32 (2023-11-11): Terrific Terminal Treats
Terminal Graphics; Terminal Cartography; Terminal Data[vis]
I spend way more time in the terminal these days. Once there, I really do not like the mental shift required to get back to a browser. So, today, I'm Dropping three resources that have helped me say firmly fixed in terminal land for some likely surprising use cases.
NOTE: Given that I took Friday off (we had the day off at work), I’m going to let this Bonus Drop out early to free subscribers on Wednesday. Hence, the reason for an unusual mailbox ping to those folks (I try not to bug them with paywalled).
Resources for today:
This may be the best image-in-terminal displayer, ever.
Whilst looking for something else, I came across, chafa, a tool that converts image data, including animated GIFs, into graphics formats or ANSI/Unicode character art suitable for display in a terminal. It's like having a magic wand that transforms your images into a text-based art form, right within your terminal.
It supports a broad range of devices, from historical teleprinters to modern terminal emulators, making it a versatile tool in almost any environment. Chafa can convert various image formats, such as JPEG, PNG, GIF, and BMP, into ASCII or colored character representations. It's not just about conversion, though. Chafa is also about customization. You can specify the width and height of the output, adjust the character set used for rendering, set the background and foreground colors, and apply various dithering and scaling algorithms to enhance the image quality.
But what makes Chafa super cool is its performance optimization. It leverages multi-threading and parallel processing techniques to accelerate the conversion process, ensuring efficient image rendering even for large and complex images. This means you can enjoy real-time or near-real-time image display within the terminal, which is pretty remarkable.
Chafa is also a great tool for automation. It provides command-line options and supports standard input/output, allowing users to pipe image data and automate image conversion tasks. This can be particularly useful for creating scripts or automated workflows. Imagine being able to convert and display a series of images in your terminal with just a few lines of code!
Tis super easy to install, and the section header shows what it can do when paired with a great terminal, like WezTerm.
The 30-Day Map Challenge is on my mind quite a bit this month. I had to take a hiatus intra-week, but I got back in the saddle on Friday. (All entries are here).
At the start of the Challenge, I made a note to remind myself to mention MapSCII in one of the Drops, this month. This tool/site is a fascinating blend of technology and art that brings the entire globe to your console. This Braille and ASCII world map renderer is compatible with xterm-compatible terminals, and — under the covers — it's a Node.js based Vector Tile renderer that uses OpenStreetMap data to create a detailed and interactive world map right in your terminal.
Another bonkers cool thing about MapSCII is its accessibility. You can try it out without installing anything on your system. Simply open your terminal and type
telnet mapscii.me to start exploring the world. If you want to run it locally, you can install it using npm or snap.
This utility/service is a testament to the power of open-source software and the creativity of the developer community. It's a unique way to interact with map data, offering a nostalgic and quirky alternative to traditional map apps. Whether you're a developer, a map enthusiast, or just someone who appreciates cool tech, MapSCII is definitely worth checking out.
The section header is a screencap of it running locally.
Datavis in the terminal, you say? Color me there!
datadash, developed by Keith Knott, is a data visualization tool designed specifically for the terminal, enabling us to input streaming or tabular data and generate interactive graphs right inside your terminal.
Honestly, it's been somewhat of a game-changer for me, and likely will be if you also spend a significant amount of time in the terminal. It accepts tabular data like CSV, TSV, or even custom delimiters, making it a versatile tool for various data formats. You can input data from stdin or a file, making it a flexible tool for different data sources.
One of the neatest features of datadash is its ability to handle streaming data. You can pipe data into it in real-time, and it will generate an interactive graph that updates as new data comes in. This is incredibly useful for monitoring real-time data feeds or system performance metrics.
It takes a bit of fiddling with to get installed (
go get it,
cd to the
go build it, rename it), but it's worth it, as you can see in the section header and in the plentiful examples on the web site.
Many thanks to the U.S. folks who did their part to help democracy die a bit slower in the U.S. this week! ☮
hrbrmstr's Daily Drop is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.