41554 blogs · [ { "id": "01a0877d-2735-7398-8abf-d83d4c99a7f6", "title": "Removing wall-clock flakiness from a scripted playthrough test", "url": "http://giovanni.curlybrackets.it/sdl-adventure-game/2026/07/23/deterministic-headless-test.html", "published_at": "2026-07-23T00:00:00+00:00" }, { "id": "01a0877d-2735-7398-8abf-d83d4d4046db", "title": "Declarative scenes: a data-driven approach to scene assets", "url": "http://giovanni.curlybrackets.it/sdl-adventure-game/2026/07/20/declarative-scenes.html", "published_at": "2026-07-20T00:00:00+00:00" }, { "id": "01a0877d-2735-7398-8abf-d83d4e1584c1", "title": "Building the Game for Android", "url": "http://giovanni.curlybrackets.it/sdl-adventure-game/2026/07/18/building-the-game-for-android.html", "published_at": "2026-07-18T00:00:00+00:00" }, { "id": "01a0877d-2735-7398-8abf-d83d4ec37b0c", "title": "One Manifest per Adventure", "url": "http://giovanni.curlybrackets.it/sdl-adventure-game/2026/07/17/one-manifest-per-adventure.html", "published_at": "2026-07-17T00:00:00+00:00" }, { "id": "01a0877d-2735-7398-8abf-d83d4effa6a3", "title": "A Puzzle Dependency Chart for the Pool Adventure", "url": "http://giovanni.curlybrackets.it/sdl-adventure-game/2026/07/15/a-puzzle-dependency-chart-for-the-pool-adventure.html", "published_at": "2026-07-15T00:00:00+00:00" }, { "id": "01a0877d-2735-7398-8abf-d83d4f023257", "title": "Drag and Drop for the Player Character", "url": "http://giovanni.curlybrackets.it/sdl-adventure-game/2026/07/14/drag-and-drop-for-the-player-character.html", "published_at": "2026-07-14T00:00:00+00:00" }, { "id": "01a0877d-2735-7398-8abf-d83d4fa31d9b", "title": "From Imperative Click Handlers to Declarative Hotspots", "url": "http://giovanni.curlybrackets.it/sdl-adventure-game/2026/07/12/from-imperative-click-handlers-to-declarative-hotspots.html", "published_at": "2026-07-12T00:00:00+00:00" }, { "id": "01a0877d-2735-7398-8abf-d83d4fe7fb8c", "title": "On-Screen Dialogue Text with Karaoke-Style Word Highlighting", "url": "http://giovanni.curlybrackets.it/sdl-adventure-game/2026/07/10/on-screen-dialogue-text-with-karaoke-style-word-highlighting.html", "published_at": "2026-07-10T00:00:00+00:00" }, { "id": "01a0877d-2735-7398-8abf-d83d4fed8b89", "title": "Parallax Background and Foreground Planes", "url": "http://giovanni.curlybrackets.it/sdl-adventure-game/2026/07/09/parallax-background-and-foreground-planes.html", "published_at": "2026-07-09T00:00:00+00:00" }, { "id": "01a0877d-2735-7398-8abf-d83d50058b92", "title": "Scenes Wider Than the Window with a Following Camera", "url": "http://giovanni.curlybrackets.it/sdl-adventure-game/2026/07/08/scenes-wider-than-the-window-with-a-following-camera.html", "published_at": "2026-07-08T00:00:00+00:00" }, { "id": "01a0877d-2735-7398-8abf-d83d50d2e268", "title": "Discrete Per-Band Sprite Variants for Distance", "url": "http://giovanni.curlybrackets.it/sdl-adventure-game/2026/07/07/discrete-per-band-sprite-variants-for-distance.html", "published_at": "2026-07-07T00:00:00+00:00" }, { "id": "01a0877d-2735-7398-8abf-d83d5101ac5d", "title": "A Y-Sorted Action Layer for Depth Occlusion", "url": "http://giovanni.curlybrackets.it/sdl-adventure-game/2026/07/06/a-y-sorted-action-layer-for-depth-occlusion.html", "published_at": "2026-07-06T00:00:00+00:00" }, { "id": "01a0877d-2735-7398-8abf-d83d51683337", "title": "Lip-Sync from Offline-Generated Mouth Cues", "url": "http://giovanni.curlybrackets.it/sdl-adventure-game/2026/07/05/lip-sync-from-offline-generated-mouth-cues.html", "published_at": "2026-07-05T00:00:00+00:00" }, { "id": "01a0877d-2735-7398-8abf-d83d5238aa67", "title": "Pathfinding Around Obstacles with a Walk Grid and A*", "url": "http://giovanni.curlybrackets.it/sdl-adventure-game/2026/07/04/pathfinding-around-obstacles-with-a-walk-grid-and-a-star.html", "published_at": "2026-07-04T00:00:00+00:00" }, { "id": "01a0877d-2735-7398-8abf-d83d530ef5af", "title": "One Script, Two Test Front Ends", "url": "http://giovanni.curlybrackets.it/sdl-adventure-game/2026/07/03/one-script-two-test-frontends.html", "published_at": "2026-07-03T00:00:00+00:00" }, { "id": "01a0877d-2735-7398-8abf-d83d540099e7", "title": "Testing the Game in a Terminal", "url": "http://giovanni.curlybrackets.it/sdl-adventure-game/2026/07/02/testing-the-game-in-a-terminal.html", "published_at": "2026-07-02T00:00:00+00:00" }, { "id": "01a0877d-2735-7398-8abf-d83d5436cc53", "title": "Moving Animation Timing from Render to Update", "url": "http://giovanni.curlybrackets.it/sdl-adventure-game/2026/07/01/moving-animation-timing-from-render-to-update.html", "published_at": "2026-07-01T00:00:00+00:00" }, { "id": "01a0877d-2735-7398-8abf-d83d54bf4560", "title": "Fixing the Bugs a Code Review Found", "url": "http://giovanni.curlybrackets.it/sdl-adventure-game/2026/06/29/fixing-the-bugs-a-code-review-found.html", "published_at": "2026-06-29T00:00:00+00:00" }, { "id": "01a0877d-2735-7398-8abf-d83d55235a83", "title": "An Engine for Multiple Adventures", "url": "http://giovanni.curlybrackets.it/sdl-adventure-game/2026/06/24/an-engine-for-multiple-adventures.html", "published_at": "2026-06-24T00:00:00+00:00" }, { "id": "01a0877d-2735-7398-8abf-d83d5525f860", "title": "Web Build Using Emscripten", "url": "http://giovanni.curlybrackets.it/sdl-adventure-game/2026/06/23/web-build-using-emscripten.html", "published_at": "2026-06-23T00:00:00+00:00" }, { "id": "01a0877d-2735-7398-8abf-d83d553a4a77", "title": "PO-33 K.O.! Easter egg", "url": "http://giovanni.curlybrackets.it/2026/03/28/po-33-ko-easter-egg.html", "published_at": "2026-03-28T00:00:00+00:00" }, { "id": "01a0877d-2735-7398-8abf-d83d5567eca1", "title": "Terminal Build Using libcaca", "url": "http://giovanni.curlybrackets.it/sdl-adventure-game/2026/03/25/terminal-build-using-libcaca.html", "published_at": "2026-03-25T00:00:00+00:00" }, { "id": "01a0877d-2735-7398-8abf-d83d55a07586", "title": "PO-33 K.O.! Cheat sheet, Notes and Practical Guide", "url": "http://giovanni.curlybrackets.it/2026/01/10/po-33-ko-cheat-sheet-notes-and-practical-guide.html", "published_at": "2026-01-10T00:00:00+00:00" }, { "id": "01a0877d-2735-7398-8abf-d83d565a86c3", "title": "Platform-Independent Asset References", "url": "http://giovanni.curlybrackets.it/sdl-adventure-game/2025/01/26/platform-independent-asset-references.html", "published_at": "2025-01-26T00:00:00+00:00" }, { "id": "01a0877d-2735-7398-8abf-d83d56a14682", "title": "Refresh Rate Independent Animations and Game-Speed-Dependent Updates", "url": "http://giovanni.curlybrackets.it/sdl-adventure-game/2025/01/25/refresh-rate-independent-animations-and-game-speed-dependent-updates.html", "published_at": "2025-01-25T00:00:00+00:00" }, { "id": "01a0877d-2735-7398-8abf-d83d5703de53", "title": "Device Independent Resolution", "url": "http://giovanni.curlybrackets.it/sdl-adventure-game/2025/01/23/device-independent-resolution.html", "published_at": "2025-01-23T20:00:00+00:00" }, { "id": "01a0877d-2735-7398-8abf-d83d5729754e", "title": "iOS Build (Second Attempt: Success)", "url": "http://giovanni.curlybrackets.it/sdl-adventure-game/2025/01/23/ios-build-success.html", "published_at": "2025-01-23T14:00:00+00:00" }, { "id": "01a0877d-2735-7398-8abf-d83d5757c535", "title": "Music, Sound Effects, and Dialogs", "url": "http://giovanni.curlybrackets.it/sdl-adventure-game/2025/01/22/music-sound-effects-and-dialogs.html", "published_at": "2025-01-22T00:00:00+00:00" }, { "id": "01a0877d-2735-7398-8abf-d83d57c94e77", "title": "iOS Build (First Attempt: Failure)", "url": "http://giovanni.curlybrackets.it/sdl-adventure-game/2025/01/21/ios-build-failure.html", "published_at": "2025-01-21T18:00:00+00:00" }, { "id": "01a0877d-2735-7398-8abf-d83d584694a4", "title": "Chain of Actions", "url": "http://giovanni.curlybrackets.it/sdl-adventure-game/2025/01/21/chain-of-actions.html", "published_at": "2025-01-21T14:00:00+00:00" }, { "id": "01a0877d-2735-7398-8abf-d83d58bb65ae", "title": "Parsing Animation Metadata", "url": "http://giovanni.curlybrackets.it/sdl-adventure-game/2025/01/17/parsing-animation-metadata.html", "published_at": "2025-01-17T18:00:00+00:00" }, { "id": "01a0877d-2735-7398-8abf-d83d59998672", "title": "AI-Powered Code Review and The Fox Actor", "url": "http://giovanni.curlybrackets.it/sdl-adventure-game/2025/01/17/ai-powered-code-review-and-the-fox-actor.html", "published_at": "2025-01-17T14:00:00+00:00" }, { "id": "01a0877d-2735-7398-8abf-d83d59d78fe2", "title": "Debug Overlay", "url": "http://giovanni.curlybrackets.it/sdl-adventure-game/2025/01/16/debug-overlay.html", "published_at": "2025-01-16T20:00:00+00:00" }, { "id": "01a0877d-2735-7398-8abf-d83d5a91f8e3", "title": "Animation Library, Scene Library, and Game Library", "url": "http://giovanni.curlybrackets.it/sdl-adventure-game/2025/01/16/animation-library-scene-library-and-game-library.html", "published_at": "2025-01-16T14:00:00+00:00" }, { "id": "01a0877d-2735-7398-8abf-d83d5ae65673", "title": "Images and Sprites", "url": "http://giovanni.curlybrackets.it/sdl-adventure-game/2025/01/15/images-and-sprites.html", "published_at": "2025-01-15T21:00:00+00:00" }, { "id": "01a0877d-2735-7398-8abf-d83d5b8f2910", "title": "C Code Organization, Naming Conventions, and Formatting", "url": "http://giovanni.curlybrackets.it/sdl-adventure-game/2025/01/15/c-code-organization-naming-conventions-and-format.html", "published_at": "2025-01-15T17:00:00+00:00" }, { "id": "01a0877d-2735-7398-8abf-d83d5c3a782c", "title": "Xcode Project Version Control Using Git", "url": "http://giovanni.curlybrackets.it/sdl-adventure-game/2025/01/15/xcode-project-version-control-using-git.html", "published_at": "2025-01-15T14:00:00+00:00" }, { "id": "01a0877d-2735-7398-8abf-d83d5d12cf58", "title": "Mouse Events Handling", "url": "http://giovanni.curlybrackets.it/sdl-adventure-game/2025/01/14/mouse-events-handling.html", "published_at": "2025-01-14T21:00:00+00:00" }, { "id": "01a0877d-2735-7398-8abf-d83d5d98114a", "title": "Music and Sound Effects Using SDL_mixer", "url": "http://giovanni.curlybrackets.it/sdl-adventure-game/2025/01/14/music-and-sound-effects-using-sdl-mixer.html", "published_at": "2025-01-14T17:00:00+00:00" }, { "id": "01a0877d-2735-7398-8abf-d83d5df5fc51", "title": "Loading Images Using SDL_image", "url": "http://giovanni.curlybrackets.it/sdl-adventure-game/2025/01/14/loading-images-using-sdl-image.html", "published_at": "2025-01-14T14:00:00+00:00" }, { "id": "01a0877d-2735-7398-8abf-d83d5e99626f", "title": "Basic Game Loop", "url": "http://giovanni.curlybrackets.it/sdl-adventure-game/2025/01/13/basic-game-loop.html", "published_at": "2025-01-13T00:00:00+00:00" }, { "id": "01a0877d-2735-7398-8abf-d83d5ebaf23c", "title": "Basic SDL2 macOS Project Setup (Second Attempt: Success)", "url": "http://giovanni.curlybrackets.it/sdl-adventure-game/2025/01/10/basic-sdl2-macos-project-setup-success.html", "published_at": "2025-01-10T00:00:00+00:00" }, { "id": "01a0877d-2735-7398-8abf-d83d5ef627c5", "title": "Basic SDL3 macOS Project Setup (First Attempt: Failure)", "url": "http://giovanni.curlybrackets.it/sdl-adventure-game/2025/01/09/basic-sdl3-macos-project-setup-failure.html", "published_at": "2025-01-09T17:00:00+00:00" }, { "id": "01a0877d-2735-7398-8abf-d83d5f61ce38", "title": "Creating a Simple Point-and-Click Adventure Game Using the SDL Framework - Introduction", "url": "http://giovanni.curlybrackets.it/sdl-adventure-game/2025/01/09/intro.html", "published_at": "2025-01-09T14:00:00+00:00" }, { "id": "01a0877d-2735-7398-8abf-d83d605706ec", "title": "Blog Content Editor Powered by LLM", "url": "http://giovanni.curlybrackets.it/2025/01/03/llm-blog-content-editor.html", "published_at": "2025-01-03T00:00:00+00:00" }, { "id": "01a0877d-2735-7398-8abf-d83d61495b79", "title": "Label Nodes and Debugging Cursor's Position", "url": "http://giovanni.curlybrackets.it/adventure-game/2020/03/22/label-nodes-and-debugging-cursor-s-position.html", "published_at": "2020-03-22T00:00:00+00:00" }, { "id": "01a0877d-2735-7398-8abf-d83d620e8576", "title": "Handling Mouse Events", "url": "http://giovanni.curlybrackets.it/adventure-game/2020/02/17/handling-mouse-events.html", "published_at": "2020-02-17T00:00:00+00:00" }, { "id": "01a0877d-2735-7398-8abf-d83d626af9bf", "title": "Handling Touch Events", "url": "http://giovanni.curlybrackets.it/adventure-game/2020/02/09/handling-touch-events.html", "published_at": "2020-02-09T00:00:00+00:00" }, { "id": "01a0877d-2735-7398-8abf-d83d62e210d6", "title": "Introduction to Shape Nodes - The Cursor", "url": "http://giovanni.curlybrackets.it/adventure-game/2020/01/25/introduction-to-shape-nodes-the-cursor.html", "published_at": "2020-01-25T00:00:00+00:00" }, { "id": "01a0877d-2735-7398-8abf-d83d6330741c", "title": "Getting Started with SpriteKit", "url": "http://giovanni.curlybrackets.it/adventure-game/2020/01/18/getting-started-with-spritekit.html", "published_at": "2020-01-18T00:00:00+00:00" }, { "id": "01a0877d-2735-7398-8abf-d83d639d4ad6", "title": "Creating an Adventure Game Using Swift and SpriteKit - Introduction", "url": "http://giovanni.curlybrackets.it/adventure-game/2020/01/17/intro.html", "published_at": "2020-01-17T00:00:00+00:00" }, { "id": "01a0877d-2735-7398-8abf-d83d640dae47", "title": "Contributing to Python - Newcomer Feedback", "url": "http://giovanni.curlybrackets.it/2019/07/30/contributing-to-python-newcomer-feedback.html", "published_at": "2019-07-30T00:00:00+00:00" }, { "id": "01a0877d-2735-7398-8abf-d83d64b1da79", "title": "scotty-format: A Response Format Helper for the Scotty Web Framework", "url": "http://giovanni.curlybrackets.it/2016/11/27/scotty-format-response-format-helper-for-scotty.html", "published_at": "2016-11-27T00:00:00+00:00" }, { "id": "01a0877d-2735-7398-8abf-d83d6565922b", "title": "Collect and Display Airbrake Error Metrics with Ruby", "url": "http://giovanni.curlybrackets.it/2016/06/11/airbrake-metrics.html", "published_at": "2016-06-11T00:00:00+00:00" }, { "id": "01a0877d-2735-7398-8abf-d83d65de3105", "title": "A Terminal Music Player Based on afplay Written in Haskell", "url": "http://giovanni.curlybrackets.it/2016/06/04/a-terminal-music-player-based-on-afplay-written-in-haskell.html", "published_at": "2016-06-04T00:00:00+00:00" }, { "id": "01a0877d-2735-7398-8abf-d83d66158b6f", "title": "Technical Interviews", "url": "http://giovanni.curlybrackets.it/2016/05/04/technical-interviews.html", "published_at": "2016-05-04T00:00:00+00:00" }, { "id": "01a0877d-2735-7398-8abf-d83d666392c7", "title": "The Daily Checklist: Visualizing One Year of 'Things'", "url": "http://giovanni.curlybrackets.it/2016/04/25/the-daily-checklist.html", "published_at": "2016-04-25T00:00:00+00:00" }, { "id": "01a0877d-2735-7398-8abf-d83d66db35bb", "title": "Android Experiments: Hashire Hamusuta Post-Mortem", "url": "http://giovanni.curlybrackets.it/2016/04/16/android-experiment-contest-post-mortem.html", "published_at": "2016-04-16T00:00:00+00:00" }, { "id": "01a0877d-2735-7398-8abf-d83d67588376", "title": "SQLite3 Readable Output", "url": "http://giovanni.curlybrackets.it/2016/02/26/sqlite3-readable-output.html", "published_at": "2016-02-26T00:00:00+00:00" }, { "id": "01a0877d-2735-7398-8abf-d83d6781a625", "title": "Notify Sucker Punch Background Exceptions Using Exception Notification", "url": "http://giovanni.curlybrackets.it/2016/02/25/notify-sucker-punch-background-exceptions-using-exception-notification.html", "published_at": "2016-02-25T00:00:00+00:00" }, { "id": "01a0877d-2735-7398-8abf-d83d67bd6454", "title": "Choosing a Good Name for Your Projects", "url": "http://giovanni.curlybrackets.it/adventure-jam/2015/04/11/choosing-a-good-name-for-your-projects.html", "published_at": "2015-04-11T00:00:00+00:00" }, { "id": "01a0877d-2735-7398-8abf-d83d688b745d", "title": "A Basic Collaboration Workflow on Gist", "url": "http://giovanni.curlybrackets.it/2015/04/06/a-basic-collaboration-workflow-on-gist.html", "published_at": "2015-04-06T00:00:00+00:00" }, { "id": "01a0877d-2735-7398-8abf-d83d691177e1", "title": "AdventureJam Time!", "url": "http://giovanni.curlybrackets.it/adventure-jam/2015/04/05/it-s-adventure-jam-time.html", "published_at": "2015-04-05T00:00:00+00:00" }, { "id": "01a0877d-2735-7398-8abf-d83d69521b5f", "title": "Blog Redesign", "url": "http://giovanni.curlybrackets.it/2015/04/04/blog-redesign.html", "published_at": "2015-04-04T00:00:00+00:00" }, { "id": "01a0877d-2735-7398-8abf-d83d6a17dc9f", "title": "How to Make Games with gist-txt", "url": "http://giovanni.curlybrackets.it/2015/03/31/how-to-make-games-with-gist-txt.html", "published_at": "2015-03-31T00:00:00+00:00" }, { "id": "01a0877d-2735-7398-8abf-d83d6aed9c25", "title": "Update on gist-txt: A Text Adventure Engine", "url": "http://giovanni.curlybrackets.it/2015/03/16/update-about-gist-txt-a-text-adventure-engine.html", "published_at": "2015-03-16T00:00:00+00:00" }, { "id": "01a0877d-2735-7398-8abf-d83d6b485919", "title": "A Minimal Tool to Create Text Adventures", "url": "http://giovanni.curlybrackets.it/2015/03/05/a-minimal-tool-to-create-text-adventures.html", "published_at": "2015-03-05T00:00:00+00:00" }, { "id": "01a0877d-2735-7398-8abf-d83d6b60ba83", "title": "Ludum Dare Post-Mortem", "url": "http://giovanni.curlybrackets.it/2013/12/20/ludum-dare-post-mortem.html", "published_at": "2013-12-20T00:00:00+00:00" }, { "id": "01a0877d-2735-7398-8abf-d83d6c136bd4", "title": "jQuery Instagram Plugin Redesign", "url": "http://giovanni.curlybrackets.it/2013/08/14/jquery-instagram-plugin-redesign.html", "published_at": "2013-08-14T00:00:00+00:00" }, { "id": "01a0877d-2735-7398-8abf-d83d6cff02de", "title": "Live Coding with ChucK on Ubuntu", "url": "http://giovanni.curlybrackets.it/2013/02/20/live-coding-with-chuck-on-ubuntu.html", "published_at": "2013-02-20T00:00:00+00:00" }, { "id": "01a0877d-2735-7398-8abf-d83d6d8ba548", "title": "Restart Gnome on Ubuntu 12 (Precise Pangolin)", "url": "http://giovanni.curlybrackets.it/2012/07/03/restart-gnome-on-ubuntu-12-precise-pangolin.html", "published_at": "2012-07-03T00:00:00+00:00" }, { "id": "01a0877d-2735-7398-8abf-d83d6e188313", "title": "ASCII Art API: Birdie at EuRuKo Golf", "url": "http://giovanni.curlybrackets.it/2012/05/17/ascii-art-api-birdie-at-euruko-golf.html", "published_at": "2012-05-17T00:00:00+00:00" }, { "id": "01a0877d-2735-7398-8abf-d83d6f00efc3", "title": "Migrate Heroku Shared Database (Postgres) to Amazon RDS (MySQL)", "url": "http://giovanni.curlybrackets.it/2012/03/12/migrate-heroku-shared-database-postgres-to-amazon-rds-mysql.html", "published_at": "2012-03-12T00:00:00+00:00" }, { "id": "01a0877d-2735-7398-8abf-d83d6f0e08c8", "title": "Updating a GitHub Fork", "url": "http://giovanni.curlybrackets.it/2011/12/07/update-github-fork.html", "published_at": "2011-12-07T00:00:00+00:00" }, { "id": "01a0877d-2735-7398-8abf-d83d6fa05c4e", "title": "Fix Git Commit Message", "url": "http://giovanni.curlybrackets.it/2011/12/05/fix-git-commit-message.html", "published_at": "2011-12-05T00:00:00+00:00" }, { "id": "01a0877d-2735-7398-8abf-d83d704519ff", "title": "Git Stash", "url": "http://giovanni.curlybrackets.it/2011/12/04/git-stash.html", "published_at": "2011-12-04T00:00:00+00:00" }, { "id": "01a0877d-2735-7398-8abf-d83d7087ffe8", "title": "5 Lessons Learned by Jason Goldberg That I Agree With", "url": "http://giovanni.curlybrackets.it/2011/10/16/helpful-things-learned-by-jason-goldberg.html", "published_at": "2011-10-16T00:00:00+00:00" }, { "id": "01a0877d-2735-7398-8abf-d83d70e9519c", "title": "Node.js Knockout - FBSE: Facebook Stock Exchange", "url": "http://giovanni.curlybrackets.it/2011/08/30/fbse-constructive-failure.html", "published_at": "2011-08-30T00:00:00+00:00" }, { "id": "01a0877d-2735-7398-8abf-d83d71d4de20", "title": "La Roba", "url": "http://giovanni.curlybrackets.it/2009/08/23/la-roba.html", "published_at": "2009-08-23T00:00:00+00:00" }, { "id": "01a0877d-2735-7398-8abf-d83d729abf1e", "title": "Thounds: What Music Are You Thinking?", "url": "http://giovanni.curlybrackets.it/2009/08/20/thounds-what-music-are-you-thinking.html", "published_at": "2009-08-20T00:00:00+00:00" }, { "id": "01a0877d-2735-7398-8abf-d83d734f92ef", "title": "Hi Everyone!", "url": "http://giovanni.curlybrackets.it/2009/08/17/hi-everybody.html", "published_at": "2009-08-17T00:00:00+00:00" } ] posts Claim your blog
Back to giovanni.curlybrackets.it
Blog · corpus.blog/blogs/giovanni.curlybrackets.it/posts

giovanni.curlybrackets.it

giovanni.curlybrackets.it

2026

2025

2020

2019

2016

2015

2013

2012

2011

2009