{
  "APP": {
    "TITLE": "Playground",
    "COPYRIGHT": "Images protected by copyright, no use without permission!"
  },
  "TOPBAR": {
    "ABOUT": "About me",
    "IMPRINT": "Impressum",
    "PROJECTS": "Projects",
    "ALGORITHMS": "Algorithms",
    "SETTINGS": "Settings",
    "LANGUAGE": "Language",
    "APPEARANCE": "Appearance"
  },
  "THEME": { "LIGHT": "Light", "DARK": "Dark" },
  "LANG": { "LABEL": "Language", "EN": "English", "DE": "Deutsch" },
  "ABOUT": {
    "ALT": { "PROFILE": "Profile photo of Andreas Dahm" },
    "HELLO": "Hello, I’m Andreas.",
    "LEAD": "I first discovered my interest in software development during my training as an application developer. After completing my degree in Applied Computer Science at FH Bingen, I have been working continuously as a software developer since 2010. During this time, I have gained experience in various areas, including 3D simulation and modern web applications. I also enjoy working on personal software projects, particularly in game development and algorithmic topics. Thank you for stopping by!",
    "ROLE": "Senior Software Developer / Full-Stack Developer / Software Architect",
    "LOCATION": "Munich · Remote",
    "DOWNLOAD_CV": "Download CV",
    "VIEW_PROJECTS": "View projects",
    "CONTACT_ME": "Contact me",
    "SECTION": {
      "SKILLS": "Skills & Stack",
      "PRIMARY": "Core",
      "TOOLSET": "Toolset",
      "EXPERIENCE": "Experience",
      "PROJECTS": "Projects",
      "EDUCATION": "Education"
    },
    "SKILLS": {
      "JAVA": "Java 8/Java 21+",
      "SPRING": "Spring Boot 2/3",
      "ANGULAR": "Angular 20+",
      "DOCKER": "Docker",
      "UNITY": "Unity",
      "PYTHON": "Python",
      "CSHARP": "C#",
      "TYPESCRIPT": "TypeScript"
    },
    "TOOLS": {
      "GIT": "Git",
      "GITHUB": "Github",
      "GITLAB": "Gitlab",
      "JENKINS": "Jenkins",
      "K8S": "Kubernetes / k3d",
      "POSTGRES": "PostgreSQL",
      "MONGO": "MongoDB",
      "GRAFANA": "Grafana/Prometheus"
    },
    "XP": {
      "COMPANY8": {
        "COMPANY": "Teraport GmbH",
        "ROLE": "Senior Software Developer / Architect",
        "TIME": "Feb. 2024 – now",
        "HIGHLIGHTS": {
          "P1": "Architecture and implementation of database connectivity using Hibernate 6.x.",
          "P2": "Design and development of a full-stack web application for collision analysis (Angular + Spring Boot + Docker).",
          "P3": "Development of a cost analysis tool called MIDO."
        }
      },
      "COMPANY7": {
        "COMPANY": "ColorDigital GmbH",
        "ROLE": "Lead Software Developer",
        "TIME": "Mar. 2023 – Dec. 2023",
        "HIGHLIGHTS": {
          "P1": "Planning a new cloud architecture to migrate a large legacy monolith to a modern microservice-based platform.",
          "P2": "Led the development team of three to four backend engineers.",
          "P3": "Collaborated with partners and customers on integrating their systems with the DMIx."
        }
      },
      "COMPANY6": {
        "COMPANY": "ColorDigital GmbH",
        "ROLE": "Senior Software Developer",
        "TIME": "Mar. 2021 – Mar. 2023",
        "HIGHLIGHTS": {
          "P1": "Worked on the DMIx core cloud, including the implementation of an Elasticsearch-based real-time search module.",
          "P2": "Implementation of a new browser tool called 'Moodboard' (Node.js + Vue.js).",
          "P3": "Development of 'PAX', a tool for data exchange between the DMIx cloud and customer PLM/ERP systems, including CI/CD integration."
        }
      },
      "COMPANY5": {
        "COMPANY": "Assyst GmbH",
        "ROLE": "Team leadership",
        "TIME": "Sep. 2015 – Feb. 2021",
        "HIGHLIGHTS": {
          "P1": "Team lead of the Vidya software department, including disciplinary responsibility and interviews.",
          "P2": "Led several projects with external partners and freelancers.",
          "P3": "Managed strategic initiatives in 3D software development."
        }
      },
      "COMPANY4": {
        "COMPANY": "Assyst GmbH",
        "ROLE": "Software engineer",
        "TIME": "Apr. 2010 – Feb. 2021",
        "HIGHLIGHTS": {
          "P1": "Worked on core technologies such as algorithms, simulation, rendering, and collision detection.",
          "P2": "Used technologies including Java, OpenCL, OpenGL, GLSL shaders, C++, and REST interfaces.",
          "P3": "Participated in national and international research projects (EU7 and ZIM)."
        }
      },
      "COMPANY3": {
        "COMPANY": "Assyst GmbH",
        "ROLE": "Internship and Diploma",
        "TIME": "Apr. 2009 – Apr. 2010",
        "HIGHLIGHTS": {
          "P1": "Implemented production features in the real-time cloth simulation software Vidya.",
          "P2": "Conducted research and literature review for the diploma thesis.",
          "P3": "Successfully implemented the diploma topic in Vidya."
        }
      },
      "COMPANY2": {
        "COMPANY": "TH Bingen (University of Applied Sciences)",
        "ROLE": "Tutorial for fundamentals of Java programming",
        "TIME": "Apr. 2008 – Aug. 2008",
        "HIGHLIGHTS": {
          "P1": "Preparation of practical and theoretical course material.",
          "P2": "Held a 20-hour lecture series for the bioinformatics programme.",
          "P3": "Provided assistance during practical programming exercises."
        }
      },
      "COMPANY1": {
        "COMPANY": "TH Bingen (University of Applied Sciences)",
        "ROLE": "Research Asssitent",
        "TIME": "Oct. 2007 – Apr. 2008",
        "HIGHLIGHTS": {
          "P1": "Evaluation of various Web 2.0 technologies.",
          "P2": "Implementation of a Java-based interface for Microsoft Excel.",
          "P3": "Integration of the MIT Exhibit framework and preparation for CeBIT 2008."
        }
      },
      "COMPANY0": {
        "COMPANY": "Chamaeleon AG",
        "ROLE": "Training as an IT specialist in application development",
        "TIME": "Jul. 2002 – Jun. 2005",
        "HIGHLIGHTS": {
          "P1": "Development in PERL, PHP and ASP.",
          "P2": "Porting, maintenance and reengineering of existing software.",
          "P3": "Regular performance of system tests and quality controls, as well as their documentation."
        }
      }
    },
    "PROJECT": {
      "P2": {
        "TITLE": "Playground",
        "DESCRIPTION": "This project is, as the name suggests, a personal playground that will grow over time. It showcases various private projects I’m working on and documents their progress, key ideas, and milestones.",
        "LINK_EXTERNAL": "andreas-dahm.eu",
        "LINK_INTERNAL": "Project details",
        "HIGHLIGHTS": {
          "P1": "Using modern technologies and CI/CD pipelines (Angular 20+, Spring Boot 4, GitHub).",
          "P2": "Showcasing personal projects and improving algorithmic skills over time.",
          "P3": "Deepening knowledge in JavaScript/TypeScript, Angular, Spring Boot and related technologies through hands-on practice."
        }
      },
      "P1": {
        "TITLE": "El Mucho",
        "DESCRIPTION": "This is my first published game on Steam. I developed it together with my brother, fulfilling one of my personal goals: creating and releasing my own video game.",
        "LINK_EXTERNAL": "Steam Store",
        "LINK_INTERNAL": "Project details",
        "HIGHLIGHTS": {
          "P1": "Publishing a game on Steam and integrating the Steam API.",
          "P2": "Designing, planning and developing a complete game from scratch.",
          "P3": "Implementing complex algorithms, including a custom A* pathfinding system and game AI logic."
        }
      },
      "P0": {
        "TITLE": "Game Jams",
        "DESCRIPTION": "This section showcases several of my past game jam creations. Game jams are a great way to explore new game ideas and quickly validate whether a game loop works. The tight time constraints force you to focus, and it’s always exciting to see what can be achieved within such a short timeframe.",
        "LINK_EXTERNAL": "Itch.io Collection",
        "LINK_INTERNAL": "Project details",
        "HIGHLIGHTS": {
          "P1": "Planning a realistic project scope with a team that can be built within 48 hours.",
          "P2": "Learning to stay focused and work effectively under strict time constraints.",
          "P3": "Experiencing the joy of creating a playable game in a short timeframe and seeing others enjoy it."
        }
      },
      "DIPLOMA": {
        "TITLE": "Diploma thesis - Collision detection and handling of complex garments.",
        "DESCRIPTION": "The thesis deals with the detection and handling of collisions between and within individual items of clothing in real time. This is particularly challenging due to the flexibility of fabrics and their varying properties.",
        "LINK_INTERNAL": "Project details",
        "HIGHLIGHTS": {
          "P1": "Real-time handling of collision detection and response.",
          "P2": "Understanding and evaluating scientific papers.",
          "P3": "Adaptation and further development of previous research work."
        }
      },
      "TRIBBLE": {
        "TITLE": "Homeserver 'Tribble'",
        "DESCRIPTION": "This project is about setting up and maintaining my own homeserver. It runs several Docker containers like Gitea, Jellyfin, and more. It's a great learning experience in self-hosting and system administration.",
        "LINK_INTERNAL": "Project details",
        "HIGHLIGHTS": {
          "P1": "Self-hosting of various services using Docker.",
          "P2": "CI/CD pipeline for the personal website using Gitea.",
          "P3": "Secure remote access with Tailscale and Traefik."
        }
      }
    },
    "EDUCATION": {
      "E6": {
        "WHERE": "FH Bingen (University of Applied Sciences)",
        "WHEN": "2006 – 2010",
        "WHAT": "Diploma (FH), Applied Computer Science (final grade 1.4)"
      },
      "E5": {
        "WHERE": "FH Koblenz (University of Applied Sciences)",
        "WHEN": "2005 – 2006",
        "WHAT": "1 semester of Engineering Informatics"
      },
      "E4": {
        "WHERE": "BBS Montabaur",
        "WHEN": "2002 – 2005",
        "WHAT": "Apprenticeship as IT Specialist for Application Development"
      },
      "E3": {
        "WHERE": "BBS Andernach – Higher Vocational School (Computer Science)",
        "WHEN": "2000 – 2002",
        "WHAT": "University entrance qualification (Fachhochschulreife)"
      },
      "E2": {
        "WHERE": "BBS Andernach – Vocational School for Technology (Electrical Engineering)",
        "WHEN": "1998 – 2000",
        "WHAT": "Secondary school certificate (Realschulabschluss)"
      },
      "E1": {
        "WHERE": "Hauptschule Hinter Burg Mayen (Albert Schweitzer Realschule Plus)",
        "WHEN": "1995 – 1998",
        "WHAT": "Lower secondary school certificate (Hauptschulabschluss)"
      },
      "E0": {
        "WHERE": "Albert Schweitzer Realschule Mayen",
        "WHEN": "1993 – 1995",
        "WHAT": "No degree (transferred to lower secondary school)"
      }
    }
  },
  "PROJECTS": {
    "DOWNLOAD": "Download",
    "READ_MORE": "Read More",
    "LINK_TO_PROJECT": "To the project",
    "CLOSE": "Close",
    "PLAYGROUND": {
      "TITLE": "Playground Website",
      "SHORT_DESCRIPTION": "This is about this website.",
      "INTRODUCTION": "This project was mainly started as a kind of “playground”, hence the name. The plan is to expand the site over time. New projects will appear here, or I will continue to expand the site itself because I want to try out new things in the field of web technologies.",
      "BULLET_1": "Using modern technologies and CI/CD pipelines (Angular 20+, Spring Boot 4, GitHub).",
      "BULLET_2": "Showcasing personal projects and improving algorithmic skills over time.",
      "BULLET_3": "Deepening knowledge in JavaScript/TypeScript, Angular, Spring Boot and related technologies through hands-on practice.",
      "BULLET_4": "The site is open source and available on GitHub."
    },
    "TRIBBLE": {
      "TITLE": "Trouble with Tribble",
      "SHORT_DESCRIPTION": "A project detailing the setup and maintenance of a home server running various Docker containers for self-hosting services.",
      "INTRODUCTION": "This project documents the journey of setting up a personal home server, nicknamed \"Tribble\". It involves installing Ubuntu Server and containerizing services like Gitea for version control, Jellyfin for media streaming, and AdGuard Home for network-wide ad-blocking. The server is connected via Traefik as a reverse proxy and Tailscale for secure networking, enabling the self-hosted CI/CD pipeline for this website.",
      "BULLET_1": "Self-hosting of various services using Docker.",
      "BULLET_2": "CI/CD pipeline for the personal website using Gitea.",
      "BULLET_3": "Secure remote access with Tailscale and Traefik.",
      "BULLET_4": "Network-wide ad-blocking with AdGuard Home."
    },
    "EL_MUCHO": {
      "TITLE": "El Mucho",
      "SHORT_DESCRIPTION": "This is about my first game on steam.",
      "INTRODUCTION": "El Mucho is a turn-based tactical RPG set in a fictional world called Liberika. It is inspired by old classics such as Langrisser, also known as Warsong. El Mucho is about defending the world against attacks from nasty monsters.",
      "BULLET_1": "Publishing a game on Steam and integrating the Steam API.",
      "BULLET_2": "Designing, planning and developing a complete game from scratch.",
      "BULLET_3": "Implementing complex algorithms, including a custom A* pathfinding system and game AI logic.",
      "BULLET_4": "The game was developed with Unity and C#."
    },
    "GAME_JAMS": {
      "TITLE": "Game Jams",
      "SHORT_DESCRIPTION": "This is about my participation at several game jams.",
      "INTRODUCTION": "Since I am interested in game development, game jams are ideal for me to focus on new ideas and develop prototypes to see whether game ideas work or not. I have participated in several game jams over the past few years and summarise my experiences here.",
      "BULLET_1": "Planning a realistic project scope with a team that can be built within 48 hours.",
      "BULLET_2": "Learning to stay focused and work effectively under strict time constraints.",
      "BULLET_3": "Experiencing the joy of creating a playable game in a short timeframe and seeing others enjoy it.",
      "BULLET_4": "All projects are available and playable on Itch.io."
    },
    "DIPLOMA": {
      "TITLE": "Diploma thesis",
      "SHORT_DESCRIPTION": "Collision detection and handling of complex garments.",
      "INTRODUCTION": "The thesis deals with the detection and handling of collisions between and within individual items of clothing in real time. This is particularly challenging due to the flexibility of fabrics and their varying properties.",
      "BULLET_1": "Real-time handling of collision detection and response.",
      "BULLET_2": "Understanding and evaluating scientific papers.",
      "BULLET_3": "Adaptation and further development of previous research work.",
      "BULLET_4": "The thesis was written with C++ and OpenGL and integrated into the Vidya software."
    }
  },
  "IMPRINT": {
    "TITLE" : "Imprint",
    "PARAGRAPH": "Information pursuant to Section 5 DDG",
    "COUNTRY": "Germany",
    "CONTACT": "Contact"
  },
  "PATHFINDING": {
    "TITLE": "Pathfinding Algorithms",
    "START_NODE": "Start Node",
    "END_NODE": "End Node",
    "WALL": "Wall",
    "CLEAR_NODE": "Clear",
    "DIJKSTRA": "Start Dijkstra",
    "ASTAR": "Start A*",
    "NORMAL_CASE": "Test Scenario",
    "EDGE_CASE": "A* Edge Case Scenario",
    "RANDOM_CASE": "Random Case",
    "CLEAR_BOARD": "Empty Board",
    "VISITED": "Visited",
    "PATH": "Path",
    "PATH_LENGTH": "Path length",
    "EXECUTION_TIME": "Execution Time",
    "EXPLANATION": {
      "TITLE": "Algorithms",
      "DIJKSTRA_EXPLANATION": " is guaranteed to find the shortest path if all edge costs are non-negative. Advantage: optimal and without heuristics. Disadvantage: often visits a large number of nodes (can be slower for large grids).",
      "ASTAR_EXPLANATION": " extends Dijkstra with a heuristic (e.g. Manhattan distance) and can therefore search in a much more targeted manner. Advantage: often significantly faster with good heuristics; with permissible heuristics, the path remains optimal. Disadvantage: highly dependent on heuristics (poor heuristics ≈ Dijkstra).",
      "DISCLAIMER": "This A* implementation is deliberately kept simple. It only moves in four directions and each step costs 1. The heuristic is minimal and only serves to demonstrate the principle of A* compared to Dijkstra. The goal is not an optimal or production-ready A* algorithm, but a clear visualisation of how heuristics can speed up the search."
    },
    "ALERT": {
      "START_END_NODES": "Please select a start and end node before running the algorithm."
    }
  },
  "SORTING": {
    "TITLE": "Sorting Algorithms",
    "ALGORITHM": "Algorithm",
    "START": "Start Sorting",
    "RESET": "Reset",
    "GENERATE_NEW_ARRAY": "Generate New Array",
    "EXECUTION_TIME": "Execution Time",
    "ARRAY_SIZE": "Number of Bars",
    "EXPLANATION": {
      "TITLE": "Algorithms",
      "BUBBLE_SORT_EXPLANATION": "repeatedly compares adjacent elements and swaps them if they are in the wrong order. The largest element \"bubbles\" to the end of the list like an air bubble. Advantage: Extremely simple to understand and implement; detects already sorted lists very quickly. Disadvantage: Very inefficient for large lists (runtime O(n²)). Rarely used in practice.",
      "QUICK_SORT_EXPLANATION": "follows the \"divide and conquer\" principle. A \"pivot\" element is selected, and the array is divided into two halves: elements smaller than the pivot and elements larger than the pivot. Advantage: On average one of the fastest sorting algorithms (O(n log n)); requires no additional memory (in-place). Disadvantage: Slow in the worst case (O(n²)) if the pivot is chosen poorly. Is not stable (changes order of equal elements).",
      "HEAP_SORT_EXPLANATION": "organizes the data initially into a special tree structure (Binary Heap). The largest element (the root) is extracted and sorted to the end, then the tree is repaired. Advantage: Guarantees a fast runtime of O(n log n), even in the worst case. Requires almost no additional memory. Disadvantage: Often slightly slower than Quick Sort in practice because the jumps in memory (heap structure) utilize the CPU cache less effectively.",
      "DISCLAIMER": "The choice of the \"best\" sorting algorithm depends heavily on the data and the constraints. In computer science, three scenarios are often considered:",
      "DISCLAIMER_1": "Best Case: The data is already nearly sorted (Bubble Sort shines here, for example).",
      "DISCLAIMER_2": "Average Case: The statistical norm.",
      "DISCLAIMER_3": "Worst Case: The data is arranged in the most unfavorable way possible (Quick Sort performs poorly here without optimization, while Heap Sort remains stable).",
      "DISCLAIMER_4": "Additionally, there is almost always a Time-Space Trade-off: Algorithms that are extremely fast (like Merge Sort) often require a lot of additional working memory. Algorithms that work directly in existing memory (like Heap Sort) save space but are sometimes more complex or slightly slower. Thus, there is no \"one-size-fits-all\" solution."
    }
  },
  "GOL": {
    "TITLE": "Conway's Game of Life",
    "START": "Start",
    "PAUSE": "Pause",
    "RANDOM_SCENE": "Random",
    "EMPTY_SCENE": "Empty",
    "SIMPLE_SCENE": "Glider",
    "PULSAR_SCENE": "Pulsar",
    "GUN_SCENE": "Gun",
    "ALIVE": "Alive",
    "DEAD": "Empty",
    "SPEED": "Time per Generation",
    "EXPLANATION": {
      "TITLE": "Explanation",
      "EXPLANATION": "The game proceeds step by step. First, an initial generation of living cells is defined on the playing field. From the current generation (the overall state of the playing field), the next generation is determined. The state of each individual cell in the next generation is derived from simple rules based on its current state and the current states of its eight neighboring cells (Moore neighborhood).",
      "DISCLAIMER": "According to Conway’s original rule, a cell is alive in the next round if exactly three cells are alive in its 3x3 neighborhood beforehand, counting itself only if necessary, that is:",
      "DISCLAIMER_1": "A living cell remains alive in the next generation if it has either two or three living neighbors.",
      "DISCLAIMER_2": "A dead cell is “born” (is alive in the next generation) if it has exactly three living neighbors.",
      "DISCLAIMER_3": "A living cell “dies” (is dead in the next generation) if it has fewer than two (underpopulation) or more than three (overpopulation) living neighbors.",
      "DISCLAIMER_4": "A dead cell remains dead if it does not have exactly three living neighbors."
    }
  },
  "LABYRINTH": {
    "TITLE": "Labyrinth Generation",
    "PRIM": "Generate Prim's Labyrinth",
    "KRUSKAL": "Generate Kruskal's Labyrinth",
    "EXPLANATION": {
      "TITLE": "Algorithms",
      "PRIM_EXPLANATION": "starts at a random point and expands the labyrinth by always selecting a random neighboring wall of an already visited cell and opening it. Advantage: Produces very uniform, natural-looking labyrinths with many short dead ends. Visually, it appears like organic growth from a central point.",
      "KRUSKAL_EXPLANATION": "considers all walls of the grid as potential paths. It randomly selects walls and opens them only if the two adjacent cells are not yet connected (preventing cycles). Advantage: Produces a very complex labyrinth with many long, winding paths. Visually, it is engaging because the labyrinth emerges simultaneously in many places and eventually merges into a whole.",
      "DISCLAIMER": "Both algorithms are based on the principle of the 'Minimum Spanning Tree'. This means for your labyrinth:",
      "DISCLAIMER_1": "Perfect labyrinth: There are no closed loops – every point is reachable, but there is always exactly one path between any two points.",
      "DISCLAIMER_2": "Reachability: Since it is a spanning tree, every cell in the grid is guaranteed to be part of the labyrinth; there are no isolated areas.",
      "DISCLAIMER_3": "Randomness: By weighting the edges with random values, each run produces completely new, unique structures.",
      "DISCLAIMER_4": "Application: Such labyrinths are the perfect test environment for pathfinding algorithms such as Dijkstra or A*."
    }
  },
  "FRACTAL": {
    "TITLE": "Fractals",
    "ALGORITHM": "Algorithms",
    "RESET": "Reset",
    "COLOR_SCHEME": "Color Scheme",
    "MAX_ITERATION": "Max. Resolution",
    "EXPLANATION": {
      "TITLE": "Mathematical Art",
      "MANDELBROT_EXPLANATION": "is based on the iterative formula 'z_{n+1} = z_n^2 + c'. It checks for every point in the complex plane whether the sequence remains stable or escapes to infinity. Advantage: Known as the 'Apple Man', it is the mother of all fractals, offering infinite variety and self-similar structures to zoom into forever.",
      "JULIA_EXPLANATION": "uses the same formula as Mandelbrot but fixes the parameter 'c' and varies the starting value. Depending on the choice of 'c', it creates delicate, cloud-like structures or disconnected 'dust'. Advantage: Allows for immense aesthetic variance, as every coordinate in the Mandelbrot set produces its own unique Julia fractal.",
      "NEWTON_EXPLANATION": "is created by visualizing Newton's method for finding roots of a complex function. Each pixel is colored based on which root the algorithm converges to. Advantage: Produces fascinating star-shaped symmetries and complex boundaries where the attraction basins of the roots meet in a chaotic dance.",
      "BURNING_SHIP_EXPLANATION": "is a variation of the Mandelbrot set where the absolute values of the real and imaginary parts are taken before each iteration: '(|Re(z)| + i|Im(z)|)^2 + c'. Advantage: Generates a striking, asymmetrical structure resembling a ship on fire. It feels more 'mechanical' and darker compared to the classical sets.",
      "DISCLAIMER": "All these fractals are based on the principle of iteration and the butterfly effect. This means for your visualization:",
      "DISCLAIMER_1": "Infinite Depth: No matter how far you zoom in, new complex structures appear that often resemble the whole (self-similarity).",
      "DISCLAIMER_2": "Escape-Time Algorithm: Colors usually represent how quickly a sequence exceeds a certain threshold—the faster it escapes, the 'hotter' or brighter the color.",
      "DISCLAIMER_3": "Complex Numbers: Calculations don't happen in a standard coordinate system, but in the complex plane using real and imaginary components.",
      "DISCLAIMER_4": "Computational Load: Since hundreds of calculations are performed for every single pixel, fractals are a classic benchmark for GPU and processor performance.",
      "DISCLAIMER_BOTTOM": "Graphics cards calculate with 32-bit floating point numbers (float) by default. These only have about 7 digits of accuracy. At very high zoom levels (> 100,000), the difference between two pixels is so tiny that the graphics card can no longer display it. It calculates exactly the same value for 10 pixels next to each other -> you see blocks or stair steps."
    }
  },
  "FRACTAL3D": {
    "TITLE": "3D Fractals",
    "ALGORITHM": "Algorithms",
    "MANDELBULB": "Mandelbulb",
    "MANDELBOX": "Mandelbox",
    "JULIA": "Julia",
    "EXPLANATION": {
      "TITLE": "3D Fractal Worlds",
      "MANDELBULB_EXPLANATION": "is considered the 'Holy Grail' of 3D fractals. Since complex numbers are only two-dimensional, this fractal uses spherical coordinates and high powers (usually v^8 + c) to project the Mandelbrot set into 3D space. Benefit: Creates an organic, extremely detailed structure reminiscent of plants, coral reefs, or alien landscapes.",
      "MANDELBOX_EXPLANATION": "is based not on smooth curves, but on geometric 'folding' and scaling (Box-Folding & Sphere-Folding). Space is repeatedly folded and mirrored like origami. Benefit: Produces strictly geometric, mechanical-looking structures that resemble endless futuristic cities, the Borg cube, or complex sci-fi architecture.",
      "JULIA_EXPLANATION": "is the 3D counterpart to the 2D Julia set. While the Mandelbulb is a 'map' of all fractals, here we fix the parameter 'c' and vary the starting point and it changes over time. Benefit: Unlike the solid Mandelbulb, Julia Bulbs are often hollow, forming complex tunnel systems or bubble-like structures perfect for flying through with the camera.",
      "DISCLAIMER": "This visualization uses a technique called 'Raymarching' (Sphere Tracing). This means:",
      "DISCLAIMER_1": "No Polygons: There are no triangles or meshes. The shape is calculated mathematically for every pixel in real-time.",
      "DISCLAIMER_2": "Distance Estimation: The algorithm 'marches' light rays forward by calculating the safe distance to the nearest object without hitting it immediately.",
      "DISCLAIMER_3": "Infinite Detail: Since the surface is mathematically defined, it never pixelates when zooming in – new structures always emerge.",
      "DISCLAIMER_4": "Light & Shadow: To visualize depth, light reflections and shadows (Ambient Occlusion) are simulated based on the curvature of the formula."
    }
  },
  "PATH_TRACING": {
    "TITLE": "Path Tracing"
  },
  "ALGORITHM": {
    "TITLE": "Algorithms",
    "PATHFINDING": {
      "TITLE": "Pathfinding",
      "DESCRIPTION": "Comparing of Dijkstra vs. A*."
    },
    "SORTING": {
      "TITLE": "Sorting",
      "DESCRIPTION": "Visualizing various sorting algorithms."
    },
    "GOL": {
      "TITLE": "Conway's Game of Life",
      "DESCRIPTION": "The Game of Life is a cellular automaton devised by the British mathematician John Horton Conway in 1970."
    },
    "LABYRINTH": {
      "TITLE": "Maze Generation",
      "DESCRIPTION": "Visualizing various maze generation algorithms."
    },
    "FRACTAL": {
      "TITLE": "Fractals",
      "DESCRIPTION": "Visualisation of complex geometric patterns that resemble each other on increasingly smaller scales (self-similarity)."
    },
    "FRACTAL3D": {
      "TITLE": "Fractals 3D",
      "DESCRIPTION": "3D Visualisation of complex geometric patterns that resemble each other on increasingly smaller scales (self-similarity)."
    },
    "PATH_TRACING": {
      "TITLE": "Path Tracing ",
      "DESCRIPTION": "Path tracing is a rendering algorithm in computer graphics that simulates how light interacts with objects, voxels, and participating media to generate realistic (physically plausible) images."
    },
    "NOTE": "Note",
    "GRID_HEIGHT": "Height",
    "GRID_WIDTH": "Width"
  }
}
