A movie about cooking that is also not about cooking at all.


Punch-Drunk Love

This is my second time watching Punch Drunk Love, and what a nice movie it is. While There Will Be Blood remains the most epic, beautiful, and comprehensive movie Paul Thomas Anderson and Robert Elswit created, Punch Drunk Love is the most original.

The main thing that I noticed during this rewatch are the colors. They are the main theme in this movie. They establish the emotions of the scenes. Even if you don’t pay attention to them, you feel them. Blue follows Barry everywhere — symbolizing his loneliness and detachment. Red represents everything good that he finds along the way; it’s happiness.

Everything plays so nicely together in this movie. It’s funny and sad sometimes. It can be brutal but also tender. The beautiful work of Robert Elswit is hard to describe, I want to watch this movie again and again just to experience every scene one more time.

Blue, red and their mix — purple
Some nice shots

Blog Roll: Ludicity

I found a blog that is excellent at expressing my thoughts. It’s also a good litmus test as his style and ideas seem to be quite polarizing for some reason.

Here’s a few posts that I liked.

I Will Fucking Piledrive You If You Mention AI Again:

Consider the fact that most companies are unable to successfully develop and deploy the simplest of CRUD applications on time and under budget. […] Most organizations cannot ship the most basic applications imaginable with any consistency, and you’re out here saying that the best way to remain competitive is to roll out experimental technology that is an order of magnitude more sophisticated than anything else your IT department runs, which you have no experience hiring for, when the organization has never used a GPU for anything other than junior engineers playing video games with their camera off during standup, and even if you do that all right there is a chance that the problem is simply unsolvable due to the characteristics of your data and business?

I will remember this year as a time when so many companies threw out all the product work practices they cared for before and started adding AI features that either barely work or nobody asked for.

I Will Fucking Haymaker You If You Mention Agile Again

The secret is that there’s no secret for doing things correctly. You have to hire the correct people, motivate them to continue working even when there’s no clear risk of being fired, make them feel valued and appreciated, not waste their time, ensure they’ve got the space to do work the right way, only accept the right work, and then just leave them the hell alone. If they have brains, they’ll figure everything else out themselves.

It’s remarkable how many things would be fixed if companies hired smart people.

Usually, you can often pinpoint the exact moment when a company’s culture begins to decline – it typically follows a hiring frenzy where the quality of new hires drops, and these less qualified individuals start hiring others, creating a vicious cycle.

Most Tech Jobs Are Jokes And I Am Not Laughing:

It has become exceedingly clear to me that the average company is not a suitable environment for someone that cares about the craft of programming. To make things worse, once your standards are high for yourself, I’m guessing that only the top 1% of companies in terms of workplace culture is not a personal offense.

I wouldn’t be surprised if finding a genuinely fulfilling job has about the same hit rate as starting a bootstrapped business from scratch.

At this point, it does feel like building your own company and cutting all the bullshit might be the only option for someone who cares about their craft.


King Creosote

I found King Creosote randomly through some recommendation on YouTube or Spotify — I don’t remember. Diamond Mine is now the first album I bought in a very long time. Then, I found this tender documentary about life in Scotland and loved it.

These albums are so good at grounding you. You might sit in a train or walk through a busy street, and you start forgetting that you’re part of this crowd. You feel as if you’re a bystander, noticing all the small details in people and things around you — everything that makes them special.


Good Interfaces

It would be interesting to define what a good interface is. We can start with something simple: A good interface is one that requires minimal cognitive and physical effort to accomplish a task.

This definition is not ideal. In most cases, an interface performs many different tasks. You might want to create, move, and delete things. Now, let’s create the next version: A good interface is one that requires minimal cognitive and physical effort to accomplish the tasks it is supposed to perform.

This has its own problems. Some tasks are performed more often and some less. For example, in a banking app, people send money more frequently than they buy stocks. This leads us to the next definition: A good interface is one that requires minimal cognitive and physical effort to accomplish the tasks it is supposed to perform, weighted by how often each task is performed.

Good designers know this and optimize the same function without consciously thinking about it.

There are a few interesting corollaries that follow from this definition.

“Clean” interface is not an optimal interface. There is a huge tendency today towards clean interfaces. What designers understand by a clean interface is hiding all important elements behind context menus and reducing information density by increasing white space around elements. However, it’s easy to see how this leads to worse interfaces. It takes more cognitive effort to understand and remember the path to a certain action. It also takes more time to go through this path as it requires more clicks.

A Figma frame with all information hidden might look cleaner, but it’s not that useful.

One good example of trying to create a clean interface is JetBrains’ redesign of their IDE. They removed important elements from the interface used by thousands of engineers and needed to issue a statement to address the feedback they received.

Old JetBrains Interface
Old JetBrains interface
New JetBrains Interface
New JetBrains interface

The interface should feel snappy. Internet applications are already too slow. While we have improved how easy it is to build things, we have failed at optimizing for speed. The internet is stupid slow. Animations are great at helping people interact with computers and creating a “magic” feeling, but very often they stand in the way of these interactions. Imagine a web page that takes 500ms to load its resources such as HTML files, JavaScript, fonts, and images — it’s already too late to add a 300ms fading animation on top of that. Waiting for a whole second for an app to start being usable might be too much.

