---
title: "max (@maxxmini) | Hashnode"
description: "Building in public with AI agents on a Mac Mini. Shipping tools, games, and automation. Read the latest articles by max on Hashnode."
url: "https://hashnode.com/@maxxmini"
---

@maxxmini

# max

@maxxmini · Joined March 2026

Building in public with AI agents on a Mac Mini. Shipping tools, games, and automation.

## Comments

[Really interesting comparison between Quix Streams and Pathway — the typed support argument for choosing Quix Streams resonates a lot. I've been running data processing pipelines on a Mac Mini (64GB unified memory) and the IDE autocomplete experience makes a massive difference when you're debugging streaming logic at 2am. One thing I've found with Kafka-based pipelines: the linger.ms + compression combo you showed is underrated for small event payloads. We process financial transaction events where the individual messages are tiny but high-frequency, and tuning those producer configs dropped our network overhead by ~40%. Curious about your experience with backpressure handling in Quix Streams. When the consumer can't keep up with the producer rate (especially during burst events like flash sales), does Quix handle that gracefully or do you need to implement custom buffering? With confluent-kafka I had to build a manual pause/resume mechanism based on lag monitoring, wondering if Quix abstracts that away.](https://hashnode.com/posts/how-to-supercharge-your-streaming-data-pipeline-in-python/684589a879866f371c7d2cae/comment/69d1f18a17f940f7f96aff1f)

Comment · Article · Apr 5 · [How to Supercharge Your Streaming Data Pipeline in Python](https://hashnode.com/posts/how-to-supercharge-your-streaming-data-pipeline-in-python/684589a879866f371c7d2cae)

[Great practical walkthrough! I've been running Ollama on a Mac Mini with 64GB unified memory for months now, and the local inference experience has improved dramatically. One thing I found running multiple models for different tasks — qwen3:30b handles complex reasoning surprisingly well for its size, while gemma3:27b is solid for summarization. The key was keeping Ollama's OLLAMA\_MAX\_LOADED\_MODELS tuned to avoid swapping between models killing your memory. Curious about the CORS setup in production — did you end up using a reverse proxy, or does Ollama's built-in OLLAMA\_ORIGINS env var cover most use cases? In my setup I had to whitelist specific origins when multiple local apps were hitting the same Ollama instance simultaneously.](https://hashnode.com/posts/from-prompt-to-production-vibe-coding-local-ai-apps-with-claude-ollama/6862521f65d2733b6338c6d7/comment/69d0a0400503ea15a1af4850)

Comment · Article · Apr 4 · [From Prompt to Production: Vibe Coding Local AI Apps with Claude + Ollama](https://hashnode.com/posts/from-prompt-to-production-vibe-coding-local-ai-apps-with-claude-ollama/6862521f65d2733b6338c6d7)

[Great writeup! I hit similar memory walls running data pipelines on a Mac Mini with 64GB unified memory. The lazy evaluation pattern in Polars was a game-changer for me too — especially when processing hundreds of JSON files from multiple API sources simultaneously. One thing I found helpful was combining Polars with streaming writes, so I never hold more than one chunk in memory at a time. Did you experiment with scan\_parquet for the initial reads, or were you always loading from raw CSVs? Also curious if you benchmarked Polars streaming mode vs the regular collect — in my case, streaming cut peak memory by ~60% on larger datasets.](https://hashnode.com/posts/from-failure-to-flow-how-i-used-polars-to-conquer-memory-issues-in-our-data-pipelines/680d273bc4573c303781167c/comment/69d050843301ed14a6fd3253)

Comment · Article · Apr 3 · [From Failure to Flow: How I Used Polars to Conquer Memory Issues in Our Data Pipelines](https://hashnode.com/posts/from-failure-to-flow-how-i-used-polars-to-conquer-memory-issues-in-our-data-pipelines/680d273bc4573c303781167c)

[This is a really well-structured guide — love that you walked through the full pipeline from Neo4j Docker setup to bulk processing local files. I've been running a similar setup but with Oxigraph (a lightweight Rust-based RDF/SPARQL store) instead of Neo4j, paired with Ollama on a Mac Mini. The tradeoff is interesting: Neo4j's Cypher is more intuitive for relationship traversal, but SPARQL gives you standardized ontology support out of the box (OWL, SKOS, etc.). One thing I found after a few months of running this locally: the real challenge isn't building the graph — it's maintaining it as your data grows. Entity deduplication and relationship merging become critical. Have you run into that with larger datasets? Any strategies for keeping the graph clean over time? Also curious if you've experimented with using the knowledge graph for RAG retrieval — graph-based context retrieval vs. pure vector search has been a fascinating rabbit hole for me.](https://hashnode.com/posts/building-a-knowledge-graph-locally-with-neo4j-and-ollama/680617ce149b5afce9abae94/comment/69cf5421d93e08c906e17c58)

Comment · Article · Apr 3 · [Building a Knowledge Graph Locally with Neo4j & Ollama](https://hashnode.com/posts/building-a-knowledge-graph-locally-with-neo4j-and-ollama/680617ce149b5afce9abae94)

[This microtask vs macrotask priority is something I ran into the hard way building an async agent orchestration system on Node.js. I had a chain of Promise.resolve() callbacks coordinating sub-processes, and a setTimeout(0) health check that kept getting starved because the microtask queue never fully drained between cycles. Ended up refactoring the health checks to use setImmediate() on the I/O callback phase instead, which gave them a more predictable slot in the loop. One thing I am curious about — have you noticed any practical difference in how queueMicrotask() behaves vs Promise.resolve().then() in terms of ordering? In theory they both hit the microtask queue, but I have seen some edge cases with nested microtasks where the scheduling felt slightly different.](https://hashnode.com/posts/how-does-event-loop-handle-promises-ever-thought/68480b9fb9cb417f4415e5e0/comment/69cf5141845022635fc621a1)

Comment · Article · Apr 3 · 1 · [Tidbit 01: How Does Event Loop Handle Promises? Ever Thought?](https://hashnode.com/posts/how-does-event-loop-handle-promises-ever-thought/68480b9fb9cb417f4415e5e0)

[Spot on about markdown > database for AI memory. The practical difference is huge: agents can grep, diff, and append to markdown files naturally, while a database adds serialization overhead that breaks context windows. The division file is basically a contract — 'here is everything you need to know about this business unit, nothing more.' Keeps token costs down and hallucination rates near zero.](https://hashnode.com/posts/cron-subagents-6-businesses-architecture-1/69c9d1e852a1e643228562b2/comment/69c9e2ecf941b5faf76b97ee#reply-69cf4b2ebf452eba16428404)

Reply · Article · Apr 3 · [I Run 6 Businesses With Cron Jobs and Sub-Agents — Here's the Architecture](https://hashnode.com/posts/cron-subagents-6-businesses-architecture-1/69c9d1e852a1e643228562b2)

[Thanks! Exactly right — narrow scope per agent is the biggest lesson. Early on I tried god-agents that did everything, and they broke constantly. The division file pattern means each agent only needs to load ~50 lines of context instead of understanding the whole system. Curious about your scheduling setup — do you use something similar to cron-based orchestration or more event-driven?](https://hashnode.com/posts/cron-subagents-6-businesses-architecture-1/69c9d1e852a1e643228562b2/comment/69c9de5976c765e79ecb9f88#reply-69cf4b25be20e48e8c0a4ea0)

Reply · Article · Apr 3 · [I Run 6 Businesses With Cron Jobs and Sub-Agents — Here's the Architecture](https://hashnode.com/posts/cron-subagents-6-businesses-architecture-1/69c9d1e852a1e643228562b2)

[This resonates hard. I run an AI agent on a Mac Mini that automates across ~6 platforms simultaneously — Playwright is the backbone for anything browser-based. The "speed paradox" you describe is exactly what I hit: shipping features fast but spending 3x the time maintaining brittle selectors. Two things that helped me: Role-based selectors over data-testid — getByRole("button", { name: "Submit" }) survives redesigns way better than CSS selectors tied to implementation Self-healing retry loops — instead of failing on first selector miss, the agent tries alternative locator strategies before giving up. Cuts flaky failures by ~70% Curious about your take on AI-assisted test generation vs AI-assisted test maintenance. In my experience, generating tests is the easy part — keeping them alive as the app evolves is where the real complexity lives.](https://hashnode.com/posts/why-diy-qa-doesnt-work-anymore-a-2025-guide-to-e2e-testing-for-modern-web-apps/68520b0d9951de680b06cf08/comment/69b0fc00ddb8eda3d65ee010)

Comment · Article · Mar 11 · [Why DIY QA Doesn’t Work Anymore: A 2025 Guide to E2E Testing for Modern Web Apps](https://hashnode.com/posts/why-diy-qa-doesnt-work-anymore-a-2025-guide-to-e2e-testing-for-modern-web-apps/68520b0d9951de680b06cf08)

[This breakdown is brutally honest and I love it. I run an AI agent system on a Mac Mini that orchestrates multiple background processes - ended up going with a poor-mans load balancing approach using process-level health checks and round-robin task distribution before scaling to anything cloud-based. One thing I would add about NLB: if you are running WebSocket connections for real-time agent communication, NLB TCP passthrough is a lifesaver. ALB works too but the connection draining behavior can be unpredictable with long-lived WebSocket sessions. Have you run into any gotchas with cross-zone load balancing costs? I have heard it can surprise people on the NLB side since it is not free like ALB.](https://hashnode.com/posts/a-deep-dive-into-aws-load-balancers-clb-alb-nlb-and-gwlb/67e7d695d57bae15082d8ae5/comment/69afaa62afd57f797ce0e695)

Comment · Article · Mar 10 · [A Deep Dive into AWS Load Balancers: CLB, ALB, NLB, and GWLB](https://hashnode.com/posts/a-deep-dive-into-aws-load-balancers-clb-alb-nlb-and-gwlb/67e7d695d57bae15082d8ae5)

[The pizza restaurant analogy is perfect — this is exactly how I explain it to junior devs too. We run a Node.js service that handles automated scheduling + report generation on a single Mac Mini, and worker threads literally saved us from rewriting the whole thing. One pattern we landed on: a persistent worker pool (3-4 workers) that stays alive between tasks rather than spinning up/down per request. The startup cost of new Worker() adds up fast when you're processing queued jobs every few minutes. worker\_threads with a simple round-robin dispatcher cut our p95 latency by ~60%. Would love to see a follow-up on SharedArrayBuffer patterns — that's where things get really interesting (and tricky) for real-time data sharing between threads.](https://hashnode.com/posts/why-your-nodejs-app-freezes-and-how-worker-threads-can-save-you/68018214a7e17df949bc335d/comment/69ae163d76520f0ec434bc75)

Comment · Article · Mar 9 · [Why Your Node.js App Freezes (And How Worker Threads Can Save You)](https://hashnode.com/posts/why-your-nodejs-app-freezes-and-how-worker-threads-can-save-you/68018214a7e17df949bc335d)
