Let's start the week with a refresh of a foundational command line tool, a new way to view codebases, and something to help you/your team organize research links.
gping
When there's a need to investigate network issues, the "ping" command line utility almost types itself for most of us. Most hosts/devices are configured to honor to these Internet Control Message Protocol (ICMP) messages, and this simple echo request
/echo reply
exchange lets us know if the receiver's network stack is up and how much Comcast (feel free to substitute your own ISP hate target) has screwed up their network that day.
With ping
you eventually get a wall of text to run mental distribution calculations on. This is fine, but we can do better. Enter gping. With gping
, you'll get a live, text-based chart of all hosts you enter on the command line. The example in the section header was generated by
gping 8.8.8.8 9.9.9.9 1.1.1.1
(testing the connections to three major DNS providers). The scales auto-adjust, and you can pick the colors you like the most vs leave them to the built-in sequence.
You can also use gping
to graphically benchmark program execution via the --cmd
option. Unlike the default "ping" functionality, you can only benchmark one command with this option. Here's a snapshot of my weatherkit command line utility, showing a fairly consistent response time from Apple's REST API servers:
gping --cmd weatherkit
And, that's it! No "options DoS" with gping
. It's a highly focused utility that works great on all platforms.
Visualizing Codebases
This GitHub Next project tries to answer the question: "How can we "fingerprint" a codebase to see its structure at a glance?", and walks through some traditional examples of how to get an overview of a directory tree of code. Then, it drops a bit of circle-packed crunchy goodness via the repo visualizer tool.
To see it in action, just hit up this free Azure app which lets you enter any owner/repo
reference and kicks back an interactive circle-packing explorer view. The section header image is a screen capture of the awesome Pandoc repo.
And, you're not limited to just an online tool. You can add an SVG of your own repo to your project via a GitHub action the GH team has made available. This is a demo of it, and adding it to your own project is as straightforward as:
creating a new GitHub Action by adding a
.yml
file inside the.github/workflows
directory. For example: .github/workflows/create-diagram.yml
adding the
actions/checkout
andgithubocto/repo-visualizer
Actions; and,adding the diagram image to your
README
:
Once you push, you can watch the GHA run in the Actions tab of your repository. Within a minute, you should have a visualization of your codebase in your README
.
These "do one, focused thing well" resources are the bees knees.
arxiv2notion
You can skip this if you don't use Notion for personal notes or team/company knowledge management. Notion is like Obsidian and all the other "linked markdown notes" programs/services out there.
Most readers are familiar with arXiv, a "free distribution service and an open-access archive for 2,117,633 scholarly articles in the fields of physics, mathematics, computer science, quantitative biology, quantitative finance, statistics, electrical engineering and systems science, and economics."
If you're in a team that's researched-focused, you likely stalk arXiv for new and interesting papers aligned with your research priorities. We care quite a bit about new data science and cybersecurity research at GreyNoise, and we use Notion, so this open-source extension will be helpful in automagically maintaining an arXiv collection. The setup is a bit klunky, but it works and will save me just enough time to risk having another extension installed (seriously, try not to use browser extensions, they're mostly security risks these days).
FIN
We stated out with a ping
and we'll leave you with:
traceroute 2001:bc8:3eff:c0::ff
If you aren't IPv6-capable or don’t feel like installing `traceroute` (for many OSes, it’s not part of the included batteries), then you can read the output here. Quite the clever way to separate one's self from a semi-crowded talent pool. ☮
Thanks for reminding me to setup a web clipper for obsidian :-) Went with https://github.com/coddingtonbear/obsidian-web