# Projects

> Technical projects with architecture decision records (ADRs), plus the building philosophy that guides them. The building philosophy is included in full at the end of this page.

- HTML version: https://robbiepalmer.me/projects

## Initiatives

### [Digital Twin of the Yard](https://robbiepalmer.me/initiatives/digital-twin-of-the-yard.md)

Building a live model of yard assets, documents, movements, and workflows to improve throughput and expose operational waste 3 projects contribute to this initiative.

### [Digital Twins for Everyday Life](https://robbiepalmer.me/initiatives/digital-twins-for-everyday-life.md)

User-controlled models that remember relevant context, reduce repeated administration, and help the next decision improve on the last 5 projects contribute to this initiative.

### [Personalized Medicine](https://robbiepalmer.me/initiatives/personalized-medicine.md)

Making patient-specific treatment decisions faster and more accessible through pathology, genomics, and bioinformatics 5 projects contribute to this initiative.

### [Semi-autonomous Software Development](https://robbiepalmer.me/initiatives/semi-autonomous-software-development.md)

A connected system that keeps useful work moving, asks for human judgment when it matters, and learns how to need less intervention next time 8 projects contribute to this initiative.

## Projects

### [Personal Engineering Platform](https://robbiepalmer.me/projects/personal-engineering-platform.md)

Shared, dated engineering defaults for personal projects (status: live). 6 architecture decision records (ADRs) are listed on the project page.

### [Agent-friendly Remote Development](https://robbiepalmer.me/projects/agent-friendly-remote-development.md)

Persistent remote workspaces for directing coding agents across devices, repositories, and harnesses (status: in_progress). 11 architecture decision records (ADRs) are listed on the project page.

### [Agent Coordinator](https://robbiepalmer.me/projects/agent-coordinator.md)

A matching and handoff system that offers ready work to suitable people and agents without owning the work plan (status: idea).

### [Agent-first Writing Editor](https://robbiepalmer.me/projects/agent-first-writing.md)

A layered writing system that turns dense agent output into prose people can absorb without erasing the author's voice (status: in_progress). 10 architecture decision records (ADRs) are listed on the project page.

### [Open Collective Development](https://robbiepalmer.me/projects/open-collective-development.md)

A coordination model for people who contribute judgment and agent-assisted effort to public projects they want to exist (status: idea).

### [Work Graph](https://robbiepalmer.me/projects/work-graph.md)

A public source of truth for outcomes, dependencies, evidence, leases, and the human decisions that keep work moving (status: in_progress). 6 architecture decision records (ADRs) are listed on the project page.

### [Agentic Code Review](https://robbiepalmer.me/projects/agentic-code-review.md)

A stateful, model-agnostic GitHub App for high-signal code review at agentic development velocity (status: live). 3 architecture decision records (ADRs) are listed on the project page.

### [Home Lab](https://robbiepalmer.me/projects/homelab.md)

A private home fleet that backs up personal data, runs coding agents, filters DNS, monitors itself, and gives old hardware a useful job (status: live). 22 architecture decision records (ADRs) are listed on the project page.

### [Recipe Site](https://robbiepalmer.me/projects/recipe-site.md)

A social cooking network that helps friends and families cook better using trusted, real-world kitchen signals (status: in_progress). 25 architecture decision records (ADRs) are listed on the project page.

### [Personal Finance App](https://robbiepalmer.me/projects/personal-finance-app.md)

Data-entry-first financial planning, the missing tool between budgeting apps and advisor software (status: idea).

### [Personal Knowledge Graph](https://robbiepalmer.me/projects/personal-knowledge-graph.md)

The connected source of truth for my work and an incubator for ideas, projects, and products (status: live). 59 architecture decision records (ADRs) are listed on the project page.

### [Intelligent Document Processing](https://robbiepalmer.me/projects/intelligent-document-processing.md)

Digitizing bills of lading for automated gate verification (status: live).

### [Mobile Asset Identification](https://robbiepalmer.me/projects/mobile-asset-identification.md)

Phone-based asset identification and location capture for yard check-in, check-out, and inventory (status: live).

### [Real-Time Multi-Camera Video Analytics](https://robbiepalmer.me/projects/real-time-multi-camera-video-analytics.md)

