Nono.MA

AUGUST 19, 2022

For a long time, I've tracked certain metrics in plain-text form, including weight, expenses, flights, and others. I use iA Writer because it synchronizes my notes across macOS and iOS devices. So I end up with Markdown (.md) files that are, in essence, a chronological database.

But I need a program to make sense of the data, parse it into an actual database, and visualize it in a graph that I can understand, such as a scatterplot.

I built a proof-of-concept from scratch almost a year ago, which I just open-sourced at github.com/nonoesp/note-parser. I intend to develop it a bit more and host it online.

A previous prototype, really barebones, is live at Expensed.me.

The idea is to drag and drop (or type) plain-text notes and visualize the data with a specific format as a scatterplot or other charts.

A sample note would look like this, containing both weights and currency amounts in euros. (Note the comments on the right side. That would be the data inferred from each line.)

2022                            # 2022.01.01

Aug                             # 2022.08.01

18                              # 2022.08.18

63.5kg                          # 63.5 kilograms

19                              # 2022.08.19

65kg                            # 65 kilograms
62.50€/2 #food @supermarket     # 31.25 euros

23                              # 2022.08.23

23€ #food @gusto                # 23 euros

AUGUST 18, 2022

It's okay if you didn't set aside time to do it or if you did it but didn't turn out how you expected.

You can try again tomorrow.

AUGUST 17, 2022

I just recorded a remote podcast interview with Riverside.fm for the first time with Leire Asensio Villoria and David Mah.

Everything appears to have worked smoothly, and I've been able to export the one-and-a-half-hour session to Descript as a sequence using Riverside's automatic project creator.

I recorded a separate video track of myself in 2K (Quad HD) with OBS Studio using the Sony ZV-E10 camera and Elgato's HD60 S+ video capture device on a separate computer. I used a Logitech BRIO as my video feed in Riverside.

I fed the audio from my Shure SM7B into Riverside piping the Zoom PodTrak P4 via Audio Hijack and Loopback to create a virtual audio input device that can be selected from Riverside, applying a noise filter and recording the audio straight from the mic as a backup.

AUGUST 16, 2022

One more task

In work mode, squeezing in one more task is relatively easy.

In vacation mode, though, it's hard to jump into work mode and get anything productive done.

AUGUST 15, 2022

How often do you check analytics, bank accounts, notifications, followers, or email?

You can likely check it less often, and everything will stay the same.

AUGUST 14, 2022

I recently bought the Sony ZV-E10 mirrorless camera. It's an APS-C1 (not full frame) released in August 2021 with a similar sensor to my old Sony a6500 (2016), yet it has a lot of nice new things, like faster autofocus, software-based background blur, a product review mode, and a selfie camera.

I've also bought the Sony GP-VPT2BT Bluetooth remote which lets you hold the camera and shoot photos or video straight from the handle.

I intend to test and start streaming with this camera from now on and this second camera will let me shoot in-person interviews with two points of view, like the one we recorded with Luis Ruiz.


  1. Advanced Photo System type-C (APS-C) is an image sensor format approximately equivalent in size to the Advanced Photo System film negative in its C ("Classic") format, of 25.1×16.7 mm, an aspect ratio of 3:2 and Ø 31.15 mm field diameter. Wikipedia. 

AUGUST 13, 2022

  • LEX FRIDMAN - Lex interviews many guests about a particular topic/interest in a row and then releases several episodes on the matter, e.g, artificial intelligence, bitcoin, war, love, etc.
  • TIM FERRISS - Long-time fan, and I believe this was one of the shows that encouraged me to start my podcast. He's interested in learning methods from top performers and dissecting them in the show so you can get actionable advice.
  • CAL NEWPORT's Deep Questions - He's been answering guest calls and always adds a more conceptual block to develop ideas from his writing, mainly about personal productivity, deep work, career advice, and digital minimalism.

AUGUST 12, 2022

Losing one day can happen.

But if you lose two days in a row, you start to make it a habit.

AUGUST 11, 2022

This question is a follow-up to yesterday's post, in which I recommended at least seven hours of sleep. How much do Americans sleep today in comparison to a hundred years ago?

