Nono.MA

JUNE 19, 2021

To avoid ImageMagick from interpolating pixels when you want a sharp resize method (equivalent to PIL's Image.NEAREST_NEIGHBOR) you can use mogrify and set the -filter to point.

# Assuming we're upscaling an image smaller than 2000x2000 pixels
mogrify -resize 2000x2000 -filter point image.png

JUNE 15, 2021

Freediving: How to prevent your diving mask from fogging up

Over the past weeks, I shared my first impressions on freediving in Tenerife and an interesting device we've used to learn how to equalize our ears when diving.

I'm now back from Tenerife—back at the screen—and, as promised, I'd love to share with you the technique we've learned during our freediving course to stop your diving mask from fogging up.


It's common for diving masks to fog up, especially when they're brand new, and the three-step process below can help you prevent this from happening.

Snorkel or diving masks fog up when water vapor condenses due to a temperature difference between the inside and outside surfaces of the lens.1 "The moisture that collects in the mask has to attach to something, which is typically the residue leftover from the manufacturing process that coats the lens, dir, and oils on the lens from normal use and simple microscopic imperfections on the lens."1 This problem seems to have worsened as manufacturers build new masks with synthetic liquid silicone instead of natural rubber.2

As recommended by our instructor, we ordered the C4 Chanteclair "Cleaner" (green) and "Antifog" (blue) products.

The first step is to treat your mask with the "Absolute Cleaner," a greaseproof liquid, to remove the residue from the manufacturing process.3

  • Spray the internal silicone of your mask and the internal and external sides of its lens (7/8 ml recommended)
  • Rub the inner and outer surfaces with cloth or a toothbrush for four minutes
  • Wait for ten minutes
  • Rinse with cool water
  • Repeat the entire process once again

This first step only needs to be done once you first buy your mask, and maybe when you haven't used your mask for several months.

The second step involves applying the "Extreme Antifog" to the inner side of the lens right before using the mask.3 (This Cressi Anti-Fog solution works as well.)

  • Spray the interior of the lens (3/4 ml recommended)
  • Wait for two minutes
  • Rinse with cool water

The third step is two spit on the interior of the lens and spread your saliva with your fingers.

You're now ready to dive!

My mask lens didn't fog up once for the entire week.

JUNE 8, 2021

Freediving: First impressions

Today I write from South Tenerife, in the Canary Islands.

We've been freediving for the past three days (yesterday morning at Tabaiba's "El Puerto"). I believe much of what we're learning will stick with me for the rest of my life.

Freediving is a highly technical sport. You can do it to explore the seabed, spearfish, or—as professional freedivers do—to go as deep as you can. (The depth world record is over 300 meters and the time world record over 24 minutes.)

Here are a few facts I've learned so far.

  • You always need a buddy to look at you whenever you go down, and neither of you can go deeper than the other can (otherwise, you wouldn't be able to help each other).
  • You wear a belt with lead weights (and long fins) to go down quickly. (I carry 4 kilos.)
  • You have to equalize the pressure in your middle ear every meter you go down. Not when your ears hurt, but before. Every meter.
  • Every muscle uses oxygen, so you have to relax your entire body and only use your legs to move (with your legs straight, not "cycling").
  • There's an effective technique to prevent your goggles from fogging (which I'll share in a separate post).

For the first two days, I went 6.5-meters deep. Yesterday, I went around 18-meters deep.

I wonder what would happen if we were to learn as many technical details about other sports—think of running—as we're learning about freediving. I probably do many things wrong when running—say, how I move my legs, how I breathe, or how I stretch when I finish.

It's been an incredible experience so far, and we still have four more days to go. I like the breathing, concentration, and relaxation techniques required by this sport and its meditative aspects.

I hope to share more with you in the coming weeks.

JUNE 1, 2021

Freediving: Otovent

I'll be taking an introductory freediving course soon. To prepare, we have to practice ear pressure equalization with a device called Otovent. Here are a few facts I enjoyed learning.