Good interface is not about trends. Another tendency today is chasing trends. Products change their appearance every few years, adding more useless noise to make designs “pop”. Often, designers make these changes only because they can — technologies provide too few constraints to prevent this.

A good interface is like a tool: functional, reliable, and not dependent on the whims of fashion. It minimizes cognitive and physical effort, prioritizes essential tasks, and remains functional and efficient regardless of changing trends.

Designers too often look for challenges in the wrong places instead of focusing on what truly matters — ease of use, efficiency, and functionality.


Universal Line Height

I’ve discovered a simple formula for a universal line height in CSS:

line-height: (1em + 1ex);

It’s surprising how well this works. This formula often results in a line height close to 1.5. For example, Helvetica Neue has 1000 units per em and an x-height of 500 units. So 1em + 1ex equals exactly 1.5em.

It’s especially useful in cases where people can choose fonts without being able to set the line height. For fonts with a smaller x-height, like Garamond, this will result in smaller line heights, and fonts with a larger x-height, like Inter, it’s the other way around.


Typeface Updates 002

New iteration of the typeface

After playing with the font for a while, I’ve started getting to know what I want. I want to bring back the nostalgic feeling of interfaces from the 90s — Verdana/Tahoma and Lucida Grande — they were highly legible and warm. Also, even though designing your own version of Helvetica is cool, it’s psychologically hard to do when you have so many open-source Helvetica descendants — Inter, Geist.

I redid most of the glyphs. Now counters are more open and letters have abrupt joints. The letters I and J have serifs and the letter M has two stories.

Interestingly, once you get spacing right, text starts looking legible even when letter forms are not perfect.


iOS 18 Preview

Yesterday, Apple showed the iOS 18 Preview and Apple Intelligence and it might be the worst release they made.

The entire update is about generative AI. Companies have been adding generative AI whenever it’s useful for the past few years. Apple was among few companies that didn’t and now they jumped on that bandwagon as well.

One would expect Apple to add AI features sparingly, where it feels right, where it doesn’t obstruct the user flow, where it’s invisible. They have not. Instead, they’ve released a bunch of unrefined features as if to show their relevance.

Some features — summaries, proofreading — are more or less valuable. While others — emoji generation, anyone? — are out of place.

Another problem with iOS 18 is that it looks like it was designed in a haste. Apple has been slowly losing its design edge for a few years, but this update feels even less polished. You get buttons that are not aligned, font colors that do not match, and patterns that do not work.

The entire update feels like there was no attention to details — neither to design nor feature choices.


Algorithmic Feeds

The algorithmic feed is among the worst inventions of the 21st century. The extent of damage it has caused is hard to measure, but you can probably feel it.

The main issue with generated feeds is that they need to rely on some metric to decide what content to show you. In most cases, this metric is engagement, which is pretty annoying. To be fair, any metric would be bad. It’s impossible to reduce what someone likes or dislikes into one number.

When a single number is used to track the quality of recommendations, it stops reflecting reality. Instead, people start to gamble it. As a result, you get clickbait tweets, posts, and video titles. Content quality deteriorates, yet you are more likely to engage with it.

The best solution I’ve found is to avoid any app or service with algorithmic feeds.

For example, I almost abandoned Twitter. There was a time when I could read what the people I followed wrote. Then, Twitter introduced algorithmic feeds and eventually removed third-party clients.

It’s not only about Twitter. Much worse happened to Instagram where you almost don’t see what your friends post. Meta knows better what you’ll engage with.

I would still love to use Twitter or Instagram. But it’s too much work — there are only a few people left there who I like following, the rest became victims of this race to the bottom — self-promotion at the expense of sincerity.

There’s an essay by Scott Alexander on the topic of competition and the incentives it creates. I want to finish this post with a quote from that post:

There’s a passage in the Principia Discordia where Malaclypse complains to the Goddess about the evils of human society. “Everyone is hurting each other, the planet is rampant with injustices, whole societies plunder groups of their own people, mothers imprison sons, children perish while brothers war.”

The Goddess answers: “What is the matter with that, if it’s what you want to do?”

Malaclypse: “But nobody wants it! Everybody hates it!”

Goddess: “Oh. Well, then stop.”


The Creative Act by Rick Rubin

I didn’t like this book at first. At the beginning, he talks about spiritual nonsense — the Source. It didn’t make much sense then and it doesn’t make sense now. The best approach is to ignore these parts or think about them as Rick’s way to express things that he’s unable to put into words. If you survive this initial shock, you get to the good part.

The good part, and why you should read it, is all the things that you believe in and wanted to hear somebody else saying. Things that we collectively lost along the way.

We live in a messed-up world where quality is reduced to a few numbers on a dashboard or where people stopped doing what they like and started doing what drives engagement. I needed to know that there are people who still appreciate simple things and who work for themselves.

His main point is that art (read it as ”anything you do”) is about yourself. The quality of your work is what you should struggle to improve. Everything else — feedback, critique, self-doubt, motivation — is a means to the final result.

At some point in my life, I lost track of who I am — there were too many voices aroud, and too many instances where I need to conform to someone else’s opinion. This book gave me a breath of fresh air and I don’t care anymore.