# Bryce Kirk > I consult, design and develop for the modern web. Based in Calgary, Alberta, Canada, working with clients across the world. This is a public portfolio and marketing site. OAuth registration is not live. Inquiries can be sent with an unauthenticated, rate-limited POST to the contact API. ## Primary - [About](https://www.brycekirk.com/about): Background, roles, and how Bryce works. - [Work](https://www.brycekirk.com/portfolio): Selected design and development projects. - [Contact](https://www.brycekirk.com/contact): Inquiry form; email info@brycekirk.com. - [Contact API](https://www.brycekirk.com/api/contact): POST JSON to send Bryce an inquiry. GET this URL for the field schema. Unauthenticated, rate-limited. Omit `_gotcha` or send an empty string. - [Blog](https://www.brycekirk.com/blog): Writing on the web, tools, and adjacent topics. - [Markdown homepage](https://www.brycekirk.com/index.md): Full site summary in Markdown for agents. ## Featured work - [Calm Health](https://www.brycekirk.com/portfolio/calm-health): Team-embedded web developer and go-to problem solver - [Duolingo](https://www.brycekirk.com/portfolio/duolingo): On-call email developer - [Benchling](https://www.brycekirk.com/portfolio/benchling): Dropping in to fill a webdev maternity leave - [MDA Space](https://www.brycekirk.com/portfolio/mda-space): Lending a hand to the makers of the Canadarm - [Redpath Sugar](https://www.brycekirk.com/portfolio/redpath-sugar): Bilingual build for a Canadian sugar mainstay that predates confederation - [Green Calgary](https://www.brycekirk.com/portfolio/green-calgary): Information architecture, design, and development for a local urban environmental organization ## Writing - [Against Reversing Blanket Rezoning in Calgary](https://www.brycekirk.com/posts/against-reversing-rezoning-in-calgary): An imperfect solution is far better than no solution - [So, That's It Then](https://www.brycekirk.com/posts/so-thats-it-then): A breakup letter - [No Growth At All Costs](https://www.brycekirk.com/posts/no-growth-at-all-costs): Checking out of the "numbers go up" mindset - [Surrending to Convenience](https://www.brycekirk.com/posts/surrendering-to-convenience): What we might lose when we no longer need to look - [Industrial Revolution for the White-Collared](https://www.brycekirk.com/posts/industrial-revolution-for-the-white-collared): What lessons can we pull from the biggest economic and social upheaval in human history? - [Astro, Cursor AI, and Me](https://www.brycekirk.com/posts/astro-cursor-ai-and-me): Learning and building with a new framework alongside AI is a game-changing experience - [Caching and Eager-Loading With Craft CMS](https://www.brycekirk.com/posts/caching-for-performance-with-craft-cms): When you're working with hefty database calls that are beyond your control, intelligent caching is your best bet - [The Email Link Conundrum](https://www.brycekirk.com/posts/the-email-link-conundrum): A novel new solution to the age-old problem ## Actions - [Contact API](https://www.brycekirk.com/api/contact): POST JSON `{ name, email, message }` with optional `company` and `project_url`. `_gotcha` is a honeypot and must be omitted or empty. No OAuth. Rate-limited (5/hour per IP, 3/hour per email). GET the same URL for the schema. ## Agent discovery - [auth.md](https://www.brycekirk.com/auth.md): How AI agents would register when programmatic access is offered (stub; endpoints not live). - [OAuth Protected Resource](https://www.brycekirk.com/.well-known/oauth-protected-resource): RFC 9728 metadata stub. - [OAuth Authorization Server](https://www.brycekirk.com/.well-known/oauth-authorization-server): RFC 8414 metadata stub with agent_auth block. ## Optional - [Homepage](https://www.brycekirk.com/): Overview, featured work, and partners (includes Organization, Service, and Person JSON-LD). - [Currently reading](https://www.brycekirk.com/currently-reading): Books, articles, and studies of current interest. - [RSS](https://www.brycekirk.com/rss.xml): Blog feed.