Even though I don't quite understand the physiological mechanisms behind equalization1, I bought the device recommended by Paco, our instructor.

Otovent was initially launched in 1993 to help people suffering from glue ear2 and later repurposed to treat Barotitis (a painful condition some suffer while flying) and as a visual aid to equalizing for freedivers3.

How does the method work? As the instructions read, "the Otovent method provides the pressure required to open the Eustachian tube to help equalize the middle ear pressure." This process ventilates the middle ear, clears effusions, and relieves symptoms.4

The package contains five latex balloons—specially pressurized for this device—, a nosepiece, and a carry case. (Toy balloons can't be used for this method!)

Here are the basic usage steps, verbatim from the manual.

  1. Connect the balloon to the flat end of the nose piece.
  2. Hold the ball-shaped part of the nose piece firmly against your left nostril with your left hand. Compress your right nostril, using your right index finger.
  3. Inhale deeply through your mouth, then close your mouth and inflate the balloon by blowing through your left nostril until the balloon is the size of a grapefruit.
  4. Still with the inflated balloon tight to the left nostril, perform some swallowing manoeuvers.
  5. Repeat the procedure through your right nostril. Some patients may experience discomfort in the ear or dizziness during inflation. This initial sensation will decrease during the next inflation and is an indication that the procedure is working correctly.

I did this exercise around eight times through each nostril for the first time—which is recommended daily for 2–3 weeks—and, as expected, I felt slightly dizzy. I guess this feeling may disappear after a few weeks of practice.

Thanks for reading—I hope to share more curiosities with you as I dive into the freediving world.


  1. Needless to say—I'm no doctor. So please don't use any of my words as medical advice. 

  2. Equalisation Aid for Freedivers 

  3. What is Otovent for. Otovent. 

  4. Otovent instructions manual. Abigo. 

MAY 31, 2021

Héctor Ruiz — Magic and The Art of Illusionism

Hi Friends—

Today I bring you an episode with Illusionist Héctor Ruiz on getting started and standing out as a magician, how COVID-19 changed his world, talent, effort, creativity, success, entrepreneurship, and more.

Listen to "Héctor Ruiz — Magic and The Art of Illusionism"

You can also watch this episode on video. =)

MAY 25, 2021

Should I fix my typos?

From time to time, my phone freezes as I type. Yet I continue typing blindly, without real-time feedback, and a few seconds later, every word I typed shows up on the screen.

The slowness of my six-year-old iPhone 6 makes me more prone to typos.

If the message is clear and the conversation informal, there's no need to fix typos. Let alone when I'm writing notes to my future self. Better spend the time writing more.

When you are crafting a message for publication, you may want it to be concise and crystal clear. Your draft may need editing, re-work, and typo-fixing. But, as long as the message stays the same, typos don't need to be fixed by you.

Again, better use your time to write your next piece instead of obsessing about making your past writing pixel-perfect.

LAST UPDATED MAY 20, 2021

If you are wondering where the image files of your Apple Desktop backgrounds are, you can simply navigate to the following folder.

/System/Library/Desktop Pictures

To get to this folder, in case you don't want to remember the path, you can also do this.

  • Right-click on the Desktop
  • Change Desktop Background
  • Double-click on "Desktop Pictures"

To navigate to the folder with Terminal.

open "/System/Library/Desktop Pictures"

To navigate to the folder with Finder.

  • Menu bar › GoGo to Folder..
  • /System/Library/Desktop Pictures
  • Go

MAY 18, 2021

The process is messy

Here are three sketches of a napkin; similar but different. I drew them a year ago and hadn't paid attention to them until now. I publish a weekly sketch that accompanies a little story, and today these drawings helped me complete the short essay you're reading.

Text is more articulate, organized, and structured than speech. But the writing process isn't as clean. You shuffle words, sentences, and entire paragraphs around, deleting the chunks that don't add much and rewriting unclear parts. "Where do I stop? What should I add? Will they understand?" There's no correct answer.

