When I was 18 years old I had an idea for a website that would allow anime fans from around the world to connect and meet each other. And so, soon after, MaiOtaku was born!
Let me introduce you to MaiOtaku.com—the world's longest-running anime dating website. There are tons of dating websites and apps out there: Tinder, Bumble, Match.com, eHarmony. Online dating is a billion-dollar industry, and to me, a dating website for anime fans seemed like a no-brainer.
I started MaiOtaku in 2009. Since then, it has grown to over 100,000 users. It was designed to be very different from traditional dating websites. You can chat, like posts, and share your life—it’s honestly more of a mashup between Reddit and Facebook than just a dating site.
I still remember back in 2011, shortly after I started advertising the website for the first time. I was at an anime convention when a couple approached me, telling me that they had met on MaiOtaku, started dating, and eventually got married. It was an incredible moment, realizing that something I built had such a profound impact on people's lives. That feeling of having made a real difference was truly rewarding.
Of course, with an anime dating website, you might expect some drama, right? And naturally, there was. Sometimes, people online make up the wildest claims and act like they’re experts.
A few years ago, some users discovered that if they typed their username into a specific URL format, their anime convention profile would appear. This led to an absurd conspiracy theory that I must have stolen their anime convention registration information and imported it into my anime dating website. People claimed that I had actively downloaded their personal data, including credit card numbers, and uploaded them to the dating site.
But not only was that not true—it wasn’t even possible.
Let me explain why. My websites run on a server I call "Chronosite", which is what I call my internal system. All my websites from my homepage to my anime conventions run on it. It’s a web application that runs most of everything I’ve built, from my anime dating website to my website about making video games, my convention websites, my solar company’s quoting system—basically everything I’ve created between 2008 and 2018. It’s all housed in one Ruby on Rails application.
This application originally ran on a single web server that, back in the day, was physically plugged into my apartment. Now, it’s hosted on Amazon AWS. Every user entry—whether it’s a username or a payment method—is saved in this application.
For non-programmers, that might sound like an efficient and reasonable setup. But if you are a developer, particularly a modern web developer, you might be thinking this sounds cumbersome or risky. Why would a solar quoting system, an anime convention ticketing system, and an anime dating website all be on the same server, under the same system? They seem unrelated, right?
Well, they actually share a ton of overlapping functionality. For example:
* Logging in and out
*Secure password encryption (salting and hashing)
*Password recovery (email verification and reset links)
*Public profiles and profile pictures
*A commenting system
*Spam prevention
Each of these is non-trivial to develop, taking hours of programming. If done wrong, it could lead to security vulnerabilities, such as unauthorized account access. By having all of these functions under one system, it made it much easier for me as a one-person development team to keep things secure.
So when people accused me of stealing data for the dating website, that was completely false. As I tried to explain, everything was running on one system. If you created an account for one of my sites, you could log in to any of them because it was all part of the same infrastructure. The system wasn’t importing data—it was simply responding to login requests using the same database.
Some people argued that my practices were insecure or that I was implementing "same sign-on" instead of a proper "single sign-on" system. Others made baseless claims that I was stealing data. In reality, my system followed industry best practices for security.
For example, across all of my websites, there was only one users table. I consistently updated its security measures. When I first built it, I used an older hashing function that was later found to have flaws. Over time, I upgraded it—first to a better hashing method, and now to bcrypt. If bcrypt ever becomes outdated, any new passwords will be encrypted using whatever the latest secure algorithm is. Security updates like these are critical, and keeping them centralized made it significantly easier to ensure they were applied consistently.
The misunderstanding that led to this whole drama came from a technical oversight. If someone entered their username into the dating website’s URL in a specific way, it would display their convention profile. The key issue here was that until someone logged into the anime dating site, a match profile object hadn’t been generated for them. So their username would show up, even though they weren’t actually listed in the dating site's match system.
For everyday MaiOtaku users, this issue didn’t affect them at all—they would never see those profiles in the matching system. But I understand how it looked from an outside perspective. Once someone pointed it out to me, I immediately updated the code that same day to prevent confusion. Now, usernames that haven't explicitly joined MaiOtaku show as unavailable.
The reason all my sites were initially built on one shared system was convenience. When I started my business, I had no money, no investors—I was funding everything with credit cards. Keeping costs down was essential, and I couldn’t afford 40 separate servers for 40 different websites. So I built a framework that could run unlimited websites on one machine.
Now that we’re more like a real business, I’ve moved to a more modern approach. Different websites now operate on separate servers, using different codebases. Some are written in Rust, others in Ruby on Rails, some in PHP—it all depends on the project. New projects no longer get added to my original monolithic system.
A big reason this transition is now feasible is the evolution of software development. When I first started coding 20 years ago, package managers weren’t as robust, libraries were scattered, and even Git was still in its infancy. Keeping everything in one place was simply the most practical solution at the time. But today, the landscape has changed. Rails has matured, package management is standardized, and implementing secure authentication is as simple as using has_secure_password in Rails.
MaiOtaku continues to thrive as a space where anime fans can connect. Whether you're looking for love or just friends who share your interests, MaiOtaku is here for you. If you're an anime fan looking to meet and chat with other nerdy people, check out MaiOtaku.com.
Cheers to the past, present, and future of anime connections!