{
  "schemaVersion": 1,
  "identity": {
    "name": "Anis Messas",
    "professionalTitle": "Full Stack Developer",
    "links": [
      {
        "label": "LINKEDIN",
        "href": "https://cz.linkedin.com/in/anis-messas-22a6ba177"
      }
    ],
    "canonicalWebsiteUrl": "https://www.anis-messas.com"
  },
  "pages": [
    {
      "path": "/",
      "title": "Anis Messas — Full Stack Developer",
      "description": "Portfolio home for Anis Messas, centered on ambition, intentional craft, deeper exploration, and direct ways to connect.",
      "indexable": true
    },
    {
      "path": "/about",
      "title": "About | Anis Messas — Software Engineering & Product Lifecycle",
      "description": "Software engineer focused on end-to-end product ownership across architecture, full-stack development, testing, infrastructure, CI/CD, distributed systems, performance, and applied AI.",
      "indexable": true
    },
    {
      "path": "/skills",
      "title": "Skills | Anis Messas — Engineering Capabilities",
      "description": "Technical skills across programming languages, application development, data, DevOps, architecture, messaging, performance, security, software engineering, and applied AI.",
      "indexable": true
    },
    {
      "path": "/ShortResume",
      "title": "Selected Work | Anis Messas — Engineering Cases & Research",
      "description": "Selected engineering work covering performance, deterministic systems and AI, concurrency, production algorithms, authorization, delivery, and earlier research.",
      "indexable": true
    },
    {
      "path": "/contact",
      "title": "Contact | Anis Messas",
      "description": "Contact Anis Messas through the portfolio contact form and the public contact options presented on the site.",
      "indexable": true
    }
  ],
  "about": {
    "hero": {
      "title": "I engineer software as a complete system.",
      "description": "From shaping the problem and architecture to establishing the codebase, building the system, verifying behavior, provisioning infrastructure, automating delivery, operating production, and improving it through evidence.",
      "labels": [
        "SYSTEMS THINKING",
        "PRODUCT OWNERSHIP",
        "SOFTWARE ENGINEERING"
      ]
    },
    "lifecycleStages": [
      {
        "label": "DISCOVER",
        "description": "Frame the problem, understand the domain, and make constraints explicit.",
        "capabilities": [
          "Problem framing",
          "Domain discovery",
          "Constraints"
        ]
      },
      {
        "label": "DESIGN / ARCHITECTURE",
        "description": "Define system boundaries and make deliberate engineering trade-offs.",
        "capabilities": [
          "System boundaries",
          "Trade-offs",
          "Architecture"
        ]
      },
      {
        "label": "INITIALIZE",
        "description": "Establish the repository and engineering environment without unnecessary friction.",
        "capabilities": [
          "Repository setup",
          "Environment"
        ]
      },
      {
        "label": "MODEL",
        "description": "Shape the domain, data, contracts, and APIs before implementation hardens them.",
        "capabilities": [
          "Domain modeling",
          "Data modeling",
          "Contracts",
          "APIs"
        ]
      },
      {
        "label": "BUILD",
        "description": "Implement the product across frontend, backend, services, data, and events.",
        "capabilities": [
          "Frontend",
          "Backend",
          "Services",
          "Data",
          "Events"
        ]
      },
      {
        "label": "VERIFY",
        "description": "Prove behavior with testing, quality controls, and security checks.",
        "capabilities": [
          "Testing",
          "Quality",
          "Security"
        ]
      },
      {
        "label": "PROVISION",
        "description": "Create the cloud, infrastructure-as-code, and runtime foundation the product needs.",
        "capabilities": [
          "Cloud",
          "Infrastructure as code",
          "Runtime"
        ]
      },
      {
        "label": "DELIVER",
        "description": "Automate CI/CD, release, and deployment so change can move safely to users.",
        "capabilities": [
          "CI/CD",
          "Release",
          "Deployment"
        ]
      },
      {
        "label": "OPERATE",
        "description": "Own availability, resilience, runtime behavior, and recovery in production.",
        "capabilities": [
          "Availability",
          "Resilience",
          "Runtime",
          "Recovery"
        ]
      },
      {
        "label": "OBSERVE",
        "description": "Understand system behavior, surface constraints, and reduce blockers.",
        "capabilities": [
          "Behavior",
          "Evidence",
          "Reduce blockers"
        ]
      },
      {
        "label": "EVOLVE",
        "description": "Use evidence to improve the product, adapt to change, and reduce blockers.",
        "capabilities": [
          "Refactor",
          "Scale",
          "Simplify",
          "Redesign",
          "Reduce blockers"
        ]
      }
    ],
    "impactMetrics": [
      {
        "value": "32.3×",
        "label": "fewer API/network requests",
        "context": "Request reduction delivered in a large TypeScript AI application."
      },
      {
        "value": "2–7×",
        "label": "faster",
        "context": "Speed improvement increased with collection size in the same TypeScript AI application."
      },
      {
        "value": "2×",
        "label": "throughput",
        "context": "Concurrency-safe architecture changes doubled throughput without data inconsistencies."
      },
      {
        "value": "40%",
        "label": "faster deployment",
        "context": "Infrastructure automation shortened deployment time while reducing manual configuration errors."
      },
      {
        "value": "50%",
        "label": "fewer runtime errors",
        "context": "Pre-deployment graph validation detected invalid workflow cycles before release."
      }
    ],
    "engineeringPrinciples": [
      {
        "title": "Understand before adding complexity",
        "description": "Model the problem, system, and constraints before increasing architectural complexity."
      },
      {
        "title": "Measure before optimizing",
        "description": "Use evidence to identify actual bottlenecks and validate improvements."
      },
      {
        "title": "Prefer the appropriate solution",
        "description": "Choose the approach that best fits the problem and its constraints."
      },
      {
        "title": "Design for the lifecycle",
        "description": "Software should be testable, deployable, observable, maintainable, and evolvable."
      },
      {
        "title": "Treat boundaries seriously",
        "description": "Clear system, package, and service responsibilities reduce coupling and accidental complexity."
      },
      {
        "title": "Automate repeatable work",
        "description": "Build, test, infrastructure, deployment, and maintenance should be reproducible."
      }
    ],
    "currentDirectionAreas": [
      {
        "label": "DISTRIBUTED SYSTEMS",
        "description": "Systems where correctness and throughput depend on explicit concurrency, consistency, messaging, and resilience decisions.",
        "topics": [
          "CONCURRENCY",
          "CONSISTENCY",
          "MESSAGING",
          "RESILIENCE",
          "THROUGHPUT"
        ]
      },
      {
        "label": "PERFORMANCE ENGINEERING",
        "description": "Evidence-led work on latency, bottlenecks, and resource or network efficiency.",
        "topics": [
          "PROFILING",
          "LATENCY",
          "BOTTLENECKS",
          "RESOURCE EFFICIENCY"
        ]
      },
      {
        "label": "APPLIED AI",
        "description": "AI-enabled software where model capability is one component inside a deliberate product architecture.",
        "topics": [
          "HYBRID SYSTEMS",
          "PROVIDERS",
          "ORCHESTRATION",
          "PRODUCT INTEGRATION"
        ]
      },
      {
        "label": "DEVELOPER / PLATFORM ENGINEERING",
        "description": "Tooling and delivery systems that make engineering environments reproducible and productive.",
        "topics": [
          "MONOREPOS",
          "INTERNAL TOOLING",
          "BUILD SYSTEMS",
          "CI/CD"
        ]
      },
      {
        "label": "PRODUCT ENGINEERING",
        "description": "Cross-layer ownership from architecture through operation, with measurable technical outcomes.",
        "topics": [
          "CROSS-LAYER OWNERSHIP",
          "ARCHITECTURE → OPERATION",
          "MEASURABLE OUTCOMES"
        ]
      }
    ]
  },
  "skills": {
    "programmingLanguages": [
      {
        "name": "JAVA",
        "areas": [
          "DISTRIBUTED SYSTEMS",
          "MICROSERVICES",
          "EVENT-DRIVEN ARCHITECTURE"
        ]
      },
      {
        "name": "TYPESCRIPT",
        "areas": [
          "FRONTEND",
          "BACKEND",
          "FULL STACK"
        ]
      },
      {
        "name": "PYTHON",
        "areas": [
          "PROTOTYPING",
          "AUTOMATION",
          "AI / COMPUTER VISION"
        ]
      }
    ],
    "dataLayer": [
      {
        "name": "POSTGRESQL"
      },
      {
        "name": "MYSQL"
      },
      {
        "name": "MSSQL"
      },
      {
        "name": "MONGODB"
      },
      {
        "name": "NEO4J"
      }
    ],
    "applicationDevelopment": [
      {
        "label": "FRONTEND",
        "description": "Component-driven web applications, responsive interfaces, and modern TypeScript tooling.",
        "highlights": [
          {
            "name": "REACT",
            "meta": "TypeScript · Vite"
          },
          {
            "name": "ANGULAR",
            "meta": "TypeScript · SPA"
          }
        ],
        "supportingLabel": "FOUNDATION & STYLING",
        "supporting": [
          "HTML",
          "CSS",
          "SASS",
          "TAILWIND",
          "BOOTSTRAP",
          "VITE"
        ]
      },
      {
        "label": "BACKEND",
        "ecosystem": "JAVA / SPRING",
        "description": "Java application services, persistence layers, and APIs built around Spring.",
        "highlights": [
          {
            "name": "SPRING BOOT",
            "meta": "Java · REST"
          },
          {
            "name": "HIBERNATE / JPA",
            "meta": "Persistence · Data"
          }
        ],
        "supportingLabel": "FRAMEWORKS & APIs",
        "supporting": [
          "SPRING FRAMEWORK",
          "REST API",
          "GRAPHQL"
        ]
      },
      {
        "label": "BACKEND",
        "ecosystem": "TYPESCRIPT / NODE.JS",
        "description": "TypeScript backend services, APIs, and serverless workloads across Node.js and cloud functions.",
        "highlights": [
          {
            "name": "NODE.JS",
            "meta": "TypeScript · Services"
          },
          {
            "name": "SERVERLESS",
            "meta": "Azure Functions · AWS Lambda"
          }
        ],
        "supportingLabel": "SERVERLESS & APIs",
        "supporting": [
          "AZURE FUNCTIONS",
          "AWS LAMBDA",
          "REST API",
          "GRAPHQL"
        ]
      },
      {
        "label": "BACKEND",
        "ecosystem": "PYTHON",
        "description": "Python services, automation, and prototyping used across application workflows and integrations.",
        "highlights": [
          {
            "name": "PYTHON SERVICES",
            "meta": "APIs · Automation"
          },
          {
            "name": "PROTOTYPING",
            "meta": "Integration · Tooling"
          }
        ],
        "supportingLabel": "FRAMEWORKS & APIs",
        "supporting": [
          "DJANGO",
          "FAST API"
        ]
      }
    ],
    "devOpsStages": [
      {
        "label": "CI / CD",
        "description": "Build, test, and delivery automation across different project environments.",
        "technologies": [
          "GITHUB ACTIONS",
          "AZURE PIPELINES",
          "JENKINS"
        ]
      },
      {
        "label": "CONTAINERS",
        "description": "Repeatable application packaging from local development to deployment targets.",
        "technologies": [
          "DOCKER"
        ]
      },
      {
        "label": "ORCHESTRATION",
        "description": "Container deployment, configuration, and lifecycle management.",
        "technologies": [
          "KUBERNETES",
          "HELM"
        ]
      },
      {
        "label": "CLOUD",
        "description": "Cloud environments used for application hosting, infrastructure, and delivery.",
        "technologies": [
          "AWS",
          "AZURE",
          "GOOGLE CLOUD",
          "ORACLE CLOUD"
        ]
      }
    ],
    "devOpsFoundations": [
      {
        "label": "INFRASTRUCTURE AS CODE",
        "technologies": [
          "TERRAFORM",
          "PULUMI",
          "BICEP"
        ]
      },
      {
        "label": "OPERATING ENVIRONMENT",
        "technologies": [
          "LINUX"
        ]
      }
    ],
    "architecture": [
      {
        "label": "MICROSERVICES",
        "description": "Service boundaries, independent responsibilities, and distributed application flows."
      },
      {
        "label": "EVENT-DRIVEN",
        "description": "Asynchronous communication and event-based coordination between components."
      },
      {
        "label": "TRANSACTIONAL SYSTEMS",
        "description": "Consistency, state transitions, and safe concurrent updates."
      }
    ],
    "messaging": [
      "KAFKA",
      "RABBITMQ"
    ],
    "performance": [
      "MULTITHREADING",
      "CACHING",
      "RATE LIMITING",
      "HIGH AVAILABILITY",
      "LOAD BALANCING",
      "PERFORMANCE OPTIMIZATION"
    ],
    "security": [
      {
        "label": "IDENTITY",
        "description": "Standards and flows used to establish user or service identity.",
        "technologies": [
          "OAUTH2",
          "OPENID CONNECT"
        ]
      },
      {
        "label": "TOKEN",
        "description": "Token-based transport of identity, claims, and authorization context.",
        "technologies": [
          "JWT"
        ]
      },
      {
        "label": "AUTHORIZATION",
        "description": "Role and permission checks that decide what an authenticated identity can access.",
        "technologies": [
          "RBAC"
        ]
      },
      {
        "label": "APPLICATION PROTECTION",
        "description": "Traffic controls that protect services and help preserve availability under load.",
        "technologies": [
          "RATE LIMITING"
        ]
      }
    ],
    "engineeringDisciplines": [
      {
        "label": "COMPUTER SCIENCE",
        "description": "Core problem-solving foundations used across application and systems work.",
        "capabilities": [
          "ALGORITHMS",
          "DATA STRUCTURES",
          "COMPETITIVE PROGRAMMING"
        ]
      },
      {
        "label": "PROBLEM SOLVING",
        "description": "Turning complex constraints into efficient and maintainable solutions.",
        "capabilities": [
          "ALGORITHM DESIGN",
          "OPTIMIZATION",
          "PROBLEM DECOMPOSITION"
        ]
      },
      {
        "label": "SOFTWARE DESIGN",
        "description": "Structuring code around clear responsibilities, reusable abstractions, and maintainable behavior.",
        "capabilities": [
          "OOP",
          "DESIGN PATTERNS"
        ]
      },
      {
        "label": "TESTING",
        "description": "Verification practices used to keep changes predictable and protect system behavior.",
        "capabilities": [
          "TDD",
          "UNIT TESTING",
          "INTEGRATION TESTING"
        ]
      }
    ],
    "aiWorkflow": [
      {
        "label": "COMPUTER VISION",
        "description": "Image processing and visual analysis used to extract structure, features, and useful signals from visual data.",
        "technologies": [
          "OPENCV"
        ]
      },
      {
        "label": "MODELS & LEARNING",
        "description": "Neural-network concepts and model workflows used when working with learned representations and AI systems.",
        "technologies": [
          "NEURAL NETWORKS"
        ]
      },
      {
        "label": "AI PLATFORMS",
        "description": "Managed AI services and provider APIs used to bring model capabilities into production applications.",
        "technologies": [
          "OPENAI API",
          "AZURE OPENAI",
          "VERTEX AI",
          "AWS BEDROCK"
        ]
      },
      {
        "label": "APPLICATION TOOLING",
        "description": "Application-layer tooling used to connect model capabilities with workflows, context, and surrounding software.",
        "technologies": [
          "LANGCHAIN"
        ]
      }
    ]
  },
  "selectedWork": {
    "engineeringMetrics": [
      {
        "value": "32.3×",
        "label": "FEWER REQUESTS",
        "direction": "down"
      },
      {
        "value": "2–7×",
        "label": "FASTER",
        "direction": "up"
      },
      {
        "value": "UP TO ≈100×",
        "label": "SMALLER PERSISTED PERMISSION STATE",
        "direction": "down"
      },
      {
        "value": "2×",
        "label": "THROUGHPUT",
        "direction": "up"
      }
    ],
    "cases": [
      {
        "id": "network-amplification",
        "index": "01",
        "domain": "Performance Engineering",
        "title": "Reducing Network Amplification",
        "summary": "Reduced request amplification in a large TypeScript/React AI workflow, cutting API/network requests by 32.3× and making the measured operation 2×–7× faster as collection size increased.",
        "metadata": {
          "type": "Application performance",
          "concerns": [
            "request amplification",
            "response time",
            "network load"
          ],
          "stack": [
            "TypeScript",
            "React"
          ]
        },
        "metrics": [
          {
            "value": "32.3×",
            "label": "FEWER API/NETWORK REQUESTS",
            "direction": "down"
          },
          {
            "value": "2–7×",
            "label": "FASTER BY COLLECTION SIZE",
            "direction": "up"
          }
        ],
        "details": [
          {
            "label": "CONTEXT",
            "body": "A large TypeScript AI application processed collection-oriented workflows whose API and network activity increased substantially with collection size."
          },
          {
            "label": "PROBLEM",
            "body": "The measured workflow amplified network and processing work across multiple stages as collections grew. The pressure was distributed through the flow rather than coming from one isolated unnecessary request."
          },
          {
            "label": "CONSTRAINTS",
            "body": "The optimization had to preserve existing workflow behavior while reducing unnecessary network activity and remaining stable as collection size increased."
          },
          {
            "label": "DECISION",
            "body": "Decompose the amplification problem into smaller pressure points, optimize them independently, and progressively coordinate the resulting work through one controlled end-to-end flow."
          },
          {
            "label": "TRADE-OFF",
            "body": "The optimized flow required more deliberate coordination than the original path, but it prevented improvements at one stage from simply shifting pressure elsewhere in the workflow."
          },
          {
            "label": "RESULT",
            "body": "For the measured collection workflow, API/network requests fell by 32.3× and execution improved by 2×–7×, with larger collections showing the greater improvement."
          }
        ]
      },
      {
        "id": "virtualization",
        "index": "02",
        "domain": "Frontend Performance",
        "title": "Virtualizing Large Collections",
        "summary": "Built a custom lightweight React virtualization layer that decoupled mounted UI work from logical collection size. At roughly 3,300 items, the measured workflow kept about 27× fewer items mounted simultaneously, with the reduction ratio increasing as the collection grew.",
        "metadata": {
          "type": "Frontend performance",
          "concerns": [
            "DOM pressure",
            "rendering cost",
            "scroll responsiveness",
            "supply-chain risk"
          ],
          "stack": [
            "TypeScript",
            "React"
          ]
        },
        "metrics": [
          {
            "value": "≈27×",
            "label": "FEWER SIMULTANEOUSLY MOUNTED ITEMS",
            "direction": "down"
          }
        ],
        "details": [
          {
            "label": "CONTEXT",
            "body": "Large collection views could contain roughly 3,300 logical items, while only a small portion of the collection needed to be represented in the mounted UI at any given time."
          },
          {
            "label": "PROBLEM",
            "body": "Eagerly mounting the full collection made React and DOM cost grow with collection size. Reconciliation, layout, paint, memory use, and interaction pressure all increased even for content that was not immediately relevant to the user."
          },
          {
            "label": "CONSTRAINTS",
            "body": "Preserve the complete logical collection and expected scrolling behavior, keep the mounted render surface bounded, and avoid introducing an additional runtime dependency where supply-chain exposure mattered."
          },
          {
            "label": "DECISION",
            "body": "Build a lightweight feature-owned virtualization layer that separates the size of the logical collection from the amount of UI work mounted at any moment."
          },
          {
            "label": "TRADE-OFF",
            "body": "Owning the virtualization behavior reduced dependency surface and gave tighter control over the rendering boundary, but it also moved responsibility for correctness, scrolling behavior, edge conditions, and long-term maintenance into the application."
          },
          {
            "label": "RESULT",
            "body": "At roughly 3,300 logical items, the measured workflow kept about 27× fewer items mounted simultaneously than eager rendering. Because mounted work remained bounded while the logical collection continued to grow, the reduction ratio increased with collection size."
          }
        ]
      },
      {
        "id": "deterministic-ai",
        "index": "03",
        "domain": "Deterministic Systems × AI",
        "title": "Deterministic Processing Through Structural Decomposition",
        "summary": "Decomposed structurally variable inputs into smaller units, applying deterministic processing where structure could be resolved and heuristic handling where ambiguity remained. For specific data types, the resulting path outperformed Azure Document Intelligence.",
        "metadata": {
          "type": "Decision system",
          "concerns": [
            "structural decomposition",
            "determinism",
            "heuristic fallback"
          ]
        },
        "details": [
          {
            "label": "CONTEXT",
            "body": "A structured-data workflow had to normalize complex source representations into a consistent downstream form."
          },
          {
            "label": "PROBLEM",
            "body": "The overall input did not follow one reliable structure. Different regions could behave differently, and a single deterministic strategy could not resolve every part consistently."
          },
          {
            "label": "CONSTRAINTS",
            "body": "The solution had to preserve correctness across structural variation, avoid making the entire workflow probabilistic, and keep predictable portions of the transformation reproducible and testable."
          },
          {
            "label": "DECISION",
            "body": "Decompose the input into smaller structural units, identify the units that could be handled deterministically, and apply explicit processing strategies to those regions. For the remaining ambiguous units, use heuristic handling rather than forcing deterministic assumptions where the structure was insufficient."
          },
          {
            "label": "TRADE-OFF",
            "body": "The approach required maintaining multiple processing strategies and deciding where deterministic guarantees ended and heuristic interpretation began, but it prevented uncertainty in one part of the input from making the entire transformation probabilistic."
          },
          {
            "label": "RESULT",
            "body": "For specific data types, the resulting deterministic-plus-heuristic processing path outperformed Azure Document Intelligence."
          }
        ]
      },
      {
        "id": "concurrency",
        "index": "04",
        "domain": "Concurrency & Consistency",
        "title": "Concurrency Without Global Serialization",
        "summary": "Migrated legacy batch processing toward microservices with optimistic locking and Java atomic reference updaters, doubling throughput without data inconsistencies in the reported result.",
        "metadata": {
          "type": "Concurrent state processing",
          "concerns": [
            "throughput",
            "consistency",
            "contention",
            "conflict handling"
          ],
          "stack": [
            "Java",
            "Microservices"
          ]
        },
        "metrics": [
          {
            "value": "2×",
            "label": "MIGRATION THROUGHPUT",
            "direction": "up"
          }
        ],
        "details": [
          {
            "label": "CONTEXT",
            "body": "A legacy batch-processing system was migrated into a microservices architecture."
          },
          {
            "label": "PROBLEM",
            "body": "The migration needed higher throughput while preserving consistency during concurrent state updates."
          },
          {
            "label": "DECISION",
            "body": "Use optimistic locking and Java atomic reference updaters so conflicting state transitions can be handled without globally serializing all work."
          },
          {
            "label": "RESULT",
            "body": "The reported migration result doubled throughput without data inconsistencies."
          }
        ]
      },
      {
        "id": "workflow-validation",
        "index": "05",
        "domain": "Graph Validation",
        "title": "Preventing Invalid Workflow Cycles",
        "summary": "Modeled workflow configurations as directed graphs and used depth-first search to detect invalid cycles before deployment, reducing runtime errors by 50%.",
        "metadata": {
          "type": "Workflow validation",
          "concerns": [
            "cycle detection",
            "correctness",
            "pre-deployment validation"
          ]
        },
        "metrics": [
          {
            "value": "50%",
            "label": "FEWER RUNTIME ERRORS",
            "direction": "down"
          }
        ],
        "details": [
          {
            "label": "CONTEXT",
            "body": "Workflow configurations expressed dependencies between steps and needed to be validated before they were allowed into the runtime path."
          },
          {
            "label": "PROBLEM",
            "body": "A cyclic dependency could create an invalid execution path that was expensive to discover only after deployment or during runtime."
          },
          {
            "label": "DECISION",
            "body": "Represent the configuration as a directed graph and use depth-first search to detect whether traversal re-enters an active path."
          },
          {
            "label": "IMPLEMENTATION",
            "body": "Validate the graph before deployment and reject configurations when DFS identifies a cycle, while allowing acyclic configurations to proceed."
          },
          {
            "label": "RESULT",
            "body": "Pre-deployment cycle detection reduced runtime errors by 50% for the workflow-validation system."
          }
        ]
      },
      {
        "id": "matching-pruning",
        "index": "06",
        "domain": "Matching Optimization",
        "title": "Rejecting Invalid Matches Early",
        "summary": "Applied dynamic-programming heuristics and early invalidation to a real-time matching workflow, eliminating non-viable candidates before more server work was spent and doubling throughput.",
        "metadata": {
          "type": "Real-time matching",
          "concerns": [
            "candidate space",
            "early invalidation",
            "throughput",
            "server work"
          ]
        },
        "metrics": [
          {
            "value": "2×",
            "label": "MATCHING THROUGHPUT",
            "direction": "up"
          }
        ],
        "details": [
          {
            "label": "CONTEXT",
            "body": "A real-time matching module evaluated candidate relationships under load and needed to keep the amount of useful work proportional to viable matches."
          },
          {
            "label": "PROBLEM",
            "body": "Invalid candidates consumed processing time even though they could not contribute to a valid match, increasing server work as the candidate space grew."
          },
          {
            "label": "DECISION",
            "body": "Structure the matching path around dynamic-programming heuristics and early invalidation so non-viable candidates are removed before the remaining matching work."
          },
          {
            "label": "IMPLEMENTATION",
            "body": "Narrow the candidate space as soon as partial matching state proves a candidate cannot produce a valid result, leaving the later stages to operate on a smaller viable set."
          },
          {
            "label": "RESULT",
            "body": "The matching module achieved 2× throughput while reducing server work."
          }
        ]
      },
      {
        "id": "constrained-allocation",
        "index": "07",
        "domain": "Constrained Optimization",
        "title": "Making Constrained Allocation Practical",
        "summary": "Built a constraint-aware backtracking solver for resource allocation across skill, language, and workload requirements, rejecting infeasible branches early instead of exhaustively evaluating every possible assignment.",
        "metadata": {
          "type": "Constrained resource allocation",
          "concerns": [
            "combinatorial search",
            "constraint satisfaction",
            "latency",
            "scalability"
          ]
        },
        "metrics": [
          {
            "value": "ms",
            "label": "NEAR-OPTIMAL ALLOCATION FOR HUNDREDS OF REQUESTS",
            "direction": "neutral"
          }
        ],
        "details": [
          {
            "label": "CONTEXT",
            "body": "Resource allocation had to account for skill set, language, workload, and concurrent demand while still returning useful assignments quickly."
          },
          {
            "label": "PROBLEM",
            "body": "Possible assignments form a combinatorial search space, so exhaustively evaluating every complete combination becomes increasingly impractical as requests and candidates grow."
          },
          {
            "label": "DECISION",
            "body": "Model allocation as a constrained search and use backtracking with early feasibility checks so a partial assignment stops expanding as soon as it cannot lead to a valid solution."
          },
          {
            "label": "IMPLEMENTATION",
            "body": "Apply constraints during the search rather than only after complete assignments are generated, preventing entire infeasible subtrees from being explored."
          },
          {
            "label": "TRADE-OFF",
            "body": "The search remains combinatorial in the worst case; practical performance depends on rejecting infeasible branches early rather than pretending the underlying search space disappears."
          },
          {
            "label": "RESULT",
            "body": "The solver produced near-optimal allocations in milliseconds for hundreds of concurrent requests."
          }
        ]
      },
      {
        "id": "authorization",
        "index": "08",
        "domain": "Authorization",
        "title": "Efficient Permission State",
        "summary": "Replaced a MySQL JSON permission array with a 64-bit BIGINT mask, keeping persisted permission state at 8 bytes while supporting 64 permission flags and mapping directly to a Java long.",
        "metadata": {
          "type": "Access management",
          "concerns": [
            "state density",
            "persistence",
            "serialization",
            "authorization"
          ]
        },
        "metrics": [
          {
            "value": "UP TO ≈100×",
            "label": "SMALLER PERSISTED PERMISSION STATE",
            "direction": "down"
          }
        ],
        "details": [
          {
            "label": "CONTEXT",
            "body": "Effective permissions were persisted in MySQL as a JSON array of permission-name strings and loaded into the application for authorization."
          },
          {
            "label": "PROBLEM",
            "body": "The JSON representation grew with permission count and permission-name length, increasing the amount of authorization state persisted and transferred for each user."
          },
          {
            "label": "DECISION",
            "body": "Encode the bounded permission vocabulary as a 64-bit mask stored in one MySQL BIGINT and mapped to a Java long, assigning one stable bit position to each permission."
          },
          {
            "label": "IMPLEMENTATION",
            "body": "For the illustrated 64-permission case, permission names averaging roughly 10 ASCII characters occupy about 901 bytes in MySQL's binary JSON representation: 1 byte for the top-level type, 4 bytes for the array header, 192 bytes for 64 value entries, and 704 bytes for 64 encoded 10-byte strings. The replacement BIGINT is 8 bytes, so 901 B / 8 B ≈ 113×; the UI rounds this to ≈100×. Exact JSON storage should be verified with JSON_STORAGE_SIZE(). The application can load the same 64-bit value into a Java long and evaluate all required permissions with (userMask & requiredMask) == requiredMask."
          },
          {
            "label": "TRADE-OFF",
            "body": "Bit positions become part of the persisted-data contract: assignments must remain stable, and removed permissions should keep their bit reserved unless stored masks are migrated. One 64-bit mask also sets a 64-permission capacity boundary; a larger vocabulary requires another mask or a representation change. MySQL SET can already encode up to 64 schema-defined members compactly, so the storage gain here specifically compares the previous JSON representation with BIGINT."
          },
          {
            "label": "RESULT",
            "body": "In the illustrated 64-permission case, persisted permission state falls from about 901 bytes of MySQL binary JSON to an 8-byte BIGINT: approximately 113× smaller by raw value size, presented as ≈100× in the UI."
          }
        ]
      },
      {
        "id": "system-delivery",
        "index": "09",
        "domain": "System Delivery",
        "title": "From Source to Running System",
        "summary": "Automated infrastructure provisioning across cloud environments with Terraform, shortening deployment time by 40% in that workflow, alongside CI/CD, automated testing, and containerized delivery.",
        "metadata": {
          "type": "Delivery and infrastructure",
          "concerns": [
            "reproducibility",
            "deployment",
            "testing",
            "runtime operations"
          ],
          "stack": [
            "Terraform",
            "CI/CD",
            "Docker",
            "Kubernetes",
            "Linux",
            "AWS",
            "Azure",
            "Oracle Cloud"
          ]
        },
        "metrics": [
          {
            "value": "40%",
            "label": "SHORTER DEPLOYMENT TIME",
            "direction": "down"
          }
        ],
        "details": [
          {
            "label": "CONTEXT",
            "body": "Infrastructure provisioning covered AWS, Azure, and Oracle environments, alongside application delivery with containerized cloud deployment."
          },
          {
            "label": "PROBLEM",
            "body": "Manual environment configuration made delivery less repeatable and introduced avoidable configuration errors."
          },
          {
            "label": "DECISION",
            "body": "Provision environments with Terraform and support delivery with CI/CD, automated tests, Docker, Kubernetes, and Linux operations."
          },
          {
            "label": "IMPLEMENTATION",
            "body": "Delivery work also included asynchronous processing with RabbitMQ and Kafka where heavy workloads benefited from messaging."
          },
          {
            "label": "RESULT",
            "body": "The Terraform provisioning/deployment workflow reduced manual configuration errors and shortened deployment time by 40%."
          }
        ]
      }
    ],
    "research": [
      {
        "id": "turbojet-parameter-identification",
        "title": "Turbojet Engine Parameter Identification",
        "summary": "Bachelor thesis work in Automation and Information Technology focused on identifying turbo-jet engine parameters, retained as the earliest system-modeling thread in the Selected Work narrative.",
        "metadata": {
          "type": "Research",
          "concerns": [
            "parameter identification",
            "system modeling"
          ]
        }
      }
    ],
    "sectionOrder": [
      "hero",
      "engineering-metrics",
      "network-amplification",
      "virtualization",
      "deterministic-ai",
      "concurrency",
      "workflow-validation",
      "matching-pruning",
      "constrained-allocation",
      "authorization",
      "system-delivery",
      "earlier-research",
      "downloads"
    ]
  },
  "links": [
    {
      "label": "LINKEDIN",
      "href": "https://cz.linkedin.com/in/anis-messas-22a6ba177"
    }
  ]
}