The sketching process is similar. Strokes, shades, and color let you give more or less prominence to each part of a drawing. But the process is non-linear. You don't "plot" lines as a printer does but add details and darkness; it looks more like additive manufacturing processes, in which an extruder drops chunks of material from one side to the other.

We write (and sketch) to create memories and share our worldview and stories with others—with you.

I didn't plan to sketch a napkin thrice to make a point. It just happened because I wasn't happy with the first result. (They all look like popcorn!)

The finished artifact looks meticulously planned.

The process is messy.

MAY 17, 2021

dyld: Library not loaded: /usr/local/opt/openldap/lib/libldap-2.4.2.dylib
dyld: Library not loaded: /opt/homebrew/opt/icu4c/lib/libicuio.68.dylib
  Referenced from: /opt/homebrew/bin/php
  Reason: image not found
zsh: abort      composer

Install (or update) the Xcode developer tools.

xcode-select --install

Reinstall icu4c.

brew reinstall icu4c

Make sure no errors prevent Homebrew from installing icu4c properly. For instance, I had to remove a few php folders and re-run the brew reinstall icu4c command.

sudo rm -rf /opt/homebrew/Cellar/php@7.4/7.4.15
sudo rm -rf /opt/homebrew/Cellar/php/8.0.2

MAY 13, 2021

Spotify's program is managed by Anchor, which makes it a bit hard if you're using another platform to release your content. Apple's program is managed at podcastsconnect.apple.com, the same interface in which you obtain analytics for your show, and you'll probably have to upload paid episodes through their interface.

More on Spotify's blog and Apple Podcasts website.

Features in Apple Podcasts

  • Ad-free listening. Let subscribers focus on the story.
  • Additional episodes. Give subscribers more to love with extra episodes.
  • Early access. Offer subscribers new episodes before everyone else.
  • Archived episodes. Unlock access to all the past episodes.

MAY 13, 2021

from PIL import Image

img = Image.open('/path/to/image')

left = 10
top = 20
right = 10
bottom = 20

img = img.crop((left, top, right, bottom))

MAY 11, 2021

Introducing the Bytes series

Last week, we introduced Bytes—a new series of the Getting Simple podcast—and released our first episode. Aziz Barbar and I will talk about concepts at the intersection of digital technology and culture in a language we can all understand.

We've recorded our next episode on StyleGAN—an algorithm developed by NVIDIA which can learn from images and synthesize fakes ones in the same style—and intend to release future conversations on NFTs and digital art, cryptocurrencies, machine intelligence, design and authorship, GPT-3, automation, creativity, and much more.

In his own words, co-host Aziz Barbar is an architect by training specialized in computational design, interested in the digital environment, automated construction techniques, building performance, and all things digital.

As with most of what I do, these pod series are an effort to learn and find the tactics, techniques, and digital tools that can help us live a more meaningful, creative, and simple life.

I hope you will join us on this journey.


Listen to the introductory episode of the Bytes series.

MAY 8, 2021

After CVAT is running and you have access to its login screen, you need to have an admin account to log in and access the admin panel.

You create an admin user from the command-line interface.

docker exec -it cvat bash -ic 'python3 ~/manage.py createsuperuser'

This command will as you for a username, email, and password.

After you log in, you can hover your username (in the top-right corner of the screen) and select "Admin page" to access the Django admin panel, where you can manage your CVAT site, manage users, groups, and more.

MAY 6, 2021

Bytes — Intro

Hi Friends—

Today we're introducing the Bytes series, in which we'll talk about concepts at the intersection of digital technology and culture in a language we cal all understand.

(Enter Aziz Barbar.)

In this episode, you'll learn about the series' name and format, co-host Aziz, and what's coming.

Listen to "Bytes — Intro"

MAY 4, 2021

The Sawyer effect

