Object storage looks like a simple “pay for bytes” deal until you read the fine print. You’re billed for three things: storage at rest, operations (reads/writes/metadata calls), and data leaving the platform. That last part (egress) is where budgets turn into horror stories. Here’s the core split, R2 charges for storage and requests but does not charge for public internet egress. GCS charges for all three. If your workload serves users on the open web, that policy difference often dominates everything else.
(more…)From Code to Kanji
A mission to level up in coding, language, and everything in between.
-

-

Forms look simple. A few fields, a submit button, maybe some nice rounded corners. To your users, they’re just boxes to type into. But to bots, they’re invitations. Every form is a door and where there’s a door, someone will try to kick it down.
Brute force attacks aren’t the cinematic kind. There’s no hoodie wearing hacker furiously typing, no green progress bar inching toward 100%. The real version is much more boring. A script that submits your form thousands of times per second, trying to flood your inbox, poison your data, or slip past your defenses.
Most developers respond by bolting on Google reCAPTCHA v3 and calling it a day. It’s a decent start which I’ve implemented it myself but it’s only one piece of a bigger puzzle. Securing forms isn’t about finding a single tool. It’s about layering defenses in a way that frustrates attackers while staying invisible to real humans. The art is to make bots feel like they’re running uphill in mud while legitimate users stroll through without even noticing.
Here’s how to do it.
(more…) -

You can keep latitude and longitude in
(more…)VARCHAR(255)columns if you enjoy pain. It’ll work until you try to do literally anything beyond “save and retrieve.” The problem is that location data isn’t just two values, it’s a geometry. Geometry has structure, relationships, and rules. PostGIS treats location as geometry instead of dumb text, which comes with performance, accuracy, and sanity. Here’s what you gain when you stop pretending Earth is just two strings. -

Have you ever get the above pop up and how fast do you click block? Asking for a user location in a browser is huge friction (at least for me) because in this age, privacy is expensive and I’m not gonna add a list of website that already knows my info just to know where the closest
hot single momlululemon store is.So the solution is to get user location via an information that they already provide voluntarily without any additional friction, which is an IP address. There are lots of services that revolves around that specific problem and most of them are paid. I’m unemployed and got no big capital to spend on this, so after searching, I found MaxMind, they provide a GeoIP databases that I could deploy on my own server for free. Granted that it’s not gonna be as accurate as the paid version but for my use case, a coarse detection is good enough. I don’t need to know that the user is currently sitting on a toilet seat inside their home, a city level accuracy is more than enough.
(more…) -

Image moderation is basically the smoke detector of your app. Most of the time it just sits there, silently judging you while doing absolutely nothing. You start thinking, “Do I even need this thing?” That is until it actually detect something dangerous then you thank all the gods that you put it there.
I’m making a platform that will let users upload an image and instead of spending weeks building my own half baked machine learning model and ending up with an “AI” that thinks bananas are adult content (because you know….), I just plugged in Google Vision API.
Why Google Vision?
Two reasons:
- It works – Google has already trained this thing on more images than I’ll ever see in my lifetime (and believe me I’ve seen a lot). It detects adult content, medical, violence, “racy” material, and even spoofs (meme like trickery). Each category comes with a confidence level (VERY_UNLIKELY -> VERY_LIKELY) that you can act upon
- It’s cheap – At the time of writing, SafeSearch Detection costs around $1.50 per 1,000 images. That’s $0.0015 per image. It even comes with free 1000 images per month. Unless you’re running a meme factory with millions of uploads per day, that’s pocket change compared to rolling your own solution.
-

While learning vocabulary, I keep bumping into vocabs that could be translated as “situation”. It’s either Japanese has a lot of vocabs for “situation” or I’m starting to have an early signs of dementia and I’m glad that it’s the former. So what are they and do all of those really have the same meaning?
After some digging, turns out the answer is yes and no. Yes when we’re translating from Japanese to English, but no when going the opposite direction.
(more…)
Let me list them out: -

Working in Japan’s tech scene might sound intimidating, but I’m not into pie-in-the-sky fantasies—I’m putting in the work. Right now, I’m pouring my efforts into preparing for the JLPT N3 exam and getting a solid handle on Java. There’s no secret formula or magic shortcut, just a roadmap of specific steps I’m following to make the move. Curious about what that roadmap looks like? Let’s dig in.
(more…) -

I reached a point in my previous job where the daily grind left me questioning my own sanity—and more importantly, my well-being—so much so that I realized staying any longer would only push me toward a dangerous place. Walking away wasn’t a hasty choice. I had more than enough time to think about what leaving meant for my future. Despite the nagging fears about a lot of things, I eventually saw that many of these worries weren’t as frigthening as I’d imagined. Once that clicked, I made up my mind to quit. But before I could take that final step, I had to come to terms with these very real anxieties:
(more…)