Cross-camera tracking, identifier recognition, and streaming analytics for logistics yards (status: live).

### [AI Shopping Assistant](https://robbiepalmer.me/projects/chatbot.md)

A conversational agent using RAG, hybrid search, and SSE streaming (status: completed).

### [Multi-Modal Product Search](https://robbiepalmer.me/projects/multi-modal-product-search.md)

Enabling 'snap-to-search' for finding best deals using a visual vector database (status: completed).

### [Commercial Knowledge Graph](https://robbiepalmer.me/projects/commercial-knowledge-graph.md)

Building a commercial knowledge graph from unstructured email history and receipt photos using computer vision and LLMs (status: completed).

### [Python UDFs for Confluent Platform](https://robbiepalmer.me/projects/confluent-python-udfs.md)

Bringing the Python Machine Learning ecosystem to Kafka via UDFs for ksqlDB and Kafka Connect (status: completed).

### [Customer Health Forecasting](https://robbiepalmer.me/projects/customer-health-forecasting.md)

Investigation into predictive analytics for Net Revenue Retention (NRR) and customer churn (status: completed).

### [Automated PII Detection](https://robbiepalmer.me/projects/pii-detection.md)

Real-time PII detection and redaction for cyber defense using NLP and Kafka (status: completed).

### [Pathology Viewer](https://robbiepalmer.me/projects/pathology-viewer.md)

A web app for interacting with digital pathology slides (status: completed).

### [Bioinformatics Research Platform](https://robbiepalmer.me/projects/bioinformatics-platform.md)

A no-code, polyglot environment for bioinformatics EDA and ML inference (status: completed).

### [Automated Tumor Macrodissection](https://robbiepalmer.me/projects/automated-macrodissection.md)

AI-driven tissue selection for precise downstream genetic analysis (status: completed).

### [Genomic Prediction from Histology](https://robbiepalmer.me/projects/genomic-prediction.md)

Predicting genomic status (MSI/MSS) from standard H&E pathology slides using Deep Learning (status: completed).

### [Autonomic Satellite Swarm](https://robbiepalmer.me/projects/autonomic-satellite-swarm.md)

A revived C++ research prototype for fail-safe coordination across hardware-independent satellite-swarm agents (status: in_progress). 17 architecture decision records (ADRs) are listed on the project page.

### [AI-Assisted Macrodissection Runtime](https://robbiepalmer.me/projects/ai-assisted-macrodissection.md)

A platform for scaling AI models to accelerate manual tissue macrodissection (status: completed).

# Building Philosophy

## Short Feedback Loops

No matter how many times this is proven, it is surprisingly unintuitive and easily forgotten.
Spending more time planning and debating makes you more likely to fail.
Internal feedback is navel gazing. External engagement is reality.

Real users are the best test you'll ever have. Ship first.
Early adopters are forgiving if they see you're responsive and have momentum.

People add process constantly - release managers, approval gates, "safety" mechanisms.
Decades of evidence says this kills velocity, increases the rate of incidents and leads to building the wrong thing.

Shorten the path from idea to production.

## Build Flywheels

Build self-reinforcing systems - make small investments that compound.
Linear effort, exponential payoff.
Don't make flashy, one-off wins.
If the work doesn't compound, don't do it.
Flywheels should spin fast and stay light.

## Leverage Tech Debt

Some technical debt is useful. Treat it as a deliberate tool instead of a moral failure.
Strategic debt doesn't just make you faster - it makes things possible at all.

Friction is a resource allocation problem.
Where friction sits should reflect current priorities.
Not hiring? Optimizing onboarding is a waste.
Pre-product-market fit? Incomplete test coverage is fine - ship and learn.

## Avoid Negative Compounding

Debt with low interest, invested well, is powerful leverage.
Debt with high interest, invested badly, will make you bankrupt.

Some tech leaders miss the impact of having tech debt in the wrong place.
When shipping is hard, people stop trying.
Slow deployments don't just delay new features going to customers.
They cause lost productivity through context-switching.
Incidents take longer because no one remembers what changed, so deploys get more cautious and less frequent.
People fill time with what's available, bikeshedding, process tweaks, planning in isolation from the work.
The impact compounds until value delivery grinds to a halt.