As Matthew Walker mentions in Why We Sleep, 98% of the population of the United States sleep six hours or more a night a hundred years ago. Today, less than 70% do, according to a 2013 National Sleep Foundation survey highlighting this sleep deficiency.

More than 65 percent of the US adult population fail to obtain the recommended seven to nine hours of sleep each night during the week. […] [C]ountries where sleep time has declined most dramatically over the past century, such as the US, the UK, Japan, and South Korea, and several in western Europe, are suffering the greatest increase in rates of physical diseases and mental disorders.

AUGUST 10, 2022

According to Matthew Walker's Why We Sleep, you should sleep at least seven hours every day, without interruptions, to let your brain go through the REM and NREM sleep phases necessary for the brain to develop properly, memories to be stored, and avoid long-term damage.

7–8 hours is within the safe zone, and anywhere above 9–10 hours isn't recommended.

World locations where daily afternoon naps are common seem to correlate to higher health and life expectancy levels. It seems that, in general, people who sleep well have to deal with fewer health problems and live longer.

This is a tiny summary, and I recommend reading the entire book. Sleeping and breathing are important parts of our life that we tend to know little about.

AUGUST 9, 2022

A recipe for disconnection

Less news.
Less social media.
Less email.
Less screen.
No work.
More social gatherings.
More board games.
More play.
More sport.
More party.
More sun.

AUGUST 8, 2022


How to build a client for real-time communication with WebSockets in TypeScript using the ws NPM package.


See transcript ›

AUGUST 7, 2022

The first beta release of OBS Studio 28 is now available for download.

Here are the main changes to this release.

  • 10-bit and HDR Video Encoding Support
  • Updating to Qt 6
  • Native Apple Silicon Support
  • New Features and Additions
  • Tweaks
  • Bug Fixes

Download links

AUGUST 6, 2022

Here's a comment I wrote today on this Hacker News post.

I've noticed I write for longer and with greater focus when writing by hand on the reMarkable 2 tablet.

Writing in the reMarkable feels as analog as writing on paper does. I can convert my handwriting into digital text and email it to myself for editing and digital archiving right from the tablet.

I've also tried handwriting with ink in Moleskine notebooks and transcribing pages with the Google Translate API, which works surprisingly well.

I love the analog method. Yet I want to document my writing digitally for easy retrieval when editing and looking for content to publish.

What other methods are people using to digitize, transcribe, and archive "analog" handwriting?

AUGUST 5, 2022

The osascript Terminal application allows the execution of AppleScript code from the command-line interface.

osascript -e 'tell application "System Events" to set picture of first desktop to "/path/to/your/background-image"'

AUGUST 4, 2022

The only way to really disconnect is not to bring the internet with you.

The remote possibility of checking one more time for updates is irresistible. But you can fight it by going for a walk with your phone, by uninstalling the apps that most call your attention, with the Do Not Disturb mode, or simply going Airplane Mode.

The more time you spend without these notifications, the less your brain will be expecting them throughout your day.

Let more "I left the phone at home" moments happen.

AUGUST 3, 2022

Last week, I came across Riverside.fm1, a tool that will now be part of my arsenal. It's going to be a new recurrent subscription that I'll opt into instead of paying for a Zoom license.

Zoom recently limited free 1:1 meetings to 40 minutes. This limitation only applied to meetings of three or more people before, and it now makes it impossible for me to record long-form interviews for the podcast using my free Zoom account. The price of Zoom paid plans starts at around $140/year, and for a bit more, I'm going to go for a tool that targets my workflow much better: Riverside.

A few years back, I looked at Soundtrap (later acquired by Spotify), which also serves to record remote podcasts. I don't think they supported video and local recordings, which are at the core of Riverside's offerings.

For $288/year, Riverside lets you record up to 4K2, accept live call-ins from the audience, download separate tracks perfectly synchronized, and my killer feature, export the entire timeline into Descript as compositions and sequences.

A few minutes before writing these lines, I tested the free version with two people. I was able to record each person's webcam feed at 720p with synchronized audio and import the timeline into Descript. The tracks get automatically transcribed and named, and a Sequence is created for me with both tracks. I can quickly apply Studio Sound if I wanted, or I can download the original tracks, edit them in another software, and replace them in Descript's sequence.

