Building in Public

  • Air Fiesta: When the Balloons Multiplied

    There was a time when everyone shared a single balloon. That was Airtales, one collective flight drifting wherever the crowd decided. Democracy by wind. Chaos by design. It was beautiful, but also… a little limiting. People wanted to explore their own skies. This is why it started and how it ended.

    That’s how Air Fiesta happened, a pivot, or maybe a parallel universe. Now every player has their own balloon. You can float above your neighborhood, drift over famous cities, or join in festivals with friends. No borders, no passport required.

    Underneath it all, it still runs on the same energy: curiosity, community, and a touch of absurd optimism that maybe the world makes more sense from 300 feet up.


    What’s New

    Air Fiesta is built on Google Maps SDK, so what you see is the real planet. You can tune into local radio stations while you fly (because every city sounds different).

    You can take photos of your journey, discover hidden treasures, and battle weather that’s way less forgiving than it looks. Gusty winds, thermals, fog, even flocks of birds (the kind of chaos that makes you laugh right before it throws you off course).

    And what about the balloon festivals? They’re still happening. They will probably change into something simpler. Right now, it’s a scavenger hunt with virtual friends. But it seems a bit complicated, so it will likely become more like freely collecting hidden gems.

    One big improvement was the mobile experience. The game is still based on web technology (ThreeJS), which is tricky to run on mobile, but you can try it out on the App Store or Play Store. Coming soon on Steam.


    Why I Still Care About Radio

    Radio’s the heartbeat of Air Fiesta. I’ve always loved it, the crackle, the local ads, the DJs who sound like they’ve seen things. There’s something deeply human about tuning into a city’s voice while you’re hovering over it.

    I’m reaching out to stations now, (community, college, indie, public) to ask permission to float them inside the game. Because I want players to hear the places they fly over, not just see them.

    If you run a station, you can see a preview of what that looks like:
    See a balloon radio in New York and another in the Bay Area. This is more like a non-interactive mode where you can “watch” other players.

    Special thanks to Radio Browser technology for providing the geo-position of radios worldwide for free.


    Where Air Fiesta Is Cancelled

    Not everywhere is safe to fly.

    Inspired by the Global Conflict Tracker and Freedom Flotilla, I mapped ongoing conflicts around the world: wars, occupations, humanitarian crises. The result was staggering. In those regions, Air Fiesta goes silent.

    It’s not meant as protest or pity, more like a pause. When the world is burning, sometimes silence says more than scenery.

    Maybe one day those places will light up again with music, laughter, and balloons rising together. Until then, the silence stays.

    Feed and Gallery

    Since Airtales has a feature that is quite unique (the camera), like a real balloon adventure, you can take pictures of your views. It’s no different here; people feel excited about doing that, so I keep it.

    The improvement from the previous version is that you can now see pictures, messages, and other balloon interactions in a feed format.


    What’s missing?

    I think there are important pieces missing or not quite right. The story, for example, seems weak or almost nonexistent. Another important aspect is world-building. Currently, interactions with the world are almost zero. I think players should be able to build or change something in the real world. Right now, it’s almost like a ‘leave no trace’ approach, but it could be cool if they could move things around, clean the ocean, deliver letters, or even destroy borders :p

    You can see follow the progress on Itch.io, for the first time I’m documenting the changelog there, it’s quite interesting.


    The Sky Is the Limit

    Air Fiesta isn’t about competition. There’s no score. No finish line. Just weather, music, and motion. It’s a little weird and a little hopeful, a floating experiment in what happens when you mix geography, sound, and strangers who want to explore together. This won’t trigger dopamine traps, and you won’t become addicted to it.

    Maybe that’s the game I’ve always wanted to play: one where the world is the level, and connection is the win condition.


    ✈️ Play at airfiesta.fm or read the manifesto if you’re into that kind of thing.


    Credits

    Air Fiesta FM is a labor of love crafted by a small team (Diego and Leandra) and a generous community. This page recognizes the people, technologies, and resources that made it possible.

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

    Special thanks

    • Our early players and testers who shared feedback and found edge cases.
    • The open source community for tools, libraries, and inspiration.
    • Friends and family for the support during late-night builds.

  • 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: 15 (Only projects where I was the founder)
    🟢 3 succeeded, 🟡 6 somehow, 🔴 5 failed, ⏳ 2 in progress.

    Last update: Jun 2025

    Air Fiesta ⏳

    Aug 2025 – Present

    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’s happening?

    The game is published for desktop. It’s fun to play, and I have received some feedback, but I feel it still needs a lot of work to be considered a real game. Game development has this aspect where you need to build 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.

    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

    What’s happening?

    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 – Present

    Youper combines psychology and artificial intelligence to understand users’ emotional needs and engage in natural conversations. https://youper.ai/

    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.