Devin Lane
banner
devinlane.com
Devin Lane
@devinlane.com
🧑‍💻 Software engineer / web dev
🎸 Songwriter / producer / guitarist: https://gentlereturn.bandcamp.com/
🐈 olive 🐈‍⬛ nathan
🌱 Big on plants
🗣️ Language nerd: fluent in Spanish...
🫂 Long covid justice, treatment, research
🌁 Based in SF, CA
So now my "mutual referrer" form is safe 🎉

lightninglessons.com/classes/writ...
Lightning Lessons music school
Lightning Lessons is an online music school and community focused on helping you write songs and express yourself.
lightninglessons.com
November 15, 2025 at 7:45 PM
Bots thwarted. Only after they sent about 120 emails in my name 🤦‍♀️
November 15, 2025 at 7:45 PM
I used `position: absolute; left: -9999px; opacity: 0;`. I didn't use `display: none` in case a bot was set up to detect this. I called this input field "phone" just to keep it believable.

On my server I said "if we get a submission to the phone field, throw it away"
November 15, 2025 at 7:45 PM
I finally decided to add a "honeypot".

This is an input field in the form that you hide, and expect that no human user would fill in. A bot automatically fills this in and then you can safely throw away that submission.
November 15, 2025 at 7:45 PM
I tried deprecating HTTP/0.9 and HTTP/1.0, the idea being maybe an old or poorly written bot is using these older protocols.

this didn't work
November 15, 2025 at 7:45 PM
I tried appending a # hash to the form's action URL, the idea being that if the bot was old or poorly written it would submit the wrong URL (and a browser just throws this away)

this didn't work
November 15, 2025 at 7:45 PM
What do to? Akismet seems cool but was there a simpler solution?

Went through this site: www.ctrl.blog/entry/detect...
7 simple bot detection methods that won’t inconvenience users
Protect your contact, comment, or other forms from spam submissions by evaluating minute details about how it got submitted. Privacy-preserving. No CAPTCHAs.
www.ctrl.blog
November 15, 2025 at 7:45 PM
No, you did not go viral, you got bots 😅.
November 15, 2025 at 7:45 PM
A few days later I got an email from Resend (who I'm using to send emails) that I was almost hitting the max allowed emails in a day. Strange...that's gotta be a lot of users. Did I go viral 🤩
November 15, 2025 at 7:45 PM
The features works like this: submit your name and email, and your friend's name and email. That hits my backend, creates one promo code for each user, and sends each user an email with their promo code.
November 15, 2025 at 7:45 PM
I built a nice little referral form on my website for a course I'm running: refer a friend and you both get 15% off.
November 15, 2025 at 7:45 PM
Reposted by Devin Lane
“Don’t let the bastards grind you down. I love you all.”
November 15, 2025 at 6:15 AM
and if it's a type error from older types, Restart TypeScript Server could be needed
November 15, 2025 at 12:03 AM
October 31, 2025 at 11:06 PM
October 10, 2025 at 7:18 PM
This class is for all levels, beginners to advanced. It's best if you know how to play a few chords on your instrument.

We're running it 12-1pm PT on Oct. 30, Nov. 6, Nov. 13, and Nov. 20, but also sending out recordings after each class for you to work through at your own pace.
October 7, 2025 at 5:18 PM
In this class, you'll learn the fundamentals of music theory that will empower you distill techniques from your favorite artists into concepts that you can use in your own songs.

Think: intervals, diatonic chords, functional notation, cadences, secondary dominants, borrowed chords, and more.
October 7, 2025 at 5:18 PM
"let's get weird" - i'm listening lol...
October 7, 2025 at 5:05 PM