{"id":3970,"date":"2026-04-21T10:00:00","date_gmt":"2026-04-21T14:00:00","guid":{"rendered":"https:\/\/www.mymiller.name\/wordpress\/?p=3970"},"modified":"2026-04-19T20:26:25","modified_gmt":"2026-04-20T00:26:25","slug":"vibe-coding-the-next-generation-how-we-built-aimud-using-an-ai-ensemble","status":"publish","type":"post","link":"https:\/\/www.mymiller.name\/wordpress\/architecture\/vibe-coding-the-next-generation-how-we-built-aimud-using-an-ai-ensemble\/","title":{"rendered":"Vibe Coding the Next Generation: How We Built AIMUD Using an AI Ensemble"},"content":{"rendered":"\n<p>In the traditional world of software engineering, building a Multi-User Dungeon (MUD) is a rite of passage. It requires handling complex state, real-time networking, concurrency, and deep game logic. Usually, this takes months of meticulous, line-by-line keyboard grinding.<\/p>\n\n\n\n<p>But for <strong>AIMUD<\/strong>, we didn&#8217;t just code; we <strong>vibe coded<\/strong>.<\/p>\n\n\n\n<p>By leveraging an ensemble of cutting-edge tools\u2014<strong>IntelliJ Junie<\/strong>, <strong>IntelliJ Gemini<\/strong>, <strong>IntelliJ Co-Pilot<\/strong>, and <strong>Google Anti-Gravity<\/strong>\u2014we shifted our focus from &#8220;how to write the syntax&#8221; to &#8220;what the soul of the game should be.&#8221;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What is Vibe Coding?<\/h2>\n\n\n\n<p>Vibe coding is the evolution of &#8220;Human-in-the-Loop.&#8221; It\u2019s a workflow where the architect provides the &#8220;vibe&#8221;\u2014the high-level intent, the architectural patterns, and the creative direction\u2014while a suite of AI agents handles the implementation, refactoring, and boilerplate.<\/p>\n\n\n\n<p><strong>Crucially, Vibe Coding is not here to replace the Software Architect or Developer; it is here to assist and augment them.<\/strong><\/p>\n\n\n\n<p>While these tools can significantly increase the speed of development, Vibe Coding is not an independent process. To develop software that is maintainable, scalable, and able to be expanded, a professional must always be available to monitor the changes. An architect must review the generated code, enforce consistency, and tell the system when it has made a mistake or deviated from the intended design. In this model, the human moves from &#8220;bricklayer&#8221; to &#8220;conductor,&#8221; ensuring the AI&#8217;s speed is directed toward a robust and lasting structure.<\/p>\n\n\n\n<p>In the case of AIMUD, the &#8220;vibe&#8221; was a modern, Spring Boot and Angular-based engine where every NPC (Mobile) is backed by an LLM, making the world truly alive.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The Ensemble at Work<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">1. The Architect: IntelliJ Gemini<\/h3>\n\n\n\n<p>We used <strong>IntelliJ Gemini<\/strong> as our primary architectural partner. When designing the complex spell and prayer systems (see <code>SpellService.java<\/code> and the vast <code>prayers<\/code> package), Gemini helped us structure the inheritance model. We didn&#8217;t manually create 50+ individual spell classes; we defined the &#8220;vibe&#8221; of a damage-over-time (DOT) spell and a direct-damage spell, and Gemini proliferated the implementations across the <code>spells<\/code> and <code>prayers<\/code> directories.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">2. The Implementation Engine: IntelliJ Junie &amp; Co-Pilot<\/h3>\n\n\n\n<p>While Gemini handled the big picture, <strong>Junie<\/strong> and <strong>Co-Pilot<\/strong> were our &#8220;hands on the keyboard.&#8221;<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Junie<\/strong> excelled at deep-context refactoring. When we needed to update the <code>Mobile<\/code> model to support AI instructions (<code>061-mobile-ai-instructions.sql<\/code>), Junie coordinated the changes across the Java models, the Liquidbase changelogs, and the Angular frontend components.<\/li>\n\n\n\n<li><strong>Co-Pilot<\/strong> acted as the ultimate autocomplete, predicting the repetitive logic in our command patterns (<code>AttackCommand.java<\/code>, <code>CastCommand.java<\/code>), allowing us to fly through the implementation of the game&#8217;s interaction layer.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">3. The Secret Sauce: Google Anti-Gravity<\/h3>\n\n\n\n<p>Building a MUD in 2024 means integrating LLMs. We used <strong>Google Anti-Gravity<\/strong> to manage the heavy lifting of our AI integrations. Specifically, it helped us optimize the <code>OllamaChatModel.java<\/code> and <code>McpToolService.java<\/code>, ensuring that the &#8220;vibe&#8221; of our AI agents\u2014their personalities and non-combat behaviors\u2014remained consistent and low-latency.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Architectural Highlights of the Vibe-Coded MUD<\/h2>\n\n\n\n<p>The result of this AI-augmented process is a remarkably robust and clean codebase:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>The Model-Driven World:<\/strong> A highly relational schema managed via Liquibase that handles everything from <code>Faction<\/code> relationships to <code>MobileMacro<\/code> automation.<\/li>\n\n\n\n<li><strong>Reactive Communication:<\/strong> A WebSocket-based core (<code>GameWebSocketHandler.java<\/code>) that provides the real-time feedback loop essential for MUDs.<\/li>\n\n\n\n<li><strong>Pluggable AI Agents:<\/strong> A dedicated <code>AiService<\/code> and <code>Agent<\/code> model that allows NPCs to utilize the Model Context Protocol (MCP) to interact with the game world just like players do.<\/li>\n\n\n\n<li><strong>Modern Frontend:<\/strong> A Material Design-inspired Angular application that brings a 1980s concept into the modern web era.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">The Roadmap: Coming Soon to AIMUD<\/h2>\n\n\n\n<p>While the foundation is solid, a mature MUD requires depth. Our ensemble is currently working on the following features to bring AIMUD to parity with legendary engines like Diku or CircleMUD:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1. Core Gameplay Mechanics<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Stealth Expansion:<\/strong> Moving beyond basic <code>hide<\/code>, we are implementing <code>Sneak<\/code>, <code>Trap Detection<\/code>, and <code>Disarming<\/code> for a full rogue utility kit.<\/li>\n\n\n\n<li><strong>Natural Recovery:<\/strong> Adding <code>rest<\/code>, <code>sit<\/code>, and <code>sleep<\/code> states to modulate HP\/Mana recovery outside of combat.<\/li>\n\n\n\n<li><strong>Consumable Systems:<\/strong> A full Potion system for immediate magical &#8220;quaffing&#8221; (e.g., <em>Potion of Giant Strength<\/em>) and specialized consumable variety.<\/li>\n\n\n\n<li><strong>Deep Crafting:<\/strong> Expanding trade skills like Blacksmithing, Tailoring, and Alchemy to complement the existing merchant system.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">2. Magic &amp; Bardic Versatility<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Utility &amp; Teleportation:<\/strong> Staple spells like <code>identify<\/code>, <code>detect magic<\/code>, <code>locate object<\/code>, and <code>word of recall<\/code>.<\/li>\n\n\n\n<li><strong>Summoning:<\/strong> The ability to summon other players or pets\/familiars.<\/li>\n\n\n\n<li><strong>Bardic Crowd Control:<\/strong> Songs to <code>lullaby<\/code> entire rooms or <code>charm<\/code> NPCs into service.<\/li>\n\n\n\n<li><strong>Hybrid Prayers:<\/strong> More &#8220;holy warrior&#8221; utility like <code>Lay on Hands<\/code> and <code>Detect Evil<\/code> for Paladin\/Cleric hybrids.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">3. Equipment &amp; Inventory<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Container Management:<\/strong> <code>put &lt;item> in &lt;bag><\/code>, <code>get &lt;item> from &lt;bag><\/code>, and nested inventory for bags, chests, and backpacks.<\/li>\n\n\n\n<li><strong>Durability &amp; Decay:<\/strong> Item wear-and-tear mechanics paired with a <code>repair<\/code> system.<\/li>\n\n\n\n<li><strong>Expanded Slots:<\/strong> Secondary equipment locations for Cloaks (Back), About-Body items, and Held utilities (non-weapon\/shield).<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">4. Social &amp; World Complexity<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Custom Roleplay:<\/strong> Moving beyond fixed emotes to allow custom <code>pose<\/code> and freeform <code>emote<\/code> strings (e.g., <em>emote leans against the cold stone wall.<\/em>).<\/li>\n\n\n\n<li><strong>Global Communication:<\/strong> &#8220;OOC&#8221; (Out of Character) and &#8220;Gossip&#8221; channels for server-wide community interaction.<\/li>\n\n\n\n<li><strong>Extra Descriptions:<\/strong> Enhancing <code>look<\/code> to interact with atmospheric details described in room text that aren&#8217;t physical items.<\/li>\n\n\n\n<li><strong>Quest Engine:<\/strong> A formal system for tracking objectives, rewards, and branching AI dialogue trees.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Administrative &amp; &#8220;Immortal&#8221; Functionality<\/h2>\n\n\n\n<p>To manage a living world, we are implementing a suite of &#8220;Immortal&#8221; commands. The architectural foundation is already in the <code>User<\/code> role field, and the reflective <code>CommandService<\/code> makes these additions seamless.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">World Manipulation<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>goto &lt;roomID\/player>:<\/strong> Instantly teleport to a specific location or player.<\/li>\n\n\n\n<li><strong>transfer &lt;player> &lt;roomID>:<\/strong> Forcefully move a player to a new location.<\/li>\n\n\n\n<li><strong>purge:<\/strong> Remove all NPCs or items from a room to reset its state.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Player &amp; Connection Management<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>mset &lt;player> &lt;stat> &lt;value>:<\/strong> Manually edit attributes like Strength or Intelligence.<\/li>\n\n\n\n<li><strong>freeze\/unfreeze &lt;player>:<\/strong> Prevent or restore a player&#8217;s ability to enter commands.<\/li>\n\n\n\n<li><strong>disconnect\/kick\/ban:<\/strong> Forcefully drop connections or permanently restrict access at the IP\/Username level.<\/li>\n\n\n\n<li><strong>sockets:<\/strong> Real-time visibility into all active WebSocket connections.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">AI-Specific Utilities<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Agent Control:<\/strong> Tools to reset or re-prime the <code>OllamaChatModel<\/code> for specific NPCs.<\/li>\n\n\n\n<li><strong>Instruction Injection:<\/strong> Manually update an agent&#8217;s <code>systemInstruction<\/code> during live gameplay without using the web dashboard.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Getting Started with AIMUD<\/h2>\n\n\n\n<p>Ready to see the vibe in action? Follow these steps to get the engine running on your machine.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Prerequisites<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Java 21+<\/strong> (Spring Boot 3 compatibility)<\/li>\n\n\n\n<li><strong>Node.js 18+<\/strong> &amp; <strong>npm<\/strong><\/li>\n\n\n\n<li><strong>Docker<\/strong> (for the database and Ollama instance)<\/li>\n\n\n\n<li><strong>Ollama<\/strong> (installed and running for LLM-backed NPCs)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">1. Clone and Prepare the Backend<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>git clone &#91;https:\/\/github.com\/ghost-programmer\/aimud](https:\/\/github.com\/ghost-programmer\/aimud)\ncd aimud\n.\/gradlew build\n\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">2. Spin up the Environment<\/h3>\n\n\n\n<p>Use the provided <code>docker-compose.yml<\/code> to set up your PostgreSQL database and any required middleware:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker-compose up -d\n\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">3. Run the Backend<\/h3>\n\n\n\n<p>Start the Spring Boot application. Liquibase will automatically run the changelogs to set up your schema.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>.\/gradlew bootRun\n\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">4. Launch the Frontend<\/h3>\n\n\n\n<p>Navigate to the frontend directory to start the Angular development server:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cd frontend\nnpm install\nnpm start\n\n<\/code><\/pre>\n\n\n\n<p>The game will be available at <code>http:\/\/localhost:4200<\/code>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Lessons Learned<\/h2>\n\n\n\n<p>Vibe coding isn&#8217;t about being lazy; it&#8217;s about being <strong>leveraged<\/strong>.<\/p>\n\n\n\n<p>By using four different AI tools, we were able to cross-reference their outputs. If Co-Pilot suggested a logic flow that Gemini flagged as architecturally inconsistent, we could pivot instantly. This &#8220;ensemble&#8221; approach minimized the hallucinations that often plague single-AI development.<\/p>\n\n\n\n<p>AIMUD stands as a testament to what a single architect can achieve when they stop worrying about semicolons and start focusing on the experience. The code was written by AI, but the <strong>vibe<\/strong> is entirely human.<\/p>\n\n\n\n<p><strong>Explore the Code:<\/strong><\/p>\n\n\n\n<p>AIMUD is built on Spring Boot, Spring AI, and Angular Material. You can explore the full source code and see the future of AI-driven gaming on GitHub:<\/p>\n\n\n\n<p><a href=\"https:\/\/www.google.com\/search?q=https:\/\/github.com\/ghost-programmer\/aimud\"><strong>github.com\/ghost-programmer\/aimud<\/strong><\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the traditional world of software engineering, building a Multi-User Dungeon (MUD) is a rite of passage. It requires handling complex state, real-time networking, concurrency, and deep game logic. Usually, this takes months of meticulous, line-by-line keyboard grinding. But for AIMUD, we didn&#8217;t just code; we vibe coded. By leveraging an ensemble of cutting-edge tools\u2014IntelliJ [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":3971,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_coblocks_attr":"","_coblocks_dimensions":"","_coblocks_responsive_height":"","_coblocks_accordion_ie_support":"","jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[495,363],"tags":[429,69,319,493],"series":[],"class_list":["post-3970","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ai","category-architecture","tag-ai","tag-java-2","tag-spring","tag-vibe"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2026\/04\/Gemini_Generated_Image_6veptk6veptk6vep-scaled.avif","jetpack-related-posts":[{"id":3965,"url":"https:\/\/www.mymiller.name\/wordpress\/angular\/bringing-worlds-to-life-integrating-ai-personas-in-multi-user-dungeons-muds\/","url_meta":{"origin":3970,"position":0},"title":"Bringing Worlds to Life: Integrating AI Personas in Multi-User Dungeons (MUDs)","author":"Jeffery Miller","date":"April 20, 2026","format":false,"excerpt":"A few weeks ago, I found myself pondering the ultimate objective for an artificial intelligence system. The answer kept returning to a single concept: the ability to truly mimic a human. This spark of an idea gave rise to a challenge\u2014I needed a sandbox where I could work with AI\u2026","rel":"","context":"In &quot;Angular&quot;","block_context":{"text":"Angular","link":"https:\/\/www.mymiller.name\/wordpress\/category\/angular\/"},"img":{"alt_text":"","src":"https:\/\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2026\/04\/Gemini_Generated_Image_hsr3ethsr3ethsr3-scaled.avif","width":350,"height":200,"srcset":"https:\/\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2026\/04\/Gemini_Generated_Image_hsr3ethsr3ethsr3-scaled.avif 1x, https:\/\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2026\/04\/Gemini_Generated_Image_hsr3ethsr3ethsr3-scaled.avif 1.5x, https:\/\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2026\/04\/Gemini_Generated_Image_hsr3ethsr3ethsr3-scaled.avif 2x, https:\/\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2026\/04\/Gemini_Generated_Image_hsr3ethsr3ethsr3-scaled.avif 3x"},"classes":[]},{"id":3480,"url":"https:\/\/www.mymiller.name\/wordpress\/architecture\/coding-standard-zero-tolerance\/","url_meta":{"origin":3970,"position":1},"title":"Coding Standard: Zero Tolerance","author":"Jeffery Miller","date":"September 5, 2024","format":false,"excerpt":"Coding standards are the unsung heroes of software development, quietly shaping the backbone of every successful project. Like the grammar rules of a language, they provide a common set of guidelines that developers adhere to when writing code. From indentation styles to variable naming conventions, coding standards ensure consistency, readability,\u2026","rel":"","context":"In &quot;Architecture&quot;","block_context":{"text":"Architecture","link":"https:\/\/www.mymiller.name\/wordpress\/category\/architecture\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2024\/04\/computer-6560745_640.jpg?fit=640%2C298&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2024\/04\/computer-6560745_640.jpg?fit=640%2C298&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2024\/04\/computer-6560745_640.jpg?fit=640%2C298&ssl=1&resize=525%2C300 1.5x"},"classes":[]},{"id":1846,"url":"https:\/\/www.mymiller.name\/wordpress\/challenge\/dividing-game\/","url_meta":{"origin":3970,"position":2},"title":"Dividing Game Interview Coding Sample","author":"Jeffery Miller","date":"August 29, 2016","format":false,"excerpt":"I was recently given the challenge to write an solution for the Dividing Game. \u00a0The objective Player 1 and Player 2 each choose a number. \u00a0The solution should output the number of common divisor's they share in common between the selected numbers. This logic is rather simple, create a list\u2026","rel":"","context":"In &quot;Challenge&quot;","block_context":{"text":"Challenge","link":"https:\/\/www.mymiller.name\/wordpress\/category\/challenge\/"},"img":{"alt_text":"dividing game","src":"https:\/\/i0.wp.com\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2016\/08\/calculator-1330104_640.jpg?fit=640%2C426&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2016\/08\/calculator-1330104_640.jpg?fit=640%2C426&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2016\/08\/calculator-1330104_640.jpg?fit=640%2C426&ssl=1&resize=525%2C300 1.5x"},"classes":[]},{"id":3897,"url":"https:\/\/www.mymiller.name\/wordpress\/spring_ai\/a-beginners-guide-to-setting-up-ollama-with-docker-compose\/","url_meta":{"origin":3970,"position":3},"title":"A Beginner&#8217;s Guide to Setting Up Ollama with Docker Compose","author":"Jeffery Miller","date":"December 24, 2025","format":false,"excerpt":"Have you ever wanted to run a powerful large language model (LLM) like Llama 3 or Gemma right on your own computer, but you need a consistent and portable setup? That's where using Ollama with Docker and Docker Compose comes in. Docker Compose is a fantastic tool that allows you\u2026","rel":"","context":"In &quot;Spring AI&quot;","block_context":{"text":"Spring AI","link":"https:\/\/www.mymiller.name\/wordpress\/category\/spring_ai\/"},"img":{"alt_text":"","src":"https:\/\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2025\/08\/ai-generated-8012676_1280.avif","width":350,"height":200,"srcset":"https:\/\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2025\/08\/ai-generated-8012676_1280.avif 1x, https:\/\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2025\/08\/ai-generated-8012676_1280.avif 1.5x, https:\/\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2025\/08\/ai-generated-8012676_1280.avif 2x, https:\/\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2025\/08\/ai-generated-8012676_1280.avif 3x"},"classes":[]},{"id":3795,"url":"https:\/\/www.mymiller.name\/wordpress\/spring_ai\/evrete-a-modern-java-rule-engine\/","url_meta":{"origin":3970,"position":4},"title":"EVRete: A Modern Java Rule Engine","author":"Jeffery Miller","date":"November 24, 2025","format":false,"excerpt":"EVRete is a high-performance, lightweight, and open-source rule engine designed for Java applications. It offers a flexible and expressive way to implement rule-based logic, making it a compelling alternative to traditional rule engines like Drools. This article delves into EVRete\u2019s features, focusing on its annotation-based approach to rule definition. Why\u2026","rel":"","context":"In &quot;Spring AI&quot;","block_context":{"text":"Spring AI","link":"https:\/\/www.mymiller.name\/wordpress\/category\/spring_ai\/"},"img":{"alt_text":"","src":"https:\/\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2024\/10\/compliance-5899194_1280-jpg.avif","width":350,"height":200,"srcset":"https:\/\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2024\/10\/compliance-5899194_1280-jpg.avif 1x, https:\/\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2024\/10\/compliance-5899194_1280-jpg.avif 1.5x, https:\/\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2024\/10\/compliance-5899194_1280-jpg.avif 2x, https:\/\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2024\/10\/compliance-5899194_1280-jpg.avif 3x"},"classes":[]},{"id":2409,"url":"https:\/\/www.mymiller.name\/wordpress\/lambda_stream\/java-getter-setter-used-as-lamdas\/","url_meta":{"origin":3970,"position":5},"title":"Java getter\/setter used as Lamda&#8217;s","author":"Jeffery Miller","date":"December 23, 2025","format":false,"excerpt":"Once again I'm looking into ways to make coding so much easier. I needed to be able to pass in a Class::get and a Class:set as a Lamda in order to be able to reuse code across types. It's a rather simple process. However I have not found it really\u2026","rel":"","context":"In &quot;Lambda's and Streams&quot;","block_context":{"text":"Lambda's and Streams","link":"https:\/\/www.mymiller.name\/wordpress\/category\/lambda_stream\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2018\/10\/coffee-cup-2317201_640.jpg?fit=640%2C426&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2018\/10\/coffee-cup-2317201_640.jpg?fit=640%2C426&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2018\/10\/coffee-cup-2317201_640.jpg?fit=640%2C426&ssl=1&resize=525%2C300 1.5x"},"classes":[]}],"jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/www.mymiller.name\/wordpress\/wp-json\/wp\/v2\/posts\/3970","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.mymiller.name\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.mymiller.name\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.mymiller.name\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.mymiller.name\/wordpress\/wp-json\/wp\/v2\/comments?post=3970"}],"version-history":[{"count":1,"href":"https:\/\/www.mymiller.name\/wordpress\/wp-json\/wp\/v2\/posts\/3970\/revisions"}],"predecessor-version":[{"id":3972,"href":"https:\/\/www.mymiller.name\/wordpress\/wp-json\/wp\/v2\/posts\/3970\/revisions\/3972"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.mymiller.name\/wordpress\/wp-json\/wp\/v2\/media\/3971"}],"wp:attachment":[{"href":"https:\/\/www.mymiller.name\/wordpress\/wp-json\/wp\/v2\/media?parent=3970"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.mymiller.name\/wordpress\/wp-json\/wp\/v2\/categories?post=3970"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.mymiller.name\/wordpress\/wp-json\/wp\/v2\/tags?post=3970"},{"taxonomy":"series","embeddable":true,"href":"https:\/\/www.mymiller.name\/wordpress\/wp-json\/wp\/v2\/series?post=3970"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}