In Drive, Daniel Pink argues that people perform best when they do things because they're interesting and can do them with autonomy and self-direction. Pink describes how "if-then" or extrinsic rewards—say, for mowing the lawn or drawing a portrait—can diminish a subject's performance, creativity, and long-term interest in the task.

"For artists, scientists, inventors, schoolchildren, and the rest of us, intrinsic motivation—[the third drive is] the drive to do something because it is interesting, challenging, and absorbing—is essential for high levels of creativity," Pink says. When someone sets your goals, your challenge is to stay motivated. When you lead others, the challenge is to ensure they enjoy and feel part of the process without the stress of performing in a specific way to be rewarded.

Another curiosity I learned from Pink's research is Edward Deci's discovery of the Sawyer Effect—that depending on how rewards are used, they can turn play into work or work into play. Paradoxically, "When money is used as an external reward for some activity, the subjects lose intrinsic interest for the activity. […] [Artists] who pursued their painting and sculpture more for the pleasure of the activity than for extrinsic rewards have produced art that has been socially recognized as superior. […] It is those who are least motivated to pursue extrinsic rewards who eventually receive them."

MAY 1, 2021

When you use two-factor authentication to sign in to your Gmail account (or to "Sign in with Google") you access your account with your email, password, and a verification code generated by Google Authenticator or other authenticator apps (such as Duo).

You might get an error like the one that follows when trying to sign in to Gmail with your Google password.

Authentication failed. Please check your username/password and Less Secure Apps access for mail@example.com.
Server returned error: "534-5.7.9 Application-specific password required. Learn more at 534 5.7.9 https://support.google.com/mail/?p=InvalidSecondFactor l25sm248619lfe.188 - gsmtp , code: 534"

When the service you're trying to use your Gmail account with doesn't allow you to "Sign in with Google," you need to create an app-specific password as detailed in the support Url provided by the error message.

Create a Google App Password

This app password

  • Go to your Google account
  • Security
  • Sign in to Google
  • App passwords
  • Choose the service type — e.g., Mail, Calendar, Contacts, YouTube, or Other (custom)
  • Choose the device type — e.g., iPhone, iPad, Mac, Windows, etc.
  • Generate

You'll get an app-specific password like this one — dbkdwckcplvgaktc — that will let you log in to the authorized service with your email and this password.

In my case, I use this password to be able to "Send as" from Gmail from an email address that has two-factor authentication turned on.

APRIL 27, 2021

Luis Ruiz Padrón — Writing, Sketching, and Teaching Through The Lens of Architecture

Hi Friends—

Today I bring you an episode with Luis Ruiz Padrón on the creative process behind his writing, sketches, and publications, seeing the world as an Urban Sketcher, identity, teaching, technology, life, success, and more.

I'm excited to announce that we're producing a full video version of this conversation—recorded by Daniel Natoli—to be released within the next weeks and that we'll be rolling out full transcripts of all episodes sometime in 2021.

I hope you enjoy this episode (and its detailed show notes) as much as I did.

Listen to: "Luis Ruiz Padrón — Writing, Sketching, and Teaching Through The Lens of Architecture"

APRIL 27, 2021

A frugal practice: Use cash

Here's an excerpt of my conversation with JR from Insisting Simplicity in which he shared with me a simple frugal practice we can all use to spend less. (You can listen to the audio version of this segment of the conversation or the full episode.)


Nono

Do you have any specific frugal practices that help you save money?

J.R.

Yeah. Oh my God. Gazillions. They're all stupid. But that's the thing—as with anything, it's gamification.

If you use cash, which less and less people do, and especially in post-COVID, we might be a cashless society, but again, that's a totally different conversation.

Research suggests that, if you use a credit card, you are more inclined to make impulsive purchases.1 If you have actual dollars in your hand, it's harder to part with them. It's also harder to part with them if they are larger denominations. So one thing that you can do is... Just carry some cash and really think about it and have them in larger denominations. And that alone will maybe make you a little bit more hesitant, maybe make you a little bit more mindful of those purchases that you're making.

