As I walk around San Francisco Airport's international terminal, I realize this is where Bea and I wandered at the end of our honeymoon. We rode the AirTrain multiple times between terminals and the rental car center before parting ways.
I don't remember ever clearing customs faster than today.
Now I sit with my laptop at Terminal 3, writing this tiny blog post as I wait for a few colleagues to land; we'll pick up a mini-van and drive up to Olema by the Point Reyes National Seashore.
I feel privileged to have the chance to visit these amazing places for work.
I'm 9,600 kilometers from home and 10,424 kilometers from Coromandel, New Zealand, the closest city to Málaga's antipodes. I've traveled a quarter of the world today, and I'm halfway from New Zealand.
Software developers write computer programs borrowing from past projects and experience, reading guides and books, browsing open code projects and code samples, and, more often than you'd imagine, Googling questions; others have likely worked out your issues.1
You have to learn how to talk in multiple programming languages to create applications for different systems, and, believe me, it takes time.
I remember staying up late immersed in digital books and interactive applications to learn how to code more than fifteen years ago.2 Knowledge and skill build over time, and concepts take time to click.
This is rapidly changing.
You can ask ChatGPT (OpenAI's artificial intelligence chat-based assistant) and other language models to write working code for you in virtually any programming language. For instance, you can prompt it to Calculate the volume of a pyramid in Python3 or Create a website form. But you can also ask them to reason about finance or List the steps to make pancakes. It seems to know it all.
These programs are great educational and learning tools that help developers carry out their work, and I'm using them to code daily.
The machine learns from the same sources I mentioned before—books, guides, the web—but the user experience of retrieving knowledge and coming up with solutions is radically different.
The system can mix and match different sources and adjust code solutions to your immediate needs as if it were an engineer messaging you at the other end of the line—reasoning and programming after having read the entire internet and public archive. But there's no human. Just a digital assistant that can talk to thousands of people at the same time and knows about much, much more than software engineering.
At this point, it's a matter of time before new workflows that use artificial intelligence are adopted in most fields of knowledge work.
As Cal Newport states in Deep Work4, those who can work well and creatively with intelligent machines will have a particular advantage in this new economy.
"Artificial intelligence is meant to amplify human creativity, not replace it." Says Lyor Cohen, YouTube & Google's Head of Music.
Maybe these AIs can help us work smarter and, in turn, "let us disconnect and reclaim time to be humans."5
Will you join the revolution?
A well-known Q&A site where people ask coding questions and get insightful answers is StackOverflow. ↩
I would spend nights learning object-oriented programming in Java with BlueJ in 2008, if I don't remember wrong. I first learned HTML, JavaScript, and PHP to create basic websites, and through Java and Objective-C, how to create apps for the iPhone and iPad. ↩
I just tested this, and ChatGPT first tells me that you can use the following formula—Volume = (1/3) * Base Area * Height
—and it then returns the Python code to do just that. ↩
Deep Work: Rules for Focused Success in a Distracted World. Cal Newport. Grand Central Publishing, Kindle version. ↩
Work or walk. Nono Martínez Alonso. July 21, 2020. ↩
Architects, engineers, and designers need downtime doing so-called CAD monkey1 work to think about their decisions and the actions they are taking. (The repetitive and monotonous tasks that require little effort from us.) Each design decision takes time to execute, and that time can extend from minutes to days, weeks, or months—at least when humans carry them out.
Panagiotis Michalatos told me something along these lines as we walked down Sumner Road in Cambridge, Massachusetts, in late 2016 or early 2017, as I thought about my master's thesis topic. I wanted to streamline the generation of textures for architectural drawings and couldn't imagine what was coming. I ended up playing with the early generative machine-learning algorithms, mainly Pix2Pix, and training bots to color my drawings.
Back in 2017, I wrote that artificial intelligence was transforming the way we interacted with machines. "By curating a dataset, the designer is the programmer. Choosing the right set of images becomes part of the design process."
We've seen huge leaps in generative AI and a transition from GANs to transformers, from Pix2Pix and StyleGAN to diffusion models like DALL·E and Midjourney. It's crazy and exciting. But also scary.
The faster AI turns, the slower we become.
When artificially intelligent systems know it all, we're burdened by the task of coming up with questions, constantly.
Today, we don't need to curate a dataset, because most of the world's publicly available knowledge is compressed and easily retrievable in machine learning models that can give you an answer in less than a second.
Prompt.
Response.
Think about your next prompt.
Prompt.
Response.
Repeat.
Prompting a large language model—an LLM—has become part of the design process, and potentially part of the work of any knowledge worker—programmers, doctors, teachers, students, scientists, etcetera. LLMs are here to stay. And due to the simple fact that they can do many, many different tasks for us, they will.
Then why do we need CAD-monkey work? Because we need time to think and would be exhausted if we gave into the machine, constantly begging us for input, for yet one more prompt.
We've spent years clicking numerous times for computer software to do what we want. Now we can chat with an AI that gets the job done for us. We just need to craft the right instructions for the machine to understand what we want.
According to ChatGPT (Nov 14, 2023), the term CAD monkey is "a colloquial expression used in the architecture, engineering, and design industries that refers to professionals or interns who are primarily engaged in the repetitive and often monotonous task of drafting or modeling using Computer-Aided Design (CAD) software. The term "monkey" in this context implies that the work is relatively unskilled or does not fully utilize the professional's training and abilities, as it often involves executing straightforward, routine tasks that do not require significant creative input or decision-making." ↩
After upgrading your Mac to macOS Sonoma, you may have encountered this issue with Canon's IJ Scan Utility2, a known issue up to version 2.4.0. In my case, I'm using the Canon CanoScan LiDE 220. But the same software works with LiDE 300 and 400.
An internal error has occurred. Take the following measures.
- Check the scanner status.
- Restart the scanner.
- Restart the computer, then try again.
- Reinstall the scanner driver.
Code:10,202,3
You can Download the latest software on Canon's website—including the IJ Scan Utility2 2.4.1and the ICA Driver Ver.5.0.0—which add macOS Sonoma compatibility.
I streamed last Thursday after several months. I opened Season 4 and look forward to recovering my weekly cadence.
I have plenty of topics to cover. This is a great opportunity to reclaim my weekly slot to work on planned themes over several streams.
The new studio works. I need to treat it acoustically, yet my Shure SM7B sounds pretty well even without absorption panels and a mostly empty room.
Topic suggestions are welcome on Discord.
Follow me on YouTube to know when I go live next.
I've sketched the same objects around the house multiple times.1 Each time, the result changes—a different perspective, ink or watercolor, big or small, with context or in isolation, quicker or more detailed—and you can perceive an evolving technique.
Similarly, my mini-essays evolve and look at concepts from different perspectives.
It's only through the grouping of the drawing and writing artifacts I produce, looking at them as a whole, that they become one.
But there's more planning I could do to make them a cohesive piece of work.
That's why, on top of last week's weekly slots, I want to set long-term goals regarding what to sketch—imagine a collection of drawings of a given topic—and what to write about, so I can break down topics in small snippets and further develop those ideas a cohesive long-form essay afterward.
It may take me months or years to work toward planned themes. But I'll get there.
For instance, I sketched and shared this tiny, green chameleon back in February 2022. ↩
No matter how strict or flexible our schedule is, we always end up wishing for a change. Rigid schedules ask for flexibility and flexible ones for structure. I've been there.
In my experience, defining your goals helps you move faster—if you know what you want to achieve in a given week, you can reserve time in advance.
I'm designing a weekly schedule with time blocks for the activities I want to do every week. Think of blocks to write, sketch, record, edit, stream, work, meet, disconnect, exercise, plan, or organize. Everything you want to do—digital and analog—with a dedicated slot in your calendar.
I'll reserve blocks of time for my core activities and iterate by reducing or expanding their time slots.
It's not more than saying I'll write for two hours when I wake up on Mondays and I'll live stream Thursday nights, but it helps a lot.
If you can handle pressure, time constraints help you focus. It's more likely to get things done when you run out of time.
If you accept a smaller creative scope, design constraints help you innovate within a fixed set of variables by limiting how many pieces can move.
It's on you to set realistic timeframes for each task—not too much time, not too little—and it's on you to minimize your creative degrees of freedom—don't try to be creative in too many areas simultaneously.
YouTube is forbidding ad blockers.
What does this mean for YouTube's usage?
Will YouTubers generate more revenue?
I previously shared seven principles to simplify email.
I continue to aim at inbox zero but I wanted to point out that I found it extremely hard during the summer when traveling with a half-broken iPhone X and no access to my computer.
It didn't take me long to regain control of my inbox. But I saw the problem framed from a different perspective.
All I can say is that having a laptop—or even better, a monitor, a keyboard, and a mouse—makes this work much easier.
That's the problem with relying on a laptop for certain tasks: you won't have it while on the go.1 Smartphone-first workflows win, as they'll mostly be supported on desktops.
A tool I wish I could bring with me on my iPhone is Typinator, a macOS-only text-expansion app that I use heavily to expand dates, data, and other automations. ↩
As generative algorithms become more capable, computers require less human skill and input to output what we want.
There is no need to learn how to write, draw, edit photos or videos, or perform other complex tasks.
Talk to the machine and let it get the job done. Not completely true (yet). But applies to many areas already.
The obvious next step? The computer doesn't need our input to get going. No humans needed.
This is rendering true, at least, for specific tasks—say, transcription and content moderation—and changes the type of work we're required for, sometimes creating new tasks for us, others leaving us without a job.
This paradigm shift also democratizes creative work formerly reserved for a select few—our capabilities are augmented by the machine, which doesn't necessarily make us more creative.
I was running cron
jobs that worked with macOS Mojave, Catalina, Big Sur, Monterey, and Ventura but stopped working after I updated to macOS Sonoma.
Here are two sample errors.
ls: .: Operation not permitted
zip error: Nothing to do! (try: zip -qr9 ~/folder/file.zip . -i *)
An "Operation not permitted" error message when running a cron job on macOS typically signals a permission issue.
cron
cron
requires the proper permissions to access other commands.
You'll need to grant "Full Disk Access" to cron or to the Terminal app to ensure it can execute jobs properly in macOS Sonoma.
Here's how.
System Preferences
> Security & Privacy
> Privacy
section.Full Disk Access
from the sidebar./usr/sbin
folder with Finder.cron
app to the list of allowed apps.ChatGPT helped me get to a solution faster.
Say we have a TypeScript interface with required and optional values.
interface NonosOptions {
thickness: number,
pressure?: number
}
thickness
is required, pressure
is optional.
If we create an object of type NonosOptions
, we can omit pressure
but not thickness
.
const options: NonosOptions = {
thickness: 1.5
}
We can now deconstruct our options
with a default pressure value, which will only be used if options
doesn't define a value.
const { thickness = 2, pressure = 0.75 } = options
// thickness = 1.5
// pressure = 0.75
As you can see, thickness
ignores the 2
assignment because options
sets it as 1.5
.
But pressure
is set to 0.75
because options
doesn't define a pressure
value.
If pressure
is defined in options
, both thickness
and pressure
deconstruction fallback values would be ignored.
const options: NonosOptions = {
thickness: 1.5,
pressure: 0.25
}
const { thickness = 2, pressure = 0.75 } = options
// thickness = 1.5
// pressure = 0.25
I survived without my laptop for almost a month. I spent the past three weeks on the road with a half-broken iPhone X and an iPad. I could remote to my laptop, yet I barely did because the user experience sucks.
I drew on my sketchbook, typed on the iPhone and iPad, and postponed things I do daily on my laptop for my return.
Now, I have the iPhone 15 Pro, which works like a charm. I'll likely go back to writing, watching media, and shooting photos and videos on my phone.
It's nice to sit back at my desk. But I didn't miss it much while I was on the road.
It's been a long summer. I look forward to starting the season with new podcasts, YouTube videos, and stories.
When you achieve a project milestone, you get relieve and joy, especially when things go as (or better than) planned. There tend to be things to refine and continue working on.
But there's nothing left to polish when you complete and deliver a project; it's done. There's a big void to fill and time to reclaim formerly invested in that big project.
That's the time for new projects and milestones.
A deadline is harder to meet when nobody's looking; it's a commitment with yourself, so you can cheat and don't ship.
When other's are expecting you to deliver, it's harder to skip your deadline.
That's why it can help to involve others in your projects and goals.
An audience, people who care, pushes you to keep going.
I first traveled to the US over the summer of 2006 to stay at a host family in Indiana, Pennsylvania. Everything was different, including deer walking in the front yard of our house as we arrived the first night or unlocked doors in every household.
One thing I still remember is my host student, Steve Johns, making a call on his flip phone from the front seat of his car while it poured outside. I quickly realized he was providing instructions on what to get from the trunk to a friend who was a few meters away, right outside the car.
Back then in Spain, we still payed to establish a call, for every minute we talked, and for every message we send over SMS with our mobile phones. So it seemed crazy that Steve would make a call instead of talking through the window. They already had plans with unlimited calls and messages.
Phones became smart and cellular plans started to include unlimited calls, messages, and internet data, which allowed calls over the internet, a movement pioneered by apps like Skype and now supported by many, such as FaceTime and WhatsApp.
I don't get free roaming in the US with my home carrier, which translates into prohibitive data prices. I use a Vodafone Yu S SIM card when I cross the Atlantic and always bring a tool to swap cards in the air before landing in American land.
The limit today is the amount of data. But that also seems to be going away as plans offer hundreds of gigabytes for ten euros a month. It's weird that's cheaper to connect your smartphone to the internet in the US with a Spanish carrier.
Today, most people with a phone has access to the internet. I use my phone when it's convenient, even if I'm talking to someone just a few meters away.
Twitter is making it expensive for third-party services to post automated tweets. A hundred dollars a month for hobbyists, $5,000 for "startups scaling their business," and around $42,000 for "businesses and scaled commercial projects."1
This means that apps like Tweetbot—a superb iPhone Twitter client—are going away, and services like Zapier—the automation service—will no longer be able to send updates to Twitter accounts.
It's hard for me to know how many people my content reaches through social media, and I recently thought I'd try to minimize my automatic updates in favor of something different: centralized updates on my newsletter at Sketch.Nono.MA or Substack.
While it's convenient to have posts automatically shared on social media every Tuesday, it feels noisy. I may reclaim the attention of my social media accounts for more special updates.
What do you think? How do you often get to read my posts, and what do you think is the best publication strategy?
P.S. Someday, I'll tell you a story about the seagull in today's sketch.
Twitter introduces a new $5,000-per-month API tier. TechCrunch. Accessed Aug 28, 2023. ↩
The mind asks for entertainment; something new and exciting that evades us from reality and gets us that little dopamine hit.
Certain things that get us there require little effort—say, watching viral videos—but others require more—the thrill of acquiring a new skill or physical activity, for instance.
Where was I going with this? Right, distractions.
Complying with what we know we have to do is categorized by our brain as boring and mandatory, the must-do.
We want novelty and unpredictability, at least at certain times.
That urge for something else is an elusive search for something better that distracts us from our goals.
We are often better off with what we know and wanted to do yesterday.
Disconnecting from work is hard if others rely on you to get things done.
To be off the hook while the closed-for-vacation sign is up, your team must be able to handle your duties without you.
I woke up aboard the UA181 flight from Frankfurt to Denver. I've been asleep for four hours.
I look out the window and find a beautiful landscape of snow and mountains below us. Like one of those snowy top views from Game of Thrones.
Where are we? I think.
We're flying across Greenland at nine hundred kilometers per hour, eleven thousand meters above sea level, and minus fifty degrees Celsius.
All I get is a high-level view. No detail. No sense of scale.
I realize this is the first time I've seen Greenland.
It had been a while since I sat to meditate. I used to do it daily, ten to twenty minutes at a time, and wouldn't miss a day. Meditating was a daily habit.
"One mistake is just an outlier. Two mistakes is the beginning of a pattern." Says James Clear.
After missing my daily practice a few times, not meditating daily became a habit.
"Killing this pattern before it snowballs into something bigger is one reason why learning how to get back on track quickly is an essential skill for building good habits." Follows Clear.
If you follow a practice and miss it once, ensure it doesn't happen twice.
Today, I meditated for ten minutes.
Looking for products on Amazon is a loophole.
Amazon prices are competitive. They often match offers from other vendors automatically. In Spain, for instance, they match MediaMarkt's discounts to the cent.
The issue is that offers and discounts are not always real discounts. Amazon may have a 100-euro product listed at 60 euros (40% discount) when in reality, everyone's selling the product at that price now, and 100 euros was when the product was released. It's not a discount; it's the product's current price.
What I want to do is remember the different Amazon prices I saw when visiting the product or even adding it to the shopping cart.
The idea is to create a Google Chrome extension to track the price of an Amazon page when I visit it, creating a log of actual prices. That way, when you return, you can know if that fifty percent off is an actual sale.
If you're trying to run a Bash script and get a Permission Denied
error, it's probably because you don't have the rights to execute it.
Let's check that's true.
# Get the current file permissions.
stat -f %A script.sh
# 644
With 644
, the user owner can read and write but not execute.1
Set the permissions to 755
to fix the issue.
chmod 755 script.sh
Even though Vite doesn't like chunks larger than 500 kBs after minification, you can increase the kB limit. Remember, this is just a warning, not an error.
An alternative solution is to chunk your JavaScript bundle into separate chunks, known as chunking. You can do this with the vite-plugin-chunk-split package.
I publish a mini-essay like the one you're currently reading every Tuesday. Inevitably, some of my pieces will be better than others.1
"The practice is agnostic about the outcome." Says Seth Godin.
I write daily regardless of what I publish. The more words I type, the easier it is to dig and find things worth sharing with you at a later time.2
I don't always write for publication. I write to figure out what I'm thinking and capture memories. Discover and remember. I write for the sake of writing, to practice.
This gives me the license to write badly. No pressure. I can distance myself from my writing, return to it from a reader's perspective, then curate and polish what will see the light.
Scanning my sketchbook is slow.
Each of its 124 pages takes up to two minutes to scan at 1200 dpi.1 But it ends up being more like 5 minutes per page as you position the sketchbook, generate a preview, and select the scanning area. Scanning an entire sketchbook takes four to ten hours (!).
A tedious task that requires patience and I recommend tackling as your sketchbook fills, not once it's full, which makes it more approachable and serves as a digital backup of your drawings if you were to lose your sketchbook.2
Browsing through my drawings anywhere I am—on my phone or laptop—is priceless. It makes it a breeze to select, edit, and publish.
Scanning my sketches equals peace of mind.
I scan with the Canon CanoScan LiDE 220 (and the 400) at 1200 dpi. Even though it can go up to 4800 dpi, you mostly get larger file sizes, and the resolution difference isn't noticeable. I want to try the equivalent Epson Perfection V39II at some point. All these are A4 scanners, which limits the sketchbook size I carry with me. I use 22.9 x 15.2 cm sketchbooks because they are easier to scan. ↩
Disclaimer: I've never lost a sketchbook, probably because I'm always scared and alert that I might. If you aren't worried, you should worry. If you are worried, you don't need to worry. ↩
Frank Harmon is a friend who taught me architecture studio at North Carolina State University, Raleigh, in 2012 and inspired me to look at the world differently.
Frank is an architect, teacher, writer, and 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 and ensure he doesn’t forget it.
"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 said in a podcast conversation we recorded last year.
Frank believes we can make places that have something physical and concrete, grounding us in an otherwise unlimited digital world.
Today, I’m celebrating my publication’s fourth anniversary with 210 weekly sketches and mini-essays published over 1463 days.1
Frank’s Native Places blog was one of my greatest inspirations to get started with this project. The formula is simple: pair a sketch with a mini-essay, share it online, and repeat.
I’m still figuring it out. But I enjoy every bit of it and will continue writing, drawing, and publishing for years. (I encourage you to discover the power of writing: start with one word per day.)
I'd love to hear your thoughts, feedback, comments, and suggestions and invite you to write a comment, reply, send me a voice note, or send me a private message.
Thank you, as always, for pushing me to keep going.
Happy newsletterversary.
It’s been 209 weeks, 1463 days, since my first sketch and mini-essay on July 2, 2019. ↩
There's always something else.
Something else to work on.
Something else to learn.
Something else to improve.
Something else that wants to distract you, especially when what you're doing gets boring or hard.
Today, let's focus on what we committed to yesterday, on what we already know, and on what's already working.
I visited Ian Keough at his single-family home in Culver City, California, in July 2018, where he took me out surfing after recording a podcast at his kitchen table.
Ian had just started Hypar1 out of his garage, "a platform for designing, generating, and sharing building systems." He's the CEO and founder of Hypar and is known as the father of Dynamo.
Last September, we recorded a conversation in a hotel room at St Joseph Street, New Orleans, with two cameras and two microphones. We didn't surf this time but got a beautiful 6.7-mile run in at sunrise along the Mississippi River with Zach Kron.
Enjoy this episode on how Hypar is creating the next-generation platform to design, generate, and share buildings and Ian's thoughts on open-source software, visual programming, authorship, monetization, and generative AI.
We'll premiere the episode on YouTube today, Tuesday, June 20, at 2 PM ET, which means you'll be able to chat with Ian and me during the episode.
We hope you can make it!
Hypar stands for hyperbolic paraboloid, a mathematical surface that resembles a saddle shape. ↩