Webdev and cartographer, on a journey to 3Dmaps and dataviz. Grab a coffee and buckle up, we're going to map the clouds! 🌩️ 🏞️ 🌩️

Joined January 2019
February 9 → May 19, 2026. 100 consecutive days of showing up. Not 100 perfect maps, but 100 days of building in public: from GIS foundations to browser-native 3D, client delivery, and experimental spatial systems. 🔗 Interactive calendar (each tile opens its LinkedIn post): maptheclouds.com/100-day-map… What became clearest is what I want next: spatial tools that genuinely help people navigate real-world decisions, in Cluj and beyond. Maps as portals and instruments, not as an escape from the world outside the screen. The arc is complete. I'm shifting focus back to architecture, delivery, and selective collaborations on enterprise spatial platforms, high-performance 3D visualisation, and interactive mapping systems where technical rigour and visual clarity both matter. If that sounds close to your roadmap, let's talk. 📩 [email protected] 🌍 maptheclouds.com DM welcome. Thank you to everyone who followed this journey. 🚀 #100DayMapChallenge #CampaignComplete #SpatialEngineering #Geospatial #DataVisualization #ThreeJS #WebGL #MapLibreGL #OpenForWork #GISConsulting #GIS #Cluj
1
1
18
1,560
MapTheClouds retweeted
Made a city generator using procedural buildings and materials/textures using TSL only. github.com/mrdoob/three.js/p…
26
26
5
371
14,692
MapTheClouds retweeted
Three.js Paris conf tickets are LIVE! Grab your early bird ticket for a huge discount. 👉 threejs.paris/tickets
7
20
1
314
21,116
Day 100. Silent Moon 🌘 When Artemis II carried four humans around the far side of the Moon again, the story was easy to follow, but the trajectory still felt abstract in my head. I started building Silent Moon as a browser scene where the mission path stays readable in motion instead of collapsing into a decorative curve. The initial version focused on clarity: one continuous trajectory from real orbital vector context, stable phase markers, and labels that hold up while the camera moves. From there, scroll-driven narrative, camera locking between Moon, Earth, and Orion, and continuous tracking so navigation does not snap you out of the mission thread. Later iterations added atmosphere: clearer Earth and Moon textures, a subtle glow layer, a denser star field, and tuned trajectory contrast for dark space. ✨ Stack: React, Three.js, React Three Fiber, and Drei, with shader work where lighting stays physically coherent. Still a work in progress, but the clearest articulation so far of how I want to connect geospatial craft to cinematic mission storytelling without losing engineering honesty. 🚀 Day 100. Campaign complete. 🌍 100 consecutive days of showing up, shipping work, and building in public. Thank you for following this journey. The work continues. ❤️ #100DayMapChallenge Day 100/100 #3DMaps #Artemis #ThreeJS #WebGL #SpaceExploration #DataStorytelling #DataVisualization #Animation #Geospatial #NASA #ReactThreeFiber #Interactive3D #MapTheClouds #CampaignComplete
3
312
A Personal Note Before Day 100 🗺️ I started this campaign more as a test than a plan, with no fixed expectations and no master roadmap, just one step at a time and a willingness to see what would form. Slowly, the posts began to sketch a longer story: years of trying to make maps that sit slightly outside familiar conventions, each one carrying a personal note alongside the influence of creators I have admired and peers I have learned from. I chose open-source from the beginning because I valued independence more than expensive GIS subscriptions, and that decision gradually pushed me toward programming. Over time, the work shifted from software-driven cartography toward maps written directly in the browser, because interaction has always pulled at me, and the interface language of video games has fascinated me for years. 🎮 The next chapter is the one I want most: projects that genuinely help people, in my city and beyond it. Along the way, I want to keep one principle close. People still need to spend time face to face and keep the natural threads of human contact alive instead of letting them dissolve into purely virtual substitutes. Because of that, I do not see maps as a form of escape from the real world, but as portals, instruments, and sources of information meant to help people navigate their real lives more clearly. Maybe that is also why I still value mountains, conversations, and shared experiences away from the screen more than ever. ⛰️ The campaign asked for more time and energy than I expected, especially while posting simultaneously across seven platforms every day, often at different hours. But it earned every day because it finally brought structure to my work and to the skills I had accumulated over the years. There were moments when I thought about stopping. I chose to continue, and I do not regret it. To everyone who followed, supported, shared, or simply spent time with the work along the way, thank you sincerely. ❤️ And somehow, today became Day 100. 📷 Photo copyright: WIMA #100DayMapChallenge #PersonalReflection #Maps #OpenSource #Community
5
247
Day 99. Campaign Reflection 🎉 100 days of daily mapping, and the journey is almost complete. On February 9, 2026, I started sharing one project every day for 100 consecutive days. Not every post was a map, and that was intentional. The series gradually moved from GIS foundations and cartography into realtime 3D, WebGL, shaders, scientific visualization, cinematic interaction, and AI-assisted workflows inside Cursor. Tomorrow closes the arc as Day 100, but today feels like the right moment to pause and reflect. So far, the campaign has meant: - 99/100 days completed, -8 client projects threaded into the series, -3 Information is Beautiful Awards longlist recognitions, -and a toolchain that grew from D3.js, QGIS, and PostGIS into Three.js, WebGL, GLSL, MapLibre GL, React 19, and AI-assisted development. A few things stayed with me along the way: discipline beats inspiration, shipping beats perfecting, and technical skills compound faster when work is shared publicly instead of hidden away unfinished. Inner Fire also became my first real experiment using AI as a coding collaborator rather than a replacement: ChatGPT helped shape the vision and early scaffold, Gemini reviewed architecture decisions, and Claude refined components during later passes, while every major decision still stayed human. Most importantly, the community transformed what began as a private discipline exercise into something shared. Thank you for following this journey. Day 100 arrives tomorrow. maptheclouds.com #100DayMapChallenge #ThreeJS #WebGL #CreativeCoding #DataVisualization #Cartography #AI #React19 #Geospatial
1
1
5
382
Seven projects, but one of them ended up defining the week. The week opened with stylized cartography and local scale: Hong Kong crosshatch linework through Tangram shaders, a Cluj five-minute walking footprint, then Cluj County forests where QGIS prep met Three.js terrain. In The Clouds continued the thread into supertall storytelling on a MapLibre + Three.js stage with GSAP carrying the comparisons. Then came Inner Fire: a realtime seismic monitor where earthquake activity behaves more like a living spatial system than a static dashboard, built on React 19, R3F, GLSL, MapLibre, and the live USGS feed routed through a coherent time engine. It also became my first proper experiment using AI as a coding collaborator. ChatGPT carried much of the vision work, the creative brief, and the first HUD scaffold. Gemini joined as the 'app architect,' reviewing React 19 purity, hook discipline, and render-loop performance. Claude later helped refine components and 3D scene iteration during the Cursor passes. The second half became quieter: balloons through a Mapbox + Three.js skyline, then The Earth in Blender, a materials and lighting study that also became the offline globe model behind several later web visualizations, Inner Fire included. The projects kept changing, but the underlying approach stayed remarkably similar: choosing the tool that best serves the question. Week 15 begins today. #100DayMapChallenge Day 92-98/100 #InnerFire #DataVisualization #Geospatial #ThreeJS #React #WebGL #AI #AICoding #ChatGPT #Claude #Gemini #Cursor #GIS #3DMaps #MapLibreGL #Animation #GSAP #QGIS #Blender #WeeklyReflection
4
389
Day 98. The Earth in Blender 🌍 A careful Blender pass through modeling, materials, and light can be as useful as another live dataset when the goal is clarity. This globe study started from @andrewpprice's Earth tutorial and focused on readable continents, controlled atmosphere, and coherent lighting while orbiting the camera. It was the first globe pushed from blockout to finished render, and it sparked the question that later drove browser-first, real-time spatial work: what if this were interactive, not static? maptheclouds.com/playground/… #100DayMapChallenge Day 98/100 #Blender #3D #Earth #Globe #Geospatial #Animation #Rendering #CreativeCoding #3DMaps
1
308
Day 97. Hot air balloons everywhere! 🪂 Late-campaign lightweight piece: one clear visual idea, but still built on a proper geospatial stack. Hot air balloon glTF above dense 3D buildings in Mapbox GL JS, with animation + lighting in a custom Three.js layer rendered over the map WebGL canvas. Click/touch relocates the balloon. Playful interaction, geographically anchored. maptheclouds.com/playground/… #100DayMapChallenge Day 97/100 #ThreeJS #WebGL #MapboxGL #MapTiler #Geospatial #CreativeCoding #Animation #3DMaps
2
13
972
Day 96. Inner Fire 🔥 Global seismic activity has always felt strangely alive to me. Not just as data points on a map, but as a continuous planetary pulse unfolding through time. Inner Fire is my current attempt at exploring that idea: a realtime seismic monitor where earthquake activity behaves more like a living spatial system than a static dashboard, balancing atmosphere, clarity, and performance while staying operationally readable. It also became my first proper experiment using AI as a coding collaborator. The process started with ChatGPT, where the initial vision, creative brief, and first HUD structure took shape around a live USGS-driven globe built with React, Three.js, GLSL, and a temporal simulation engine. Gemini later joined as the “app architect,” reviewing React 19 purity, hook discipline, and render-loop performance, while Claude helped refine components and 3D scene iteration during the Cursor passes. The system gradually evolved into GPU-instanced eruption lifecycles, synchronized simTime playback, virtualized seismic feeds, atmosphere and cloud layers, and more recently a MapLibre globe overlay for close-range navigation. The AI did not build the project. It shortened the distance between an idea and a first working scene. Inner Fire is still evolving, but it has already become the project I point to whenever someone asks what AI-assisted development actually feels like in practice. maptheclouds.com/inner-fire/ #100DayMapChallenge Day 96/100 #AI #AICoding #ChatGPT #Gemini #Claude #Cursor #ThreeJS #DataVisualization #Seismic #Geospatial #Animation #3DMaps
1
7
405
Day 95. In The Clouds 🏢 New portfolio build ✨ In The Clouds explores supertall architecture through a playful interactive map where landmark towers are rebuilt as stacked, brick-like structures suspended somewhere between urban data visualization and toy-city storytelling. The project grew out of Day 82, Lego City 🧱, where I first experimented with this block-based visual language on generic buildings before slowly evolving it into a dedicated tallest-buildings experience. What began as a rendering experiment gradually turned into a larger interactive system. Users can move between iconic towers, inspect details, compare height and scale across regions, and explore skyscrapers less as isolated objects and more as characters within a global vertical landscape. The implementation combines MapLibre GL JS with a custom Three.js/WebGL layer, while GSAP drives transitions, motion, and scene pacing. Building metadata is loaded from CSV datasets, with GeoJSON overlays handling highlights, filtering, and comparisons to keep the experience both playful and informative. The project was also featured in the WebGL/WebGPU showcase, although the core architecture remains grounded in open geospatial workflows, MapLibre, and custom WebGL rendering. This is still only the first stage of the roadmap. The next iteration moves further toward gamification, stronger visual consistency, deeper interaction systems, and eventually a practical tutorial once the architecture stabilizes. 🧱 Still building maps, one experiment at a time. maptheclouds.com/intheclouds… #100DayMapChallenge Day 95/100 #3D #Maps #GIS #WebGL #ThreeJS #MapLibreGL #JavaScript #OpenSource #GreenSock #Storytelling #Geospatial #Animation
1
251
Day 94. Cluj County forests, România 🌳💚 Quieter, more personal chapter after playful map experiments: Cluj County as one continuous story of canopy + relief. Workflow stays grounded in QGIS preprocessing and Three.js/WebGL rendering, while swipe interaction makes mountain growth feel tactile instead of purely visual. maptheclouds.com/playground/… #100DayMapChallenge Day 94/100 #ThreeJS #WebGL #QGIS #Geospatial #Animation #CreativeCoding #3DMaps
1
14
930
Day 93. Cluj-Napoca 5-minute walk 🚶 This one is intentionally small and local: how much of a city becomes reachable within roughly five minutes on foot? The map stays centred on Cluj-Napoca and keeps the visual language simple (Three.js/WebGL), while Openrouteservice provides walking isochrones over Stamen Design tiles and OpenStreetMap data. Right click anywhere to generate 5, 10, 15, 20, 25, and 30-minute walking ranges and compare accessibility across the city. maptheclouds.com/playground/… #100DayMapChallenge Day 93/100 #ThreeJS #WebGL #Geospatial #Walkability #Urban #ClujNapoca #Romania #Cartography #3DMaps
1
7
742
Day 92. Hong Kong Crosshatch 🏙️ Sometimes the right move is not more data, but a different way of seeing it. This map reads Hong Kong in pen-and-ink style: Tangram JS (WebGL) for rendering, Leaflet for navigation, and shader crosshatching where line density carries structure. Dense fabric, vertical rhythm, irregular shoreline - great fit for line-based form reading. maptheclouds.com/playground/… #100DayMapChallenge Day 92/100 #TangramJS #Leaflet #WebGL #OpenStreetMap #Geospatial #DataVisualization #HongKong #Shaders #CreativeCoding #3DMaps #Cartography
2
14
748
Week 13 Reflection This week moved between very different map experiments and spatial systems, from audio-reactive city motion and walkability to atmospheric particle studies and a major full-stack environmental platform. The second half returned to browser 3D and map-native interaction through World Earthquakes, Making Lights, and Snow Dome Anywhere. Not every day is a traditional map, and that is intentional. This campaign became a way to revisit projects, client systems, and failed ideas that shaped my spatial storytelling practice. A personal note about AI. For a while, I was genuinely angry at it. After years of struggling with freelancing, I had finally started to feel that things were stabilizing, then mainstream AI arrived and the industry shifted again. It became difficult not to question whether all those years of self-study, experimentation, uncertainty, and personal brand building had really been worth it. This campaign became, in part, a way of acknowledging that past while trying to make peace with the future. Somewhere during these 100 days, I stopped seeing AI only as competition and started experimenting with it as a collaborator, amplifier, and extension of curiosity. Now I sometimes feel like a kid at Hogwarts holding a magic wand for the first time. I have barely scratched the surface of what becomes possible when spatial thinking, rendering, storytelling, and AI start working together. I still have a million map ideas in my head, except now many of them suddenly feel reachable. Let’s bring them to life. I’m available for new projects. Thank you to everyone who joined me throughout this journey, and for all the support, patience, feedback, and conversations along the way. Week 14 begins today. #100DayMapChallenge #DataVisualization #Animation #Geospatial #GIS #OpenSource #3DMaps #FOSS4G #ThreeJS #WebGL #MapLibreGL #MapboxGL #QGIS
4
189
Day 91. Snow Dome Anywhere (3D + Particles) ❄️ What happens when a city map shifts from analysis to atmosphere? This experiment turns a dense 3D city view into a quiet snow-dome version of itself. Mapbox GL JS holds the base with the MapTiler Winter theme, while a custom Three.js/WebGL layer adds snow particles, soft glow, and a subtle dome-like effect. Navigation remains fully explorable, but every click transforms the map into a small snow globe. Inspiration: FOSS4G Bucharest 2019 - @RealIvanSanchez and @BNiene. Even though I followed it only online, the work presented by these two wonderful people stayed with me throughout my growth as a freelancer. I remember seeing what they built and thinking: this is what I want to do with maps too - transform maps from static, boring images into compelling stories and experiences. Thank you! BTW: FOSS4G Europe 2026 is coming: 2026.europe.foss4g.org The conference is planned for 29 June - 3 July 2026 in Timișoara, Romania. Do not miss it - it might change your life. #100DayMapChallenge Day 91/100 #ThreeJS #WebGL #MapboxGL #MaplibreGL #MapTiler #Geospatial #Animation #DataVisualization #OpenSource #3DMaps
1
2
16
996
Day 90. Making Lights 🌚🌞 MapLibre GL JS over lower Manhattan keeps the same OSM extrusions, but routes them through custom WebGL where SunCalc positions the light and day or dark MapTiler JSON swaps at dawn and dusk so the basemap tracks the shader, while GSAP, lil-gui, and Turf handle animated time, uniforms, and footprint popups. Buildings with raw WebGL on MapLibre. maptheclouds.com/playground/… #100DayMapChallenge Day 90/100 #MapLibre #WebGL #Geospatial #Animation #NYC #3DMaps
7
60
2,584
Day 89. World Earthquakes 🌍 What changes when earthquake data is treated as a visual signal instead of only a dataset? This work was built in the context of the February 2023 Turkey/Syria earthquakes as an awareness-focused response. It maps global USGS all-month activity onto a 3D globe with Three.js/WebGL and additive shader particles, encoding events through magnitude and animation attributes. The key trade-off is readability vs physical realism: controlled exaggeration in scale and glow, with magnitude order preserved. Atmospheric interpretation, not a strict analytical dashboard. #100DayMapChallenge Day 89/100 #ThreeJS #WebGL #GLSL #Geospatial #GIS #DataVisualization #Cartography #Maps #CreativeCoding
1
4
23
1,750