And that could lead hand in hand with another stupid little thing, which is not stupid, but you have a change jar or a little thing, whatever, every time that you go and spend that cash—say it's a $20 bill—and just like some of the banks and FinTech companies, they'll do this electronically automatically with your credit card or debit card, you take that cash and whatever change you have, you put it in your jar and you forget about it.

Then you come back to it like a year later, all of a sudden, now you got some money. Do something with that. Put it somewhere. Buy something that you've been thinking about for a while. You didn't buy it impulsively because you've had this little bucket over here building for the last 12 months. So you could buy it in a responsible way.


Listen to the full conversation with JR from Insisting Simplicity.


  1. Raghubir, Priya & Srivastava, Joydeep. (2009). The Denomination Effect. Journal of Consumer Research. 36. 701-713. 10.1086/599222. 

APRIL 20, 2021

Tools: Pen case

My partner gifted me with a MUJI case some time ago. The brand lists it as a case for glasses and small articles. I tested using it for my glasses—which did not convince me—and ended up repurposing the translucid case to carry my pens and my water brush. (Right now, it contains a 0.38 MUJI pen, 005 and 03 Micron Sakura pens, and a Pentel watercolor brush whose cap I had to trim with a knife cutter to fit in the case.) The case fits in the side pocket of my Fjällräven Kånken backpack, and it's convenient to place my pens on top of a flat surface as I sketch.

LAST UPDATED MAY 20, 2021

If you're receiving this error when trying to composer install.

Your GitHub OAuth token for github.com contains invalid characters

Updating Composer

2021.05.20 · Update

The solution is to update Composer to the latest version, which supports the new token format, as suggested by Jordi Boggiano on this tweet. "Composer 1.10.21 and 2.0.12 (both released April 1st) added support for the new GitHub token format."

As of this writing, the following command will install the latest version of Composer on your machine (i.e., 2.0.13). Note that future Composer updates will break the script as shown here, as the hash check won't pass.

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === '756890a4488ce9024fc62c56153228907f1545c228516cbf63f885e036d37e9a59d27d63f46af1d4d07ee0f76181c7d3') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"

On macOS, you can use Homebrew to install (or reinstall) composer.

brew install composer
brew reinstall composer

The brute-force fix

2021.04.20

As I mentioned above, both Lukas Kahwe Smith and Jordi Boggiano discouraged tinkering with Composer's auth.json file manually and recommended upgrading Composer to its latest version instead.

Still, here's the brute-fox fix that worked for me. Apparently, editing the auth.json is the only way to update to the latest Composer programmatically, and you can revert it to its original state if you opt for this option. The alternative, of course, is to upgrade as shown above.

Edit the composer authentication configuration file ~/.composer/auth.json.

nano ~/.composer/auth.json

Then replace the following.

  "github-oauth": {
    "github.com": "ghp_[YOUR-PERSONAL-TOKEN]"
  }

With this (basic auth):

  "http-basic": {
    "github.com": {
      "username": "[YOUR-GITHUB-USERNAME]",
      "password": "ghp_[YOUR-PERSONAL-TOKEN]"
    }
  }

Source

Thanks

To Lukas Kahwe Smith and Jordi Boggiano for pointing this out on Twitter.

APRIL 20, 2021

I found this error while trying to update and install composer packages with composer install.

could not find driver (SQL: select * from information_schema.tables where table_schema = folio_burns and table_name = folio_items and table_type = 'BASE TABLE')

At first, I thought the solution was to edit /etc/php/7.4/cli/php.ini (for PHP-FPM 7.4 in my case) and uncomment the line ;extension=pdo_mysql to be like extension=pdo_mysql . But I was still getting this error as the mysql extension was missing.

PHP Warning:  PHP Startup: Unable to load dynamic library 'pdo_mysql' (tried: /usr/lib/php/20190902/pdo_mysql (/usr/lib/php/20190902/pdo_mysql: cannot open shared object file: No such file or directory), /usr/lib/php/20190902/pdo_mysql.so (/usr/lib/php/20190902/pdo_mysql.so: cannot open shared object file: No such file or directory)) in Unknown on line 0

