I’m happy to be able to share one of the building blocks of the software solution I’m currently working on: fsdb - a Clojure library that provides a reasonably convenient database on top of the file system.

Don’t get me wrong, I’m not talking about a file system database like sqlite here. I’m using the term database loosly. Think of a bunch of config files that make up a database that you want to query. That’s what fsdb can do for you. You point it to a directory and it reads the data from the directory tree and returns a...

You might be familiar with the great vidir utility which allows editing of contents of a directory in a text editor. This is a great concept, because editors are great at text manipulation - which in turn yields more efficiency for mass renaming/moving/deletion than typing commands in a shell or using a GUI. vidir is a great tool, there’s no argument to be had - it’s even completely decoupled from the actual $EDITOR used. If you’re using Debian, it’s contained in the moretools package (which has other helpful utilities).

However, if you’re using Emacs as your editor, there’s no...

If you want to do an ongoing speedtest with graphs for up- and download, forget about the web-based tools like speedtest.net and fast.com - those are nice if you are on a mobile phone. These speedtests as a service will not show you continuous graphs (which sometime you might want to have if you are tweaking your network).

On such occasions, your *nix shell yields better tooling!

First, fire up a Terminal and start nload to view network traffic. If you are on macOS, you can also use the graphical tool activity monitor.

nload
nload

Then, in a second Terminal, start a...

After upgrading to Chromium 60 on current Debian Testing you might find yourself with a huge UI if you are on a HiDPI device. The current Chromium version has a bug (see Debian tracker). The proposed solution is to run Chromium with a manual scale factor setting. On a 15" MBP Retina, using chromium --force-device-scale-factor=1.5 yields the same UI size that I was used to before the upgrade.

Looking at the Chromium upstream bug tracker, this issue is solved since end of May. It’ll find it’s way to Debian, eventually. In the meantime the workaround works just as well.

The exact...

tramp-mode is great for editing files remotely, but sometimes having a shell and Emacs together on the same file can be invaluable.

eshell opens up a shell which is like a regular Unix shell, but is written completely in Elisp, so it’s built-in to Emacs and is completely portable. eshell has many interesting properties, but let’s focus on editing files remotely.

When in eshell, it is possible to change the working directory into a remote directory with the same syntax as tramp-mode. Yes, no manual ssh-ing to the remote machine, it’s more like a fuse-sshfs connection, but without fuse and without the...

Amazon AWS has a nice command line client for their public cloud. This client is very well suited for automating tasks in many IaaS DevOps scenarios. However, it can also be used by a person. The scenarios to do so might be different than for automation, though.

A common scenario for looking into S3 is to want to list files ordered by date and including metadata. On a Unix machine, this would be an ls -lt. If it’s a very long list of files, you might want to cap the list - which again is very easy to achieve, for...

If you happen to upgrade your Debian Jessie to Stretch (currently Debian Testing), one of the things you might want to patch is the default behavior of Chromium having extensions disabled by default. There’s no way to fix that in the UI, it has to be done by setting a global configuration flag.

There’s also a reason why extensions are disabled by default. Apparently Chromium started downloading binary extensions that don’t show in the extensions list which had access to the Google Voice API which sounds kinda scary. Well, maybe it is, maybe it isn’t.

However, if you decide you can’t live...

Many programmers commit infrequently and their pushes are even rarer. There are multiple reasons for that - some programmers have a strong background in version control systems like SVN or even CVS (yes, both are still a thing in 2017) where branching and committing is expensive. Other programmers mention reasons in the range of “I’m not finished, yet” and won’t commit or push for days or weeks.

If you are using a modern VCS like git or mercurial, then committing and branching is actually very cheap. With those, it is actually best practice to commit early and often. If you don’t...

This is nothing more than linked list of resources for learning how to write DSLs with Ruby, but also DSLs in general.

(DSL stands for Domain Specific Language and which is a programming language that is closely modelled after the domain it is used in. Wikipedia has a good introductory article.)

Obie Fernandez wrote the reference on Rails. In this podcast he speaks about what a DSL is, the difference between internal and external DSLs as well as the importance of the flexibly syntax of the host language in order to make DSLs worthwhile.

http://podbay.fm/show/120906714/e/1175932332

Martin Fowler is a well known...