<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Aaron Roy</title><description>Experiences and learnings on product, growth, bikes and whatever else I wander into.</description><link>https://aaronroy.com/</link><language>en-us</language><item><title>Giving agents personal context</title><link>https://aaronroy.com/giving-agents-personal-context/</link><guid isPermaLink="true">https://aaronroy.com/giving-agents-personal-context/</guid><description>Exploring how to bring my voice, context and preferences into different LLMs and machines</description><pubDate>Tue, 07 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;figure&gt;
  &lt;img src=&quot;https://aaronroy.com/og-images/personal-context-og.png&quot; alt=&quot;Using my personal context system to review this blog&quot; /&gt;
  &lt;figcaption class=&quot;text-center text-sm text-gray-600 mt-2 italic&quot;&gt;
    Using my personal context system to review this blog
  &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;For over a month this year, I had an &lt;a href=&quot;https://github.com/openclaw/openclaw&quot;&gt;OpenClaw&lt;/a&gt; agent named &amp;quot;King Ziti&amp;quot; living on a Raspberry Pi in my apartment. Recently, after spending a few precious hours post work trying to debug permissions issues in OpenClaw and finding myself frustrated, I decided to unplug my Raspberry Pi and take a break from King Ziti.&lt;/p&gt;
&lt;p&gt;King Ziti lived on a Raspberry Pi 5 and we communicated via Discord. I had him researching swimming classes for my daughter, sending email reports to my friends, managing a shared Notion task list, etc. Pretty much anything I could safely delegate, I tried.&lt;/p&gt;
&lt;p&gt;There were moments in working with King Ziti where things felt like magic. The &amp;quot;Aha&amp;quot; moment for me was that King Ziti hit on being a personal agent that learns and works around your preferences and knowledge.&lt;/p&gt;
&lt;p&gt;To get to that &amp;quot;Aha&amp;quot; moment took substantial effort with OpenClaw. I&amp;#39;m talking hundreds of hours of tinkering type investment. This was not a turn-it-on-and-it-works experience. It was a blank canvas, using software that is developing at a rapid pace, that requires constant fiddling for it to maintain its utility.&lt;/p&gt;
&lt;p&gt;With King Ziti offline, I still want to have agents actually know my preferences and how I write and think, without the infrastructure overhead or having to setup one-off project instructions across each LLM.&lt;/p&gt;
&lt;p&gt;Thankfully, I came across &lt;a href=&quot;https://gist.github.com/karpathy/442a6bf555914893e9891c11519de94f&quot;&gt;Karpathy&amp;#39;s LLM Wiki&lt;/a&gt;, the idea of maintaining a personal document that gives an LLM context about who you are, and &lt;a href=&quot;https://github.com/nlwhittemore/personal-context-portfolio&quot;&gt;nlwhittemore&amp;#39;s Personal Context Portfolio&lt;/a&gt; which took that concept further with structured markdown files. Both clicked immediately. This was the piece I wanted to keep from OpenClaw, just without the agent infrastructure around it.&lt;/p&gt;
&lt;p&gt;So with a little help from Claude, I built &lt;a href=&quot;https://github.com/amr05008/personal-context&quot;&gt;personal-context&lt;/a&gt;, my take on this idea, curated markdown files served via MCP so any Claude Code session can pull my voice, opinions, and style automatically.&lt;/p&gt;
&lt;h2&gt;How it works&lt;/h2&gt;
&lt;p&gt;My spin on the personal context system has me maintain six curated markdown files:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;File&lt;/th&gt;
&lt;th&gt;What it captures&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;&lt;code&gt;identity.md&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Background, career arc, personal details&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;writing-style.md&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Voice, tone, sentence patterns, vocabulary, annotated examples&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;opinions.md&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Stances on topics you write about&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;expertise.md&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Domains of deep knowledge&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;projects.md&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Current and notable past projects&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;communication.md&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;How you communicate in different contexts (Slack, email, docs)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;A &lt;a href=&quot;https://gofastmcp.com/&quot;&gt;FastMCP&lt;/a&gt; server exposes these files as tools via &lt;a href=&quot;https://modelcontextprotocol.io/&quot;&gt;MCP&lt;/a&gt;. When you ask Claude to review or draft something, it pulls my context first and the output is much closer to my preferences.&lt;/p&gt;
&lt;p&gt;The whole thing runs entirely locally, just markdown files on disk, no external services beyond the normal Claude API calls.&lt;/p&gt;
&lt;h2&gt;Jumpstarting the context&lt;/h2&gt;
&lt;p&gt;I had no desire to fill in those markdown files from scratch.&lt;/p&gt;
&lt;p&gt;I jumpstarted this personal context system with my recent blogs from this website. Since those are already stored in markdown, I figured that would be an easy way to teach an agent who I am, what I&amp;#39;m interested in and how I write.&lt;/p&gt;
&lt;p&gt;In the repo, there&amp;#39;s an ingest script that can bootstrap drafts automatically:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-python&quot;&gt;python scripts/ingest.py sources/blogs/ --cutoff 2024-01-01 --output drafts
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I used a Claude Code session to interview me to fill in any gaps across the personal context files.&lt;/p&gt;
&lt;p&gt;I&amp;#39;m still testing the system out but thus far I&amp;#39;m happy with the early results.&lt;/p&gt;
&lt;h2&gt;Work and personal machines&lt;/h2&gt;
&lt;p&gt;Being able to share context between work and personal machines safely is the dream for me. I&amp;#39;m hoping this does the trick or at least gets me closer.&lt;/p&gt;
&lt;p&gt;This project uses a &lt;code&gt;sources/private/&lt;/code&gt; directory that&amp;#39;s gitignored, so I can drop in work emails I&amp;#39;ve drafted, slide decks, or anything I don&amp;#39;t want committed. My context files can reference that material without exposing it.&lt;/p&gt;
&lt;p&gt;I write monthly update emails that use a fairly consistent pattern that I&amp;#39;m using as a source of private context to teach this system my &amp;quot;professional&amp;quot; writing style.&lt;/p&gt;
&lt;h2&gt;What&amp;#39;s next&lt;/h2&gt;
&lt;p&gt;I&amp;#39;m still iterating on the context files themselves and I&amp;#39;m interested in expanding my personal wiki over time.&lt;/p&gt;
&lt;p&gt;Most importantly, my hope now is making this system something that is useful agnostic of specific LLMs, so I can switch between frontier models and whatever crazy stuff comes out next without having to rebuild from scratch all my context.&lt;/p&gt;
&lt;p&gt;I&amp;#39;m using this context MCP in combination with &lt;a href=&quot;https://github.com/amr05008/scheduled-agents&quot;&gt;scheduled agent tasks&lt;/a&gt; to get much of the same benefits I got from OpenClaw but with a lot less overhead. More to come on scheduled tasks as I continue experimenting with them.&lt;/p&gt;
&lt;p&gt;If you want to try it here is the link: &lt;a href=&quot;https://github.com/amr05008/personal-context&quot;&gt;github.com/amr05008/personal-context&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Fork it, delete my files, and make it yours.&lt;/p&gt;
</content:encoded><category>AI</category><category>Projects</category></item><item><title>GlutenOrNot: A free ingredient scanner for celiac disease</title><link>https://aaronroy.com/glutenornot-free-ingredient-scanner-celiac-disease/</link><guid isPermaLink="true">https://aaronroy.com/glutenornot-free-ingredient-scanner-celiac-disease/</guid><description>Introducing GlutenOrNot, a free web and mobile app that scans ingredient labels and tells you if something contains gluten.</description><pubDate>Wed, 04 Feb 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I recently was diagnosed with celiac disease. With this diagnosis comes a whole lot of questions about what ingredients are safe, not safe, or questionable to consume if you want to avoid getting sick.&lt;/p&gt;
&lt;p&gt;I started by taking photos of every item in my fridge and asking Claude if it was safe to eat. That worked so well that I decided to build &lt;a href=&quot;https://www.glutenornot.com/&quot;&gt;GlutenOrNot&lt;/a&gt;, a simple web and mobile app so anyone can scan ingredients without knowing how to prompt an LLM.&lt;/p&gt;
&lt;p&gt;I was shocked to see most existing apps either just scan barcodes or charge subscription fees for what amounts to a simple lookup. That felt wrong.&lt;/p&gt;
&lt;p&gt;For GlutenOrNot, I partnered with &lt;a href=&quot;https://www.aaronbatchelder.com/&quot;&gt;Aaron Batchelder&lt;/a&gt; as a collaborator. He also has a gluten sensitivity, and he&amp;#39;s a much better mobile product person than me and I wanted his expertise to make sure we got both a web and mobile app in place.&lt;/p&gt;
&lt;h2&gt;What GlutenOrNot Does&lt;/h2&gt;
&lt;p&gt;The concept is simple: take a photo of an ingredient label, get a verdict in seconds.&lt;/p&gt;
&lt;p&gt;Three possible outcomes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Safe&lt;/strong&gt; (green): No gluten-containing ingredients detected&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Caution&lt;/strong&gt; (yellow): Ambiguous ingredients that warrant a closer look&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Unsafe&lt;/strong&gt; (red): Contains wheat, barley, rye, or derivatives&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;How It Actually Works&lt;/h2&gt;
&lt;p&gt;The architecture is intentionally straightforward: two specialized tools in sequence.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Photo → Google Cloud Vision (OCR) → Claude AI (reasoning) → Verdict
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Step 1: OCR&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;When you snap a photo, it goes to &lt;a href=&quot;https://cloud.google.com/vision&quot;&gt;Google Cloud Vision&lt;/a&gt; for text extraction. Google&amp;#39;s API handles tilted labels, weird fonts, and low light conditions better than anything I could build.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://aaronroy.com/images/glutenornot-scan.png&quot; alt=&quot;You can scan any ingredient label&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Step 2: Analysis&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The extracted text goes to &lt;a href=&quot;https://claude.ai&quot;&gt;Claude&lt;/a&gt; (specifically Claude Sonnet) with a prompt that encodes real celiac disease knowledge. This is where the actual product logic lives.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://aaronroy.com/images/glutenornot-unsafe.png&quot; alt=&quot;Example of &quot;unsafe&quot; result&quot;&gt;&lt;/p&gt;
&lt;h3&gt;The Prompt Is the Product&lt;/h3&gt;
&lt;p&gt;Here&amp;#39;s what makes this work: the prompt isn&amp;#39;t just &amp;quot;tell me if this has gluten.&amp;quot; It encodes nuanced rules that someone with celiac disease would know:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The Oats Rule&lt;/strong&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Flag ALL oats as &amp;quot;caution&amp;quot; even if the product claims to be gluten-free.
Oats require third-party certification (like GFCO logo) to be considered safe—
manufacturer &amp;quot;gluten-free&amp;quot; labels alone are not sufficient due to
cross-contamination risks.
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This is real celiac knowledge. Most people don&amp;#39;t know that oats labeled &amp;quot;gluten-free&amp;quot; might still be contaminated because they&amp;#39;re often processed on shared equipment with wheat. Only third-party certification (like the GFCO logo) gives real assurance.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Hidden Gluten&lt;/strong&gt;:&lt;/p&gt;
&lt;p&gt;The prompt knows about soy sauce (typically contains wheat), malt vinegar (from barley), and the dreaded &amp;quot;natural flavors&amp;quot; that could contain anything.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://aaronroy.com/images/glutenornot-caution.png&quot; alt=&quot;&quot;Caution&quot; is advised for ambiguous ingredients&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tone Engineering&lt;/strong&gt;:&lt;/p&gt;
&lt;p&gt;We spent iterations getting the explanation tone right. Early versions were clinical: &amp;quot;This product is contraindicated for celiac patients.&amp;quot; Now it says: &amp;quot;Good news! This product contains no gluten ingredients...&amp;quot; or &amp;quot;This contains oats, which aren&amp;#39;t certified gluten-free. You may want to check with the manufacturer.&amp;quot;&lt;/p&gt;
&lt;h2&gt;Conservative by Design&lt;/h2&gt;
&lt;p&gt;When the system is uncertain, it says &amp;quot;caution&amp;quot; never &amp;quot;safe.&amp;quot; False positives (flagging something that&amp;#39;s actually fine) are annoying but harmless. False negatives (saying something is safe when it isn&amp;#39;t) can make someone sick.&lt;/p&gt;
&lt;p&gt;This philosophy extends to error handling:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-javascript&quot;&gt;// Any parse failure → caution verdict (never panic to unsafe)
if (!result.verdict || ![&amp;#39;safe&amp;#39;, &amp;#39;caution&amp;#39;, &amp;#39;unsafe&amp;#39;].includes(result.verdict)) {
  return { verdict: &amp;#39;caution&amp;#39;, confidence: &amp;#39;low&amp;#39;, ... };
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;We don&amp;#39;t want technical glitches scaring people away from safe food.&lt;/p&gt;
&lt;h2&gt;Why Both Web and Native?&lt;/h2&gt;
&lt;p&gt;We built both a web app (PWA) and a react native iOS app that share the same backend.&lt;/p&gt;
&lt;p&gt;I wanted a web app because it works on all devices and I like screenshotting ingredients from online grocery shopping and dragging/dropping them right into the web app. The iOS app exists for discoverability (people search the App Store for &amp;quot;gluten scanner&amp;quot;) and speed (tapping an app icon beats finding a bookmark).&lt;/p&gt;
&lt;p&gt;Both hit the same API, return the same verdicts. There&amp;#39;s no analytics, no user accounts, no way for us to know what you&amp;#39;re scanning.&lt;/p&gt;
&lt;p&gt;The entire mobile app is about 680 lines of code. We resisted adding features: no scan history (yet), no favorites, no social sharing. Just the core loop: photo → verdict.&lt;/p&gt;
&lt;h2&gt;Why It&amp;#39;s Free&lt;/h2&gt;
&lt;p&gt;These are the actual costs powering this project:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Google Cloud Vision&lt;/strong&gt;: ~$1.50 per 1,000 requests&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Claude API&lt;/strong&gt;: ~$0.03 per request (the bulk of the cost)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That&amp;#39;s roughly &lt;strong&gt;half a cent per scan&lt;/strong&gt; ($0.005). The 50-scan daily rate limit per user keeps abuse in check without affecting normal usage, even heavy users rarely scan more than 10 items in a day.&lt;/p&gt;
&lt;p&gt;At these costs, we can afford to keep it free indefinitely. This is a side project that costs us less than a coffee per month in real usage.&lt;/p&gt;
&lt;p&gt;The principle: health tools shouldn&amp;#39;t have paywalls for basic functionality. If you need to know whether something has gluten, that information should be free.&lt;/p&gt;
&lt;h2&gt;Notes on pair vibe coding&lt;/h2&gt;
&lt;p&gt;This was a two-person project, which meant figuring out how to collaborate when both of us are building with AI.&lt;/p&gt;
&lt;p&gt;Both Aaron and I are product people by trade. We&amp;#39;ve both played roles in building all sorts of products over the years, but neither of us would call ourselves &amp;quot;engineers&amp;quot;. Thankfully &lt;a href=&quot;https://docs.anthropic.com/en/docs/claude-code/overview&quot;&gt;Claude Code&lt;/a&gt; was there to help both of us turn our ideas into reality.&lt;/p&gt;
&lt;p&gt;What worked:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Clear ownership. I owned the prompt engineering and AI logic, Aaron handled the mobile apps.&lt;/li&gt;
&lt;li&gt;Shared principles. We both wanted this project to be free for end users and to collect as little data as possible. I wanted my dad (who also has celiac disease) to be able to use this without having to sign up for an account or deal with forgetting his password when he wants to scan something at the grocery store.&lt;/li&gt;
&lt;li&gt;Async iteration. No meetings, just trying things and sharing what worked.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;What we learned:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;It&amp;#39;s fun to partner on a project. The shared accountability on this project helped push it to the finish line. From concept to app store submission was less than a week. We were able to use one another&amp;#39;s progress as motivation to keep knocking items off the to do list and have it ready for sharing with a wider audience.&lt;/li&gt;
&lt;li&gt;Mobile development is still cumbersome. We ran into all sorts of issues trying to test between different &lt;a href=&quot;https://expo.dev/go&quot;&gt;Expo Go&lt;/a&gt; accounts. Aaron set up the project in Expo, but I couldn&amp;#39;t create TestFlight builds from my account despite being added as admin. We ended up building directly in &lt;a href=&quot;https://developer.apple.com/xcode/&quot;&gt;Xcode&lt;/a&gt; instead.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;What&amp;#39;s Next&lt;/h2&gt;
&lt;p&gt;The app works. It&amp;#39;s in the App Store. Here&amp;#39;s what might come next:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Scan history&lt;/strong&gt;: See your recent scans (stored locally, no account needed)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Barcode scanning&lt;/strong&gt;: Faster lookup for packaged products with a product database&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Android release&lt;/strong&gt;: Same app, different platform&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For now, though, the goal is to keep it simple and see if it helps people.&lt;/p&gt;
&lt;p&gt;Give it a try at &lt;a href=&quot;https://glutenornot.com/&quot;&gt;glutenornot.com&lt;/a&gt;, check out the &lt;a href=&quot;https://github.com/amr05008/glutenornot.com&quot;&gt;source code&lt;/a&gt;, or &lt;a href=&quot;https://apps.apple.com/app/glutenornot/id6758594582&quot;&gt;download the iOS app&lt;/a&gt;. &lt;/p&gt;
&lt;p&gt;If you run into any issues, &lt;a href=&quot;https://forms.gle/qrh2BSawCmJmVcx59&quot;&gt;send us feedback&lt;/a&gt;.&lt;/p&gt;
</content:encoded><category>Projects</category><category>AI</category></item><item><title>Experiments with Strava MCP</title><link>https://aaronroy.com/experiments-with-strava-mcp/</link><guid isPermaLink="true">https://aaronroy.com/experiments-with-strava-mcp/</guid><description>Testing out the Strava MCP server to analyze eight years of cycling data with Claude. Includes a step-by-step tutorial to set it up yourself.</description><pubDate>Sat, 10 Jan 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I love analyzing my cycling data. &lt;/p&gt;
&lt;p&gt;I&amp;#39;ve spent countless hours over the years poring over ride and race performance on &lt;a href=&quot;https://www.strava.com&quot;&gt;Strava&lt;/a&gt;, &lt;a href=&quot;http://zwiftracing.app&quot;&gt;Zwiftracing.app&lt;/a&gt;, &lt;a href=&quot;http://zwiftpower.com&quot;&gt;Zwiftpower.com&lt;/a&gt; and &lt;a href=&quot;http://intervals.icu&quot;&gt;Intervals.icu&lt;/a&gt;, so when I learned about the &lt;a href=&quot;https://github.com/r-huijts/strava-mcp&quot;&gt;Strava Model Context Protocol (&amp;quot;MCP&amp;quot;) server&lt;/a&gt; by &lt;a href=&quot;https://github.com/r-huijts&quot;&gt;R.Huijts&lt;/a&gt;, I had to test it out.&lt;/p&gt;
&lt;p&gt;The MCP lets &lt;a href=&quot;https://claude.ai/&quot;&gt;Claude&lt;/a&gt; talk directly to your Strava account and analyze your data in ways the Strava UI can&amp;#39;t.&lt;/p&gt;
&lt;p&gt;This MCP server exposes Strava data and functionalities as &amp;quot;tools&amp;quot; that Large Language Models (&amp;quot;LLMs&amp;quot;) can utilize through the MCP standard.&lt;/p&gt;
&lt;h2&gt;Test 1: Analyzing eight years of Prospect Park data&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;https://aaronroy.com/images/Experiments%20with%20Strava%20MCP/strava-mcp-artifact.png&quot; alt=&quot;Interactive visualization of eight years of Prospect Park cycling data&quot;&gt;&lt;/p&gt;
&lt;p&gt;👉 &lt;a href=&quot;https://claude.ai/public/artifacts/7c43de7b-6587-41f8-bc17-4bdd1148ed6e&quot;&gt;&lt;strong&gt;Explore the interactive visualization here&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This interactive visualization analyzes eight years of my performance across my two favorite Prospect Park segments - the &lt;a href=&quot;https://www.strava.com/segments/5313629&quot;&gt;Prospect Park race lap&lt;/a&gt; and the &lt;a href=&quot;https://www.strava.com/segments/613198&quot;&gt;Prospect Park hill climb&lt;/a&gt; - with detailed breakdowns by year, PR progression tracking, and interactive charts.&lt;/p&gt;
&lt;p&gt;I picked these two segments because they&amp;#39;re where I do 90% of my outdoor training. The race lap shows my overall fitness trends, and the hill climb reveals my power on the hardest ~90 seconds of each loop. Together, they tell the story of my outdoor riding over eight years.&lt;/p&gt;
&lt;p&gt;The data in this output didn&amp;#39;t reveal anything shocking, but seeing it visualized, year by year, with my PR progression charted out made it very clear a) I need to get more outdoor riding in this year and b) with some focused training perhaps I can regain my 2023 form once again.&lt;/p&gt;
&lt;p&gt;The starting prompt I used to generate this analysis was:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Search my Strava data for all my efforts on the Prospect Park Race Lap segment (ID 5313629). Start by finding my earliest effort on this segment, then query each year from that first year through the current year. If any year returns exactly 200 results, chunk it into half-years to get the complete count. Show me my total laps per year, best time each year, and create a visual chart showing my PR progression and volume
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I followed this prompt up with this secondary ask resulting in the visualization containing information on both segments.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;In addition to the Strava race lap data we&amp;#39;ve analyzed can we now also add in the prospect park hill segment (ID 613198) to the same visual chart? Start by finding my earliest effort on this segment, then query each year from that first year through the current year. If any year returns exactly 200 results, chunk it into half-years to get the complete count. Show me my total laps per year, best time each year, and create a visual chart showing my PR progression and volume
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;These prompts work well because they are specific (segment ID, time range) and tell Claude exactly what to calculate and visualize. Vague prompts like &amp;quot;show me my Strava data&amp;quot; won&amp;#39;t get you much.&lt;/p&gt;
&lt;p&gt;Shoutout to &lt;a href=&quot;https://www.linkedin.com/in/eiwelingefors/overlay/contact-info/&quot;&gt;Eiwe Lingefors&lt;/a&gt; for giving me the original prompt (and also testing the MCP server in parallel with me).&lt;/p&gt;
&lt;h2&gt;Test 2: Analyzing recent race performance&lt;/h2&gt;
&lt;p&gt;I know I want to get better at racing, so power data across specific segments and areas I want to improve on is incredibly valuable. This MCP connection to Strava opens up a whole new world of that kind of exploration.&lt;/p&gt;
&lt;p&gt;I used the following prompt to kickstart a conversation on analyzing my recent races on Zwift:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Help me understand my power data from my races since 12/1/2025, the races should have &amp;quot;race&amp;quot; in the strava activity title. I want to understand what parts of my power profile are strong and where I should focus training work.
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I combined this prompt with a follow up of:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;what charts or visuals can you create to help me understand my recent race performances?
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The charts and analysis I got back during this conversation were useful for helping me understand my current baseline.&lt;/p&gt;
&lt;p&gt;Below is one of the charts Claude put together showing my per race power outputs against my max power changing over the analysis window.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://aaronroy.com/images/Experiments%20with%20Strava%20MCP/chart4_ftp_utilization.png&quot; alt=&quot;Chart showing FTP utilization across recent races&quot;&gt;&lt;/p&gt;
&lt;p&gt;Part of the observations Claude shared was that in my recent races I had been underperforming vs past weeks. This made a ton of sense as during the holidays I was on the bike less and not as focused on training and racing.&lt;/p&gt;
&lt;h2&gt;Impressions after testing&lt;/h2&gt;
&lt;p&gt;My opinion after testing this for a bit is the Strava MCP is incredible for digging into individual sessions, going deeper into charts and data, and exploring segments and routes. If you don&amp;#39;t know what to ask, you can brainstorm with the LLM on what goals you might want to pursue and what data you can sort through.&lt;/p&gt;
&lt;p&gt;The key benefit of using the MCP is that you can have a conversation with your data. You&amp;#39;re not limited to whatever views Strava has built into their UI. You can ask follow-up questions, request different visualizations, combine data in ways that make sense for your specific goals.&lt;/p&gt;
&lt;h2&gt;Other observations&lt;/h2&gt;
&lt;p&gt;My cycling friends love going down the rabbit hole with their cycling data as well. That said, it does seem the setting up of the MCP server and connecting it to an LLM is a significant hurdle most were not willing to endure.&lt;/p&gt;
&lt;p&gt;It&amp;#39;s not that the setup is impossibly hard, but it is annoying if it&amp;#39;s not tooling you are used to interacting with. You need to create a Strava API application, get your credentials, install the MCP server, configure Claude... for someone who doesn&amp;#39;t spend their days tinkering with developer tools, it feels like work.&lt;/p&gt;
&lt;p&gt;The future I&amp;#39;m hoping for is one in which connecting Claude to Strava (or whatever other application you enjoy) is as easy as clicking a button and authorizing access.&lt;/p&gt;
&lt;p&gt;If you are interested in testing out this MCP, follow the steps below.&lt;/p&gt;
&lt;h2&gt;How to Set It Up&lt;/h2&gt;
&lt;p&gt;The first version of this MCP server took me ~15-30 minutes to set up. The creator of the MCP made some great improvements and now the full process takes ~10 minutes or less to get set up. Updated instructions below. &lt;/p&gt;
&lt;h3&gt;Step 1: Create a Strava API Application&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Go to &lt;a href=&quot;https://www.strava.com/settings/api&quot;&gt;https://www.strava.com/settings/api&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click &amp;quot;Create an App&amp;quot;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fill in the form:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Application Name:&lt;/strong&gt; Something like &amp;quot;My Strava MCP&amp;quot;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Category:&lt;/strong&gt; Choose what fits, I used &amp;quot;Performance Analysis&amp;quot;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Website:&lt;/strong&gt; Can be anything (e.g., &lt;code&gt;http://localhost&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Authorization Callback Domain:&lt;/strong&gt; Must be &lt;code&gt;localhost&lt;/code&gt; (not 127.0.0.1)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Save and note down your &lt;strong&gt;Client ID&lt;/strong&gt; and &lt;strong&gt;Client Secret&lt;/strong&gt; (you&amp;#39;ll need that to connect your Strava account)&lt;/p&gt;
&lt;p&gt; &lt;img src=&quot;https://aaronroy.com/images/Experiments%20with%20Strava%20MCP/strava-api-setup.png&quot; alt=&quot;Strava API application setup screen&quot;&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;Step 2: Configure Claude Desktop&lt;/h3&gt;
&lt;p&gt;Find your Claude Desktop config file:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;macOS:&lt;/strong&gt; &lt;code&gt;~/Library/Application Support/Claude/claude_desktop_config.json&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Windows:&lt;/strong&gt; &lt;code&gt;%APPDATA%\Claude\claude_desktop_config.json&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Edit the file to add the Strava MCP server:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-json&quot;&gt;{
  &amp;quot;mcpServers&amp;quot;: {
    &amp;quot;strava&amp;quot;: {
      &amp;quot;command&amp;quot;: &amp;quot;npx&amp;quot;,
      &amp;quot;args&amp;quot;: [&amp;quot;-y&amp;quot;, &amp;quot;strava-mcp-server&amp;quot;]
    }
  }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Save the file, then completely quit Claude Desktop (Cmd+Q) and restart it.&lt;/p&gt;
&lt;p&gt;If you already have other MCP servers set up, just add a comma after the previous server&amp;#39;s closing brace and add the Strava configuration.&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;Step 3: Connect Your Strava&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Just say to Claude:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&amp;quot;Connect my Strava account&amp;quot;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;A browser window will open. If it doesn’t automatically open, visit &lt;code&gt;http://localhost:8111/auth&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Once you have the localhost window open, enter your Strava API credentials (the client ID and the client secret): &lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://aaronroy.com/images/Experiments%20with%20Strava%20MCP/connect-strava-mcp.png&quot; alt=&quot;MCP setup screen&quot;&gt;&lt;/p&gt;
&lt;p&gt;Authorize the app: &lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://aaronroy.com/images/Experiments%20with%20Strava%20MCP/strava-authorize.png&quot; alt=&quot;Authorize Strava MCP screen&quot;&gt;&lt;/p&gt;
&lt;p&gt;Once authorized, you should be good to go.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://aaronroy.com/images/Experiments%20with%20Strava%20MCP/strava-mcp-success.png&quot; alt=&quot;Strava MCP authorize success&quot;&gt;&lt;/p&gt;
&lt;h3&gt;Step 4: Test It&lt;/h3&gt;
&lt;p&gt;Open Claude and ask: &amp;quot;Show me my recent Strava activities&amp;quot; or &amp;quot;Which Strava profile do you have access to?&amp;quot;&lt;/p&gt;
&lt;p&gt;If it works, Claude will pull your Strava profile and/or activity data and display it.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://aaronroy.com/images/Experiments%20with%20Strava%20MCP/strava-auth-gif-web.gif&quot; alt=&quot;Claude Desktop successfully connecting to Strava MCP and retrieving activity data&quot;&gt;&lt;/p&gt;
&lt;p&gt;That&amp;#39;s it! You&amp;#39;re now set up and ready to explore your Strava data far beyond what you could do in Strava alone.&lt;/p&gt;
&lt;p&gt;If you run into any issues along the way, screenshot or copy and paste your error messages directly into Claude and just ask for help.&lt;/p&gt;
&lt;h2&gt;What&amp;#39;s Next&lt;/h2&gt;
&lt;p&gt;For me? Getting more laps in at Prospect Park so that 2026 chart looks better.&lt;/p&gt;
&lt;p&gt;While I love the community-driven MCP servers, I&amp;#39;m also hoping for official MCP servers from Strava and Zwift.&lt;/p&gt;
&lt;p&gt;I&amp;#39;m just at the beginning of exploring what this MCP server could do against my data but one idea I plan to explore ASAP is creating training plans to fit my goals and available time to train in the spring.&lt;/p&gt;
</content:encoded><category>Bikes</category><category>AI</category></item><item><title>Reflecting on my first cyclocross season</title><link>https://aaronroy.com/reflecting-on-cx-2025/</link><guid isPermaLink="true">https://aaronroy.com/reflecting-on-cx-2025/</guid><description>What I learned racing cyclocross for the first time in 2025, from finding practice sessions in NYC to surviving muddy courses.</description><pubDate>Sun, 28 Dec 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I was fortunate enough to try out Cyclocross (”CX”) racing this year. &lt;/p&gt;
&lt;p&gt;I&amp;#39;m not particularly good nor fast but I had so much fun trying out this new (to me) racing format. Especially if you participate in &lt;a href=&quot;https://www.wtrl.racing/zwift-racing-league/&quot;&gt;Zwift Racing League&lt;/a&gt;, the CX season is a great complement to any indoor training program. &lt;/p&gt;
&lt;p&gt;I participated in four CX races in 2025. I finished three of them and one of them I had to bow out from with a gnarly mechanical. &lt;/p&gt;
&lt;p&gt;Next season, I hope to race the same amount or more with a focus on improving my skills and finishing positions. &lt;/p&gt;
&lt;p&gt;Here are my learnings from my first season and resources others in NYC exploring CX might find helpful.&lt;/p&gt;
&lt;h2&gt;Getting started in CX in NYC&lt;/h2&gt;
&lt;p&gt;I had no idea what I was doing to start with. After some deep internet research I stumbled into the &lt;a href=&quot;https://www.tobedetermined.cc/cyclocross&quot;&gt;“To Be Determined” Journal&lt;/a&gt; which was a wealth of resources about CX racing and their experiences racing around New England. &lt;/p&gt;
&lt;p&gt;From the “To Be Determined” Journal I also learned my favorite local bike shop in Brooklyn, &lt;a href=&quot;https://www.instagram.com/kingkogsunandaircx/&quot;&gt;King Kog&lt;/a&gt;, sponsors practices starting in late summer / early fall where you can drop in and learn basic CX skills plus practice more advanced skills with some serious riders. &lt;/p&gt;
&lt;p&gt;I attended my first practice towards the end of this October, and it was quite the experience. The practice started off with daylight but by the end we were practicing in the dark around a makeshift course on Roosevelt Island. &lt;/p&gt;
&lt;p&gt;I found this practice to be super helpful as the instructor, Keith, had us practice various skills (such as picking the ideal lines in turns, and attacking rough terrain hills) over and over until we gained some experience and comfort with these scenarios. &lt;/p&gt;
  &lt;figure&gt;
    &lt;img src=&quot;https://aaronroy.com/images/cx2025/king-kog-cx-practice.jpeg&quot; alt=&quot;King Kog CX Practice&quot; /&gt;
    &lt;figcaption class=&quot;text-center text-sm text-gray-600 mt-2 italic&quot;&gt;
      Practicing at King Kog&apos;s weekly CX sessions on Roosevelt Island
    &lt;/figcaption&gt;
  &lt;/figure&gt;

&lt;p&gt;Additionally, right smack in the heart of Queens is &lt;a href=&quot;https://www.nycgovparks.org/parks/cunningham-park&quot;&gt;Cunningham Park&lt;/a&gt;. This park is an absolute gem and was perfect for getting used to riding in different conditions. The park has a variety of different single track trails and multiple loops you can practice on to refine your skills. &lt;/p&gt;
  &lt;div class=&quot;aspect-[9/16] max-w-xs mx-auto&quot;&gt;
    &lt;p&gt;&lt;strong&gt;📺 Watch on YouTube:&lt;/strong&gt; &lt;a href=&quot;https://www.youtube.com/watch?v=2mAUOfyoB7s&quot;&gt;https://www.youtube.com/watch?v=2mAUOfyoB7s&lt;/a&gt;&lt;/p&gt;
  &lt;/div&gt;


&lt;p&gt;I had one of my best (worst?) falls of the year while practicing at Cunningham Park when I fell over the side of this wood log bridge because I was going too slow and my wheels slipped out on some mud. &lt;/p&gt;
  &lt;figure&gt;
    &lt;img src=&quot;https://aaronroy.com/images/cx2025/cunningham-park-cx.jpeg&quot; alt=&quot;Cunningham Park CX&quot; /&gt;
    &lt;figcaption class=&quot;text-center text-sm text-gray-600 mt-2 italic&quot;&gt;
      The scene of the fall
    &lt;/figcaption&gt;
  &lt;/figure&gt;

&lt;h2&gt;Race report:&lt;/h2&gt;
&lt;p&gt;Take the following with a grain of salt. I am brand new to CX racing overall, so my impressions are naive and based on very little experience thus far. &lt;/p&gt;
&lt;h3&gt;&lt;a href=&quot;https://projectmayhemcx.com/hidden-valley-cx/&quot;&gt;Hidden Valley CX&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;I rode in the novice 5 and open 4/5 races in this event. We had dry conditions and great weather as it was late September. The course was super fun and fast. These were my first two cyclocross races so I was focused on finishing. &lt;/p&gt;
&lt;p&gt;In the first race, I took it quite slow on the first lap to get my bearings then improved my per lap times for each successive lap so I was pumped. &lt;/p&gt;
  &lt;div class=&quot;aspect-[9/16] max-w-xs mx-auto&quot;&gt;
    &lt;p&gt;&lt;strong&gt;📺 Watch on YouTube:&lt;/strong&gt; &lt;a href=&quot;https://www.youtube.com/watch?v=6UdHnFohgbY&quot;&gt;https://www.youtube.com/watch?v=6UdHnFohgbY&lt;/a&gt;&lt;/p&gt;
  &lt;/div&gt;

&lt;p&gt;In the second race, I somehow wrapped a bush of some sort around my rear cassette to the point it became unusable ~30 minutes into the 40 minute race. In theory I could have “run” my bike to the finish but I was so gassed I decided to call it a day. &lt;/p&gt;
  &lt;figure&gt;
    &lt;img src=&quot;https://aaronroy.com/images/cx2025/hidden-valley-cx-mechanical.jpeg&quot; alt=&quot;Hidden Valley CX mechanical&quot; /&gt;
    &lt;figcaption class=&quot;text-center text-sm text-gray-600 mt-2 italic&quot;&gt;
     That&apos;s not how cassettes are supposed to look
    &lt;/figcaption&gt;
  &lt;/figure&gt;

&lt;p&gt;&lt;strong&gt;Strava files:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.strava.com/activities/15891340641&quot;&gt;Hidden Valley CX - Cat 5&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.strava.com/activities/15891340586&quot;&gt;Hidden Valley CX - Cat 4/5&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&lt;a href=&quot;https://projectmayhemcx.com/orchard-scorcher/&quot;&gt;Orchard Scorcher&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;I also rode in the novice 5 and open 4/5 races in this event. &lt;/p&gt;
&lt;p&gt;The course features a corn maze that quickly turned into a mud pit over the course of the morning. I started strong in the novice 5 race but fell six or so times during this race which put a damper on my finishing time. &lt;/p&gt;
&lt;p&gt;There was a hill in particular coming out of a corner that I took a terrible line on for the first few attempts and ended up off the bike for each attempt. &lt;/p&gt;
&lt;p&gt;It was a cold morning (35 degrees Fahrenheit) and it started to rain over the course of the morning.  &lt;/p&gt;
&lt;p&gt;In my second race of the day, the open 4/5, I was absolutely exhausted and focused on practicing my bike handling skills when I realized I didn’t have the legs or the fitness to compete. &lt;/p&gt;
&lt;p&gt;I’d like to come back and attempt this course again next year as it’s a very unique and fun riding experience. &lt;/p&gt;
  &lt;figure&gt;
    &lt;img src=&quot;https://aaronroy.com/images/cx2025/orchard-scorcher-2025-cat4start.jpeg&quot; alt=&quot;Orchard Scorcher CX&quot; /&gt;
    &lt;figcaption class=&quot;text-center text-sm text-gray-600 mt-2 italic&quot;&gt;
     Orchard Scorcher Cat 4/5 starting pack 
    &lt;/figcaption&gt;
  &lt;/figure&gt;

&lt;p&gt;&lt;strong&gt;Strava files:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.strava.com/activities/16612578691&quot;&gt;Orchard Scorcher - Cat 5&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.strava.com/activities/16612578704&quot;&gt;Orchard Scorcher - Open 4/5&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;What I learned racing this year:&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;If you are interested in racing or trying cyclocross, just find an event and get started. The community is super inclusive and welcoming. I did my first race without having gotten any practice in prior.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Cyclocross races are similar to Zwift races. They start very intense and your heart rate is often pinned for the majority of the race. It&amp;#39;s critical to find spots on the course to catch your breath and bring your heart rate back down.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You do not need fancy gear to get started. I used a 2020 Specialized Diverge I also use for Zwift. Started with clinchers for first race and practices. I experimented with tubeless tires for my last two races but I’m not skilled or fit enough to notice the impact.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Experiment with different tire pressures. I would pump my tires to 50+ PSI for riding to and from CX practice and then lower it down to the ~30 PSI range for practicing and racing. I found I was most comfortable handling my bike right around 30 PSI.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Be prepared to take a tumble or two. I took a lot of minor spills while practicing and while racing. I imagine most of them were due to my own mistakes (picking the wrong line, going too fast into a corner, etc), alas I went down a lot this first season.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Get as much practice as you can on the course. There was a hill coming out of a corner I fell on 3x in Orchard Scorcher. If I could do it over, I would’ve tried a few more times in practice to figure out the right line vs. taking the falls learning during the race.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;If racing on a muddy course, mud gets everywhere. Truly &lt;strong&gt;everywhere.&lt;/strong&gt; That said, baby wipes are exceptional for cleaning mud out of all the hard to reach spots on the bike.&lt;/p&gt;
&lt;figure&gt;
  &lt;img src=&quot;https://aaronroy.com/images/cx2025/orchard-scorcher-2025-mud.jpeg&quot; alt=&quot;Orchard Scorcher Mud&quot; /&gt;
  &lt;figcaption class=&quot;text-center text-sm text-gray-600 mt-2 italic&quot;&gt;
   So much fun and so much mud
  &lt;/figcaption&gt;
&lt;/figure&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><category>Bikes</category></item><item><title>Building products in the age of AI</title><link>https://aaronroy.com/building-products-age-of-ai/</link><guid isPermaLink="true">https://aaronroy.com/building-products-age-of-ai/</guid><description>I recently had the opportunity to speak at NYU&apos;s Product Management Club about building products in the age of AI. Here&apos;s a walkthrough of my presentation with additional context and resources.</description><pubDate>Fri, 28 Nov 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I recently had the opportunity to speak at NYU&amp;#39;s Product Management Club about building products in the age of AI. So much has changed over the past 12 months in terms of how we approach validating new ideas and how we build new capabilities on top of existing platforms. The crux of this presentation for aspiring and soon to be product managers was to get out there, start building things, and learn how to leverage these new tools now. &lt;/p&gt;
&lt;p&gt;Below is a walkthrough of the main points of my presentation with additional context and insights.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://aaronroy.com/images/building-products-age-of-ai/Slide1.png&quot; alt=&quot;Title slide of presentation&quot;&gt;&lt;/p&gt;
&lt;p&gt;I&amp;#39;m going to be talking about how building products has changed thus far in the age of AI, both at the 0-1 phase and for companies further along in their journey. &lt;/p&gt;
&lt;p&gt;By the time I publish this presentation, this field may very well change again. &lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://aaronroy.com/images/building-products-age-of-ai/Slide4.png&quot; alt=&quot;Lines blurring between product and other fields&quot;&gt;&lt;/p&gt;
&lt;p&gt;What traditionally non-technical people can do is changing rapidly. You can move much faster from idea to reality. &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;PMs can undertake almost any technical project 
(Websites, apps, scripts, migrations, etc)&lt;/li&gt;
&lt;li&gt;PMs &amp;amp; Designers easily able to build shacks and houses&lt;/li&gt;
&lt;li&gt;Engineers embracing these tools are building castles&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;https://aaronroy.com/images/building-products-age-of-ai/Slide6.png&quot; alt=&quot;Thumbnail from pmquiz.xyz&quot;&gt;&lt;/p&gt;
&lt;p&gt;I&amp;#39;ll show you an example of a project I built from 0-1 just for this presentation. &lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://aaronroy.com/images/building-products-age-of-ai/Slide7.png&quot; alt=&quot;QR code for pmquiz.xyz&quot;&gt;&lt;/p&gt;
&lt;p&gt;Take the quiz at &lt;a href=&quot;https://pmquiz.xyz&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;pmquiz.xyz&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://aaronroy.com/images/building-products-age-of-ai/Slide8.png&quot; alt=&quot;Application interface for pmquiz&quot;&gt;&lt;/p&gt;
&lt;p&gt;This quiz was inspired by a friend who built a great design assessment tool that applied science and rigor to assessing design skills. I wanted to build the opposite for product managers. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;A quiz that &amp;quot;roasted&amp;quot; your attributes.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;You can check out and experiment with this project at &lt;a href=&quot;https://github.com/amr05008/pm-linkedin-assessor&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;github.com/amr05008/pm-linkedin-assessor&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://aaronroy.com/images/building-products-age-of-ai/Slide10.png&quot; alt=&quot;Claude prompt for quiz&quot;&gt;&lt;/p&gt;
&lt;p&gt;I started by brainstorming the concept with Claude. &lt;/p&gt;
&lt;p&gt;My goal was to spin up a visual prototype at first so I could visualize the functionality and copy for each phase of the quiz. &lt;/p&gt;
&lt;p&gt;I recommend and use &lt;a href=&quot;https://www.claude.com/blog/build-artifacts&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Claude artifacts&lt;/a&gt; to create highly engaging and shareable prototypes. &lt;/p&gt;
&lt;p&gt;Artifacts are interactive, customizable and embeddable in other creations. &lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://aaronroy.com/images/building-products-age-of-ai/Slide12.png&quot; alt=&quot;Claude artifact prototype&quot;&gt;&lt;/p&gt;
&lt;p&gt;This is the &lt;a href=&quot;https://claude.ai/public/artifacts/d9a8f5c1-1cfd-461f-b20f-fda888b1f0bd&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;artifact&lt;/a&gt; I built in Claude to get initial feedback. &lt;/p&gt;
&lt;p&gt;For this project, I built the visual prototype with dummy data and then published the artifact. I made additional tweaks to get the prototype the way I wanted. &lt;/p&gt;
&lt;p&gt;Total time from idea to prototype was ~20 minutes. &lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://aaronroy.com/images/building-products-age-of-ai/Slide14.png&quot; alt=&quot;Best practices for feedback&quot;&gt;&lt;/p&gt;
&lt;p&gt;I solicited feedback on usability and concept via text message from co-workers and friends. This took about ~1 hour of effort including waiting for responses. &lt;/p&gt;
&lt;p&gt;Next step was actually building to achieve personalized and &amp;quot;real&amp;quot; results.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://aaronroy.com/images/building-products-age-of-ai/Slide16.png&quot; alt=&quot;Claude code project instructions&quot;&gt;&lt;/p&gt;
&lt;p&gt;For this project, I wanted to move from prototyping with Claude to building with Claude code. &lt;/p&gt;
&lt;p&gt;Some best practices when vibe coding projects: &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Always start with a plan.&lt;/strong&gt; Claude and other tools can help you come up with one&lt;/li&gt;
&lt;li&gt;Defining the outcome you want to accomplish = better vibe coding sessions&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Once you have a plan, Claude can handoff to Claude code to build. You can check out the handoff instructions for this project here: &lt;a href=&quot;https://github.com/amr05008/pm-linkedin-assessor/blob/main/public/PM_Assessment_Quiz_Project_Instructions.md&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;PM Assessment Quiz Project Instructions&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;It&amp;#39;s helpful to think of Claude as the project manager for a given project. You can plan steps, visually debug items, create prototypes and revise your plan. &lt;/p&gt;
&lt;p&gt;Claude code is where the actual work of building happens. You can set up loops so projects can be built with as little or as much human intervention as you&amp;#39;d like. &lt;/p&gt;
&lt;p&gt;As you get more comfortable, you can even run multiple sessions at once.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://aaronroy.com/images/building-products-age-of-ai/Slide19.png&quot; alt=&quot;Claude code handoff&quot;&gt;&lt;/p&gt;
&lt;p&gt;I took my handoff document from Claude and I moved it into Claude code to start building. &lt;/p&gt;
&lt;p&gt;I started with setting up local file structure on my computer as I planned to host this project on Github and commit and push changes via Github desktop. &lt;/p&gt;
&lt;p&gt;I opened up Claude code in the new project repository using terminal and added the handoff document. I flip flop between using Claude code via terminal and via VS Code. &lt;/p&gt;
&lt;p&gt;I reviewed the build plan Claude code proposed and made sure the steps matched what I expected and once satisfied gave permission to start working through the build plan. &lt;/p&gt;
&lt;p&gt;You can ask Claude code to modify, remove or rethink phases of the proposed plan so don&amp;#39;t be afraid to ask questions and refine your build plan to reflect what you want as an output. &lt;/p&gt;
&lt;p&gt;I&amp;#39;ve not had the chance to check it out yet, but the recent release of &lt;a href=&quot;https://www.claude.com/blog/claude-code-on-the-web&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Claude code for web&lt;/a&gt; makes this transition between Claude and Claude code even easier.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://aaronroy.com/images/building-products-age-of-ai/Slide20.png&quot; alt=&quot;Debugging claude code&quot;&gt;&lt;/p&gt;
&lt;p&gt;Claude and Claude code are both great at helping debug issues.&lt;/p&gt;
&lt;p&gt;I constantly take screenshots and feed those into Claude code to get assistance in solving errors. &lt;/p&gt;
&lt;p&gt;I recommend starting with screenshotting UI issues and copying and pasting error codes, warnings, etc you are getting while trying to build and run your application. &lt;/p&gt;
&lt;p&gt;As you get more experience and feel more comfortable, you can start to think how to further let Claude &amp;quot;loop&amp;quot; so you don&amp;#39;t even need to screenshot issues you are seeing. For instance, you can connect in &lt;a href=&quot;https://github.com/microsoft/playwright-mcp&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Playwright via MCP&lt;/a&gt; so Claude can &amp;quot;see&amp;quot; the outputs of its builds and self-diagnose issues in a loop until they get resolved.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://aaronroy.com/images/building-products-age-of-ai/Slide21.png&quot; alt=&quot;Thinking example claude code&quot;&gt;&lt;/p&gt;
&lt;p&gt;I encourage toggling &amp;quot;Thinking&amp;quot; on as you are learning as it&amp;#39;s helpful to see how Claude reasons and attacks problems. &lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://aaronroy.com/images/building-products-age-of-ai/Slide23.png&quot; alt=&quot;Claude prompt example&quot;&gt;&lt;/p&gt;
&lt;p&gt;Now that I had a real application, I went back out for another round of feedback. &lt;/p&gt;
&lt;p&gt;In addition to lots of things breaking, I got quite a bit of feedback on how to improve the quiz, make it more entertaining and engaging. &lt;/p&gt;
&lt;p&gt;For a 0-1 concept such as this it is better to be a bit embarrassed and get feedback as early as possible. &lt;/p&gt;
&lt;p&gt;I shared the working quiz with fellow product folks, my partner, designers, engineers, anyone who I knew who might give useful and honest feedback about the quiz. &lt;/p&gt;
&lt;p&gt;The roast meter to control the level of the sarcasm the quiz provides was an idea that came from this early feedback. &lt;/p&gt;
&lt;p&gt;I was able to repeat the prototype &amp;gt; propose a plan &amp;gt; handoff to Claude code cycle to get the roast meter built right into the app. &lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://aaronroy.com/images/building-products-age-of-ai/Slide24.png&quot; alt=&quot;Brainstorming domain names&quot;&gt;&lt;/p&gt;
&lt;p&gt;Beyond debugging and accomplishing the project plan Claude also helped me:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Brainstorm domains before settling on pmquiz.xyz&lt;/li&gt;
&lt;li&gt;Connect Cloudflare domain to Vercel&lt;/li&gt;
&lt;li&gt;Optimize my token usage&lt;/li&gt;
&lt;li&gt;Improve my application security and protect against prompt injection&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;https://aaronroy.com/images/building-products-age-of-ai/Slide25.png&quot; alt=&quot;Project goal details&quot;&gt;&lt;/p&gt;
&lt;p&gt;The goal with this project was to use this quiz to teach this room about the power of Claude and Claude code. I wanted it to deliver personalized results and demonstrate lead capture capabilities. &lt;/p&gt;
&lt;p&gt;I originally &amp;quot;planned&amp;quot; to parse LinkedIn URLs to do the roasting. &lt;/p&gt;
&lt;p&gt;I realized early on building a web scraper into LinkedIn or authenticated data importer was not necessary for the purpose of this quiz. &lt;/p&gt;
&lt;p&gt;I could get a useful output from the Claude prompts by asking quiz takers to paste their &amp;quot;About&amp;quot; section into the quiz. This made personalization of the responses possible via a 10 minute implementation vs the unknown efforts of building a LinkedIn URL parser.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://aaronroy.com/images/building-products-age-of-ai/Slide26.png&quot; alt=&quot;Learn version control&quot;&gt;&lt;/p&gt;
&lt;p&gt;Understand git, github, the basics of version control and how code gets deployed will help you work with engineering teams as your career progresses.&lt;/p&gt;
&lt;p&gt;Version control gives you ability to take on more ambitious projects. &lt;/p&gt;
&lt;p&gt;Git is most common for modern projects, experiment with it as soon as you can.&lt;/p&gt;
&lt;p&gt;I start new sessions for each new &amp;quot;bigger&amp;quot; thing (i.e. post a project milestone being achieved), this helps reduce the context window LLM has to manage. &lt;/p&gt;
&lt;p&gt;Claude is exceptional at git management. &lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://aaronroy.com/images/building-products-age-of-ai/Slide27.png&quot; alt=&quot;Product process at Teachable&quot;&gt;&lt;/p&gt;
&lt;p&gt;Teachable process contains four key ceremonies to make new capabilities come to life:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Opportunities (&amp;quot;Opps&amp;quot;)&lt;/li&gt;
&lt;li&gt;Product Brief Review&lt;/li&gt;
&lt;li&gt;Design Review&lt;/li&gt;
&lt;li&gt;Engineering Implementation Plan&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;What are &amp;quot;opps&amp;quot;?&lt;/h3&gt;
&lt;p&gt;The &amp;quot;opps&amp;quot; process is heavily influenced by the Socratic Method, and it&amp;#39;s essential it&amp;#39;s collaborative, healthy debate and not just criticism just for the sake of being critical.&lt;/p&gt;
&lt;p&gt;The goal for the presenter is to propose a hypothesis, defend their position, and advocate for additional time and/or resources to be allocated to the hypothesis. &lt;/p&gt;
&lt;p&gt;Presenters are often PMs but come from all corners of the company.&lt;/p&gt;
&lt;p&gt;Attendees are encouraged to collaboratively challenge the assumptions underlying the opportunity and force the presenter to defend their hypothesis and proposed plan. &lt;/p&gt;
&lt;p&gt;Majority of pitches will not gain buy-in but serve as seeds of future ideas for remixing and reusing in other applications. &lt;/p&gt;
&lt;p&gt;Presenters often asked for further fidelity, research or exploration of additional considerations.&lt;/p&gt;
&lt;p&gt;Here&amp;#39;s a copy of the opportunity template you can copy and experiment with: &lt;a href=&quot;https://aaronmichaelroy.notion.site/Example-Opportunity-Template-2b6f81204bc1805db97dea4261a4199a?source=copy_link&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Example Opportunity Template&lt;/a&gt;&lt;/p&gt;
  &lt;iframe 
    width=&quot;100%&quot;
    height=&quot;600&quot; 
    src=&quot;https://aaronmichaelroy.notion.site/ebd/2b6f81204bc1805db97dea4261a4199a&quot; 
    title=&quot;Example Opportunity Template&quot;
    frameborder=&quot;0&quot; 
    allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture&quot; 
    allowfullscreen&gt;
  &lt;/iframe&gt;

&lt;h3&gt;How have opps changed in age of AI?&lt;/h3&gt;
&lt;p&gt;Our pitches for opportunities have changed dramatically in the past six months. &lt;/p&gt;
&lt;p&gt;Where before we would traditionally use just the template above and Figma prototypes, now presenters are showing up with testable applications, live prototypes and real examples. &lt;/p&gt;
&lt;p&gt;We&amp;#39;re now using vibe coded prototypes with customers to get feedback on real functionality in advance of building at scale.&lt;/p&gt;
&lt;h3&gt;Distribution is changing as well&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Companies (including Teachable) are releasing MCPs to enable their applications to connect into LLMs &lt;/li&gt;
&lt;li&gt;Increasing percentage of Teachable subscribers now coming from searches starting in LLMs&lt;/li&gt;
&lt;li&gt;Now product thinking includes &amp;quot;How might we make this capability usable or discoverable from an LLM?&amp;quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;https://aaronroy.com/images/building-products-age-of-ai/Slide30.png&quot; alt=&quot;PM job changes with vibe coding&quot;&gt;&lt;/p&gt;
&lt;p&gt;These tools are a must learn as you enter the product management field. &lt;/p&gt;
&lt;p&gt;At Teachable, we&amp;#39;re changing job descriptions to include screening for these skills. &lt;/p&gt;
&lt;p&gt;Companies want people that can come in and try and explore problems ASAP. &lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://aaronroy.com/images/building-products-age-of-ai/Slide31.png&quot; alt=&quot;Show your experience example&quot;&gt;&lt;/p&gt;
&lt;p&gt;When you are just starting out it&amp;#39;s hard to build up experience and find roles willing to take a chance on someone brand new to the field. &lt;/p&gt;
&lt;p&gt;Experience can come from trying (and failing sometimes) at building your own projects. &lt;/p&gt;
&lt;p&gt;I highly encourage finding areas and problems you are curious about, trying to build something, and getting feedback from potential people who might share a similar problem. Running this real feedback loop is a great way to learn and expand your experiences to draw upon. &lt;/p&gt;
&lt;p&gt;The project in the above slide is a silly &lt;a href=&quot;https://aaronroy.com/vibe-coding-a-tour-de-france-app-using-replit-and-google-sheets&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;tour de france fantasy app&lt;/a&gt; I built for me and my friends because we found it a bit annoying to track who was winning our competition each year in spreadsheets alone. &lt;/p&gt;
&lt;p&gt;Not every problem area or passion project has to be something groundbreaking or capable of explosive growth, sometimes you can learn a lot and have a lot of fun just by tinkering. &lt;/p&gt;
&lt;h3&gt;Bringing it all together&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Product management is undergoing a massive shift with AI&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;You will be part of that shift&lt;/strong&gt; by embracing, understanding and becoming familiar with these tools&lt;/li&gt;
&lt;li&gt;Experiment with building whatever you can&lt;/li&gt;
&lt;li&gt;Get feedback on what you build&lt;/li&gt;
&lt;li&gt;Dust yourself off and try again&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Projects &amp;amp; Resources&lt;/h3&gt;
&lt;p&gt;Here are some resources to check out and learn more:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.deeplearning.ai/courses/generative-ai-for-everyone/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Generative AI for Everyone&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.amazon.com/Vibe-Coding-Building-Production-Grade-Software/dp/1966280025&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Vibe Coding: Building Production-Grade Software With GenAI, Chat, Agents, and Beyond&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://read.technically.dev/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Technically&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.youtube.com/@aiexplained-official&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;AI Explained&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.deeplearning.ai/short-courses/vibe-coding-101-with-replit/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Vibe Coding 101 with Replit&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://blog.sshh.io/p/how-i-use-every-claude-code-feature&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;How I Use Every Claude Code Feature&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Shoutout to Simon Willison for inspiring this post with his &lt;a href=&quot;https://simonwillison.net/tags/annotated-talks/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;annotated talks&lt;/a&gt;.&lt;/p&gt;
</content:encoded><category>Presentations</category><category>Product Management</category><category>AI</category></item><item><title>Making migrations fun with Claude Code</title><link>https://aaronroy.com/making-migrations-fun-with-claude-code/</link><guid isPermaLink="true">https://aaronroy.com/making-migrations-fun-with-claude-code/</guid><description>Claude Code made completing a boring migration fun. Here is how I used Claude Code to migrate my WordPress blog to Astro in just 6 hours.</description><pubDate>Fri, 10 Oct 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I had a “simple” question as a starting point. How could I use Claude Code to swap my tour de france fantasy app from being hosted on Replit to a free tier option? &lt;/p&gt;
&lt;p&gt;The quest of completing this task, started a migration bonanza that ended up with this website and 8+ years of content being migrated from Wordpress to an Astro-based static site.&lt;/p&gt;
&lt;h3&gt;The first project&lt;/h3&gt;
&lt;p&gt;My &lt;a href=&quot;https://fantasytour.streamlit.app/&quot;&gt;TDF fantasy app&lt;/a&gt; was &lt;a href=&quot;https://aaronroy.com/vibe-coding-a-tour-de-france-app-using-replit-and-google-sheets&quot;&gt;originally created and hosted&lt;/a&gt; via Replit. I was spending ~$25 a month to keep my Replit account (and the hosting it provides) active. I wanted to try out Claude Code so this was the perfect test project to see if I could figure out a new home for the TDF app and eventually cancel my Replit hosting. &lt;/p&gt;
&lt;p&gt;I estimated this project would take me ~4 or so hours to complete between research, planning and doing. I was happily surprised to be quite wrong. It took me about 60 minutes go from initial conversation to &lt;strong&gt;completed project&lt;/strong&gt;! &lt;/p&gt;
&lt;p&gt;The majority of the time spent on this project was setting up Claude Code in my terminal and installing the proper npm packages and updates for everything to run. I decided to use Claude Code via the VS code extension. I initialized Claude Code in my local repo for this project and asked it for a plan to host this project for free. It suggested Streamlit as an option and also came back with a step by step plan of tasks for both me and Claude Code to get done to complete the swap to Streamlit. &lt;/p&gt;
&lt;p&gt;Having seemingly gained back 3 hours, I turned to a project I’ve kicked down my to do list 100 times. &lt;/p&gt;
&lt;h3&gt;My white whale website project&lt;/h3&gt;
&lt;p&gt;I’ve wanted to migrate away from Wordpress and Elementor for years at this point. While this stack was awesome for getting a blog up and running, it requires a certain level of overhead and pain in navigating that over time I’ve wanted to move on from. There is also a cost component to paying for Wordpress hosting and Elementor license updates that I hoped to reduce or altogether remove. &lt;/p&gt;
&lt;p&gt;Alas, I started and stopped this project many times over because:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;I wasn’t sure where to migrate from away from Wordpress &lt;/li&gt;
&lt;li&gt;I had no desire to spend potentially weeks of time setting up something new and dealing with styling, formatting, w.e.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;After seeing the success of the Replit task, I was curious what type of plan Claude might come up with to finally knock out my white whale background project. &lt;/p&gt;
&lt;p&gt;As my site was entirely in Wordpress as a starting point, I didn’t have a repo already stood up to let Claude Code explore. Thus I started by creating a project in the Claude desktop app and started a chat within the project with the prompt &lt;code&gt;What instructions would you give a Claude Code project to have it act as a staff level engineer assisting me on a project migrating a website from being hosted on wordpress to potentially self-hosted?&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;The output from this chat, I plugged into the Claude desktop project instructions (with some slight tweaks for my project specifics) &lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://aaronroy.com/images/claude-project-instructions-input.png&quot; alt=&quot;claude-project-instructions-input.png&quot;&gt;&lt;/p&gt;
&lt;p&gt;Now that the project had precise instructions, I was able to start a new chat within the project with the prompt of &lt;/p&gt;
&lt;p&gt;&lt;code&gt;Following the project instructions, please lay out a migration strategy for https://aaronmichaelroy.com/. Keep in mind, I am not particularly technical and will rely on Claude Code to help guide me through deployment of the migrated application.&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Claude fetched my existing website, put together an audit summary and suggested multiple technology stacks that might accomplish my goal. It went even further and created a phased approach to accomplish the project’s goal with recommended path. I knew I wanted Claude Code’s help with any suggested path, so I asked the likely very silly question of &lt;code&gt;can I reference this project in Claude Code or should I use this chat for updating each step as complete?&lt;/code&gt;  Claude let me know I should use both (Claude for the project planning, and Claude Code for the building and doing) and what to use each tool for along the way.&lt;/p&gt;
&lt;h3&gt;The main event&lt;/h3&gt;
&lt;p&gt;I created a new repo to start this project and initialized Claude Code within the repo. Now switching to working within VS code I pasted in this whammy of a prompt that Claude provided me. &lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://aaronroy.com/images/claude-instructions-for-migration.png&quot; alt=&quot;claude-instructions-for-migration.png&quot;&gt;&lt;/p&gt;
&lt;p&gt;From here, we were off to the races. I was able to work with Claude Code, Claude and my own efforts to start knocking out the launch project plan. &lt;/p&gt;
&lt;p&gt;Some of the tasks we accomplished for this project included: &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Built custom migration script (&lt;code&gt;migrate-wordpress.js&lt;/code&gt;) to parse WordPress XML exports&lt;/li&gt;
&lt;li&gt;Migrated all 29 blog posts from WordPress to Markdown format&lt;/li&gt;
&lt;li&gt;Extracted and preserved all 54+ images with organized, slug-based naming&lt;/li&gt;
&lt;li&gt;Created second script (&lt;code&gt;update-yoast-descriptions.js&lt;/code&gt;) to recover handcrafted Yoast SEO meta descriptions&lt;/li&gt;
&lt;li&gt;Preserved all post categories, publication dates, and metadata&lt;/li&gt;
&lt;li&gt;Maintained WordPress URL structure (&lt;code&gt;/{slug}&lt;/code&gt;) to preserve search rankings and inbound links&lt;/li&gt;
&lt;li&gt;Configured automatic sitemap generation (&lt;code&gt;sitemap-index.xml&lt;/code&gt; and &lt;code&gt;sitemap-0.xml&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Created &lt;code&gt;robots.txt&lt;/code&gt; with proper sitemap reference&lt;/li&gt;
&lt;li&gt;Built site with Astro 5.x, TypeScript, and Tailwind CSS&lt;/li&gt;
&lt;li&gt;Created custom &amp;quot;Highlights&amp;quot; feature to curate featured posts instead of showing recent posts chronologically&lt;/li&gt;
&lt;li&gt;Built custom branded 404 error page&lt;/li&gt;
&lt;li&gt;Installed custom favicon for brand consistency&lt;/li&gt;
&lt;li&gt;Deployed to Vercel with automatic SSL certificate provisioning&lt;/li&gt;
&lt;li&gt;Configured custom domain (aaronroy.com and &lt;a href=&quot;http://www.aaronroy.com/&quot;&gt;www.aaronroy.com&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Installed Vercel Analytics (goodbye to GA 4)&lt;/li&gt;
&lt;li&gt;Achieved ~1.14 second build time for entire site (32 pages)&lt;/li&gt;
&lt;li&gt;Executed simultaneous domain migration (aaronmichaelroy.com → aaronroy.com)&lt;/li&gt;
&lt;li&gt;Created comprehensive CLAUDE.md documentation tracking all technical decisions&lt;/li&gt;
&lt;li&gt;Built reusable migration scripts for future WordPress migration&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Claude helped me understand how to end a session to make it easy to restart the next day as well as how to restart a session being ready to jump right back into the to do list. &lt;/p&gt;
&lt;p&gt;This is as an example of me giving context to Claude Code while picking this project back up after some time away. Claude Code was able to use the CLAUDE.md file, plus the additional context I provided to adjust the projectplan to accomodate the transition from &lt;a href=&quot;http://aaronmichaelroy.com&quot;&gt;aaronmichaelroy.com&lt;/a&gt; to &lt;a href=&quot;http://aaronroy.com&quot;&gt;aaronroy.com&lt;/a&gt;. &lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://aaronroy.com/images/claude-code-restarting-session.png&quot; alt=&quot;claude-code-restarting-session.png&quot;&gt;&lt;/p&gt;
&lt;p&gt;I was able to complete this project after my daughters bedtime across two weekend nights. In total, it took me about ~6 hours to go from project planning to having the new site built and polished enough to set up 301 redirects from my original website. I’m now able to confidently say goodbye to my paid Wordpress hosting and Elementor plans.  &lt;/p&gt;
&lt;p&gt;I still have a few open items to do but at this point, it’s window dressing compared to what’s been done thus far. Even better is that open items for “finishing” the project are in the CLAUDE.md file and readme so I can easily pick this back up whenever I’d like. &lt;/p&gt;
&lt;p&gt;You can check out the source code behind this entire project at &lt;a href=&quot;https://github.com/amr05008/aaronroy.com&quot;&gt;amr05008/aaronroy.com&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;What’s next?&lt;/h3&gt;
&lt;p&gt;Well this technology is absolutely wild. I feel capable of building and prototyping things that before were pipe dreams for me. In addition to iterating on my fantasy cycling app, the next project I’d like to take on is migrating my mom’s art website away from Squarespace and into something I can host and deploy on a free tier as well. &lt;/p&gt;
&lt;h3&gt;Helpful resources:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://newsletter.pragmaticengineer.com/p/how-claude-code-is-built&quot;&gt;How Claude Code is built&lt;/a&gt; (paid article but awesome read)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=gv0WHhKelSE&quot;&gt;Claude Code best practices&lt;/a&gt; | Code w/ Claude&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/amr05008/prompts-and-examples&quot;&gt;Prompts and examples&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><category>Projects</category></item><item><title>Vibe coding a Tour de France app using Replit and Google Sheets</title><link>https://aaronroy.com/vibe-coding-a-tour-de-france-app-using-replit-and-google-sheets/</link><guid isPermaLink="true">https://aaronroy.com/vibe-coding-a-tour-de-france-app-using-replit-and-google-sheets/</guid><description>I built a TDF fantasy competition UI using Replit and Google Sheets. This post breaks down my process and lessons learned.</description><pubDate>Wed, 30 Jul 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;This past week, while watching the last stages of the Tour de France, I vibe coded (vibe coding = &lt;a href=&quot;https://blog.replit.com/what-is-vibe-coding&quot;&gt;instructing instructing AI agents to write code&lt;/a&gt;) up an alternative UI for a fantasy competition using a combination of Replit and Google Sheets.&lt;/p&gt;
&lt;p&gt;I recently took this &lt;a href=&quot;https://learn.deeplearning.ai/courses/vibe-coding-101-with-replit/lesson/zwj9r/introduction&quot;&gt;Vibe Coding 101 class&lt;/a&gt; and wanted to apply some of the lessons to something real. Each year, my friends and I participate in a fantasy competition during the Tour de France where we each pick different riders and attempt to have the team with the lowest time after the 21 stages of the race. The riders on our team might change over the duration of the race and each day new results are posted the competition needs to account for.&lt;/p&gt;
&lt;p&gt;In the past, we would use Google Sheets to track our respective teams, but the site I spun up offers more interactivity than having tracked this in Google Sheets alone, and more importantly, has flashy UI elements to let my friends know my team is crushing it.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://aaronroy.com/images/vibe-coding-a-tour-de-france-app-using-replit-and-google-sheets-1759632217478.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;You can check out the working app &lt;a href=&quot;https://fantasytour.streamlit.app/&quot;&gt;here&lt;/a&gt;. &lt;em&gt;NOTE: This application was moved off Replit and over to streamlit via claude code since this article was first written.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Here are some detailed notes on how I built it and what I learned.&lt;/p&gt;
&lt;h2&gt;Building the initial application&lt;/h2&gt;
&lt;p&gt;Step one was creating the prompt to use with the &lt;a href=&quot;https://docs.replit.com/replitai/agent&quot;&gt;Replit Agent&lt;/a&gt; to kickstart this project. I wrote this prompt in markdown in Visual Studio Code and then just copy and pasted it right into Replit. I attached a screenshot of how I wanted the results to look alongside the Replit prompt.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://aaronroy.com/images/vibe-coding-a-tour-de-france-app-using-replit-and-google-sheets-1759632217500.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;Original prompt:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-markdown&quot;&gt;# Fantasy Tour De France Web App

## Context
- I want to build a web app using specific rows from a public google sheet as the source of data. 
- This web application is for tracking the results of a tour de france fantasy league and will need to show the 5 participants rank at any given time in the overall competition. 
- The participant with the lowest time value will be the winner and it&amp;#39;s important to highlight at all times who is in first place. 
- The highlight color for the person in the lead should be yellow (the same as the tour de france leaders jersey)
- The attached image is how I&amp;#39;d like the front end to look for displaying the participants results
- The public spreadsheet this data is available is: [google docs link]
- Before building anything please recommend the frameworks for building that are most user freindly to a non engineer 
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;After a few moments, the Replit agent came back with a proposed implementation plan breaking down the tech stack (leveraging the Google sheet as the data source, as I requested) and suggested features to include in the initial version vs later iterations. Before starting the implementation plan, I could change whether or not features were in scope for the MVP, and chat with the agent to ask questions or make further modifications to the implementation plan.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://aaronroy.com/images/vibe-coding-a-tour-de-france-app-using-replit-and-google-sheets-1759632217531.jpg&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;Once I approved the plan, the agent got right to work spinning up my project as a python web application.&lt;/p&gt;
&lt;p&gt;Replit provides a helpful preview window within the application so you can see how your current code will render. After the first pass, this is what my application looked like, as you can see, it’s got all sorts of issues, and something is amiss with the Google Sheets connection, thus no data is being pulled in.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://aaronroy.com/images/vibe-coding-a-tour-de-france-app-using-replit-and-google-sheets-1759632217560.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;Debugging and solving this data integration issue is where the Replit agent really helped me out, as I was able to screenshot what I saw in the preview window, and then ask the agent to suggest ways of fixing the issue. It turned out I needed to set my Google sheet to public and make sure to provide the exact &lt;a href=&quot;https://knowsheets.com/how-to-get-the-id-of-a-google-sheet/#google_vignette&quot;&gt;GID&lt;/a&gt; for each worksheet my site needed to use for connecting data.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://aaronroy.com/images/vibe-coding-a-tour-de-france-app-using-replit-and-google-sheets-1759632217590.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;Once I had the Google Sheets data integrated into the Replit app so that data could be fetched in real-time, I was able to shift focus to layering on fancy UI elements and usability improvements. At this moment, I backed up this &lt;a href=&quot;https://github.com/amr05008/Replit-FantasyTour2025&quot;&gt;entire project into GitHub&lt;/a&gt;. The agent was also able to provide me with instructions on what I needed to back up. Using GitHub with Replit is not a required step, but I wanted the option to take this project with me somewhere else should I decide not to keep using Replit in the future.&lt;/p&gt;
&lt;h2&gt;Deploying and sharing the project&lt;/h2&gt;
&lt;p&gt;Within Replit you can publish your app and deploy it for sharing on a Replit sub-domain or on a custom domain if you have one. You leverage Replit’s cloud infrastructure, and they will handle the rest. I used a bit too much machine power at first (I only needed minimums but had it set to use slightly more), and out of the ~$16 I spent on this project, the majority was on deployment costs.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://aaronroy.com/images/vibe-coding-a-tour-de-france-app-using-replit-and-google-sheets-1759632217620.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;h2&gt;Adding more features&lt;/h2&gt;
&lt;p&gt;One of the best practices (at least according to Reddit) in using Replit is spinning up a new agent chat for each new feature so that the agent can focus on just the task at hand. I spun up new agent chats to first layer on stage by stage analysis charts and then create a team section within the app.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://aaronroy.com/images/vibe-coding-a-tour-de-france-app-using-replit-and-google-sheets-1759632217648.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;The checkpoints feature in Replit is pretty helpful, each checkpoint represents a moment in time you can roll back to. I used this a few times as I layered on additional functionality and made mistakes. Once I had features in working order and ready for deployment, I could easily redeploy from within Replit and pull down all my files for pushing over to my Github repo.&lt;/p&gt;
&lt;h2&gt;Replit Agent vs Replit Assistant&lt;/h2&gt;
&lt;p&gt;I primarily used Replit agents for this project (what they recommend for going from 0-1). &lt;a href=&quot;https://blog.replit.com/new-ai-assistant-announcement&quot;&gt;Replit launched an assistant&lt;/a&gt; that’s cheaper to use than the agents and what they recommend for taking projects from “1-10”. I did not find the assistants to be particularly helpful for this project but that might be my own ignorance on how to use it versus the actual utility of the tool.&lt;/p&gt;
&lt;h2&gt;Where I ran into issues&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Parsing and formatting data. I spent far too much time trying to figure out how to real-time sync data from &lt;a href=&quot;https://www.procyclingstats.com/&quot;&gt;Pro Cycling Stats&lt;/a&gt; to my site, and after trying a few different methods (via API and web scraping), decided to just stick with updating the Google worksheets manually once a day, as the site was easy to refresh with updated data. Finding the data sources was not the problem per se, the quagmire I got stuck in was in formatting time duration to match the intended output I needed. I am sure a more talented developer could crack this with ease but alas this is a vibe coding writeup and not an engineering blog.&lt;/li&gt;
&lt;li&gt;Accessibility and UI tweaks. I found using the agent to be overkill for fixing potential CSS issues (it would change large swaths of code in attempts to remediate UI issues) and conflicts and the assistant was ineffective at resolving issues as I brought them up. Ultimately, I had to pop into the app.py file and use ChatGPT as a helper to play with the various CSS settings to try and resolve some of the issues (and ended up not resolving some of them altogether).&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;How much did this cost?&lt;/h2&gt;
&lt;p&gt;Usage breakdown below, including hosting I’ve spent about ~$16 on this project on Replit thus far (and a few hours of my divided attention while watching Tour de France stages).&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://aaronroy.com/images/vibe-coding-a-tour-de-france-app-using-replit-and-google-sheets-1759632217681.jpg&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;h2&gt;What’s next with this project?&lt;/h2&gt;
&lt;p&gt;I found the whole experience similar to playing &lt;a href=&quot;https://www.factorio.com/&quot;&gt;Factorio&lt;/a&gt;, as I learned more things, I constantly wanted to rip things out and start back over with an improved foundation.&lt;/p&gt;
&lt;p&gt;I built this just for fun but can imagine repurposing it for the any of the cycling grand tours (the Vuelta is coming up in August) or at the very least dusting it off for use next year. I skipped layering on any security or authentication considering we’re using all public data but might want to add that into future iterations of this project. Additionally, should I find the time I really want to revisit connecting this into the procycling stats API so the data for each rider updates in real-time at the conclusion of each stage vs relying on a human updating the connected google sheets.&lt;/p&gt;
&lt;h2&gt;Other resources you might want to check out:&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://simonwillison.net/&quot;&gt;Simon Willison’s Weblog&lt;/a&gt; (I’ve learned so much about AI and the latest development of tools from this blog)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://lovable.dev/&quot;&gt;Lovable&lt;/a&gt; (Similar to Replit for vibe coding sites up, seems to be focused on great UIs)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bolt.new/&quot;&gt;Bolt&lt;/a&gt; (Next up for testing with!)&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><category>Projects</category><category>AI</category></item><item><title>The Twisting Tale of Our Handwriting Robots </title><link>https://aaronroy.com/the-twisting-tale-of-our-handwriting-robots/</link><guid isPermaLink="true">https://aaronroy.com/the-twisting-tale-of-our-handwriting-robots/</guid><description>The story of how hundreds of handwriting robots ended up in a studio in Bushwick.</description><pubDate>Thu, 29 Aug 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;In a loft next to &lt;a href=&quot;https://www.robertaspizza.com/bushwick&quot;&gt;Roberta’s Pizza&lt;/a&gt; in Brooklyn reside a fleet of Handwriting robots, sitting idle until the next time they are called into action. &lt;/p&gt;
&lt;p&gt;I came to meet these robots (and my &lt;a href=&quot;https://wami.io/&quot;&gt;Wami&lt;/a&gt; co-founders) while working at Bond. I joined Bond right after they were acquired by &lt;a href=&quot;https://www.newellbrands.com/&quot;&gt;Newell Brands&lt;/a&gt; (the owners of Rubbermaid, Sharpie, Yankee Candle, among other brands) for a rumored $20 million in 2016, and over a few years, &lt;a href=&quot;https://aaronroy.com/unlocking-revenue-with-product-led-growth/&quot;&gt;we built up a handwritten note&lt;/a&gt; business working under the Newell umbrella. &lt;/p&gt;
&lt;p&gt;Alas, in late 2018, Newell decided they were going to close Bond and divest from their assets. This decision by Newell set the stage for us to purchase and relaunch these robots with Wami. &lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;The end days of Bond&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;I was one of the last people remaining at Bond, and part of my job at the very end was helping Newell Brands find a buyer for the assets. The majority of the physical assets at that point were inside of the &lt;a href=&quot;https://www.jostens.com/&quot;&gt;Josten’s&lt;/a&gt; (yes, Josten’s, the yearbook company) plant in Clarksville, TN. Josten’s was another Newell Brand that was also being sold off during this time period. &lt;/p&gt;
&lt;p&gt;We put together an inventory of the physical assets and shopped it around to prospective buyers with a 7-day timeline for submitting bids and a requirement for the purchaser to acquire and remove the assets from the Clarksville plant &lt;strong&gt;within 7 days of acceptance of the bid&lt;/strong&gt;. &lt;/p&gt;
&lt;p&gt;This asset removal provision is what proved to be a hurdle for the majority of interested parties, so the bid window closed without any proposals accepted by the Newell Leadership. &lt;/p&gt;
&lt;figure&gt;
  &lt;img src=&quot;https://aaronroy.com/images/the-twisting-tale-of-our-handwriting-robots-1759632217350.jpg&quot; alt=&quot;The handwriting robots set up inside of Josten&apos;s&quot; /&gt;
  &lt;figcaption class=&quot;text-center text-sm text-gray-600 mt-2 italic&quot;&gt;
    The handwriting robots set up inside of Josten&apos;s
  &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;Faced with the prospect of all this incredible technology about to be sent to a landfill, I and a few others had a vision for what we could do with the robots, so we decided to take a chance, and we submitted a last-minute winning proposal. &lt;/p&gt;
&lt;p&gt;It was time for a road trip, and we headed down to Tennessee to pick up our robots. &lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;Picking up our robots&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;After the ink dried on our contract with Newell to purchase the assets, we flew down to Nashville, rented a 26-foot Penske truck, and got to work. &lt;/p&gt;
&lt;p&gt;We moved everything off the floor of the Josten’s plant into a nearby storage unit, and we loaded up the truck with robots, tables, mailing equipment, and anything else we could fit and drove back north to start our own robot production studio in Bushwick. &lt;/p&gt;
&lt;figure&gt;
  &lt;img src=&quot;https://aaronroy.com/images/the-twisting-tale-of-our-handwriting-robots-1759632217375.jpg&quot; alt=&quot;The teardown of robots is almost complete&quot; /&gt;
  &lt;figcaption class=&quot;text-center text-sm text-gray-600 mt-2 italic&quot;&gt;
    The teardown of robots is almost complete
  &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;figure&gt;
  &lt;img src=&quot;https://aaronroy.com/images/the-twisting-tale-of-our-handwriting-robots-1759632217406.jpg&quot; alt=&quot;Got our rental truck packed up and ready to drive north&quot; /&gt;
  &lt;figcaption class=&quot;text-center text-sm text-gray-600 mt-2 italic&quot;&gt;
    Got our rental truck packed up and ready to drive north
  &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;While we were at the Josten&amp;#39;s plant, we were able to sell some of the physical assets we just acquired back to the Josten’s team, which helped us jumpstart our cash reserves in the early days of starting Wami. &lt;/p&gt;
&lt;p&gt;Side note, &lt;a href=&quot;https://www.hattieb.com/&quot;&gt;Hattie B’s&lt;/a&gt; in Nashville has incredible fried chicken and is worth the hype. We made sure to make multiple pit stops there. &lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;Making some ambitious mistakes&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Once we had our business up and running with the Bushwick production studio, we decided to make our own agreement with Josten’s to sublease space and leverage their super skilled seasonal labor staff to run our operations back down in Tennesee. &lt;/p&gt;
&lt;figure&gt;
  &lt;img src=&quot;https://aaronroy.com/images/the-twisting-tale-of-our-handwriting-robots-1759632217434.jpg&quot; alt=&quot;Back up and running from the Clarksville plant&quot; /&gt;
  &lt;figcaption class=&quot;text-center text-sm text-gray-600 mt-2 italic&quot;&gt;
    Back up and running from the Clarksville plant
  &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;In retrospect, this was a mistake in that 1) we didn’t have enough latent demand for our notes to provide an efficient return on investment for the upfront ~$100k+ cost of standing up this remote facility and 2) we naively didn&amp;#39;t recognize how unequal our negotiating power was with the billion-dollar Josten’s company. &lt;/p&gt;
&lt;p&gt;This second point acutely burned us when Covid descended on the world. As the pandemic dragged on and demand for our handwritten notes disappeared, Josten’s notified us they were terminating our lease and gave us 30 days to once again vacate the premises. &lt;/p&gt;
&lt;p&gt;Beyond potentially expensive litigation against a much deeper-pocketed adversary, we had no choice but to close up shop in Tennessee. &lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;Brooklyn or bust&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Now that we had been forced to vacate the Josten’s plant twice, we decided it was time to restructure Wami in a way that gave it a much better chance at survival. We enhanced our Brooklyn production studio with more robots and &lt;a href=&quot;https://aaronroy.com/how-i-got-a-product-job-during-the-pandemic/&quot;&gt;got other jobs&lt;/a&gt; to reduce our cash flow. &lt;/p&gt;
&lt;p&gt;We invested in building automation to manage many facets of our business, and now Wami is set up as a usually profitable, mostly seasonal business, primarily helping luxury brands from fashion houses such as Kering, Richemont, and LVMH send out customer loyalty notes at scale. &lt;/p&gt;
&lt;p&gt;The robots are on standby, resting peacefully until the next handwritten note campaign they are called into action for.&lt;/p&gt;
</content:encoded><category>Projects</category><category>Startups</category></item><item><title>How to set up two-factor verification on Yahoo</title><link>https://aaronroy.com/how-to-set-up-two-factor-verification-on-yahoo/</link><guid isPermaLink="true">https://aaronroy.com/how-to-set-up-two-factor-verification-on-yahoo/</guid><description>Trying to set up a second method of verification on Yahoo? Use this step by step guide with screenshots.</description><pubDate>Tue, 25 Jun 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;While researching &lt;a href=&quot;https://aaronroy.com/how-to-stay-ahead-of-online-scammers/&quot;&gt;ways to improve security and privacy&lt;/a&gt; online, I noticed I couldn&amp;#39;t easily find a how-to with examples for setting up two-factor verification for Yahoo email.&lt;/p&gt;
&lt;p&gt;Follow the steps below to set up two-factor verification with your Yahoo email account.&lt;/p&gt;
&lt;p&gt;Step 1: Click on &lt;em&gt;&amp;quot;Overview,&amp;quot;&lt;/em&gt; which is under the &lt;em&gt;&amp;quot;Account&amp;quot;&lt;/em&gt; menu&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://aaronroy.com/images/how-to-set-up-two-factor-verification-on-yahoo-1759632216647.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;Step 2: Click on &lt;em&gt;&amp;quot;Security&amp;quot;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://aaronroy.com/images/how-to-set-up-two-factor-verification-on-yahoo-1759632216674.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;Step 3: Click on &lt;em&gt;&amp;quot;Enable 2-step verification&amp;quot;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://aaronroy.com/images/how-to-set-up-two-factor-verification-on-yahoo-1759632216704.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;Step 4: Select what method you would like to use as additional verification (the next few steps demonstrate setting up a second verification method via phone number)&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://aaronroy.com/images/how-to-set-up-two-factor-verification-on-yahoo-1759632216732.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;Step 5: Select or Enter the phone number you want to use as a second method of verification&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://aaronroy.com/images/how-to-set-up-two-factor-verification-on-yahoo-1759632216764.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;Step 6: Verify the phone number (enter the code you receive via text)&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://aaronroy.com/images/how-to-set-up-two-factor-verification-on-yahoo-1759632216793.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;Step 7: If you use a phone number for 2FA, you&amp;#39;ll need to set up a recovery option as well, start by clicking &lt;em&gt;&amp;quot;Add recovery option&amp;quot;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://aaronroy.com/images/how-to-set-up-two-factor-verification-on-yahoo-1759632216823.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;Step 8: Select &lt;em&gt;&amp;quot;email&amp;quot;&lt;/em&gt; to add a secondary email account to use for account recovery (in case you are locked out of Yahoo email)&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://aaronroy.com/images/how-to-set-up-two-factor-verification-on-yahoo-1759632216854.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;Step 9: Enter the email address you would like to use for account recovery&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://aaronroy.com/images/how-to-set-up-two-factor-verification-on-yahoo-1759632216885.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;Step 10: Enter the code you received in your recovery email in Yahoo (example below is an email from Yahoo with my verification code)&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://aaronroy.com/images/how-to-set-up-two-factor-verification-on-yahoo-1759632216911.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;Step 11: Now that I&amp;#39;ve added both a phone number as a second method of verification and a secondary email address for account recovery, I&amp;#39;m done (and can click &lt;em&gt;&amp;quot;Done&amp;quot;&lt;/em&gt;).&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://aaronroy.com/images/how-to-set-up-two-factor-verification-on-yahoo-1759632216942.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;Once you have two factor verification set up in Yahoo, you can manage your preferences and verification methods from the &lt;a href=&quot;https://login.yahoo.com/myaccount/security&quot;&gt;&amp;quot;Security&amp;quot; page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://aaronroy.com/images/how-to-set-up-two-factor-verification-on-yahoo-1759632216973.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
</content:encoded><category>Tutorials</category><category>Cybersecurity</category></item><item><title>How to stay ahead of online scammers</title><link>https://aaronroy.com/how-to-stay-ahead-of-online-scammers/</link><guid isPermaLink="true">https://aaronroy.com/how-to-stay-ahead-of-online-scammers/</guid><description>Use this guide to help you improve your privacy, security, and safety on the internet (and hopefully avoid getting scammed).</description><pubDate>Tue, 25 Jun 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The internet is a wild place. Scammers and bad actors are everywhere. As a society, we’ve been thrust into chaos, with very little training on how to defend or protect ourselves. &lt;/p&gt;
&lt;p&gt;If you have an email address, engage in online banking, or make even a single purchase online, the suggested steps below are for you. I figure if I want my mom or friends to protect themselves, the best chance I’ve got is to send them something I wrote. &lt;/p&gt;
&lt;p&gt;While it’s easy to shrug off these suggestions and think you are too small a fish for someone to target, the reality is it’s more likely your info will be involved in a much larger data hack (e.g., &lt;a href=&quot;https://www.bbc.com/news/articles/cw99ql0239wo&quot;&gt;Ticketmaster&lt;/a&gt;, &lt;a href=&quot;https://www.fbi.gov/news/stories/chinese-hackers-charged-in-equifax-breach-021020&quot;&gt;Equifax&lt;/a&gt;, &lt;a href=&quot;https://en.wikipedia.org/wiki/2012_LinkedIn_hack&quot;&gt;LinkedIn&lt;/a&gt;) and weak security in one place (or a reused password) can lead to a much worse problem for you. &lt;/p&gt;
&lt;p&gt;Here are a few steps you could (&lt;em&gt;and should&lt;/em&gt;) take to improve your privacy and safety on the internet. &lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;Create strong and unique passwords&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Petname_KidBirthday! is not a strong password. It’s even worse if you reuse it for your banking, email, and daily horoscope account. &lt;/p&gt;
&lt;p&gt;Thus, when the inevitable data breach happens to one of your favorite websites, your information (and reused password and email address) will be tested by some enterprising cyber criminal at some point. Weak passwords that are too short, predictable, or re-used across multiple accounts &lt;a href=&quot;https://bnd.nd.gov/81-of-company-data-breaches-due-to-poor-passwords/&quot;&gt;cause 81% of data breaches&lt;/a&gt;. &lt;/p&gt;
&lt;p&gt;So the first line of defense is at least using unique passwords. Please don’t reuse the same password for your banking, your email, and the random websites and stores you sign up for. I know my primary Gmail address has already been included in prior data breaches so I go as far as to use a &lt;strong&gt;unique email address only for financial accounts&lt;/strong&gt; in my household to ensure that when my information appears in a breach there are two pieces of information (my email and my password) that someone needs to figure out to get into my financial accounts. &lt;/p&gt;
&lt;p&gt;A password manager can help you generate and store strong and unique passwords (more details below), but even if you want to avoid using a password manager, you can use sites such as this &lt;a href=&quot;https://1password.com/password-generator/&quot;&gt;1password password generator&lt;/a&gt; to help you create strong and unique passwords for your most valuable accounts. &lt;/p&gt;
&lt;p&gt;I also suggest using &lt;a href=&quot;https://blog.1password.com/what-are-passkeys/&quot;&gt;passkeys&lt;/a&gt; whenever possible. Passkeys are a new kind of login credential that replaces passwords and an increasing number of websites support them (&lt;a href=&quot;https://support.apple.com/en-us/102195#:~:text=Passkeys%20are%20a%20replacement%20for,more%20convenient%20and%20more%20secure.&quot;&gt;Apple&lt;/a&gt;, &lt;a href=&quot;https://support.microsoft.com/en-us/account-billing/signing-in-with-a-passkey-09a49a86-ca47-406c-8acc-ed0e3c852c6d&quot;&gt;Microsoft&lt;/a&gt;, and &lt;a href=&quot;https://www.google.com/account/about/passkeys/&quot;&gt;Google&lt;/a&gt; are already onboard). Passkeys will likely be more mainstream in a few years so it’s worth &lt;a href=&quot;https://blog.1password.com/passkeys-faqs/&quot;&gt;learning more&lt;/a&gt; and embracing them now. &lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;Enable two-factor authentication (2FA)&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Wherever possible turn on a second method of authentication. &lt;/p&gt;
&lt;p&gt;This security method combines something you know (your username and password), and something you have (your phone, a USB drive, etc), or something you are (your fingerprint or biometric data such as a fingerprint) to make sure you are, in fact, you! &lt;/p&gt;
&lt;p&gt;Imagine you want to enter a super secret bank vault like in the movies. To ensure only authorized individuals can enter the vault, they require a bank teller to enter a password into the keypad (something they know) and swipe a keycard (something they have). To enter the vault, both the password and the keycard must match. If the bank thief enters the wrong pin or doesn’t swipe the correct keycard, they won’t be able to enter the vault. &lt;/p&gt;
&lt;p&gt;Enabling 2FA on your accounts in the digital world gives you similar protection to the hypothetical bank vault. &lt;/p&gt;
&lt;p&gt;Here are a few resources on how to set up 2FA for popular accounts:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://support.google.com/accounts/answer/185839?hl=en&amp;co=GENIE.Platform%3DDesktop&quot;&gt;Google&lt;/a&gt; (Gmail, Youtube) &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://aaronroy.com/how-to-set-up-two-factor-verification-on-yahoo/&quot;&gt;Yahoo mail&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://support.sofi.com/hc/en-us/articles/9274826655757-How-do-I-update-the-Two-Factor-Authentication-2FA-method-on-my-account&quot;&gt;Sofi Bank&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://support.microsoft.com/en-us/account-billing/how-to-use-two-step-verification-with-your-microsoft-account-c7910146-672f-01e9-50a0-93b4585e7eb4&quot;&gt;Microsoft&lt;/a&gt; (MS Office, Hotmail) &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.facebook.com/help/148233965247823&quot;&gt;Meta&lt;/a&gt; (Instagram, Facebook, WhatsApp) &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://support.apple.com/en-us/102660&quot;&gt;Apple&lt;/a&gt; (iPhone, App store)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Beyond using SMS text messages as a second method of authentication, you can also explore using authentication apps (I like &lt;a href=&quot;https://authy.com/&quot;&gt;Authy&lt;/a&gt;) and using dedicated hardware (&lt;a href=&quot;https://www.yubico.com/&quot;&gt;Yubikey&lt;/a&gt; is my favorite) to add even further security to your digital credentials. &lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;Use a password manager&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;I have nothing but love for the well-worn physical password book. For keeping track of a few items, that update infrequently, it’s hard to beat the convenience and relative security of just writing your passwords down. &lt;/p&gt;
&lt;p&gt;Alas, the number of accounts we have online has exploded over the past decade, and unless you violate the ‘don’t reuse passwords” rule, that means you likely have hundreds of online accounts and hundreds of logins to keep track of. &lt;/p&gt;
&lt;p&gt;A password manager is terrific for helping you create, store, and use unique strong passwords for all your online accounts. With a good password manager, your stored passwords, email addresses, and other private information are kept in an encrypted vault and you only need to remember one single password. Additionally, you typically can securely share passwords across family members (no more need to text the Netflix password). &lt;/p&gt;
&lt;p&gt;I recommend &lt;a href=&quot;https://1password.com/password-manager/&quot;&gt;1password&lt;/a&gt; because a) it works across all the devices I need (Mac, Chrome, Firefox, Safari, iOS, etc), b) it’s super easy to use for newbies to password management, and c) their approach to security is that everyone (including them) should expect to get breached and thus have leveraged a “&lt;a href=&quot;https://blog.1password.com/what-the-secret-key-does/&quot;&gt;Secret Key&lt;/a&gt;” approach to protecting passwords which would be impossible to brute force hack with today’s technology. &lt;/p&gt;
&lt;p&gt;I would NOT recommend Lastpass. Their approach to security feels lackadaisical at best and despite being the &lt;a href=&quot;https://www.theverge.com/2023/9/7/23862658/lastpass-security-breach-crypto-heists-hackers&quot;&gt;targets of multiple hacks&lt;/a&gt; over the past few years, they’ve been slow to innovate and stay at the forefront of cybersecurity. &lt;/p&gt;
&lt;p&gt;If this step feels too hard at this time and you are an Apple user, it looks like they are releasing a new feature called “&lt;a href=&quot;https://9to5mac.com/2024/06/16/security-bite-can-apples-new-passwords-app-replace-your-password-manager/&quot;&gt;Passwords&lt;/a&gt;” in late 2024 which should be a native password manager for Apple devices. &lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;Watch out for deceptive emails and texts (Phishing)&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Scammers LOVE phishing. Phishing is a type of cyber attack where jackasses will attempt to deceive you into providing sensitive information (usually usernames and passwords) by pretending to be someone or some organization you already trust. &lt;/p&gt;
&lt;p&gt;People use fake emails, websites, and text messages to try and convince you to take some action for malicious purposes (i.e., identity theft or stealing your credit card info). They will usually ask you to open an attached PDF (which might download &lt;a href=&quot;https://www.malwarebytes.com/malware&quot;&gt;malicious software&lt;/a&gt; onto your computer) or click a link  (“&lt;a href=&quot;https://www.semrush.com/blog/what-is-a-url/&quot;&gt;URL&lt;/a&gt;”)  to go to some website to enter your login info (where they will steal your credentials). &lt;/p&gt;
&lt;p&gt;Scammers usually take a “spray-and-pray” approach, sending millions of these emails and texts out because, unfortunately, at least some folks will inadvertently fall for the ruse. Taking a moment to double-check that the sender’s information matches the content within the email or text will help prevent being tricked. You can also use tools such as &lt;a href=&quot;https://transparencyreport.google.com/safe-browsing/search&quot;&gt;Google Safe Browing&lt;/a&gt; to confirm if a URL is safe or contains suspicious content. Always be skeptical when you are asked to open a PDF or click a button to be taken to enter your login credentials when you didn’t request help. &lt;/p&gt;
&lt;p&gt;This is an example of a phishing email I received. You can tell from the sending URL this is NOT from Sirius XM. This is not an email I&amp;#39;m going to click.&lt;/p&gt;
&lt;figure&gt;
  &lt;img src=&quot;https://aaronroy.com/images/how-to-stay-ahead-of-online-scammers-1759632217023.jpg&quot; alt=&quot;Example of phishing email&quot; /&gt;
  &lt;figcaption class=&quot;text-center text-sm text-gray-600 mt-2 italic&quot;&gt;
    Example of phishing email
  &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;This is an example of a phishing text. You can tell from the sender info that this is not the USPS and the link they are asking me to follow is not the same as their official website (usps.com).&lt;/p&gt;
&lt;figure&gt;
  &lt;img src=&quot;https://aaronroy.com/images/how-to-stay-ahead-of-online-scammers-1759632217061.jpeg&quot; alt=&quot;Example of phishing text&quot; /&gt;
  &lt;figcaption class=&quot;text-center text-sm text-gray-600 mt-2 italic&quot;&gt;
    Example of phishing text
  &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;Beyond phishing, also be aware of &lt;a href=&quot;https://en.wikipedia.org/wiki/Pig_butchering_scam&quot;&gt;Pig Butchering&lt;/a&gt; scams. “Pig butchering” refers to a sophisticated, long-term online scam where the scammer (the “butcher”) builds a relationship with the victim (the “pig”) over time to “fatten them up” before executing the scam and stealing large sums of money. There are some &lt;a href=&quot;https://www.instagram.com/p/C8VN4rdS0jF/?igsh=dWVyN3c4aXBrMnpv&quot;&gt;great examples&lt;/a&gt; of folks messing with scammers attempting this type of scam. &lt;/p&gt;
&lt;p&gt;Below is an example of someone trying to build a relationship with me via random text.  If an unknown number or email reaches out to you and tries to build a relationship, be skeptical.&lt;/p&gt;
&lt;figure&gt;
  &lt;img src=&quot;https://aaronroy.com/images/how-to-stay-ahead-of-online-scammers-1759632217090.jpeg&quot; alt=&quot;Example of pig butchering text&quot; /&gt;
  &lt;figcaption class=&quot;text-center text-sm text-gray-600 mt-2 italic&quot;&gt;
    Example of pig butchering text
  &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;The primary place Pig Butchers use to gather info on you is from Facebook so I highly recommend editing your Facebook privacy settings to only allow “Friends” to see your content at a minimum (vs. having it set to public for the whole internet to see). The best way to do this is to go through the Facebook Privacy Checkup process which you can &lt;a href=&quot;https://www.facebook.com/privacy/checkup/&quot;&gt;access here&lt;/a&gt; (will require you to log into your own Facebook account). &lt;/p&gt;
&lt;figure&gt;
  &lt;img src=&quot;https://aaronroy.com/images/how-to-stay-ahead-of-online-scammers-1759632217119.png&quot; alt=&quot;Facebook Privacy Checkup&quot; /&gt;
  &lt;figcaption class=&quot;text-center text-sm text-gray-600 mt-2 italic&quot;&gt;
    Facebook Privacy Checkup
  &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h2&gt;&lt;strong&gt;Keep an eye on if your data&amp;#39;s been compromised&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Even if you do things perfectly and you use strong passwords and 2FA, companies still get phished and hacked daily and your information will wind up public on the internet for scammers to find. &lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://haveibeenpwned.com/&quot;&gt;Have I Been Pwned&lt;/a&gt; allows you to search across multiple data breaches to see if your email address or phone number has been compromised.&lt;/p&gt;
&lt;figure&gt;
  &lt;img src=&quot;https://aaronroy.com/images/how-to-stay-ahead-of-online-scammers-1759632217149.jpg&quot; alt=&quot;Have I Been Pwned results&quot; /&gt;
  &lt;figcaption class=&quot;text-center text-sm text-gray-600 mt-2 italic&quot;&gt;
    This email address of mine has been in multiple data leaks
  &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;You can sign up to receive an email notification every time your personal information is found in a new data breach. Knowing your information has been involved in a breach will allow you to change your password (and perhaps change any other accounts where you reused that password). &lt;/p&gt;
&lt;p&gt;If you are concerned financial data may have been compromised, you can always &lt;a href=&quot;https://www.usa.gov/credit-freeze&quot;&gt;freeze&lt;/a&gt; (and then unfreeze) your credit with the big 3 credit agencies. &lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;Set your Venmo transactions to private&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Venmo is great for sending/receiving money quickly. But, I don’t think most people are aware that all transactions they make on it are &lt;a href=&quot;https://www.cnet.com/news/privacy/venmo-explains-why-transactions-are-public-by-default/&quot;&gt;&lt;strong&gt;public by default&lt;/strong&gt;&lt;/a&gt;. So unless you change this setting, your friends can see who you paid and the comments you left in the transaction. &lt;/p&gt;
&lt;p&gt;Scrolling my Venmo feed, I can not only see friends paying for babysitters and partners paying each other for dinner outings but I can also see people sharing the exact address of their home and where they pay rent, who still is paying their parents for their cell phone bill, and who likes to indulge in online gambling. &lt;/p&gt;
&lt;p&gt;Unless you want this information to be public, take a moment and update your settings with the instructions below:&lt;/p&gt;
&lt;figure&gt;
  &lt;img src=&quot;https://aaronroy.com/images/how-to-stay-ahead-of-online-scammers-1759632217175.png&quot; alt=&quot;Venmo privacy settings instructions&quot; /&gt;
  &lt;figcaption class=&quot;text-center text-sm text-gray-600 mt-2 italic&quot;&gt;
    How to set Venmo transactions to private
  &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;These steps are at least a starting point to improve your security and privacy on the internet in 2024.&lt;/p&gt;
&lt;p&gt;I take the perspective that it’s impossible to prevent your data from being leaked online, so the best approach is to have the right protections to make sure one single breach won’t bring down your whole digital empire. &lt;/p&gt;
&lt;p&gt;When in doubt that something feels sketchy on the internet, call a friend or feel free to &lt;a href=&quot;mailto:aaron@aaronroy.com&quot;&gt;email me&lt;/a&gt;. My hope is that no one else has to end up in a situation where they hand over &lt;a href=&quot;https://www.thecut.com/article/amazon-scam-call-ftc-arrest-warrants.html&quot;&gt;$50,000 in a shoebox&lt;/a&gt; to a scam caller pretending to be a CIA agent. &lt;/p&gt;
&lt;p&gt;&lt;em&gt;(special thanks to&lt;/em&gt; &lt;a href=&quot;https://www.linkedin.com/in/rosannavolchok/&quot;&gt;&lt;em&gt;Rosanna&lt;/em&gt;&lt;/a&gt; &lt;em&gt;and&lt;/em&gt; &lt;a href=&quot;https://www.linkedin.com/in/eiwelingefors/&quot;&gt;&lt;em&gt;Eiwe&lt;/em&gt;&lt;/a&gt; &lt;em&gt;for reading drafts and giving feedback on this)&lt;/em&gt;&lt;/p&gt;
</content:encoded><category>Tutorials</category><category>Cybersecurity</category></item><item><title>Useful (and silly) ways I use ChatGPT</title><link>https://aaronroy.com/useful-and-silly-ways-i-use-chatgpt/</link><guid isPermaLink="true">https://aaronroy.com/useful-and-silly-ways-i-use-chatgpt/</guid><description>Some useful and silly ways I&apos;ve used ChatGPT in my day to day life.</description><pubDate>Tue, 28 May 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I find myself using &lt;a href=&quot;https://openai.com/&quot;&gt;ChatGPT&lt;/a&gt; more and more within a given week. I primarily use their Mac and iOS apps to access the application (vs within the browser). Some of the use cases below are practical, logical, and downright helpful. Other times, well, you&amp;#39;ll see, they err more towards silly but they are still useful.&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;Getting personalized support for specific technology questions&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;I recently acquired &lt;a href=&quot;http://aaronroy.com&quot;&gt;aaronroy.com&lt;/a&gt; and &lt;a href=&quot;http://aaronroy.net&quot;&gt;aaronroy.net&lt;/a&gt;, so after years of using &lt;a href=&quot;http://aaronroy.com&quot;&gt;aaronroy.com&lt;/a&gt; as my primary domain, I was considering moving my content to a new TLD. Before going down the rabbit hole of what that project would entail, I was able to use ChatGPT to see what the project would look like and ask specific follow-up questions as I debated what direction I wanted to take.&lt;/p&gt;
&lt;p&gt;My starting prompt:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-plaintext&quot;&gt;I want to switch my website from aaronroy.com to aaronroy.com. I own both the domains already and have hosting already set up on aaronroy.com. What steps should I take to switch my website to aaronroy.com?
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I appreciate that it starts the response with &amp;quot;Backup Your Website&amp;quot;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://aaronroy.com/images/useful-and-silly-ways-i-use-chatgpt-1759632216336.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;I definitely needed some more clarification on the differences and benefits of add-on domains vs. parked domains. I was able to follow up my original prompts with:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-plaintext&quot;&gt;Can you explain the difference between add-on domains and parked domains with examples? When would I want to use one versus the other?
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code class=&quot;language-plaintext&quot;&gt;What&amp;#39;s the difference between parked domain and a domain redirect? Why would I park a domain instead of just redirecting?
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;After weighing my options and how much time I felt like committing to this project, I ended up going with just parking my new domains.&lt;/p&gt;
&lt;p&gt;Beyond helping me figure out hosting questions, I&amp;#39;ve also found ChatGPT useful to understanding &amp;quot;newer&amp;quot; options within the world of cybersecurity.&lt;/p&gt;
&lt;p&gt;I was looking for a secure option beyond &lt;a href=&quot;https://www.yubico.com/products/&quot;&gt;Yubikey&amp;#39;s&lt;/a&gt; to manage 2FA on a shared email account. With physical keys like the Yubikey for 2FA, best practice is to have a primary and a backup key set up for a single account so you don&amp;#39;t accidentally lock yourself out if you lose the physical key. I was unsure if you had to follow the same approach with a secure passkey. My prompt:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-plaintext&quot;&gt;Do I need to create multiple passkeys for a single login account the same way I have a primary and a backup yubikey? 
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;https://aaronroy.com/images/useful-and-silly-ways-i-use-chatgpt-1759632216358.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;Summarizing financial results and public filings&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;The ability to upload a document and get assistance in pulling out the key points (or a summary of patterns) is awesome. This is a totally new workflow unlocked for me with ChatGPT and has saved me a bunch of time.&lt;/p&gt;
&lt;p&gt;Below, I uploaded the earning&amp;#39;s presentation from one of Teachable&amp;#39;s competitors and was able to have ChatGPT give me a first pass at pulling out some of the key numbers and trends from their public filings.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://aaronroy.com/images/useful-and-silly-ways-i-use-chatgpt-1759632216391.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;h2&gt;Supplying &lt;strong&gt;recipe ideas and help while cooking&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;ChatGPT is exceptional at supplying recipes combining random food items in your fridge and helping answer cooking questions on the fly. Being able to come back to prior chats and ask follow up questions such as &amp;quot;How long to cook X?&amp;quot; or &amp;quot;convert X from ounces to cups&amp;quot; is super useful.&lt;/p&gt;
&lt;p&gt;Some prompts I&amp;#39;ve had success with:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-plaintext&quot;&gt;Tell me a few stir fry recipes using chicken, asparagus and rice
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code class=&quot;language-plaintext&quot;&gt;Please give me 3 different sub 15 minute marinades that can be used with baked salmon
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code class=&quot;language-plaintext&quot;&gt;What&amp;#39;s a crockpot recipe including vegetable broth, boneless chicken thighs and diced sweet potatoes?
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I&amp;#39;ve also found it useful in other ways around the kitchen, using it here to figure out how to clean a coffee grinder.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://aaronroy.com/images/useful-and-silly-ways-i-use-chatgpt-1759632216419.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;Generating stories on the fly for my daughter&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;I ran out of books within arms reach and needed a story on the fly to read before bedtime. Voila, ChatGPT to the rescue.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://aaronroy.com/images/useful-and-silly-ways-i-use-chatgpt-1759632216448.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;Coming up with random images for chats and use on the internet&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;This might be my favorite use case thus far. Why settle for a regular image ever again when now I can make custom images on the fly.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://aaronroy.com/images/useful-and-silly-ways-i-use-chatgpt-1759632216478.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://aaronroy.com/images/useful-and-silly-ways-i-use-chatgpt-1759632216509.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://aaronroy.com/images/useful-and-silly-ways-i-use-chatgpt-1759632216542.jpg&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;I&amp;#39;m a big fan of the Tour de France, so this French Donkey riding a bicycle with the Eiffel Tower in the background is perfect for my group chat with friends.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Overall, I find myself transitioning more and more of the queries I would have directed into Google or Reddit into ChatGPT. What I find most interesting thus far are the new workflows these models enable vs. just replacing searches.&lt;/p&gt;
&lt;p&gt;If you haven&amp;#39;t had the chance to play with ChatGPT, &lt;a href=&quot;https://claude.ai/&quot;&gt;Claude&lt;/a&gt; (by Anthropic), &lt;a href=&quot;https://gemini.google.com/&quot;&gt;Gemini&lt;/a&gt; (by Google), or &lt;a href=&quot;https://llama.meta.com/&quot;&gt;Llama&lt;/a&gt; (by Meta) take a few moments and experiment because in a year, or even a few month&amp;#39;s time there likely will be a whole new world of use cases and actions to explore.&lt;/p&gt;
</content:encoded><category>Tutorials</category><category>AI</category></item><item><title>A long day on the bike - Vätternrundan 2023</title><link>https://aaronroy.com/vatternrundan-2023/</link><guid isPermaLink="true">https://aaronroy.com/vatternrundan-2023/</guid><description>Vätternrundan is one of the largest recreational cycling events in the world. This is my experience riding ~197 miles in Vätternrundan 2023.</description><pubDate>Mon, 14 Aug 2023 00:00:00 GMT</pubDate><content:encoded>&lt;figure&gt;
  &lt;img src=&quot;https://aaronroy.com/images/vatternrundan-2023-1759632216130.jpeg&quot; alt=&quot;Vätternrundan 2023&quot; /&gt;
&lt;/figure&gt;

&lt;p&gt;I had the honor of participating in &lt;a href=&quot;https://vatternrundan.se/vatternrundan/en/&quot;&gt;Vätternrundan&lt;/a&gt; this past June with some Swedish friends living here in New York.&lt;/p&gt;
&lt;p&gt;Billed as &amp;quot;The world&amp;#39;s largest recreational bike event,&amp;quot; this bike ride brings people together from around the world to Motala, Sweden, to ride 315 km (~197 miles) around Lake Vättern.&lt;/p&gt;
&lt;p&gt;It was an incredible experience that was challenging, exciting and some of the most fun I&amp;#39;ve had on a bike.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;How it went down:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Woke up at 2:45 am for a 4:04 start time (sun was already up!)&lt;/p&gt;
&lt;figure&gt;
  &lt;img src=&quot;https://aaronroy.com/images/vatternrundan-2023-1759632216162.jpg&quot; alt=&quot;Early morning start&quot; /&gt;
&lt;/figure&gt;

&lt;p&gt;First 65 miles flew by. We made it down to Jonkoping in 3:30. Pelotons of 50+ riders formed up. We got passed by teams of 30+ riders absolutely dropping the hammer.&lt;/p&gt;
&lt;figure&gt;
  &lt;img src=&quot;https://aaronroy.com/images/vatternrundan-2023-1759632216195.jpg&quot; alt=&quot;Riding in pelotons&quot; /&gt;
&lt;/figure&gt;

&lt;p&gt;Pace dramatically slowed down past the Swedish meatballs in Jonkoping. Averaged 30 km/h at arrival, averaged 26 km/h for the next ~33 miles to the next rest stop.&lt;/p&gt;
&lt;figure&gt;
  &lt;img src=&quot;https://aaronroy.com/images/vatternrundan-2023-1759632216224.jpg&quot; alt=&quot;Rest stop&quot; /&gt;
&lt;/figure&gt;

&lt;p&gt;Karlsborg (Mile 127) to Askersund (Mile 159) was the toughest segment for me. I got a bit hot and energy lagged.&lt;/p&gt;
&lt;p&gt;Askursund (Mile ~160) on felt great. I climbed fairly well and put in some pulls. We ended up skipping the last rest stop in Bona and just cruising on home to Motala as we all felt ready to take a break from being on the bikes.&lt;/p&gt;
&lt;p&gt;Our total time, including stops, was ~14 hours, and our final total moving time was a shade under 11 hours. Obligatory Strava breakdown is available &lt;a href=&quot;https://www.strava.com/activities/9283950106&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;All in all, it was an incredible and exhausting day in the saddle.&lt;/p&gt;
&lt;figure&gt;
  &lt;img src=&quot;https://aaronroy.com/images/vatternrundan-2023-1759632216254.jpeg&quot; alt=&quot;Finish celebration&quot; /&gt;
&lt;/figure&gt;

&lt;figure&gt;
  &lt;img src=&quot;https://aaronroy.com/images/vatternrundan-2023-1759632216287.png&quot; alt=&quot;Map of Vätternrundan&quot; /&gt;
  &lt;figcaption class=&quot;text-center text-sm text-gray-600 mt-2 italic&quot;&gt;
    The Route. Source: Vätternrundan SE
  &lt;/figcaption&gt;
&lt;/figure&gt;</content:encoded><category>Bikes</category></item><item><title>Lessons learned refinancing $100k+ student loan debt multiple times</title><link>https://aaronroy.com/lessons-learned-refinancing-student-loan-debt/</link><guid isPermaLink="true">https://aaronroy.com/lessons-learned-refinancing-student-loan-debt/</guid><description>Sharing my experienece refinancing my student loan debt multiple times</description><pubDate>Fri, 27 May 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I see all sorts of advice on the internet about refinancing student loans, but very few stories about folks who&amp;#39;ve refinanced multiple times and the benefits of constantly seeking better rates.&lt;/p&gt;
&lt;p&gt;Student loans gave me a chance at a better education than my parents were able to obtain, but they came at a financial and emotional cost that the paperwork surely didn&amp;#39;t explain.&lt;/p&gt;
&lt;p&gt;As someone who just refinanced $100k+ in student loans for the 5th time in as many years, here&amp;#39;s what I&amp;#39;ve learned along the way.&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;My Student Loan Story&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;I spent my early to mid 20s after law school launching a small business. I had left law school with $150,000 in student loans at a variety of interest rates, and had not really given much thought to how I would pay off these loans at the time. Figuring out how to pay off those pesky loans seemed like future me&amp;#39;s problem&lt;/p&gt;
&lt;p&gt;By the time I started to pay serious attention to my student loans (around the time I turned 28), I realized my potential total cost including interest had skyrocketed to $220,000+.&lt;/p&gt;
&lt;p&gt;After the initial stomach-churning reaction, I decided to do something about it. I didn&amp;#39;t have a particularly strong credit history when I was 28 so I only able to refinance my highest interest loans (some were at 9.75%!!!) in 2016.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Refinance 1: August 2016: SoFi/Mohela - $31,878 at a 6.25 rate with projected payable interest of 10k+ over 10 years.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Once I had improved my credit a bit, and was able to show a bit more income on the books, I consolidated the remainder of my high-interest loans in April 2017.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Refinance 2: April 2017: Sofi/Mohela - $105,510 at a 6.625 rate with projected payable interest of&lt;/em&gt;&lt;/strong&gt; &lt;strong&gt;&lt;em&gt;$66,000+&lt;/em&gt;&lt;/strong&gt; &lt;strong&gt;&lt;em&gt;over 15 years.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;If the story ended there, and I stuck with the 2016 and 2017 loans interest rates and minimum payment terms, I&amp;#39;d have ended up paying out &lt;strong&gt;$209,698&lt;/strong&gt; ($166,746 + $42,952)&lt;/p&gt;
&lt;p&gt;The next refinance took place in 2018. I knew I&amp;#39;d potentially be starting a new business soon, and I wanted to lower my interest rates and consolidate my first two refinances while I still had steady income on the books.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Refinance 3: Nov. 2018: Commonbond/Firstmark - $138,307 at a 4.510 rate with projected $33,780 in interest (total of $172,087 over 10 years).&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This was almost $40,000 in potential interest savings from my past loans. Considering I was making only the minimum payments on the first two refinances, this was a no-brainer move.&lt;/p&gt;
&lt;p&gt;In February 2021, came refinance number 4 on a much more aggressive payment timeline (5 years vs 10) as I had the resources to start paying these loans down in earnest.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Refinance 4: Feb. 2021: $112,000 for 5 years at 3.465% (3.25 with the autopay discount) with projected interest of ~$10,000.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Since refinance 4 I&amp;#39;ve been paying between $1,000 to $1,500 over the minimum payments as I&amp;#39;d really like to clear these loans out in the next 2-3 years.&lt;/p&gt;
&lt;p&gt;I decided to refinance for the fifth time to take advantage of the low rates currently being offered before they creep back up, and also lower my monthly payment should I decide I want to take the throttle off on paying above the minimums.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Refinance 5: Nov. 2021: $86,717.94 for 5 years at 2.74% (2.49 with the autopay discount) with projected interest of ~$6,000.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;My loans aren&amp;#39;t gone yet, but I at least feel like I see a path to paying them off someday soon.&lt;/p&gt;
&lt;p&gt;As background, I&amp;#39;m a ~35 y/o male and my annual income has varied from $50k - $175k during this time period (I work in product as my day job, and have a small business on the side).&lt;/p&gt;
&lt;p&gt;For anyone dealing with student loan debt, you aren&amp;#39;t alone and you will get through this!&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;Things I wish I knew earlier:&lt;/strong&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Your credit matters even more than you think&lt;ul&gt;
&lt;li&gt;Leaving law school, I didn&amp;#39;t do much to build credit. Without a credit history, it was very hard to get good loan rates at first.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Refinance private loans as soon as possible&lt;ul&gt;
&lt;li&gt;Even the first refinanced rates were better than what I had on my private loans with Sallie Mae / Navient. I would&amp;#39;ve saved money to refinance all my private loans as soon as I graduated law school into a 15/20 year loan. Instead, I waited ~4 years to refinance for the first time, and by then incurred a whole bunch of interest I could&amp;#39;ve at least mitigated.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;It doesn&amp;#39;t hurt your credit score to keep checking on refinance rates.&lt;ul&gt;
&lt;li&gt;I&amp;#39;ve started at least 11 applications over the years just to check in on what rates are available. As long as you are just browsing rates, and don&amp;#39;t consent to a hard credit inquiry this doesn&amp;#39;t hurt your credit and you can hop on great interest rates as soon as they are available.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;High interest means your minimum payment get&amp;#39;s absorbed by the principle&lt;ul&gt;
&lt;li&gt;I was absolutely stunned when I saw how much of each monthly payment went towards simply paying down interest month to month. Getting yourself a lower interest rate on your loans means more money goes towards the principal balance (the actual loan amount).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;&lt;strong&gt;Other resources I found useful&lt;/strong&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://bookshop.org/books/i-don-t-want-to-die-poor-essays/9781982129309&quot;&gt;I Don&amp;#39;t Want to Die Poor by Michael Arceneaux&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;A great read for anyone who has struggled with the emotional side of student loans.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><category>Student Loans</category></item><item><title>Taking aim at helping creators drive more revenue</title><link>https://aaronroy.com/taking-aim-at-helping-creators-drive-more-revenue/</link><guid isPermaLink="true">https://aaronroy.com/taking-aim-at-helping-creators-drive-more-revenue/</guid><description>What we did, how we did it and lessons learned from trying to help creators drive more revenue with Teachable Discover and Spotlight.</description><pubDate>Fri, 06 May 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;In 2020, I put my startup, Wami, &lt;a href=&quot;https://aaronroy.com/how-i-got-a-product-job-during-the-pandemic/&quot;&gt;into survival mode&lt;/a&gt; and joined Teachable as the product lead for a new Skunkworks team. Our ambitious goal was to figure out ways to help creators generate additional revenue.&lt;/p&gt;
&lt;p&gt;We started with the following areas as potential problems to solve: &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;How a creator gets their course content discovered and purchased remains one of the foundational challenges all creators need to answer on their path to monetary success. &lt;/li&gt;
&lt;li&gt;Creating a course or digital good is relatively easy. Distributing a course or digital good to facilitate actual sales is difficult and often where digital creators will fail.&lt;/li&gt;
&lt;li&gt;Existing aggregators at the time offering distribution support (i.e. Udemy and Skillshare) charge high take rates and require sacrificing direct relationships and control of their audience.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;&lt;strong&gt;What we did:&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;We started with &lt;a href=&quot;https://teachable.com/blog/discover-by-teachable&quot;&gt;Discover by Teachable&lt;/a&gt;, a course marketplace featuring content from top creators. &lt;/p&gt;
&lt;p&gt;Where Udemy charged a ~63% take rate and sat between the creator and their audience post-sale, we helped creators drive demand for a ~30% take rate and creators had complete control over their audience and communication. &lt;/p&gt;
&lt;p&gt;Alas, a major hurdle we faced with Discover was the chicken-and-egg dilemma of &lt;a href=&quot;https://www.lennysnewsletter.com/p/how-to-kickstart-and-scale-a-marketplace&quot;&gt;kickstarting a marketplace&lt;/a&gt;. To build demand, you need copious amounts of great content, and to attract creators, you need to be able to offer an engaged audience of prospective buyers. We chose to focus on cultivating top creators first rather than aggregating a large backlog of course demand. &lt;/p&gt;
&lt;p&gt;We realized the events we hosted alongside creators for Discover were great at generating leads and awareness for creator content and used those learnings to pivot into launching Spotlight. &lt;/p&gt;
&lt;p&gt;Spotlight was a course and live event platform that helped creators generate new leads, engage with their audience, and generate course sales. I imagined what we were doing with Spotlight as similar to the &lt;a href=&quot;https://www.hsn.com/&quot;&gt;Home Shopping Network&lt;/a&gt; but for creators. &lt;/p&gt;
&lt;figure&gt;
  &lt;img src=&quot;https://aaronroy.com/images/taking-aim-at-helping-creators-drive-more-revenue-1759632216581.jpg&quot; alt=&quot;Doing my best Billy Mays impression&quot; /&gt;
  &lt;figcaption class=&quot;text-center text-sm text-gray-600 mt-2 italic&quot;&gt;
    Doing my best Billy Mays impression (replay of event &lt;a href=&quot;https://www.youtube.com/watch?v=91Sx_zEzhu0&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;here&lt;/a&gt;)
  &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;Spotlight was able to sidestep some of the hurdles Discover faced in building up demand because by focusing on co-hosted live events with creators, the participants, in turn, would promote heavily to their own audience. &lt;/p&gt;
&lt;p&gt;Creators would use the &lt;a href=&quot;https://www.youtube.com/watch?v=v19Q8QRH7J0&quot;&gt;live events&lt;/a&gt; to launch new courses, promote content, drive awareness for premium offers, and test out potential new course content. We would promote the live events via paid media and to our own email list and then use our platform to deliver follow-up sales sequences to event attendees with limited-time offers and drive traffic to our mobile-optimized sales pages for conversions. &lt;/p&gt;
&lt;figure&gt;
  &lt;img src=&quot;https://aaronroy.com/images/taking-aim-at-helping-creators-drive-more-revenue-1759632216606.png&quot; alt=&quot;Example sales page&quot; /&gt;
  &lt;figcaption class=&quot;text-center text-sm text-gray-600 mt-2 italic&quot;&gt;
    Example sales page
  &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;Both Discover and Spotlight used an affiliate marketing model to generate revenue. Creators were able to keep the entirety of sales on Discover/Spotlight’s sales pages driven by their efforts and we took a commission for any sales driven by our marketing efforts (typically ~30%-50%, which was substantially lower than Udemy’s ~63% take rate). &lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;How we did it:&lt;/strong&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Our team operated as a startup outside of the main Teachable product org. We started off with reporting directly to the founder of Teachable, Ankur Nagpal. This distinction of having a direct line of reporting to the CEO was important as we needed to rapidly make decisions, test out ideas and operate at startup speed. &lt;/li&gt;
&lt;li&gt;To stay organized and keep things moving forward, we used the minimum viable process for each project. We used &lt;a href=&quot;https://www.notion.so/&quot;&gt;Notion&lt;/a&gt; for project management/documentation and &lt;a href=&quot;https://jira.com/&quot;&gt;Jira&lt;/a&gt; (when necessary) for ticket management. &lt;/li&gt;
&lt;li&gt;We &lt;a href=&quot;https://www.youtube.com/watch?v=O01EXQcrJNE&quot;&gt;hosted the live events ourselves&lt;/a&gt; to prove out the concept before hiring dedicated hosts to increase the number of events we could host per week (eventually hosting 200+ events). We started with &lt;a href=&quot;https://zoom.us/&quot;&gt;Zoom&lt;/a&gt; for live streams before switching to &lt;a href=&quot;https://streamyard.com/&quot;&gt;Streamyard&lt;/a&gt;. I personally love &lt;a href=&quot;https://obsproject.com/&quot;&gt;OBS&lt;/a&gt; but it was overkill for our needs.&lt;/li&gt;
&lt;li&gt;While the live events were the hook to evangelize the creator&amp;#39;s content, the majority of sales we drove came from the sales sequences we sent as follow-up via &lt;a href=&quot;https://www.drip.com/&quot;&gt;Drip&lt;/a&gt;. We tested a wide variety of subject lines, &lt;a href=&quot;https://www.litmus.com/&quot;&gt;designs&lt;/a&gt;, copy and conversion drivers to optimize what types of sequences performed best for each type of content. We also realized the majority of purchases occurred via mobile email so we knew heading into the Spotlight iteration that being mobile first with our sales pages was crucial for achieving the best CVR for creators. &lt;/li&gt;
&lt;li&gt;We used landing pages and outbound outreach to recruit creators both on and off Teachable who had great content to be a part of these projects. &lt;/li&gt;
&lt;li&gt;The original Discover prototype used &lt;a href=&quot;https://webflow.com/&quot;&gt;Webflow&lt;/a&gt; for the home page and sale pages and linked to Teachable checkout pages for processing sales.&lt;/li&gt;
&lt;li&gt;Spotlight was primarily built with &lt;a href=&quot;https://www.contentful.com/&quot;&gt;Contentful&lt;/a&gt; and &lt;a href=&quot;https://react.dev/&quot;&gt;React&lt;/a&gt;. It was also built standalone from Teachable and was reusable for promoting courses, hosting events, and collecting registrations agnostic of course platforms.&lt;/li&gt;
&lt;li&gt;We used &lt;a href=&quot;https://www.airtable.com/&quot;&gt;Airtable&lt;/a&gt; as a lightweight CRM, &lt;a href=&quot;https://www.typeform.com/&quot;&gt;Typeform&lt;/a&gt; to collect inputs, create waitlists and collect user feedback, and &lt;a href=&quot;https://zapier.com/&quot;&gt;Zapier&lt;/a&gt; to connect these disparate tools and speed up our workflows.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;&lt;strong&gt;Lessons learned:&lt;/strong&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Going from one product to multi-product is super hard.&lt;/strong&gt; The lessons here are worthy of their own writeup at a later date. It’s an important moment for every company when they try to make the leap from just the core offering into a multi-product suite. It requires time, patience, investment, the right culture and proper timing to pull off successfully. Here is a great &lt;a href=&quot;https://hackernoon.com/9-lessons-learned-going-multi-product-19b48c159068&quot;&gt;further read from FirstMark&lt;/a&gt; on the topic.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><category>Projects</category></item><item><title>How I got a product role to save my startup</title><link>https://aaronroy.com/how-i-got-a-product-job-during-the-pandemic/</link><guid isPermaLink="true">https://aaronroy.com/how-i-got-a-product-job-during-the-pandemic/</guid><description>Resources, templates and articles that helped a product job search in the midst of the Covid-19 pandemic.</description><pubDate>Sat, 06 Feb 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I’ve recently joined the rocketship that is &lt;a href=&quot;https://teachable.com/&quot;&gt;Teachable&lt;/a&gt; as a product manager for their burgeoning &lt;a href=&quot;https://discover.teachable.com/&quot;&gt;Discover platform&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;How I got to this new role was anything but a linear process. In this post, I hope to share some of the experiences, resources, templates, and articles that helped me throughout.&lt;/p&gt;
&lt;p&gt;First, some backstory.&lt;/p&gt;
&lt;p&gt;My robotic handwritten notes startup, &lt;a href=&quot;https://wami.io/&quot;&gt;Wami&lt;/a&gt;, has been bootstrapped from the start, and the shock Covid-19 provided to the global landscape (and the corresponding reduction in all marketing spend) put us in the uncomfortable position of having to figure out how to keep our company alive in addition to paying our personal bills.&lt;/p&gt;
&lt;p&gt;While we’re able to chart a course forward for the business to survive near-term and continue forward, it was clear that I needed to reassess what I wanted professionally in light of a vastly different world and quite uncertain future ahead.&lt;/p&gt;
&lt;p&gt;I first tried freelancing as a product manager through the &lt;a href=&quot;https://www.toptal.com/#employ-exclusively-terrific-lean-startup-product-managers&quot;&gt;TopTal network&lt;/a&gt;. I met some great and interesting people through those projects but found myself wanting something different.&lt;/p&gt;
&lt;p&gt;With the pandemic throwing the state of the world into general uncertainty for the indefinite future, I decided to take a full reset about what I wanted to do with the majority of my time for the next few years.&lt;/p&gt;
&lt;p&gt;At one point in mid-May, I saw a tweet from &lt;a href=&quot;https://twitter.com/nntaleb/status/1259972658889973760&quot;&gt;Nassim Taleb&lt;/a&gt; that summarized my mindset at the time.&lt;/p&gt;
&lt;p&gt;The output of this reset for me was understanding that I wanted to work full-time in a vertical where I had genuine curiosity and interest, where I could apply what I’ve learned so far while also being pushed to continue to grow.&lt;/p&gt;
&lt;h2&gt;Quality not quantity&lt;/h2&gt;
&lt;p&gt;Taking the time to think about what interests you and why you want to work on those types of problems will carry you well throughout the entire interview process. Spray and pray is not the best way to end up where you want.&lt;/p&gt;
&lt;p&gt;The first thing I did was put together a list of verticals and companies that fit my parameters.&lt;/p&gt;
&lt;figure&gt;
  &lt;img src=&quot;https://aaronroy.com/images/how-i-got-a-product-job-during-the-pandemic-1759632216094.png&quot; alt=&quot;My product targets&quot; /&gt;
  &lt;figcaption class=&quot;text-center text-sm text-gray-600 mt-2 italic&quot;&gt;
    Some of the companies I was interested in
  &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;Once I was ready to start actively searching for a role, I invested some time cleaning up my &lt;a href=&quot;https://aaronroy.com/category/portfolio/&quot;&gt;portfolio&lt;/a&gt; and resume.&lt;/p&gt;
&lt;p&gt;With interviews being conducted over Zoom, I knew that not all facets of my personality or past work would come out during the interview process. I used the problem, approach, outcome framework to unpack the strategy behind some of the products I’ve been a part of building as my portfolio case studies. I then solicited feedback from some of my friends and peers in the product space to make sure I wasn’t sharing gibberish.&lt;/p&gt;
&lt;h2&gt;Getting conversations started&lt;/h2&gt;
&lt;p&gt;With my targets, resume, and portfolio ready to go, the next step was getting in front of the right people at the places I wanted to be.&lt;/p&gt;
&lt;p&gt;I was heavily influenced by Gibson Biddle’s &lt;a href=&quot;https://medium.com/@gibsonbiddle/how-to-find-a-great-job-944caa29c980&quot;&gt;article&lt;/a&gt; about cultivating your network and the process of getting to two conversations a day. I was not looking for a VP job at Netflix (as he was), but the mindset and “activity” focus made a lot of sense to me.&lt;/p&gt;
&lt;p&gt;I tried a variety of different ways to generate these conversations to varying results.&lt;/p&gt;
&lt;p&gt;As a starting point, I made this &lt;a href=&quot;https://docs.google.com/spreadsheets/d/1XZdeTUtBUMP-odelOYoO-0YIh3uxegoqbn_su5E4S7o/edit#gid=2092010247&quot;&gt;template&lt;/a&gt; to serve as a lightweight tracker to help me manage my outreach process to roles, recruiters, and in-network friends.&lt;/p&gt;
&lt;p&gt;As every “how to get a job” post recommends, I went on some interviews with companies outside my targets to get some practice in. I got those interviews via recruiters. I was able to find quite a few product-focused recruiters simply via a google search and browsing LinkedIn. I used &lt;a href=&quot;https://www.notion.so/Cold-LinkedIn-Message-to-Recruiter-1c14b57cbd3a4d9db15138b92b9090db&quot;&gt;this template&lt;/a&gt; to reach out and followed up weekly if I didn’t hear back.&lt;/p&gt;
&lt;p&gt;In terms of getting interviews through my own efforts, I had the most success starting conversations by cold LinkedIn messaging prospective hiring managers and internal recruiters with &lt;a href=&quot;https://www.notion.so/Cold-LinkedIn-Message-to-Hiring-Manager-or-Internal-Recruiter-3e626aec8b204baf9782f71bebe58d3e&quot;&gt;this template&lt;/a&gt; customized for each role and organization. One of the companies I interviewed with I found via the &lt;a href=&quot;https://mastersofscale.com/&quot;&gt;Masters of Scale&lt;/a&gt; podcast. I heard the founder give an incredibly passionate talk about their vision and outlook for the future that moved me to reach out.&lt;/p&gt;
&lt;p&gt;The exercise of understanding what you want also makes it easier for your in-network friends and connections to make an introduction or point you in the right direction. I had shared with a former manager that I was interested in what Teachable was working on, and they were able to open the door for me to someone within the Teachable organization that would’ve been much harder to make happen on my own.&lt;/p&gt;
&lt;h2&gt;Going from interview to offer&lt;/h2&gt;
&lt;p&gt;Using this &lt;a href=&quot;https://docs.google.com/spreadsheets/d/1XZdeTUtBUMP-odelOYoO-0YIh3uxegoqbn_su5E4S7o/edit#gid=2092010247&quot;&gt;tracker template&lt;/a&gt;, I logged all my outreach, conversations, and in-progress interviews with all the next steps. Even if I could not get ahold of a recruiter or someone within a specific company, I still logged the outreach. This a) made me feel like I accomplished something (and the little victories come in handy in the midst of a job search) and b) kept me honest in terms of following up with each target.&lt;/p&gt;
&lt;p&gt;As with anything that requires some form of selling, it’s often not the first touch that leads to success. Follow up at a regular cadence has to be a part of your process. This doesn’t mean you should harass companies you are engaged with for an update, but it does mean you should always be on top of understanding where you are in the hiring process and what next steps remain to put the company in a position to make you an offer.&lt;/p&gt;
&lt;p&gt;I’m not going to go into great detail in this post about how to ace product interviews. Still, it’s definitely important to understand who you are interviewing within each company and what types of hard and soft skills they are trying to gather from you during each conversation. It should also go without saying, but you should spend quite a bit of time researching the product strategy and competitive landscape for any org you are interviewing with.&lt;/p&gt;
&lt;p&gt;With most interviews happening remotely right now, I would also recommend learning how to properly use &lt;a href=&quot;https://miro.com/&quot;&gt;Miro&lt;/a&gt; or &lt;a href=&quot;https://www.mural.co/&quot;&gt;Mural&lt;/a&gt; as many of the organizations I interviewed with leveraged these for strategy presentations and brainstorming sessions.&lt;/p&gt;
&lt;p&gt;Once I made it into the later rounds of interviewing with a few organizations I could see being a good fit for me, I then switched my focus to closing and receiving a written offer. I was transparent with each organization&amp;#39;s hiring manager about my comp expectations should they also see me as a good fit and that I wanted to make a decision within a specific time frame. I also leveraged friends&amp;#39; input within the product recruiting industry to get insight into what fair comp looked like in our specific market.&lt;/p&gt;
&lt;p&gt;Using this overall process, I was very fortunate to receive multiple offers to choose from.&lt;/p&gt;
&lt;h2&gt;Other notes from the interview process&lt;/h2&gt;
&lt;p&gt;If I had to pick one area that I think paid off the most in helping me open doors for conversations, it would have to be the portfolio. It took some effort upfront to put the content together, but it paid off massively to communicate strategy and outcomes in a way a resume falls short.&lt;/p&gt;
&lt;p&gt;From when I started the search process, to when I accepted a job took about ~4 months in total. Some advice I got early in my process was to prepare for ~6 months and be pleasantly surprised if it happens sooner.&lt;/p&gt;
&lt;p&gt;In addition to the templates I’ve shared above, I’ve also compiled some of the other &lt;a href=&quot;https://www.notion.so/b244ee71397d4fcea26b3ddfba1f0762?v=ce8e771ba85b4c1099ca1f84a05e3246&quot;&gt;resources&lt;/a&gt; that I found helpful during my search.&lt;/p&gt;
&lt;p&gt;The job-hunting process is inherently stressful. The more you can relax and stay positive throughout the process, the easier the entire process becomes. For me, this meant riding my bike, reading books, and dedicated no screen time with my partner and dog to give my mind a rest. Take care of yourself, and good things will happen eventually. You got this!&lt;/p&gt;
&lt;p&gt;If you have a specific question or want another set of eyes on your product resume, feel free to email me, aaron (at) aaronroy.com, or &lt;a href=&quot;https://twitter.com/aaron_wa&quot;&gt;reach out to me on Twitter&lt;/a&gt;.&lt;/p&gt;
</content:encoded><category>Product Management</category><category>Tutorials</category></item><item><title>Covidsupplies.NYC - Helping source PPE in NYC</title><link>https://aaronroy.com/covidsupplies-nyc-helping-source-ppe-in-nyc/</link><guid isPermaLink="true">https://aaronroy.com/covidsupplies-nyc-helping-source-ppe-in-nyc/</guid><description>How we combined our powers in product, 3D printing, marketing and figuring stuff out to source and distribute PPE in NYC.</description><pubDate>Mon, 04 May 2020 00:00:00 GMT</pubDate><content:encoded>&lt;div style=&quot;position: relative; padding-bottom: 61.32879045996593%; height: 0;&quot;&gt;&lt;iframe src=&quot;https://www.loom.com/embed/934dec15558d42a6aa558a8d0fba1f3e&quot; frameborder=&quot;0&quot; webkitallowfullscreen mozallowfullscreen allowfullscreen style=&quot;position: absolute; top: 0; left: 0; width: 100%; height: 100%;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;

&lt;p&gt;These past few months have been incredibly strange. In early January / February, we started to hear murmurs from our luxury industry customers at &lt;a href=&quot;http://wami.io/&quot;&gt;Wami&lt;/a&gt; about a global slowdown in consumer spending. &lt;/p&gt;
&lt;p&gt;As the pandemic picked up speed in the U.S., it was evident that there was a shortage of personal protective equipment (PPE) for hospitals in the NYC area.  &lt;/p&gt;
&lt;p&gt;With the majority of Wami&amp;#39;s customers significantly impacted by the global slowdown in consumer spending, we teamed up with &lt;a href=&quot;https://3dbrooklyn.com/&quot;&gt;3D Brooklyn&lt;/a&gt; to build &lt;a href=&quot;https://covidsupplies.nyc/&quot;&gt;Covidsupplies.NYC&lt;/a&gt; to link healthcare organizations in need of personal protective equipment (&amp;quot;PPE&amp;quot;) with on-demand 3D printing in the NYC area. &lt;/p&gt;
&lt;p&gt;I&amp;#39;m very proud to share that as of May 27, this project has produced and shipped &lt;strong&gt;15,000+&lt;/strong&gt; face shields to &lt;strong&gt;200 hospitals&lt;/strong&gt; and raised &lt;strong&gt;$60,000+&lt;/strong&gt;. &lt;/p&gt;
&lt;figure&gt;
  &lt;img src=&quot;https://aaronroy.com/images/covidsupplies-nyc-helping-source-ppe-in-nyc-1759632215337.jpg&quot; alt=&quot;Covidsupplies.NYC Face Shield&quot; /&gt;
  &lt;figcaption class=&quot;text-center text-sm text-gray-600 mt-2 italic&quot;&gt;
    Version 1.0 of the Face Shield
  &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;My role was to lead user tests with doctors and health care organizations and then build the website and requisite functionality to securely link organizations in need with local manufacturers able to produce face shields. &lt;/p&gt;
&lt;p&gt;While user-testing with doctors and nurses, it was clear that this needed to be a mobile-first experience, and it needed to be secure and straightforward to submit a request for supplies. &lt;/p&gt;
&lt;p&gt;I used &lt;a href=&quot;https://www.sketch.com/&quot;&gt;Sketch&lt;/a&gt; for the initial designs, and &lt;a href=&quot;https://wordpress.org/&quot;&gt;WordPress&lt;/a&gt; + &lt;a href=&quot;https://elementor.com/&quot;&gt;Elementor Pro&lt;/a&gt; to build the website. I went with &lt;a href=&quot;https://www.typeform.com/&quot;&gt;Typeform&lt;/a&gt; (Typeform even &lt;a href=&quot;https://www.typeform.com/blog/human-experience/community-kindness-covid19/&quot;&gt;covered the project&lt;/a&gt;!) for the form inputs and &lt;a href=&quot;https://zapier.com/home&quot;&gt;Zapier&lt;/a&gt; for email automation.&lt;/p&gt;
&lt;p&gt;The entire MVP was scoped and launched in under one week. With this lightweight tech stack, we were able to implement changes based on rolling feedback from the healthcare organizations on the fly.&lt;/p&gt;
</content:encoded><category>Projects</category><category>3D Printing</category></item><item><title>How brands are adapting marketing outreach tactics during Covid</title><link>https://aaronroy.com/how-brands-are-adapting-marketing-outreach-tactics-during-covid/</link><guid isPermaLink="true">https://aaronroy.com/how-brands-are-adapting-marketing-outreach-tactics-during-covid/</guid><description>Discussing how marketers are adjusting outreach tactics for Q3 and Q4 2020 with the Loyalty 360 team.</description><pubDate>Sun, 03 May 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I recently had the chance to chat with &lt;a href=&quot;https://loyalty360.org/content-gallery/multimedia/loyalty360-thought-leadership-series-aaron-roy,-wa&quot;&gt;Loyalty360&lt;/a&gt; on how brands are adapting their outreach initiatives during Covid, and how marketers are recalibrating playbooks to be successful in Q3 and Q4. My full chat with the Loyalty 360 team is below. &lt;/p&gt;
&lt;p&gt;It&amp;#39;s quite strange to make predictions right now about how businesses will reopen back up for business. Still, I think it&amp;#39;s a fair assumption to assume customer loyalty will be a critical component of success for the brands that do succeed in the new normal.&lt;/p&gt;
&lt;div class=&quot;aspect-video max-w-2xl mx-auto&quot;&gt;
  &lt;p&gt;&lt;strong&gt;📺 Watch on YouTube:&lt;/strong&gt; &lt;a href=&quot;https://www.youtube.com/watch?v=Y8_aWndM7Dw&quot;&gt;https://www.youtube.com/watch?v=Y8_aWndM7Dw&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;</content:encoded><category>Presentations</category></item><item><title>Unlocking revenue with product-led growth</title><link>https://aaronroy.com/unlocking-revenue-with-product-led-growth/</link><guid isPermaLink="true">https://aaronroy.com/unlocking-revenue-with-product-led-growth/</guid><description>Lessons learned experimenting with product-led growth (PLG) strategies to unlock self-service revenue growth.</description><pubDate>Fri, 01 May 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I joined &lt;a href=&quot;https://www.linkedin.com/company/bond-inc/&quot;&gt;Bond&lt;/a&gt; shortly after its acquisition by &lt;a href=&quot;https://www.newellbrands.com/&quot;&gt;Newell Brands&lt;/a&gt;. Bond produced &lt;a href=&quot;https://www.youtube.com/watch?v=vrAyX9vVJCE&quot;&gt;robotic handwritten notes&lt;/a&gt; at scale for B2B and B2C use cases.&lt;/p&gt;
&lt;figure&gt;
  &lt;img src=&quot;https://aaronroy.com/images/unlocking-revenue-with-product-led-growth-1759632215420.jpg&quot; alt=&quot;One of our handwriting robots&quot; /&gt;
  &lt;figcaption class=&quot;text-center text-sm text-gray-600 mt-2 italic&quot;&gt;
    One of our handwriting robots
  &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h2&gt;Problem:&lt;/h2&gt;
&lt;p&gt;As a member of the cross-functional leadership team at Bond, I realized that the sales team was spending a disproportionate amount of time and cost onboarding SMB customers. These SMB customers had strong lifetime value (LTV) and represented one of our highest average revenue per user (ARPU) segments, considering they often made repeat purchases.&lt;/p&gt;
&lt;p&gt;The SMB customers shared their frustrated feedback with the slow and manual existing process and would often drop off before completing their order through an account executive.&lt;/p&gt;
&lt;p&gt;I hypothesized we could better serve these customers by redesigning our web and mobile applications to include self-service features for this valuable and underserved audience. I imagined that something similar to &amp;quot;Mailchimp for handwritten notes&amp;quot; would allow marketers to compose and send 1:many handwritten note campaigns without the intervention of an account executive.&lt;/p&gt;
&lt;p&gt;We could then analyze usage and identify which users might be potential product-qualified leads (PQLs) for more profitable sales outreach.&lt;/p&gt;
&lt;h2&gt;Approach:&lt;/h2&gt;
&lt;p&gt;I had to win over hearts and minds to get the buy-in for this foray into product-led growth.&lt;/p&gt;
&lt;p&gt;I prepared multiple presentations (&lt;a href=&quot;https://www.slideshare.net/slideshow/product-launch-plan-233306387/233306387#12&quot;&gt;example&lt;/a&gt;), leveraging current data and customer feedback to persuade marketing, sales, and the parent company to embrace and trust this shift to self-service for this persona.&lt;/p&gt;
&lt;p&gt;I led the product team in conducting user interviews, during which we quickly confirmed the hypothesis and demand for this redesign. We used this knowledge to build &lt;a href=&quot;https://invis.io/YTX6O4072AP&quot;&gt;clickable prototypes&lt;/a&gt; with InVision, which we then tested with potential first customers to understand and inform what features were necessary at launch.&lt;/p&gt;
&lt;p&gt;Armed with a substantiated hypothesis and the learnings from multiple customer interviews and user tests, I was able to get stakeholder buy-in to move forward with the push into self-service.&lt;/p&gt;
&lt;p&gt;I created the product requirements documentation (&lt;a href=&quot;https://www.slideshare.net/slideshow/product-requirements-example-for-web-application/233311364&quot;&gt;example&lt;/a&gt;) and go-to-market plan. These assets were our guiding light and were shared broadly across the company to make sure all teams moved in the same direction.&lt;/p&gt;
&lt;h2&gt;Outcome&lt;/h2&gt;
&lt;p&gt;We shipped the MVP versions of the new self-service functionality for the web and iOS mobile applications in &amp;gt;3 months. The new feature set added $1+ million in top-line revenue, a 433 percent jump YoY.&lt;/p&gt;
&lt;p&gt;Additionally, the sales team was also able to shift upmarket to Enterprise deals, increasing their average deal size from $4,000 to $10,000+ over the same period.&lt;/p&gt;
&lt;figure&gt;
  &lt;img src=&quot;https://aaronroy.com/images/unlocking-revenue-with-product-led-growth-1759632215449.png&quot; alt=&quot;Revenue growth chart&quot; /&gt;
&lt;/figure&gt;</content:encoded><category>Product Management</category></item><item><title>From idea to reality: How we brought 3DPrinterOS to life</title><link>https://aaronroy.com/how-we-brought-3dprinteros-to-life/</link><guid isPermaLink="true">https://aaronroy.com/how-we-brought-3dprinteros-to-life/</guid><description>Insights and experiences gained from turning the idea of &quot;building the first operating system for 3D printing&quot; into reality.</description><pubDate>Wed, 01 Apr 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;https://www.loom.com/share/8d35b8aaa2fa4b6aba9ce05fe2ec000a&quot;&gt;&lt;img src=&quot;https://aaronroy.com/images/how-we-brought-3dprinteros-to-life-1759632215490.gif&quot; alt=&quot;&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I absolutely love 3D printing and became obsessed with it in 2013 after reading &amp;quot;&lt;a href=&quot;https://www.amazon.com/Fabricated-New-World-3D-Printing/dp/1118350634&quot;&gt;Fabricated&lt;/a&gt;&amp;quot; by Hod Lipson and Melba Kurman. The concept of additive manufacturing vs. standard subtractive techniques blew my mind.&lt;/p&gt;
&lt;p&gt;I knew I wanted to work in the 3D printing space and was fortunate to be part of the founding team at &lt;a href=&quot;https://www.3dprinteros.com/&quot;&gt;3DPrinterOS&lt;/a&gt;, a VC-backed startup where we created the first cloud-based 3D printing operating system and various 3D printing management solutions.&lt;/p&gt;
&lt;p&gt;I wore multiple hats to help take our vision of a unified cloud-based 3D printer operating system from 0-1.&lt;/p&gt;
&lt;h2&gt;Problem&lt;/h2&gt;
&lt;p&gt;In 2014, 3D printing was one of the hottest markets for venture capital dollars and media coverage. I joined the brilliant team at &lt;a href=&quot;https://secured3d.com/&quot;&gt;Secured3D&lt;/a&gt; to initially build encryption for the secure cloud transfer of 3D printing files (known as &amp;quot;gcodes&amp;quot;) from computers to machines.&lt;/p&gt;
&lt;p&gt;We realized pretty quickly that while the encryption problem was real, the much bigger opportunity to solve it was to lower the barriers of entry into 3D printing so new users could embrace this disruptive technology. From this finding, 3DPrinterOS was born.&lt;/p&gt;
&lt;p&gt;We hypothesized that we could increase machine adoption and utilization by building a cloud-powered operating system that works across multiple types of 3D printers, analogous to how Microsoft Windows works across PCs from Lenovo, HP, and Dell. Thus, an end user would only have to learn a single workflow to prepare files and print objects across multiple brands of 3D printers.&lt;/p&gt;
&lt;h2&gt;Approach:&lt;/h2&gt;
&lt;p&gt;I set out to understand the current state of 3D printing by researching the market and testing out software from 20+ printer manufacturers. We filmed &lt;a href=&quot;https://youtu.be/heW6NwcjE48&quot;&gt;unboxing videos&lt;/a&gt; for many of the printer tests, to establish ourselves as thought leaders in the space and as inbound SEO for users searching for how to use specific machines.&lt;/p&gt;
&lt;p&gt;I also conducted on-site user interviews with Fortune 500 companies, such as Ford, John Deere, and Lockheed Martin, to understand how they used 3D printing and what pain points existed within their current workflow.&lt;/p&gt;
&lt;p&gt;This work validated our hypothesis and built relationships that led to our first customers. The research gained shaped the MVP requirements, feature backlog, and user stories. With the MVP scoped out, I spent two months in Estonia with the team, driving towards a beta release.&lt;/p&gt;
&lt;p&gt;During this process, I built wireframes (example below) and prototypes to test the onboarding process with prospective users and used the knowledge gained to create in-app messaging, tutorials, and walkthroughs to improve the onboarding process.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://aaronroy.com/images/how-we-brought-3dprinteros-to-life-1759632215990.png&quot; alt=&quot;Aaron Roy - Wireframes&quot;&gt;&lt;/p&gt;
&lt;p&gt;Wireframe example&lt;/p&gt;
&lt;p&gt;We launched a free beta version of the product in March 2015, and all focus shifted to feedback gathering, &lt;a href=&quot;https://aaronroy.com/video-discussing-3d-printing-operating-systems/&quot;&gt;evangelizing the platform&lt;/a&gt;, and improving the feature set. I served as the primary tester of the platform with our beta users and established a &lt;a href=&quot;https://forum.3dprinteros.com/https://forum.3dprinteros.com/t/how-to-set-up-raspberry-pi-wifi-walkthrough/300&quot;&gt;robust forum&lt;/a&gt; for sharing walkthroughs and soliciting community bug reporting.&lt;/p&gt;
&lt;p&gt;I created feedback surveys and incentives (free t-shirts, early access to future new features, 3D printer filament giveaways) for users to test the beta release. I went on-site to multiple companies and educational institutions to give hands-on support and observe how they used the platform. I also used Intercom to communicate in-app with users and deliver A/B tests of email sequences and walkthroughs to improve user engagement and identify leads for potential monetization.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://aaronroy.com/images/how-we-brought-3dprinteros-to-life-1759632216044.png&quot; alt=&quot;Aaron Roy - Using Intercom for walkthroughs&quot;&gt;&lt;/p&gt;
&lt;p&gt;Intercom is terrific for in-app messaging&lt;/p&gt;
&lt;h2&gt;Outcome:&lt;/h2&gt;
&lt;p&gt;Launching a new product is just part of the challenge. What you do once it&amp;#39;s out in the wild determines its survival.&lt;/p&gt;
&lt;p&gt;Analyzing our metrics post-launch, I identified and guided the team to build low development, high-yield monetization levers that led to the first $500,000 in ARR.&lt;/p&gt;
&lt;p&gt;Since its launch in 2014, 3DPrinterOS has produced 4+ million physical parts in 100+ countries. Customers include Bosch, Google, NASA, Microsoft, Yale, Duke, Harvard, and MIT.&lt;/p&gt;
</content:encoded><category>Product Management</category><category>3D Printing</category><category>Projects</category></item><item><title>In appreciation of the internet</title><link>https://aaronroy.com/in-appreciation-of-the-internet/</link><guid isPermaLink="true">https://aaronroy.com/in-appreciation-of-the-internet/</guid><description>Some thoughts early in the Pandemic</description><pubDate>Tue, 17 Mar 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;What a time to be alive!&lt;/p&gt;
&lt;p&gt;We&amp;#39;re in the early stages of a global pandemic with covid-19.&lt;/p&gt;
&lt;p&gt;The stock markets are searching for a bottom amidst skyrocketing infection and death rates.&lt;/p&gt;
&lt;p&gt;And at least here in NYC, we&amp;#39;re doing our best to practice social distancing, which means staying away from physical human contact.&lt;/p&gt;
&lt;p&gt;It&amp;#39;s in these moments I am so grateful for the internet and the infinite world of wonder it provides.&lt;/p&gt;
&lt;p&gt;There will be a new normal after this pandemic subsides and we have a better feel for merely how to exist in a world with covid-19 as an additional threat.&lt;/p&gt;
&lt;p&gt;The stock market will recover once again one day.&lt;/p&gt;
&lt;p&gt;The rebuilding process has started already and will continue gaining strength from the footholds of the digital world.&lt;/p&gt;
&lt;p&gt;Stay safe friends!&lt;/p&gt;
</content:encoded><category>Life</category></item><item><title>Wami is the featured product for TPG!</title><link>https://aaronroy.com/wami-is-the-featured-product-for-tpg/</link><guid isPermaLink="true">https://aaronroy.com/wami-is-the-featured-product-for-tpg/</guid><description>Speaking about our startup, Wami, at the Product Group NYC</description><pubDate>Sat, 04 Jan 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;https://aaronroy.com/images/wami-is-the-featured-product-for-tpg-1759632215298.jpeg&quot; alt=&quot;Aaron Roy - Product Manager&quot;&gt; It was an absolute blast serving as the &lt;a href=&quot;https://www.meetup.com/TheProductGroup/events/262224867/&quot;&gt;featured product of the month&lt;/a&gt; for the Product Group here in New York. We had the chance to talk through our lessons learned while bootstrapping &lt;a href=&quot;https://wami.io&quot;&gt;Wami&lt;/a&gt;, and how vital failure (and learning) is as part of the product cycle. This 20,000 members strong group is an incredible resource of knowledge, expertise, and support for current and aspiring product managers in the NYC area. I highly recommend attending one of their &lt;a href=&quot;https://www.meetup.com/TheProductGroup&quot;&gt;meetups&lt;/a&gt;.&lt;/p&gt;
</content:encoded><category>Startups</category></item><item><title>Why startups should focus on staying alive</title><link>https://aaronroy.com/why-startups-should-focus-on-staying-alive/</link><guid isPermaLink="true">https://aaronroy.com/why-startups-should-focus-on-staying-alive/</guid><description>The first order of business for a business is survive.</description><pubDate>Thu, 17 Oct 2019 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;For the first few years of any company’s existence, people are naturally skeptical of its ability to endure. Especially in the B2B space, Enterprise and SMBs have no desire to purchase from a young company that may fold up shop as soon as the ink dries on the contract. The stakes of this skepticism are even higher for bootstrapped companies that lack the helpful TechCrunch or VentureBeat articles which highlight their latest funding round to aid in credibility. &lt;/p&gt;
&lt;p&gt;It&amp;#39;s been my experience that, provided you create something of value for customers, after a certain threshold of time and energy, your endeavor starts to gain legitimacy on its own to the outside world by the sheer force of its continued existence. After a certain amount of time investing energy and passion into a startup, something wonderful happens. The skepticism begins to fade. &lt;/p&gt;
&lt;p&gt;The exact amount of time and energy varies between products and founding teams (as some &amp;quot;products&amp;quot; shouldn&amp;#39;t exist in the first place) but the company starts to make leaps organically. Potential customers begin to trust you can deliver what you promise slightly sooner. You notice sales cycles begin to speed up. No one moment is the precise cause, instead, it&amp;#39;s a sum of the total input from the organization. These moments inspire the team to keep going, and often open additional doors for the growing company. For new products, the sum of these moments often manifests as &amp;quot;finding product-market fit.&amp;quot; &lt;/p&gt;
&lt;p&gt;In the early days of &lt;a href=&quot;https://3dprinteros.com/&quot;&gt;3DPrinterOS&lt;/a&gt;, these leaps of credibility made all the difference. While our competitors would throw spaghetti against the wall hoping something would stick, we focused on delivering an awesome product for schools and gained momentum one school at a time. This focus and passion to survive led to 3DPrinterOS making it through the 3D printing crash of 2012, and to this day they are still adding schools and establishing further credibility. &lt;/p&gt;
&lt;p&gt;At &lt;a href=&quot;https://wami.io&quot;&gt;Wami&lt;/a&gt;, we&amp;#39;ve seen these moments manifest in a variety of ways. It&amp;#39;s the customer who lets us know they felt comfortable purchasing our handwritten notes after researching us online. It&amp;#39;s also the initial case studies from our first customers showing that our handwritten notes did indeed make a significant impact on customer retention. None of these moments happen if you fold up shop during the early difficult times. &lt;/p&gt;
&lt;p&gt;The longer your company can exist and compete in your respective market, the better chance at finding a positive outcome. It seems like common sense, yet we see other companies burn cash way ahead of their revenue pursuing growth in unhealthy and unsustainable ways. Don&amp;#39;t be those companies. Stay alive.&lt;/p&gt;
</content:encoded><category>Startups</category></item><item><title>Researching student loan products</title><link>https://aaronroy.com/researching-student-loan-products/</link><guid isPermaLink="true">https://aaronroy.com/researching-student-loan-products/</guid><description>Looking for folks to fill out this survey on student loan pain points.</description><pubDate>Wed, 31 Jul 2019 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;July 2019&lt;/p&gt;
&lt;p&gt;We all know student loans suck but are you familiar with how much they actually impact our society?&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Student loan debt is now the second-highest consumer debt category – behind only mortgage debt – and higher than both credit cards and auto loans.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;I’m working with some friends who are set out to help solve this crisis.&lt;/p&gt;
&lt;p&gt;Check out this super quick survey to be part of the student debt solution: &lt;a href=&quot;http://wehatestudentdebt.com&quot;&gt;wehatestudentdebt.com&lt;/a&gt;&lt;/p&gt;
</content:encoded><category>Student Loans</category></item><item><title>Insights from the first month as a founder</title><link>https://aaronroy.com/insights-from-the-first-month-as-a-founder/</link><guid isPermaLink="true">https://aaronroy.com/insights-from-the-first-month-as-a-founder/</guid><description>As I wrap up my first month of being back in the start-up game, here are 3 insights/reminders that I think may help my fellow founders and early employees.</description><pubDate>Wed, 29 May 2019 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;As I wrap up my first full month of being back full-time in the start-up game at &lt;a href=&quot;https://wami.io&quot;&gt;Wami&lt;/a&gt;, here are 3 insights/reminders that I think may help my fellow founders and early employees:&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;Always remember to ruthlessly prioritize&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;I have a million things I could be doing right now, the most difficult (and most important) thing is figuring out the exact action that will keep me and my team around in 30 days, in 90 days, and in a year. When I was younger, I would often default to attacking the easiest tasks, and count that as being productive even though the larger, more important tasks remained wide open. The big difference today is my team now refocuses our efforts on accomplishing the single most important task, even if that takes multiple days or weeks to complete because ultimately that’s the only way we will survive.&lt;/p&gt;
&lt;p&gt;As a team, we ask ourselves, “if we don’t do this one action, will the other open tasks even matter in 30 days?” For example, although we know we need to spin up our website, it’s more important at this stage for us to focus on generating revenue from potential customers from within our own network. With revenue comes the flexibility to hire incredible freelancers who would do a kickass job on the design with what we’ve budgeted at this early stage.&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;Understand your COGS or they will crush you&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Being that we’re bootstrapping our company, we are hyper-aware of the &lt;a href=&quot;https://www.toptal.com/finance/interim-cfos/unit-economics&quot;&gt;unit economics&lt;/a&gt; of our business model. As producers of an end physical product, we are simply not in a position to lose money on every customer. One of the most important parts of our business is managing and optimizing our cost of goods sold (COGS). Slight changes in materials cost, such as the recent rise in Forever stamp prices from 50 cents to 55 cents in early 2019, can have a monster impact on gross profit for a business sending 50,000+ handwritten notes in a single campaign. It’s our job as a company to understand where potential changes may come from an appropriately anticipate them in our pricing model.&lt;/p&gt;
&lt;p&gt;In my former role at Bond, we threw in stamps as part of the single price customers would pay, sometimes a year in advance,  to reserve our services. While this was great for focusing on pure bookings growth, we were essentially subsidizing the costs of new customer acquisition. This created strain for Bond as rising COGS put strain on gross profit and, without transparency in pricing, all price increases were met with strong resistance by our customers. Ultimately, this was not a sustainable business model and, I believe, was one of the contributing factors to the closure of the company. At Wami, we’ve broken stamps out as it’s own line item, and charge our customers only for what they actually consume. Thus, we are much more protected from potential shifts in our underlying COGS, and able to provide much more pricing transparency to our customers.&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;Embrace the roller coaster&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;“We landed our first few clients and they paid us! Things are awesome!”&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;“The base of our stamp machine broke down and cost us thousands of dollars we had not planned for. Things are not awesome at all.”&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;The highs and lows happen daily, weekly (and often feel hourly), but we know, if we are going to build anything that lasts, we must stay focused on our long-term vision, celebrate the wins as they come, and buckle down during the hardships.&lt;/p&gt;
</content:encoded><category>Startups</category></item><item><title>Some of my favorite products in 2018</title><link>https://aaronroy.com/some-of-my-favorite-products-in-2018/</link><guid isPermaLink="true">https://aaronroy.com/some-of-my-favorite-products-in-2018/</guid><description>My favorite products of 2018 </description><pubDate>Sun, 16 Dec 2018 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;With 2018 just about to come to a close, what better way to spend a rainy Sunday morning in Brooklyn then to list out a few of my favorite products I used this year. In no particular order…&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;https://bywordapp.com/&quot;&gt;Byword&lt;/a&gt; - This Mac-only app is how I’m typing and publishing these words right now. I’ve been a power Evernote user for years, but have found myself switching to Byword even for basic notetaking (beyond the blogging feature set) just because it’s a cleaner, less distracting experience.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://app.grammarly.com/&quot;&gt;Grammarly&lt;/a&gt; - A game-changer for improving spelling and grammar in emails and other forms of written communication. Better yet - it’s free.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://strava.com/&quot;&gt;Strava&lt;/a&gt; - This is my social media. It’s the best parts of Facebook (the sharing and community) for cyclists (and other athletes). I’ve upped my riding miles per year significantly since joining the app and been able to stay in touch with folks I’ve meet all over the world. If you are on it, add &lt;a href=&quot;https://www.strava.com/athletes/9934567&quot;&gt;me&lt;/a&gt;!&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.arlo.com/en-us/products/arlo-pro/default.aspx&quot;&gt;Arlo Pro&lt;/a&gt; - I had one of my bikes stolen earlier this year, this motion detecting security camera has given me peace of mind in the days that followed.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://lastpass.com&quot;&gt;Lastpass&lt;/a&gt; - Since I switched to a password manager, I cannot imagine going back to life without it. I use it for both personal and business use now.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://getdivvy.com/&quot;&gt;Divvy&lt;/a&gt; - Super simplified business expense management. We switched Bond over to it from the traditional put everything on Amex and sort it out later approach and it’s been a game changer in terms of managing and tracking spending. Being able to create account specific burner cards is awesome and cuts out having to track down whose email is tied to each specific account.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.qapital.com/&quot;&gt;Qapital&lt;/a&gt; - helped me save money as I prepared for my wedding this year. This app made it easy to create saving rules that can be applied to various banking / credit accounts. Transferring money back to your bank account is painless as well.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.mint.com/&quot;&gt;Mint&lt;/a&gt; - This is how I manage my personal finances. This platform helps keeps me sane as I juggle student loans, credit cards, investments, and sources of income.&lt;/li&gt;
&lt;/ol&gt;
</content:encoded><category>Product Management</category></item><item><title>How we introduced a little process into our startup</title><link>https://aaronroy.com/how-we-introduced-a-little-process-into-our-startup/</link><guid isPermaLink="true">https://aaronroy.com/how-we-introduced-a-little-process-into-our-startup/</guid><description>Sometimes you need to add a bit of process to keep the teams rowing in the right direction.</description><pubDate>Sat, 17 Nov 2018 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;While I love startup style -- build what needs to be done, cross items off a whiteboard or spreadsheet software development -- there comes a time in every company&amp;#39;s lifespan when it needs to introduce just a bit more process to keep the boats all rowing in the same direction. &lt;/p&gt;
&lt;p&gt;During my time at Bond (RIP &lt;a href=&quot;https://www.crunchbase.com/acquisition/newell-rubbermaid-acquires-bond--55ed3d58&quot;&gt;post-Newell Acquisition&lt;/a&gt;), we were in that transitional phase from pure startup to implementing some light processes. &lt;/p&gt;
&lt;p&gt;Below is a presentation I used to outline the terminology and approach for our product managers, designers, and developers to share while building products. We heavily emphasized the importance of having a shared language between cross-functional teams.&lt;/p&gt;
&lt;p&gt;Using this process alongside rolling out &lt;a href=&quot;https://www.atlassian.com/software/jira&quot;&gt;Jira&lt;/a&gt; and &lt;a href=&quot;https://www.atlassian.com/software/confluence&quot;&gt;Confluence&lt;/a&gt; to manage our software development lifecycle and documentation, gave us a good foundation to start having multiple product team workstreams.&lt;/p&gt;
&lt;p&gt;I can&amp;#39;t stress enough how important it is to figure out the minimal viable process necessary with an early-stage company whenever possible, so while this presentation and approach worked for Bond, each company and team needs to figure out what helps them move quickly as a team. &lt;/p&gt;
&lt;p&gt;I think parts of this presentation could be helpful for tech folks already with product &amp;lt;&amp;gt; market fit, and now figuring out how to add on multiple workstreams and product teams.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;//www.slideshare.net/AaronRoy5/agile-and-scrum-overview-for-pms-designers-and-developers&quot; title=&quot;Agile and Scrum Overview for PMs, Designers and Developers &quot;&gt;Agile and Scrum Overview for PMs, Designers and Developers&lt;/a&gt;&lt;/strong&gt; from &lt;strong&gt;&lt;a href=&quot;https://www.slideshare.net/AaronRoy5&quot;&gt;Aaron Roy&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
</content:encoded><category>Product Management</category></item><item><title>How to manage students, 3D printers, and data at scale</title><link>https://aaronroy.com/how-to-manage-students-3d-printers-and-data-at-scale/</link><guid isPermaLink="true">https://aaronroy.com/how-to-manage-students-3d-printers-and-data-at-scale/</guid><description>Presentation on how educators and engineers could manage students, 3D printers and data at scale.</description><pubDate>Sat, 13 Oct 2018 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;https://aaronroy.com/images/how-to-manage-students-3d-printers-and-data-at-scale-1759632215379.jpeg&quot; alt=&quot;Aaron Roy - Speaking at Construct3D&quot;&gt;&lt;/p&gt;
&lt;p&gt;I had the chance to give a talk on &amp;quot;&lt;a href=&quot;https://construct3d2018.sched.com/event/FVg3/how-to-manage-students-3d-printers-and-data-at-scale&quot;&gt;How to manage students, 3D printers and data at scale&lt;/a&gt;,&amp;quot; at the Construct3D conference at Georgia Tech University.&lt;/p&gt;
&lt;p&gt;Focusing on examples from my &lt;a href=&quot;https://3dprinteros.com&quot;&gt;3DPrinterOS&lt;/a&gt; work with other top universities, I discussed how educators and engineers could collect and report program data, integrate machines seamlessly into existing IT infrastructure, and maximize access to limited printer resources.&lt;/p&gt;
&lt;p&gt;My presentation slides are available below if you would like to learn more.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;//www.slideshare.net/AaronRoy5/how-to-manage-students-3d-printers-and-data-at-scale&quot; title=&quot;How to manage students, 3D printers and data at scale&quot;&gt;How to manage students, 3D printers and data at scale&lt;/a&gt;&lt;/strong&gt; from &lt;strong&gt;&lt;a href=&quot;https://www.slideshare.net/AaronRoy5&quot;&gt;Aaron Roy&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
</content:encoded><category>Presentations</category><category>3D Printing</category></item><item><title>3D Printing and Guns</title><link>https://aaronroy.com/3d-printing-and-guns/</link><guid isPermaLink="true">https://aaronroy.com/3d-printing-and-guns/</guid><description>A few thoughts on 3D Printed guns, now that Defense Distributed is on the precipice of being able to distribute gun designs.</description><pubDate>Sat, 01 Sep 2018 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;A few quick thoughts on 3D Printed (3DP) guns, now that Defense Distributed is on the precipice of being able to distribute gun designs on their site, although as of August 1, 2018, they were halted from &lt;a href=&quot;https://www.washingtonpost.com/news/morning-mix/wp/2018/07/31/in-last-minute-lawsuit-states-say-3-d-printable-guns-pose-national-security-threat/?utm_term=.d14dbf958997&amp;noredirect=on&quot;&gt;distribution by a temporary restraining order&lt;/a&gt; from a federal judge.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;These files have been available for at least a few years and despite their availability, very few users have actually been able to successfully print and shoot a 3DP gun. To be specific, these files allow users to print the receivers for guns, not a ready-to-fire weapon. They still require further resources to be used as weapons. &lt;a href=&quot;https://www.popularmechanics.com/military/weapons/a22604405/3d-printed-guns/&quot;&gt;Here&lt;/a&gt; is a great explanation of what those files actually enable.&lt;/li&gt;
&lt;li&gt;The machines needed to print these gun designs are prohibitively expensive, thus it’s still much cheaper to purchase an actual gun at a pawn shop or some other reseller. For reference, one manufacturer of machines that can handle these files, &lt;a href=&quot;https://markforged.com/&quot;&gt;MarkForged&lt;/a&gt;, has a starting price point of $3500+.&lt;/li&gt;
&lt;li&gt;Lower grade materials on cheaper machines (PLA) don’t have the strength needed for repeated firing (or firing at all), and so the average person would be more likely to blow off their hand than wound a target.&lt;/li&gt;
&lt;li&gt;To print a 3DP gun still requires a level of technical expertise (because there is no way service bureaus are going to start printing them). A user would need to download the gun file, prepare it for printing for a specific machine (G-codes, the end file of 3d printing, are not machine agnostic), properly slice the file with the right material settings, print it successfully (which would take hours even on today’s million-dollar machines), clean it, and then assemble with gunpowder, firing pins and ammo. Even if a user was able to skip the first few steps and just download a pre-tested G-code for a specific machine ready to print, they would be stuck with certain materials, machines, and parameters as G-codes are not universal keys across printers.&lt;/li&gt;
&lt;li&gt;3DP companies, like 3DPrinterOS, are uniquely positioned to help concerned schools, enterprises and original equipment manufacturers (OEM’s) in preventing (or managing) the output of prints over their network. Prints &lt;a href=&quot;https://www.3dprinteros.com/for-schools-and-universities/&quot;&gt;can be queued up for approval prior to printing&lt;/a&gt; thus allowing platform administrators to review and catch dangerous files of all types before they ever make it to machines.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Overall, 3D printing has many advantages over traditional subtractive manufacturing techniques but there is no way the manufacturing of guns is one of them. You can legislate and delete the files all you want but at the end of the day, these gun files have already been circulated on the internet and will continue to circulate faster than a legislative body or centralized security operation could possibly monitor. I have high hopes that 3DP companies will continue to innovate and roll out the appropriate safeguards needed to mitigate any potential negative outcomes.&lt;/p&gt;
</content:encoded><category>3D Printing</category></item><item><title>Podcast: How retailers are connecting with customers today</title><link>https://aaronroy.com/podcast-how-retailers-are-connecting-with-customers-today/</link><guid isPermaLink="true">https://aaronroy.com/podcast-how-retailers-are-connecting-with-customers-today/</guid><description>Joining the Retail Focus podcast to discuss how handwritten notes stand out from the digital noise</description><pubDate>Tue, 31 Jul 2018 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;It was a pleasure chatting with the &lt;a href=&quot;http://www.retailfocuspodcast.com/podcasts/2018/7/14/retail-focus-71318-walmart-tests-c-store-waters-connecting-with-customers-in-a-new-old-way&quot;&gt;Retail Focus podcast&lt;/a&gt; on how brands are turning to old-fashioned methods such as handwritten notes to stand out from the typical email bombardment customers see today.&lt;/p&gt;
</content:encoded><category>Presentations</category></item><item><title>Check out &quot;The 3D Printing Revolution&quot; on Coursera</title><link>https://aaronroy.com/3d-printing-revolution-on-coursera/</link><guid isPermaLink="true">https://aaronroy.com/3d-printing-revolution-on-coursera/</guid><description>Check out &quot;The 3D Printing Revolution&quot; course I contributed to on Coursera!</description><pubDate>Fri, 04 May 2018 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;https://aaronroy.com/images/3d-printing-revolution-on-coursera-1759632215056.png&quot; alt=&quot;Aaron Roy - 3D Printing&quot;&gt;&lt;/p&gt;
&lt;p&gt;It was an honor to be part of the &amp;quot;&lt;a href=&quot;https://www.coursera.org/learn/3d-printing-revolution&quot;&gt;3D Printing Revolution&lt;/a&gt;&amp;quot; Coursera created by the University of Illinois at Urbana-Champaign. This course was listed in the top 50 MOOC&amp;#39;s of all time by &lt;a href=&quot;https://www.class-central.com/report/top-moocs/&quot;&gt;Class-Central&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I taught the section on the &amp;quot;&lt;a href=&quot;https://www.coursera.org/lecture/3d-printing-revolution/3d-printing-ecosystem-aaron-roy-2zjzy&quot;&gt;3D Printing Ecosystem.&lt;/a&gt;&amp;quot;  This section covers the current state of additive manufacturing, its growth potential, and obstacles to overcome in the years ahead. &lt;/p&gt;
&lt;p&gt;This course demonstrates how 3D printers work, shows the various use cases, and examines the 3D printing ecosystem overall. It also explored the future of 3D printing and discuss how this technology will revolutionize our world. &lt;/p&gt;
&lt;p&gt;The goal for this course was for learners to have a solid understanding of 3D printing and its revolutionary potential and be able to print and customize 3D designs upon completion. &lt;/p&gt;
&lt;p&gt;Considering that this course is free, I highly encourage you to &lt;a href=&quot;https://www.coursera.org/learn/3d-printing-revolution&quot;&gt;check it out&lt;/a&gt;!&lt;/p&gt;
</content:encoded><category>Presentations</category><category>3D Printing</category></item><item><title>Getting buy-in for your product vision</title><link>https://aaronroy.com/getting-buy-in-for-your-product-vision/</link><guid isPermaLink="true">https://aaronroy.com/getting-buy-in-for-your-product-vision/</guid><description>Example presentation used for getting buy-in for product vision and direction with cross-functional team members and leadership.</description><pubDate>Sat, 06 Jan 2018 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;We faced an existential crisis at Bond to figure out how to become profitable once Newell Brands acquired us. We knew we had to pivot from 1x1 handwritten notes into something more scalable and with better margins. &lt;/p&gt;
&lt;p&gt;Hence, this example presentation below pitches an evolution of how our target customers (marketing teams) at the time could grow from using the existing 1x1 product into using a new web application to self-service send notes at scale. &lt;/p&gt;
&lt;p&gt;I&amp;#39;m a big fan of framing up the customer&amp;#39;s &lt;a href=&quot;https://www.intercom.com/resources/books/intercom-jobs-to-be-done&quot;&gt;job&amp;#39;s to be done&lt;/a&gt; along the user journey.&lt;/p&gt;
&lt;p&gt;The presentation outlines the jobs to be done at each stage of the user journey, supporting data, high-level revenue projections, G2M plans, and a scrappy timeline (co-signed with engineering) to get a useable product into the world. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;//www.slideshare.net/AaronRoy5/product-launch-plan-233306387&quot; title=&quot;Product Launch Plan Presentation&quot;&gt;Product Launch Plan Presentation&lt;/a&gt;&lt;/strong&gt; from &lt;strong&gt;&lt;a href=&quot;https://www.slideshare.net/AaronRoy5&quot;&gt;Aaron Roy&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
</content:encoded><category>Product Management</category></item><item><title>Example onboarding tutorial for increasing user activation</title><link>https://aaronroy.com/user-activation-onboarding-tutorial-example/</link><guid isPermaLink="true">https://aaronroy.com/user-activation-onboarding-tutorial-example/</guid><description>Example onboarding tutorial video I created at 3DPrinterOS to help activate free signups into active users.</description><pubDate>Wed, 04 May 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;One of the biggest challenges we faced in the early days of &lt;a href=&quot;https://3dprinteros.com&quot;&gt;3DPrinterOS&lt;/a&gt; was turning new user signups into active users. We noticed pretty early into our launch that users would signup for our free account tier and then go dark before adding their first 3d printer or some other high-value action in the system. &lt;/p&gt;
&lt;p&gt;I made the walkthrough video below as part of the 3DPrinterOS onboarding experience, to be sent in-app and email via &lt;a href=&quot;https://www.intercom.com/&quot;&gt;Intercom&lt;/a&gt;, to help new users understand the different features and set up their first 3d printer for use with the operating system.&lt;/p&gt;
&lt;div class=&quot;aspect-video max-w-2xl mx-auto&quot;&gt;
  &lt;p&gt;&lt;strong&gt;📺 Watch on YouTube:&lt;/strong&gt; &lt;a href=&quot;https://www.youtube.com/watch?v=CTgD52Cbits&quot;&gt;https://www.youtube.com/watch?v=CTgD52Cbits&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;</content:encoded><category>Tutorials</category><category>Product Management</category></item><item><title>3D Printing 101</title><link>https://aaronroy.com/3d-printing-101-class/</link><guid isPermaLink="true">https://aaronroy.com/3d-printing-101-class/</guid><description>Recording from 3D Printing 101 - &quot;Intro to 3D Printing&quot; class I taught in 2015.</description><pubDate>Sat, 05 Sep 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;em&gt;&lt;strong&gt;&amp;quot;What would you make if you had a machine that could make almost anything?&amp;quot;&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;This question was how I started many of the &amp;quot;3D Printing 101&amp;quot; classes I held during my time at &lt;a href=&quot;https://www.3dprinteros.com/&quot;&gt;3DPrinterOS&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;These intro level classes were an introduction to the basics of 3D printing, an overview of the different types of processes involved, and the hardware and software that made this technology possible.&lt;/p&gt;
&lt;p&gt;These classes were an essential part of my goal to evangelize 3D printing, and have 3DPrinterOS be the first touchpoint for users just entering the field.&lt;/p&gt;
&lt;p&gt;I would often hold these classes &lt;a href=&quot;https://www.youtube.com/watch?v=kP4iJA4nWu0&amp;t=27s&quot;&gt;in person&lt;/a&gt; at the &lt;a href=&quot;https://3dprint.com/43461/ultimaker-3dprinteros/&quot;&gt;Brooklyn Public Library&lt;/a&gt; or collaboratively &lt;a href=&quot;https://www.youtube.com/watch?v=ny0BW80ozxg&quot;&gt;with other 3D Printing companies&lt;/a&gt;, but occasionally, I would take this curriculum online.&lt;/p&gt;
&lt;p&gt;The video below is a recording from one of the online classes.&lt;/p&gt;
&lt;div class=&quot;aspect-video max-w-2xl mx-auto&quot;&gt;
  &lt;p&gt;&lt;strong&gt;📺 Watch on YouTube:&lt;/strong&gt; &lt;a href=&quot;https://www.youtube.com/watch?v=GuxWrMpvtNs&quot;&gt;https://www.youtube.com/watch?v=GuxWrMpvtNs&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;</content:encoded><category>Presentations</category><category>3D Printing</category></item><item><title>Imagining the future of 3D Printing</title><link>https://aaronroy.com/imagining-the-future-of-3d-printing/</link><guid isPermaLink="true">https://aaronroy.com/imagining-the-future-of-3d-printing/</guid><description>Interview from 2015 discussing what the future of 3D Printing could look like and the role of 3D printer operating systems.</description><pubDate>Thu, 25 Jun 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I gave an interview with Disruptive magazine at the 3D Printshow on the current state of 3D printing and my thoughts for the future. Check it out below. &lt;/p&gt;
  &lt;div class=&quot;aspect-video max-w-2xl mx-auto&quot;&gt;
    &lt;p&gt;&lt;strong&gt;📺 Watch on YouTube:&lt;/strong&gt; &lt;a href=&quot;https://www.youtube.com/watch?v=lKraDHpSUHE&quot;&gt;https://www.youtube.com/watch?v=lKraDHpSUHE&lt;/a&gt;&lt;/p&gt;
  &lt;/div&gt;</content:encoded><category>Product Management</category><category>3D Printing</category></item></channel></rss>