The solution ended up being to install the extension, which would also add its own .ini file and activate itself on installation.

sudo apt-get install -y php7.4-mysql

Note that you can run this command with multiple extensions to be installed at once.

sudo apt-get install -y php7.4-{xml,bcmath,gd,mbstring,xsl,zip,curl,mysql}

APRIL 15, 2021

After downloading a website as HTML with cURL or any other workflow, you can convert the HTML code to the Markdown syntax with pandoc.

pandoc -o output.md input.html

APRIL 15, 2021

You can download any website as an HTML file (without the site's assets) using cURL in the command line, using the -L flag to follow any existing redirects.

curl -L https://nono.ma --output nono-ma.html

The manual alternative is to right-click on a website on your browser of choice (say, Google Chrome or Firefox), select Save As.., and save the site as HTML with some of its assets in a subfolder.

Afterwards, you can convert the downloaded HTML page into a Markdown document with pandoc.

APRIL 14, 2021

Here's how to get the raw String value of a Stringable object. Laravel's Illuminate\Support\Stringable has lots of helper functions, but sometimes you want to get the raw string value. For that, you just need to use the strval PHP built-in function on an object of the Stringable class.

// Define Strintable object
$stringable = Str::of('laravel-stringable-to-string');
get_class($stringable); // returns Illuminate\Support\Stringable
gettype($stringable); // returns object

// Get its raw String value
$string = strval($stringable);
get_class($string); // returns PHP Warning:  get_class() expects parameter 1 to be object, string given in […]
gettype($string); // returns string

APRIL 13, 2021

Why should you write?

They say you need to write a couple of nonsense pages to warm up before you are ready to write something meaningful, and I've experienced this to be true. I rarely sit and write with a clear idea in mind but begin by pouring random thoughts.

Writing is about creating a daily practice where you repeatedly show up and do your thing waiting for the magic to appear. Without this practice (time-based labor to some extent), you won't be able to get to the good parts—even if you've been practicing for decades—as it's hard to write anything meaningful in thirty minutes. I reserve time to sit and write every day without the pressure of having to get anywhere specific. A thirty-minute daily practice can take you far. (That's 182 hours of writing a year.)

My current goal is to write a minimum of two hundred words per day, but it's easy to go over once you get going. I practice deliberately to better articulate my thoughts, communicate and share my ideas, and express myself more clearly; I believe writing and storytelling benefit my podcast conversations, talks, and live streams.