I'm glad I learned about Riverside and didn't get a Zoom subscription. I don't plan on having 100-people events or meetings over Zoom, and I'm usually fine with meeting for less than forty minutes at a time or asking my invitees to re-join my meeting.

Hello, Riverside!


  1. To record at 2160p (4K), you need the right hardware. For instance, I use the Sony Alpha a6500 with Elgato HD60 S+ video capture card. 

AUGUST 2, 2022

Keep your tools at hand

A way to reduce creative friction is to keep a workstation ready for action.

With your tools at eyesight, it's easier to engage in your craft than watching Netflix.

Taking your toolset out and putting it back when done may be enough to turn you into a couch potato when you felt like doing something more fulfilling.

AUGUST 1, 2022


How to build a server for real-time communication with WebSockets in TypeScript using the ws NPM package.


See transcript ›

JULY 31, 2022

Here's an easy way to retrieve the PHP version your Laravel app is running.

>>> PHP_VERSION
=> "8.1.8"

JULY 30, 2022

Here's an easy way to retrieve the Laravel version your app is running.

>>> Illuminate\Foundation\Application::VERSION
=> "9.22.1"

JULY 29, 2022

Frank Harmon — Writing, Drawing, and Sense of Place

Hi Friends—

Today I bring you a new conversation with Frank Harmon, an old friend who taught me architectural design at North Carolina State University, Raleigh, back in 2012, and inspired me to look at the world differently.

Frank is a renowned award-winning architect, professor, writer, and an avid sketcher who always has a sketchbook with him.

He writes to find out what he’s thinking and draws to understand what he’s looking at to ensure he doesn’t forget it.

In this episode, we talk about writing, drawing, design, life, and how digital technologies make the world completely placeless. "It’s too late to stop [the internet], but what we can do as architects and artists and writers is give people a sense of place where they are."

Frank believes we can make places that have something physical and concrete grounding us in an otherwise unlimited digital world.

Listen to "Frank Harmon — Writing, Drawing, and Sense of Place"


JULY 28, 2022

Yesterday, Nate Peters showed me Supabase, an open-source alternative to Google's Firebase for rapid prototype and a friendly user interface to managed databases and storage.

I've always managed MySQL databases myself and have continued to do so since I discovered DigitalOcean in 2018, thanks to Cristóbal Valenzuela.

DigitalOcean offers "worry-free MySQL hosting"1, which, of course, comes at a price. Whereas you can pay $4–6/mo for the cheapest droplets on DigitalOcean and manage as many MySQL databases as you want, potentially using a free system—say, phpMyAdmin—to access your database through a web interface, you get "500MB database & 1GB file storage" and unlimited tables for free with Supabase. That is great to start quickly if you have enough, but you'll have to upgrade to yet another paid plan if you go over, and the first tier starts at $25/mo.

I appreciate the ease that these services provide us to get up and running with zero sysadmin knowledge or need for maintenance. Maybe we just need cheaper services like these to add convenience to every part of our workflow via subscription. Yet I don't love the fact that we'll continue to add more and more recurring bills to my workflow.


  1. DigitalOcean's marketing copy reads, "Leave the complexity of MySQL administration to us. We’ll handle setting up, backing up, and updating, so you can focus on building great apps." 

LAST UPDATED AUGUST 6, 2022

2022.08.06

OBS Studio 28 Beta 1 is now available on GitHub for testing.


This is a work-in-progress a page to keep track of OBS Studio 28.0 milestone, which will add Apple Silicon support to official builds.

In the meanwhile, here's how to download development builds.

JULY 26, 2022

Should you be doing the work?

I often ask myself this question and answer differently: How much would I pay not to have to do this work?

If the amount I'd pay is low and I don't enjoy the process, I shouldn't be doing it; I better rent someone else's time.

If both the amount and the time I save are high, I shouldn't do the work either; I better buy time and let a professional do the job.

But when the work is rewarding, its price is high, and I can do it, then I should.

This assumes we have a choice. But most of our 'work' is externally imposed.