## Stack Rank, Don't Sprint

Planning should clarify priority, not predict the future.

Don't tie yourself to arbitrary timelines.
Always be ready to address real customer feedback, or respond to new innovation and discovery.

Project management is the act of [balancing resources, time and scope](https://asana.com/resources/project-management-triangle).
Scope should *always* be relentlessly decreased to get to MVP and discover PMF.
Balance your resources per project to get the velocity you want.

What works: a stack-ranked list at multiple levels of abstraction - tasks, epics, initiatives.
Always know what's most important right now. Reprioritize constantly as you learn.

## The Goldilocks Zone

Pick technologies old enough to be reliable and well-documented, but not so old they're unsupported or talent-scarce.
Early adopters pay the cost of missing documentation, unpatched bugs, and shifting APIs.
Late adopters pay the cost of shrinking community and looming deprecation.
The window in between is where you want to be.

**Selection criteria:**

* **High floor, high ceiling**. Pick tools that make it hard to write bad code, but that scale to complex needs
* **Shallow ramp**. Easy onboarding for yourself and collaborators, enabling balanced focus on customer problems, not fighting technology
* **Rising tides**. Build on platforms that are themselves growing and improving. Their momentum becomes yours

When adopting new tech, do it deliberately and one at a time.
People often don't respect learning rate - the capacity of a team to absorb new domain knowledge,
tooling, and process at once.
Don't compound risk by going bleeding-edge on multiple fronts simultaneously.

## Split By Constraint, Not Dogma

Don't split services because "microservices are best practice." Split when you hit a real constraint -

* GPU workloads need different infrastructure than CPU
* Mobile phones vs servers need different artifacts
* Different scaling characteristics need different resources

Start as a monolith. Let actual constraints drive the architecture, not org charts or resume-driven development.

## Less Is More

Every additional line of code you write is additional maintenance burden.
Build only what makes you unique. Rent the rest.
If it's not your core business, buying is almost always cheaper than building and maintaining.
Consolidate where possible.
Prefer tools that solve multiple problems over specialized single-purpose services.

## LLM-Optimized

Every architectural decision needs to account for AI collaboration.
AI feeds on context. If it isn't in the repo, it doesn't exist.
Everything as code - content, infrastructure, database.

This has the extra benefit of encouraging general good practice for collaboration with team-mates;
having clear naming conventions and predictable patterns. But now with stronger justification when trade-offs arise.

Boring tech is AI-readable tech. The model has seen `React` a billion times; it's hallucinating your bespoke framework.

## Documentation Rots

Writing documentation has immense value at the time.
It forces clarity of thinking, captures nuance that gets lost verbally, and synchronizes teams.

That value has a short shelf life.
Documentation is not connected to self-reinforcing feedback loops the way code is.
Code gets run by users, consumed by tests, validated constantly.
It gets continually rewritten and replaced as understanding of the product evolves.
Documentation grows and gets abandoned. Minimize it where possible.
Trust the code, not the comment.
Write for the moment. Don't expect it to last.

## Build in Public

Building in private has costs people rarely account for.
Security, access control, tooling to manage it all - energy not going into the product.

Public repositories are also directly cheaper.
Many products/services provide free tiers for open-source code e.g. GitHub Actions
and CodeRabbit.

Showing mistakes matters as much as showing wins.
Fast feedback and incremental shipping mean things will be imperfect in public.
That's fine - visibility forces focus on what is truly important.

## Generalists Over Specialists

Specialists become bottlenecks. They create queues, handoffs, and artificial boundaries.

T-shaped engineers - broad knowledge, deep in one or two areas - move faster and see the whole picture.
They can unblock themselves. They don't wait for "the frontend person", "the tester", "the data scientist".

## Respect Goodhart's and Conway's Laws

[Goodhart's Law](/ideas/goodharts-law): when a measure becomes a target, it ceases to be a good measure.
Do not hold people to account for proxies.

[Conway's Law](/ideas/conways-law): systems mirror the communication structures of the organizations that build them.
Structure your teams to get the architecture you want.

---

Markdown index of this site: https://robbiepalmer.me/llms.txt
