Update for the week ending on Friday, Aug 2, 2019
Zestful
- Had a meeting with an app developer interested in integrating Zestful
- Fixed 115 mislabeled training examples
- Noticed that the site’s website ranks poorly on Google, so fixed some low-hanging SEO fruit:
The data thief
I had my first abusive Zestful user and spent way too long trying to fight them.
- First, I got a message from my log backup service saying I exceeded my daily limit
- I thought, “Great! That means people are using the service a lot today!”
- I checked my billing dashboard: zero paid API calls. Uh oh…
- Checking AppEngine, I realized that a user was abusing my free demo (limited to 30 calls per IP) by constantly shifting IPs
- The IPs were coming from AWS, who conveniently publishes a JSON of all their IP ranges, so I wrote a quick script to block AWS IPs from my AppEngine project
- Script broke after 1000 IP ranges because AppEngine is limited to a maximum of 1,000 firewall rules
- Attacker was still going with non-AWS IPs, so I blocked the CIDR blocks associated with the new IPs
- One of the IPs was coming from a company called ParseHub, who sells IP rotation services.
- I asked ParseHub to blacklist my site from their services, but they pretended they didn’t know how.
- Apparently the service whose business model relies on profiting from data theft is not particularly motivated to prevent data theft.
- I ended up blocking a few more CIDR blocks and countries, and the attack has stopped for now.
But the whole thing was dumb because it doesn’t really cost me anything if a user is a jerk and uses my service without paying. I burned almost two full days playing cat and mouse with the attacker when I could have been working on features that improve the service for paying users.
What Got Done
- Conducted an in-person customer interview with a local startup founder
- Added Markdown previews to submission page
- Tweaked some of the CSS
Is It Keto
- Tweaked the CSS based on ideas from this excellent website teardown video
- Before vs. After
- Changed the background color to a slightly greenish white to make the white cards pop more
- Added box shadows to the cards and search box
- Added a bottom border to the navbar for better contrast with the site body
mtlynch.io
- Wrote most of a new post called, “The Dumbest Task I Ever Outsourced”
- Wrote a spec to hire @LoLo_ology to draw the cover art
- Published my July retrospective
- Realized I’d been misusing headers in my Jekyll theme for 3 years
- I was using
#
for top-level headers,##
for second-level, etc. - The minimal-mistakes theme expects the author to start at
##
for top-level headers. - So I did a global replace to increase all the hashes by one
- The new headers look better. They actually look like section and subsection headers instead of having the same formatting as the post title.
- I was using
Dusty VCR
- Published episode #9: The Addams Family
Beekeeping
- Rendered some beeswax
- Assisted with a friend’s honey extraction to learn how to harvest honey.
Misc
- Sent personal invites to six local developers / founders for the August Indie Hackers Western Mass Meetup
- Balanced my books for July
- Ended the month with a $174 profit (my best month since quitting my job)