Latest Posts

January 01, 2025

TIL: Fix Key Repeat in VSCode/Cursor on macOS for Vim bindings

By default, macOS shows accent options (é,è,ê) when holding keys - great for typing. But it’s problematic in apps like VSCode and Cursor where you may have enabled Vim bindings. Then you want key repeat, like holding ‘j’ to move down in Vim.

Here’s how to enable key repeat instead:

VSCode:

defaults write com.microsoft.VSCode ApplePressAndHoldEnabled -bool false

Cursor:

defaults write com.todesktop.230313mzl4w4u92 ApplePressAndHoldEnabled -bool false

To revert back to accent menu:

defaults write com.microsoft.VSCode ApplePressAndHoldEnabled -bool true
defaults write com.todesktop.230313mzl4w4u92 ApplePressAndHoldEnabled -bool true

Remember to restart the app after applying.

Note: Cursor’s unusual bundle ID is permanent due to app release constraints (source). You can identify bundle id’s yourself by running osascript -e 'id of app "Cursor"'

May 08, 2024

DIY LLM Evaluation: A Case Study of Rhyming in ABBA Schema

Originally posted on Xebia's blog, my employer at the time of writing.

It's becoming common knowledge: You should not choose your LLMs based on static benchmarks.

As Andrej Karpathy, former CTO of OpenAI, once said on Twitter: "I pretty much only trust two LLM evals right now: Chatbot Arena and the r/LocalLlama comments section". Chatbot Arena is a website where you can submit a prompt, see two results, and then choose the best result. All results are then aggregated and scored. On the r/LocalLlama subreddit people discuss finetuning LLMs on custom usecases.

The lesson is: only trust people evaluating LLMs on the tasks they themselves care about.

But there's something better: evaluate LLMs yourself on tasks you care about! Then you do not only get the most relevant scoring metrics for your task. But, in the process, you will also learn a whole lot more about the problem you're actually trying to solve.

In this blogpost, I will share with you my journey into evaluating LLMs on a ridiculous task. I've been obsessed with it for almost a year: rhyming in ABBA schema. For some reason, most LLMs can't create a 4-line poem, where the first line rhymes with the last, and the second rhymes with the third.

Curious to know why this is the case? In this rest of this blogpost I will share with you:

  1. Why rhyming in ABBA schema is an interesting task
  2. What the results were of my analysis
  3. What lessons I learned from going through this exercise
February 16, 2022
February 01, 2022

🤦‍♂️ I accidentally deleted my shell config: Three tips for preventing it happening again

Originally posted on twitter.

Yesterday I messed up 🤦‍♂️ I accidentally deleted my shell config file.

It was a brain fart. I wanted to open the file with vim. Instead I typed rm.

rm ~/.zshrc

It happened in the office. I felt so stupid. My colleagues made a fun of me. But they also showed me a cool tool to avoid making this mistake again.

So here's how to protect yourself against accidentally deleting config files:

January 28, 2022
January 19, 2022

🎤 How to spend less time preparing presentations with a universal outline

Originally posted on twitter.

I used to spend a lot of time outlining my presentations.

But for the past two years or so I've been using this framework and it helped me focus on the content instead. It basically turns outlining into a color by numbers challenge. I learned it from a Dutch book called Story Design by Farah Nobbe and Natalie Holwerda-Mieras.

The book is only available in Dutch so I thought I'd outline the framework here.

January 18, 2022
January 17, 2022

Criticizing Models

Originally posted on twitter.

Criticizing your models is an important part of modeling.

In statistics this is well recognized. We check things like heteroskedasticity to avoid drawing the wrong conclusions.

What do you do in machine learning? Only check cross-validation score?

January 16, 2022
January 12, 2022

🎯 Three questions I ask myself when setting personal development goals

A colleague asked me how I set my goals. I never thought about it explicitly but wrote it down for them and figured I could share it here too. This is just something that works for me. So take it with a grain of salt🧂

I write down a goal and ask myself three questions:

  1. 💗 Do I get excited about my goal?
  2. 💡 Will I learn valuable things while trying to achieve the goal?
  3. 🙌 If I achieve the goal, can I share my success with others?

📊 Three types of metrics for data science projects in professional organizations

If you're working on a data science project in a professional organization you'll need to show the value you contribute. That's where metrics come in.

But choosing a metric is hard. Because there's usually multiple factors at play. I've encountered that in my daily work as a data scientist.

I've found it useful to organize metrics in three level framework. I learned about it in the book "Trustworthy Online Controlled Experiments" (Kohavi, Tang, and Xu, 2020).

I'll explain the three types of metrics below.

January 11, 2022

Brain Storming is the worst. Brain Writing is a bit better

Facilitating a brain storm is easy right?