And, on top of that, finding reliable professionals is no easy feat, nor is rejecting work that pays well but we don't enjoy.

If you shouldn't be doing the work, who should?

JULY 25, 2022


WebSocket server and client in TypeScript & Node.js with the ws NPM package.


See transcript ›

JULY 24, 2022

And, sadly, I may have to miss the following as well.

I'll follow up with what's been going on.

There's a lot I need to start catching up with.


Here are a few things I've discovered lately.

JULY 23, 2022

Two months ago, HuggingFace open-source "state-of-the-art diffusion models for image and audio generation in PyTorch" at github.com/huggingface/diffusers.

"Diffusers provides pretrained diffusion models across multiple modalities, such as vision and audio, and serves as a modular toolbox for inference and training of diffusion models."

Here's a text-to-image example from the repository's README.

# !pip install diffusers transformers
from diffusers import DiffusionPipeline

model_id = "CompVis/ldm-text2im-large-256"

# load model and scheduler
ldm = DiffusionPipeline.from_pretrained(model_id)

# run pipeline in inference (sample random noise and denoise)
prompt = "A painting of a squirrel eating a burger"
images = ldm([prompt], num_inference_steps=50, eta=0.3, guidance_scale=6)["sample"]

# save images
for idx, image in enumerate(images):
    image.save(f"squirrel-{idx}.png")

Latent diffusion is the type of model architecture used in Google's Imagen or OpenAI's DALL·E to generate images from text and increase the resolution of output images.

JULY 22, 2022

First, you must install the sass NPM package as a development dependency.

npm install --save-dev sass

Then add your scss file to the vite.config.js file.

// vite.config.js
import { defineConfig } from 'vite';
import laravel from 'laravel-vite-plugin';

export default defineConfig({
    plugins: [
        laravel({
            input: [
                'resources/sass/app.scss',
                'resources/js/app.js',
            ],
            refresh: true,
        }),
    ],
});

You can then load the built css file in your Blade views.

// my-view.blade.php
@vite(['resources/sass/app.scss'])
// <link rel="stylesheet" href="http://nono.test/build/assets/app.0b1a4b87.css" />

JULY 21, 2022

Laravel recently switched from building assets with Laravel Mix to Vite.js. According to its website, "Vite is a build tool that aims to provide a faster and leaner development experience for modern web projects."

It provides a dev server and a build command that bundles code using Rollup.

"Vite is opinionated and comes with sensible defaults out of the box, but is also highly extensible via its Plugin API and JavaScript API with full typing support."

Here are its main features.

  • 💡 Instant Server Start. On demand file serving over native ESM, no bundling required!
  • ⚡️ Lightning Fast HMR. Hot Module Replacement (HMR) that stays fast regardless of app size.
  • 🛠️ Rich Features. Out-of-the-box support for TypeScript, JSX, CSS and more.
  • 📦 Optimized Build. Pre-configured Rollup build with multi-page and library mode support.
  • 🔩 Universal Plugins. Rollup-superset plugin interface shared between dev and build.
  • 🔑 Fully Typed APIs. Flexible programmatic APIs with full TypeScript typing.

You can create a clean Laravel install that comes with Vite pre-configured.

# Create a Laravel app with the Laravel CLI tool
laravel new app

# Create a Laravel app with Composer
composer create-project laravel/laravel app

# Enter the directory
cd app

# Install NPM dependencies
npm install

# Run Vite's development server
npm run dev
#  VITE v3.0.2  ready in 249 ms
#
#  ➜  Local:   http://localhost:5173/
#  ➜  Network: use --host to expose
#
#  LARAVEL v9.21.3  plugin v0.5.0
#
#  ➜  APP_URL: http://app-laravel.test

# Build for production
npm run build
# > build
# > vite build
# 
# vite v3.0.2 building for production...
# ✓ 58 modules transformed.
# public/build/manifest.json            0.25 KiB
# public/build/assets/app.7c3c19f8.js   0.00 KiB / gzip: 0.02 KiB
# public/build/assets/app.334e7359.js   90.63 KiB / gzip: 33.07 KiB

Want to see older publications? Visit the archive.

Listen to Getting Simple .