Giving friends custom text buzzes based on Morse code
Customizing Haptic Buzzes via Morse Code
By liquidbrain | Published: September 30, 2026
I spent too much time procrastinating on a proper long-form entry for September, so instead, I've put together this brief update.
The Notification Dilemma
I frequently keep my phone in my pocket with notifications enabled. While I have a specific vibration pattern for text messages that allows me to distinguish them from other alerts, I've historically lacked a way to tell who is messaging me without looking at the screen.
From a data perspective, text messages have the highest signal-to-noise ratio of all my notifications. Most are direct messages from colleagues or friends. However, the probability that a specific text is immediately relevant to my current task is relatively low:
This creates a psychological conflict: I either have to pull my phone out to check, or I spend my mental energy wondering who it is (especially since I love unexpected messages, which makes the distraction even stronger). While I typically disable notifications to maintain focus, there are windows of time where I am awaiting a critical response that requires a fast turnaround.
The Goal: A method to identify the sender of a text via haptics alone to determine if the message is relevant before interrupting my flow.
The Solution: Morse Code Haptics
Since iPhones allow for custom vibration patterns per contact, I decided to systematize this. I created unique haptic tones for approximately 25 people based on the Morse Code of their initials.
The Implementation Process
I wanted an automated solution, but since that wasn't feasible, I performed the setup manually.
Workflow Diagram
Step-by-Step Execution
- Identify the priority list of friends/colleagues.
- Navigate to
SettingsSoundsHapticsText Tone HapticsCreate New Vibration. - Record the specific buzz sequence.
- Label the vibration with the person's initials.
- Assign the pattern to the individual contact via the
Editmenu.
Note: I chose to record all vibrations from the centralized Settings menu rather than within individual contact cards, as it allows for faster switching and a more streamlined workflow.
Tooling and Efficiency
To ensure accuracy, I used an AI tool (Claude) to build a small utility. I could click a set of initials, and the tool would play the corresponding Morse beats.
// Conceptual logic for the Morse beat artifact
const morseMap = { 'A': '.-', 'B': '-...', 'C': '-.-.' };
function playBeats(initials) {
initials.split('').forEach(char => {
const pattern = morseMap[char];
// Trigger audio/haptic beats based on dots and dashes
});
}
Most patterns took between 1 and 5 attempts to record perfectly, making the overall process surprisingly tolerable.
Summary of Setup
| Component | Method | Detail |
|---|---|---|
| Pattern Logic | Morse Code | Based on contact initials |
| Creation Path | Settings | Centralized Haptics menu |
| Quantity | people | Manual recording |
| Verification | Claude Artifact | Audio-visual beat reference |
📢 Note to Friends
If you need to reach me with absolute urgency, please call me.
My device is configured so that phone calls bypass "Do Not Disturb" mode. If I am unable to answer, please leave a voicemail or send a text explaining the urgency.
- Social calls: I love them! Just let me know that's what it is.
- Text-only: Be aware that if you only text, I might not see the message for a significant amount of time.
(This applies even if you have a personal distaste for talking on the phone!)