Tell people to write ideas on stickies. Group them. Discuss. Dot-vote. Done.

Wrong! What I've seen too often is: Write. Group. Discuss one idea. Run out of time. Forget about follow-up.

You know you've failed at brain storming when... You need to make a decision right now, because the meeting is out of time.

Here's three reasons brain storming fails:

  1. 🙊 Discussing ideas one by one means only one idea is improved at a time
  2. 📣 The loudest voice in the room dominates the discussion
  3. 📒 Cryptic messages on stickies mean ideas aren't captured

Here's a different technique called "brain writing" that I enjoy:

January 10, 2022

Why you should care about Data-Centric AI

If you care about delivering value with data science you should probably care about Data-Centric AI.

Data-Centric AI is about iterating on the data instead of the model architecture to create good machine learning models.

Read the full thread on Twitter where I explain why this approach matters for practical applications.

January 09, 2022

Better keyboard shortcuts with the Hyper Key

Originally posted on twitter.

What's the first thing you do when you get a new mac? 🧑‍💻

For me it's setup the hyper key.

It removes your caps lock functionality and gives you something much much better:

1️⃣ an escape key that's comfy for your pinky 2️⃣ a hyper key that's never occupied by other shortcuts

No other app uses these shortcuts:

⬆️ shift ^ control ⌥ option ⌘ command +...another letter

So if you get the hyper key you get a comfortable shortcut combination that's never blocked!

And that's important, when you want to have some shortcuts available everywhere.

Keep reading for examples:

🪤 One trap that keeps techies from connecting with their audience

Have you ever felt excited to share something? A blogpost, a sales pitch, or presentation? And have you felt sad or frustrated when you didn't get the positive response you were looking for?

Did you think to yourself: but I really have a great solution!?

Then I know your pain. And there is one trap I keep falling into and see others fall in all the time as well. I see it most often when techies try to pitch a technical solution. Here's the mistake:

Your audience's problem is NOT the absence of your solution

January 08, 2022

✍️ How to make your docs a pleasure to read AND write

Have you ever had to work your way through bad software documentation? Couldn't find what you needed?

Or have you postponed writing the documentation for a project because you didn't know where to start?

Well if you ever have the chance to setup documentation for a project then you should consider organizing it according to the "Divio Documentation Framework".

October 15, 2021

Winner of the Data-Centric AI Competition

Proud to announce that my team was one of the winners in Andrew Ng's Data-Centric AI Competition! This competition focused on improving model performance by enhancing the dataset rather than changing the model itself.

To learn more about our approach and the data-centric techniques we used, check out our detailed blog post where we share the three key tips that helped us succeed.

We also shared a blogpost on DeepLearning.AI about our experience with the competition.

August 24, 2021

Three tips for Data-Centric AI and one data science lesson

This blog was originally posted at Xebia.com, my employer at the time of writing.

Andrew Ng (co-founder of Coursera, Google Brain, deeplearning.ai, landing.ai) is most famous for his Machine Learning course on Coursera. It teaches the basics of machine learning, how to create models and how to use them to predict with great accuracy.

Recently, he has introduced the concept of Data-Centric AI. The idea is that rather than treating your dataset as fixed and solely focus on improving your model setup, it focuses on improving your dataset. He argues that this is often much more effective to improve your performance.

May 31, 2021

Catching chatbots by the long tail

This blog was originally posted at Xebia.com, my employer at the time of writing.

Have you ever had a conversation with a chatbot? Was it a positive experience? It might have been. But more likely than not it left you a bit frustrated. Chatbots try to understand your message and help you with an appropriate response. However, most of the time they're not that great yet. In a way chatbots are like baseball players.

"Baseball is the only field of endeavor where a man can succeed three times out of ten and be considered a good performer." — Ted Williams, baseball Hall of Famer

The same holds true for chatbots. A deflection percentage of 32% [users helped by the bot without human intervention] is what google considers a success story!

Customer Story on Google Dialogflow's website. Retrieved 20 April 2021

As a data science consultant I've worked with multiple companies on chatbots and helped them do better. During these projects I have discovered a pattern that might help others build better chatbots too. In this article I outline three tips that should help you focus on what matters.

Catching chatbots by the long tail

Shell sage is an amazing tool that lets you chat with an LLM inside your terminal. It automatically loads in your shell history into the context window so the LLM knows what you've been doing. Combine with with Ipython and you've got an interactive python environment to pair in with the LLM. Add ipdb and you've got an AI enabled debugger.

February 07, 2020

Rhyme with AI

This blog was originally posted at Xebia.com, my employer at the time of writing.

Machines may take over the world within the year;
But creating rhymes instills in us the most fear!
Luckily, pre-trained neural networks are easy to apply.
With great pride we introduce our new assistant: Rhyme with AI.