Right now, the only pressure comes from writing publicly once a week, posting a story with a hand-sketched illustration on Tuesdays (which you're reading). Publishing frees me up from the fear of sharing what's on my mind, telling the world who I am, and being judged, and forces me to refine my writing and direct it to my readers. One essay at a time, I share my worldview and accept that my perspective will inevitably change. But that's okay—that means I'm evolving—and you should feel the same way.

Two hundred words won't get you far, but showing up day after day can translate into writing more than seventy thousand words per year, which will surely make a difference.

APRIL 6, 2021

Clack! Clack! Clack!

Clack! Clack! Clack! The wind pushes a cluster of bamboo logs against one another. Grrr! A tall log resists the wind. Bamboo is known for its structural soundness and its relaxing sounds. I sit with my partner next to a bush of common bamboo—the bambusa vulgaris, native to Indochina and the province of Yunnan, China1—in what feels like a humid piece of jungle. But we're far from the jungle. We're in Málaga's La Conception Botanical Gardens, our hometown. The pandemic forced us to stay during our vacation and trade the expensive flight and accommodation fees for a calm week of rest and light local tourism. The admission ticket is five euros and is free on Sunday afternoons. In minutes, we walked by exotic plants brought from remote parts of China, Japan, Australia, New Zealand, Africa. As a curiosity, April is the month of erythrina caffra. People mark wood logs and cactuses with love messages and graffiti signatures as a memorandum of their time on earth. The trash can by the historical gazebo—signed with a multi-color marker—reads, Imon Boy ❤️.


  1. Common bamboo. Wikipedia. 

MARCH 30, 2021

Do you have something to say?

I believe all of us do.

Even when you can't find the right words for us to understand what you're trying to say, the exercise is worth the effort; you can clarify your message by explaining it to others.

We have more mediums to deliver our message than we could have ever wished for—think blogs, newsletters, podcasts, live videos, or social media—and no shortage of people who want to talk.

What continues to be scarce (and we should work on) are trust, authenticity, and messages worth our attention.

Will you care enough to try?

MARCH 28, 2021

I got a sudden fan shut down every time I would switch on my MacBook Pro (16-inch, 2019) after I upgraded macOS from Catalina to Big Sur. Here's how I fixed it.

  • CMD + R - Press on reboot to enter Rescue Mode
  • Login as a user you know the password for.
  • Utilities › Terminal
  • Run kmutil trigger-panic-medic --volume-root /Volumes/Macintosh\ HD
  • Start the computer normally

This is the Kext extension that, apparently, was causing the issue.

cd /System/Library/Extensions/AppleThunderboltNHI.kext

MARCH 23, 2021

Looping playlists

Do you remember when music was sold on compact discs? The amount of audio that could ship in a CD was limited to 74 minutes and later extended to 80 minutes. Some albums will be sold with two, three, or four discs to be able to pack more songs. This limitation made it essential to select the contents that were going to be shipped carefully.

Nowadays, we have unlimited audio available in our pockets, and we don't even need to think how much we ship or even its length. YouTube makes millions of hours of video and audio available, and streaming services like Spotify provide us with an immense catalog of music and podcasts available to us without worrying about where the music is stored. With enough time and internet bandwidth, we can stream anything.

In the 2000s, I got a portable CD player, the Sony Walkman E-220, which I didn't get to use that much with the advent of the internet. It still works, and it looks as new. Apart from the standard playing function—which plays all the tracks on the CD ones—this device could play songs on repeat mode, looping over the entire disc in order; on shuffle mode, looping through songs in random order; or on single track mode, playing a single track repeatedly. The number of songs we could carry with us was limited, and we paid for each new album. Streaming services and the internet let us bring with us millions of songs today.

There is a little arrow symbol that seems to have stick until today—it shows up on Spotify and other digital music players. The arrow goes left, down, and right, and it means you're going to be looping through a specific block of audio; a playlist, an album, or a song.


Can you imagine situations in which you may want to play a song over and over and over? I want to share with you a habit I've been practicing for many years. Listen to this Getting Simple episode on looping playlists.

MARCH 19, 2021

If you're getting this message when encrypting files with a GnuPG—the GNU Pretty Good Privacy (PGP) package—you can mark your key as trusted (if that's the case). This often happens when you copy a trusted key from one machine to another.

Here's what I was getting before 'trusting' my own key.

gpg: <KEY_ID>: There is no assurance this key belongs to the named user
It is NOT certain that the key belongs to the person named
in the user ID.  If you *really* know what you are doing,
you may answer the next question with yes.

Use this key anyway? (y/N) y

Every time, I'd have to answer y to complete the encryption process.

I learned how to skip this step from this StackOverflow post.

gpg --edit-key <KEY_ID>
gpg › trust

Then you set the degree to which you trust the specified key.

1 = I don't know or won't say
2 = I do NOT trust
3 = I trust marginally
4 = I trust fully
5 = I trust ultimately
m = back to the main menu

I selected 5 as this is a key I created for myself.

Your decision? 5
Do you really want to set this key to ultimate trust? (y/N) y

Confirm, then quit.

gpg › quit

Now you can use your GPG key without confirm every operation.

Want to see older publications? Visit the archive.

Listen to Getting Simple .