Building in Public

  • Airtales: When the Balloon Landed

    Airtales was never meant to last forever. I even had a line on the roadmap asking when and where the balloon would land. Still, it drifted across Google Earth like a stubborn daydream, a collective ride where strangers became crew.

    Fifty days in the sky

    I spent about fifty days building it, then another fifty days watching it float. In that time, 8,606 people climbed aboard. At one point 167 players were trying to steer it at the same time. Along the way, 145 photos were snapped, 234 local radios played, and the balloon wandered across thousands of virtual miles.

    I had a blast, and also a fair amount of frustration, making it. Game development is nothing like building an app. Apps usually have a problem to solve. Games? Unless boredom is a problem (which I don’t agree), they exist for entertainment. That makes the process slippery. You build something, test if it feels fun, throw it away when it doesn’t, or let it spark a new idea when it does.

    What I Learned

    • Collective chaos. Everyone steering the same balloon at once was as wild as it sounds. Fun for a while, then pure chaos. The most requested feature was obvious: give people their own balloons.
    • Two kinds of players. Some wanted to navigate carefully, to reach specific places. Others were content to just watch. Like social media, there were pilots and lurkers.
    • Screenshots became souvenirs. The photos people shared blew me away. Taking a picture of a virtual trip sounds silly, yet some were stunning. In Airtales they felt like postcards from a shared dream. Roblox and Steam also encourage capturing gameplay, but in Airtales it felt more like postcards from a shared dream.
    • Google Maps hurdles. Getting Maps to play nice with the game was tough. I liked the final solution until I learned caching map tiles is against Google policy. That one stung.
    • Twitch experiments. I hooked Twitch chat into the game so players could teleport the balloon or send messages that got read aloud. I streamed some flights too. But requiring a Twitch account kept most people away. I never wanted to build my own chat system, since moderation is a nightmare, but this wasn’t the answer. Copyright takedowns on radio streams didn’t help either.
    • Local radios. These were huge for the vibe, and even part of my distribution strategy. I even reached out to a few stations and some shared it on their socials. That felt like a win.
    • Stories in the sky. I tried mixing in book excerpts and AI-generated geo-stories about migration, philosophy, global unity. I hoped they would add poetry to the ride. They never really fit.
    • Web tech has grown up. Browser-based 3D is powerful now. Still clunky on mobile, but impressive nonetheless.

    Travel Log

    A collection of snapshots from my journey and players who turned their virtual flights into postcards. The gallery is less about graphics and more about the human impulse to document a journey, even when it happens on a digital map.

    Why It Mattered

    Airtales was an experiment. I wanted to see if I still enjoyed game development, explore new stacks, find out which platforms are thriving, and hear from real players. By that measure, it worked. It reminded me why I like building things that don’t fit neatly into categories. It gave me a reason to keep going.

    So here’s to what comes next. I’ll see you floating around the world, each of us in our own balloon, part of one oversized fiesta in the sky.


  • The Story Behind Airtales

    We Ride the Plural of Horizon

    I created a game that offers a meditative multiplayer experience, where strangers on the internet work together to steer a hot air balloon across the world map. There are no points, no ads, and no reason to play, other than the shared pleasure of drifting somewhere together. It’s called Airtales.fm, and this is the story of how it came to be.


    Maps, Simulations, and Elevation Lines

    A decade ago, I used to build simulation games. Not the Farmville kind, but slow-burn social experiments where groups could experience simulated situations and environments. One of them was a Google Earth-based experience where you could place future civic projects on real-world terrain. It was naive and idealistic and fun in the way that only city planning with strangers on the internet can be.

    Apparently, I never outgrew the habit of turning maps into toys. To this day, I lose hours staring at elevation lines. They’re just little whispers of geography, hinting at how the land moves.

    This is a short clip from my 2014 demo reel, giving a glimpse of what those projects were about.

    Borders, and the Absence of Calm

    I can’t remember ever feeling calm crossing a border.

    Maybe it’s the paperwork. Or the implicit judgment. Or the feeling of being reduced to numbers and stamps and visa types.

    Leandra, my co-conspirator in life and Airtales, feels weirdly at peace when crossing borders. It’s possibly the only time she’s not anxious. I envy that.

    Airtales isn’t a therapy project, but I think it comes from that tension. From the desire to imagine a world you can cross without being interrogated. A world where your direction is shaped not by privilege or paperwork, but by shared intention.

    Internet Roadtrips and Open Source Sparks

    The first real spark came from Neal Agarwal’s Internet Roadtrip. It was clever and charming and reminded me how much delight there still is in just looking at a map.

    That led to a lot of late-night poking around: open APIs, weird WebGL tricks, satellite tiles, and browser hacks. We spent two weeks not building anything, just playing. Like raccoons in a code garage.

    Thank god for open source. Without it, this project would’ve taken six months. With it, we built a working prototype in under four weeks.

    Built While Floating

    We made Airtales while traveling, a new kind of travel for us, pet sitting around the Bay Area. Writing balloon code while playing with dogs and trying to find where the f*ck the cheese shredder went.

    At first, I worried about staying productive while constantly moving and swapping kitchens every week. I still have a lot to learn about having a real routine, but weirdly, it worked. I felt just as productive, maybe even more so, than working from home.

    We built a game about drifting while actually drifting.


    Democracy by Wind

    The core mechanic is simple: the crowd votes where the balloon goes.

    It’s multiplayer navigation without a driver’s seat. Democracy as drift.

    Giving up control can be frustrating. But also kind of beautiful. Especially when strangers align. When east wins by a landslide. Or when everyone agrees to climb.

    We added no incentives. No rewards. No FOMO. Just shared direction. That felt like enough.


    Stories, Dust, and Radio Signals

    Players can tune into real local radio stations as they float, or request a story about the land below.

    I spent a whole hour floating around Brazil listening to ‘The Voice of Brazil.’ This is a unique government radio program produced by the country’s public broadcaster. The program must be aired during at 7:00 PM by all Brazilian radio stations every weeknight. It is the oldest radio program in the country and the longest-running in the Southern Hemisphere. I used to hate that, but I was so nostalgic that I couldn’t stop listening to it.

    Sometimes, the game responds with a poetic fragment. Like:

    “Pollen from fields rises to meet ash from distant suns. We breathe both.”

    We wrote dozens of those lines. They appear at random. Like thoughts that float in when you stop scrolling.

    The game doesn’t track your location, but it does cross borders. When that happens, it whispers things like:

    “Line crossed. No paperwork needed.”

    Writing the Story (Then Unwriting It)

    I spent a ridiculous amount of time trying to write the perfect narrative arc for Airtales. It went through many phases: at one point it was called Caballoon and had an elaborate mythos about sentient currents guiding the balloon through post-border landscapes. Then it was Airmob, a kind of poetic resistance simulator where players were digital nomads staging soft rebellions with every vote. Then, the Airborn, people who were born in a balloon and don’t understand the concept of borders. Then a cryptic AI whispering through radio static. Then a sci-fi climate story unfolding over time.

    None of it felt quite right. Not because they were bad stories (or maybe they were), but because they competed with the space I was trying to build.

    So I scrapped it. All of it. In the end, I made something simpler.

    Now the story comes from the players. The balloon holds their votes, their messages, their traces. It floats with fragments of everyone who passed through. And that felt more honest than anything I could script. A collective and slow balloon ride wandering through this beautiful world.

    Messages in the Basket

    I wanted to simulate a kind of real travel that lets you leave traces, not likes, not high scores, just moments. So I added a camera.

    Yes, you can take pictures in Airtales. Of a virtual landscape. It sounded silly when I first built it, but I ended up loving it.

    Inside the balloon basket, players can leave tiny messages, a photo and a note. These become floating souvenirs. You can even pin them to specific locations on the map. It’s a guestbook that moves with the wind.


    The Tech

    I could talk about it for days, but let’s keep it brief.

    The front end runs on Three.js, which I love. The backend handles vote logic and location updates. We looked into Youtube chat integration, radios database, Discord bots, even livestream overlays. I’m excited about the Twitch API. There are so many interesting things to integrate with your game. This entire game feels like a collaborative livestream.

    Some things broke. Some things refused to scale. The balloon doesn’t always float where it should. But it floats.

    Because everyone is in the same place geographically, the number of live users doesn’t impact map API usage too much. And we cache tiles in case the balloon loops around, which it often does.

    There were some scenarios I hadn’t expected that called for technical changes. For example, when I showed it to some friends, they said they’d love to play this while watching the balloon on a TV in the dentist’s waiting room. Indeed, the whole thing looks like that tvOS screensaver. Another friend said that with some tweaks, it could be one of those TV party games.

    Indeed, the game on a TV looks so beautiful.


    Why This? Why Now?

    Because the world feels a little too divided. And fast. And extractive.

    We weren’t trying to fix that. Just offer a different rhythm. One where exploration isn’t gamified, and strangers can co-steer something just for the joy of doing it.

    We didn’t build a product. We built a feeling.

    The air up here is light.
    That’s the whole point.

    What’s Next?

    Well, I managed to merge all my favorite things into one project: maps, music, stories, and views. Maybe I’ll be the only one playing it, but that’s fine.

    This project revived my excitement for game development. It’s a very different energy from building apps. Apps solve things. Games chase joy, reduce boredom, invite play.

    We’re already thinking about other games, all real-world map based with touches of activism baked in.

    We’re not done drifting yet.


    Credits

    These are just a few of the people and companies that made this project possible.


  • Build Log

    A living trail of things I’m building, breaking, or pretending to finish.
    Some are active, some are dust. All of them taught me something.
    This is where I track the chaos, one sprint, stumble, and saddle-up at a time.

    Total projects: 18 (Only counting my own projects)
    🟢 5 succeeded, 🟡 5 somehow, 🔴 7 failed, ⏳ 1 in progress.

    What is success? 🟢

    A little reminder to myself that honestly, I think all these projects worked out in some way. They gave me insights, knowledge, and some scars, and took me to new places, introduced me to new friends, and brought new experiences. Some made money, others ended up costing me. Here, success isn’t about just one thing; it’s more about the feeling that they did well. If the final result feels way more positive than negative, whether money-wise or experience-wise, then throw a green emoji on it, Dieguito.

    Last update: Dec 2025

    Niche Alarms ⏳

    Nov 2025 – Now

    Inspired by the social alarm idea, we conducted some surveys and discovered other needs, such as waking up to birds.

    What’s happening?

    We did some initial market research, studied players, ran some ads to test interest, completed a technical proof of concept (Memo Rise), then we prepared the bird version for beta testers (Bird Rise).

    Tiny Games 🟢

    Nov 2025

    I was reading Game Poems and got excited about building a very limited and simple game. Weeks ago, I saw URL Snake featured somewhere and thought I could also create something like that. I built two little games, Tiny Horse and Tiny Mario. I had a blast working on them. Each one took around two days to make. Decided to make them open source so people can improve or create variations of them.

    Why did it succeed?

    These little games brought an immense number of visitors and backlinks to my site, which was the main goal. They gave me great insights to use these kind games as marketing tools for my next projects.

    I wrote a bit more here.

    Air Fiesta 🔴

    Aug 2025 – Nov 2025

    Based on user feedback from Airtales, it’s a hot air balloon multiplayer game for people who love traveling. People can join virtual festivals around the world and discover local hidden gems, like scavenger hunts.

    What happened?

    The game was published for desktop, android and ios. I have received some feedback and made adjustments, but I still feel it needs a lot of work to be considered a real game. Game development involves building something to get a sense of whether it’s fun or not, which is quite different from app development, where you quickly create an MVP that solves a problem and then start polishing. I have decided to pause this for now, I spent too much time already and don’t see a clear path for revenue. It may pivot to something else, probably a marketing tool for new projects rather than a standalone game.

    Airtales 🔴

    Jun 2025 – Aug 2025

    Inspired by Neal game experiments, this was a google earth crowd-play experiment to go back to my roots (game development) and one of my passions (maps).

    What happened?

    This project was meant to either pivot or shut down. There was no clear business model or a way to at least sustain itself (Google Maps API is not cheap). It was a game where people joined a hot air balloon (everyone on the same balloon) and voted on what to do next, whether to move the balloon, listen to local stories, or change the radio station. Playing it was a completely chaotic experience, and building it was fun. You can read more about the beginning and the ending.

    After more than 8k people played and provided feedback, it evolved into Air Fiesta. It remains a hot air balloon simulation on Google Earth but now features a more traditional gameplay style and business model.

    Social Alarm 🔴

    May 2025 – Jun 2025

    Inspired by a message from our niece at 5am, we wanted to wake up to random messages from friends and loved ones.

    Why did it fail?

    We did some initial market research, studied players, ran some ads to test interest, and completed a technical proof of concept. We ended up stopping this initiative. Our research and ad tests showed that people are more interested in bird sounds or moaning sounds 🫦 than messages from friends. Two companies tried this in the past and completely shut down their solutions. There are also some technical challenges. I’m happy, though, that we gained some insights from the research and proof of concept before building the entire thing. I might write more about my process since I’m enjoying it.

    Smart Keys for Mac 🟢

    Jan 2025 – Present

    It was also my own need. It serves the same purpose as the iOS version but is now designed for desktop, with the concept of AI Shortcuts. https://smartkeys.so/for-mac

    Why did it succeed?

    The tool is very useful and simple. I have some very engaged subscribers besides myself. I haven’t found a good channel for this product yet, but since I’m an active user (maybe the most active one) I’ll keep trying it.

    Smart Keys for iOS 🟢

    Aug 2024 – Present

    I wanted to solve my own problem: my broken English and my laziness to learn more. I wanted a simple tool that could review my texts and make them sound more natural without trying to teach me (100% lazy mode). The whole thing ended up as an App Store for your keyboard, where you can add an infinite list of possible keys. So whether you’re polishing grammar, adding a bit of flair to your texts, or translating on the fly, Smart Keys makes it all effortless. https://smartkeys.so/

    Why did it succeed?

    Low maintenance tech stack and found product-market fit with a positive LTV/CAC ratio.

    Hyper-Local Activity and Coloring Books 🔴

    Nov 2024 – Dec 2024

    Hyper-local coloring and activity book for kids based on their school, neighborhood, or city, especially in small or underserved cities, all powered by AI agents.

    Why did it fail?

    I ran a pilot in Walnut Creek but didn’t see much traction, so I shut it down. The goal was to sell in bulk to cities, libraries, and events. Technically, this was an interesting project to test agents capabilities. I found this agent use case quite interesting: A positive outcome for small communities that might never happen if done by humans because the ROI would be too small. But scaling the personalization may work.

    Secret Project 🔴

    Feb 2024 – Mar 2024

    Too embarrassed to share what this project was about.

    Why did it fail?

    I found some interesting channels and managed to test two ideas, but I felt too ashamed to continue working on this. 😰

    PromptTea.Party 🔴

    Sept 2023 – Nov 2023

    Kaggle for Prompt Engineers. I was facing many challenges instructing LLMs, so I thought a crowdsourced problem-solving platform would make sense.

    Why did it fail?

    Started as a hackathon project, it evolved with some friends in the East Bay, and we shut it down when we realized that LLMs would evolve so quickly that the project wouldn’t make sense.

    Youper 🟢

    Feb 2015 – Feb 2025

    Youper is an artificial intelligence application that uses conversational techniques to help you track your mood, reflect on your emotional wellbeing, and organize your thoughts in a beautiful journal. It’is designed with safety as a core principle, with safeguards implemented to help prevent harmful interactions.

    Why did it succeed?

    Pioneer in the field, amazing team, VC-backed, and covered by a lot of media.

    DonorDrive + Strava Extension 🟡

    Oct 2023 – Feb 2025

    I wanted to automate my own fundraising for ALC 2024, a bike ride from SF to LA where you need to raise $3.5k, by connecting my training rides with my fundraising efforts.

    What happened?

    This was my first Build in Public project. It was a successful pilot for ALC 2024, helping me and other participants to fundraise and train more. However, ALC and other non-profits didn’t show much interest. Also, Strava and DonorDrive made their APIs more restricted. Some details here.

    Empathy Bottles 🔴

    Nov 2017 – Feb 2018

    App was inspired by the Nonviolent Communication (NVC) methodology, where people can share personal stories anonymously and also provide emotional support.

    https://producthunt.com/../empathy-bottles

    Why did it fail?

    I chose the wrong tech stack (Ionic) and didn’t have a clear business model for an anonymous social network. Server costs began to increase.

    The Last Trip 🟡

    2010 – 2015

    Youtube channel about landscapes and places that are being destroyed and will soon no longer exist.

    What happened?

    Besides some videos going viral, the cost and time to make them were high and caused some conflicts with my day job. It also took a toll on my mental health; the YouTuber life is not for me.

    Kombina.me 🟡

    2014 – 2015

    I wanted to sell my car (a VW Bus) to someone who had a good and meaningful idea of what to do with it. So, I created this marketplace for selling goods at a discount based on the buyer’s plans for them. It felt like I was donating to a worthy project. I sold my VW Bus to an environmental and educational initiative.

    What happened?

    Well, it helped me with my goal, I met amazing people, and had so much fun. But I didn’t do a good job sticking with it to find more customers besides myself. ;p

    BackPackBook 🟡

    2008 – 2015

    This was my first attempt at writing more about travel and literature. It was a blog specializing in travel book reviews.

    What happened?

    I spent years on this blog, created a lot of content, and built a community around it. Later on, I lost interest and didn’t take it seriously as a potential business model. I also faced many issues with hacker attacks and custom WordPress code.

    DiaTech 🟡

    2001 – 2003

    Web agency and tech infrastructure for small companies, founded with friends.

    What happened?

    We had many clients and made a good amount of money. However, a lack of maturity was a major issue. Friends became ex-friends, and then I joined another company.

    Design Agency 🟢

    1998 – 2001

    Design agency with my brother.

    Why did it succeed?

    Merged with another company with friends.


  • The Vibe Life: Building Smart Keys for Mac

    I didn’t realize I was about to enter the “vibe” industry when I started building Smart Keys. All I really wanted was a way to sound fluent in languages without doing the hard work. Let’s be real: learning languages is tough. So, I built an app that lets me fake my english fluency until I make it. Besides hating this reference, the thing here is that I’ll probably never make it. I may not be as fluent as I sound using tools like this.

    Still, Smart Keys did the job for me on my phone. It solved my laziness problem and gave me a sense of accomplishment. Translate a message, change to a more casual tone, proofread an email, all with one tap. Suddenly, I was hooked. This tiny app had me feeling like a fluent native speaker.

    Bringing the Vibe to My Desktop

    Once Smart Keys worked its magic on my phone, I thought: why not bring this vibe to my desktop? I wanted to cut down on the constant back-and-forth between tabs, the endless browser windows, and that infuriating cycle of copy-pasting. Small tasks, like checking email, sending a reply, or fixing a bug, don’t require much brainpower, but they drain your energy nonetheless.

    So, I created Smart Keys for Mac.

    The goal was simple: stay in my flow, move through tasks without jumping between apps, and avoid losing focus on anything. I wanted to type, hit a shortcut, and keep moving. Proofread, translate, fix code, all without leaving the current task.

    Simple. Efficient. Minimal.

    The Perils of a One-Code Solution

    Now, if you’ve ever tried to port an app from iOS to macOS, you’ll know it’s not as simple as change deployment target and calling it a day. That’s what I thought, but nope. The idea of maintaining one codebase sounded genius: keep it efficient, keep it synced, keep the maintenance low. But here’s the thing: macOS and iOS are like distant cousins. They share some traits but are entirely different creatures.

    “If debugging is the process of removing software bugs, then programming must be the process of putting them in.”

    – Edsger Dijkstra

    “Two platforms, one codebase” sounds like a dream, but I quickly realized that you can’t just slap a mobile UI onto a desktop app and call it a day. The screen sizes, input methods, window management, all these small details had to be adjusted. It’s like trying to fit a square peg into a round hole, but making it work without losing the essence of what you built.

    The Fine Line Between Efficiency and Overload

    Incorporating macOS-specific optimizations wasn’t as simple as resizing windows. The app had to manage multiple displays, adjust for different screen sizes, and still feel fluid while taking advantage of the desktop’s power. Every change, every tweak, led to a cascade of other adjustments. Maintaining a single codebase was efficient in theory, but it created a lot of headaches along the way.

    I spent more time testing than I care to admit, making sure one small change didn’t break something somewhere else. But that’s the process. There’s no such thing as an easy app transition (yet).

    Selling a Quiet Product That Does a Lot

    Now that Smart Keys mostly works, the challenge has shifted. I’m not wrestling with bugs as much as I’m wrestling with words. Building a product that blends into your day is one thing. Explaining it without making it sound like a blender full of features is another.

    It rewrites. It translates. It fixes weird grammar and polishes sloppy code. All in the background, with shortcuts you barely notice. That’s the magic. And also the problem.

    It’s hard to pitch a tool that isn’t trying to impress you. It just wants to help and then get out of the way. Try to summarize it in one sentence and you either oversimplify or overcomplicate. Try to be specific and it starts to sound like five tools in a trench coat.

    “First, write the press release. Then, build the product.”

    – Not me

    So now I’m figuring out how to talk about it without killing the simplicity. Selling a quiet product in a world that rewards loud ones. Making clarity feel exciting without dressing it up too much.

    Still, every time I’m stuck rewriting copy for the tenth time, it’s right there. I hit a shortcut, smooth things out, and move on.

    Sure, half the time I’m fixing the thing I just built, but hey, at least I’ve got good shortcuts for the apology emails.


  • Store Conversion? More like Store Distraction.

    Apple’s polished and carefully curated Benchmark Metrics are an illusion, designed to impress on paper but often disconnected from real-world performance. In other words, BS.

    Apple lays out a glossy percentile system, letting you compare your app’s metrics to others in the same category. It shows if you’re brushing shoulders with top performers (the 75th percentile) or stuck somewhere near the bottom (the 25th percentile). On the surface, it sounds super handy, like a leaderboard in a video game. In reality, some reports can be misleading. Sure, it feels good when you see your app “performing as well as top apps,” until you realize some numbers can be skewed by ads, special promotions, and other wildcards that don’t reflect genuine traction.

    I discovered that the hard way while tinkering on Smart Keys, an AI-powered keyboard I’ve been building to help people (especially myself) type faster and smarter. I was feeling way too proud of myself as I rearranged screenshots, polished keywords, and declared I’d cracked the code. The numbers insisted I was beating the top apps by a mile. Then I realized I was clinging to a metric that was all style, zero substance.

    I obsessed over four data points, hoping my “genius” would unlock the secrets of the App Store. Here’s the quick breakdown, served with a side of humble pie.

    1. Store Conversion: The most BS of all

    I treated this like my personal high score, proudly pointing at it like it was proof I had the Midas touch. Turns out it’s mostly driven by ads, the brute force of a solid marketing push, and unpredictable factors like being featured on popular blogs.

    You can test every ASO tweak in the book, but nothing outdoes a well-funded campaign. That dose of reality bruised my ego, especially when I realized I’d been celebrating a metric that anyone with a decent ad budget could inflate.

    2. Proceeds per Paying User: Almost BS

    This one fooled me for a while. It’s like checking your salary and forgetting about rent. Sure, “Proceeds per Paying User” looks impressive at a glance, but it hides the reality of how much you spent to acquire those users. If each paying user costs you three times what they bring in, you’re basically throwing money into a bonfire.

    Nothing bursts your revenue bubble faster than realizing your lunch budget is leftover ramen packets because you blew all your cash on ads.

    3. Crashes: Gold

    This is where I got a much-needed wake-up call. Smart Keys had an onboarding crash bug that nearly drowned my starry-eyed dreams. On a small team, testing across all devices and iOS versions is no walk in the park, so the crash rate ended up being my loudest alarm. It let me catch the bug before a wave of 1-star reviews hit.

    I’d rather stub my toe in the dark than face that. Crashes might not look sexy on a dashboard, but they show you if your app is on fire before everyone runs for the exits.

    4. Retention (D1, D7, D28): Be patient

    This one’s a slow burn that checks if people actually come back for more. Early on, I’d glance at the retention numbers and assume folks would stick around forever.

    Then I got a reality check: trial periods, paywalls, or freemium strategies can skew these stats, and retention is a marathon, not a sprint. I’m still catching my breath, but at least I know if people keep showing up, I’m doing something right.

    The truth is, these metrics can make you feel important, but they don’t tell the whole story. I’ve been learning more from watching the folks at Every and other brave souls building in public. They share real stories about triumphs and ugly mistakes, ASO magic tricks, and it’s oddly comforting to see the raw, unfiltered process.

    I’m trying to do the same here with Smart Keys, focusing on real-world user feedback that directly shapes my updates and features. If you’re curious how all this no-BS talk translates into an actual product, give Smart Keys a try, or keep an eye on my #BuildingInPublic journey to see how it evolves.

    Is any of these metrics relevant to you? Which metric should I dive into next?

    Have a good week filled with no-BS insights.
    (っ-,-)つ𐂃