<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Hacker News: tomblomfield</title><link>https://news.ycombinator.com/user?id=tomblomfield</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Mon, 06 Apr 2026 03:03:49 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=tomblomfield" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by tomblomfield in "Show HN: Aqua Voice 2 – Fast Voice Input for Mac and Windows"]]></title><description><![CDATA[
<p>I recently started using Aqua and it's great. The team really improved the latency in the last few weeks.</p>
]]></description><pubDate>Wed, 09 Apr 2025 21:30:48 +0000</pubDate><link>https://news.ycombinator.com/item?id=43638229</link><dc:creator>tomblomfield</dc:creator><comments>https://news.ycombinator.com/item?id=43638229</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43638229</guid></item><item><title><![CDATA[New comment by tomblomfield in "Show HN: I vibecoded a 35k LoC recipe app"]]></title><description><![CDATA[
<p>Ok it's mostly back online!</p>
]]></description><pubDate>Wed, 02 Apr 2025 02:47:28 +0000</pubDate><link>https://news.ycombinator.com/item?id=43553254</link><dc:creator>tomblomfield</dc:creator><comments>https://news.ycombinator.com/item?id=43553254</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43553254</guid></item><item><title><![CDATA[New comment by tomblomfield in "Show HN: I vibecoded a 35k LoC recipe app"]]></title><description><![CDATA[
<p>Since I wrote the blog post, I actually added automated tests which Windsurf / Claude Code runs before committing any change. It saved me a lot of headaches when the LLM decided to make random logic changes for no reason.</p>
]]></description><pubDate>Wed, 02 Apr 2025 02:39:23 +0000</pubDate><link>https://news.ycombinator.com/item?id=43553226</link><dc:creator>tomblomfield</dc:creator><comments>https://news.ycombinator.com/item?id=43553226</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43553226</guid></item><item><title><![CDATA[New comment by tomblomfield in "Show HN: I vibecoded a 35k LoC recipe app"]]></title><description><![CDATA[
<p>I'm scaling the heroku database right now, which caused a little bit of downtime :-/</p>
]]></description><pubDate>Wed, 02 Apr 2025 02:35:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=43553211</link><dc:creator>tomblomfield</dc:creator><comments>https://news.ycombinator.com/item?id=43553211</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43553211</guid></item><item><title><![CDATA[New comment by tomblomfield in "Show HN: I vibecoded a 35k LoC recipe app"]]></title><description><![CDATA[
<p>Hmm it seems like recipe generation might be broken on Firefox. I'll look into it - thanks! It's working in Chrome<p>Search is working fine, I just tried <a href="https://www.recipeninja.ai/search?name=lasagne" rel="nofollow">https://www.recipeninja.ai/search?name=lasagne</a></p>
]]></description><pubDate>Wed, 02 Apr 2025 02:26:13 +0000</pubDate><link>https://news.ycombinator.com/item?id=43553160</link><dc:creator>tomblomfield</dc:creator><comments>https://news.ycombinator.com/item?id=43553160</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43553160</guid></item><item><title><![CDATA[New comment by tomblomfield in "Show HN: I vibecoded a 35k LoC recipe app"]]></title><description><![CDATA[
<p>Weird - sorry to hear that. It's working fine for me.<p>I get this search result <a href="https://www.recipeninja.ai/search?name=Anti-inflammatory" rel="nofollow">https://www.recipeninja.ai/search?name=Anti-inflammatory</a><p>What browser are you using? Voice mode or typing?</p>
]]></description><pubDate>Wed, 02 Apr 2025 02:23:55 +0000</pubDate><link>https://news.ycombinator.com/item?id=43553150</link><dc:creator>tomblomfield</dc:creator><comments>https://news.ycombinator.com/item?id=43553150</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43553150</guid></item><item><title><![CDATA[New comment by tomblomfield in "Show HN: I vibecoded a 35k LoC recipe app"]]></title><description><![CDATA[
<p>Hands-free voice control and being able to access recipe ingredients and steps without 5 pages of SEO-optimised prose.</p>
]]></description><pubDate>Wed, 02 Apr 2025 02:23:15 +0000</pubDate><link>https://news.ycombinator.com/item?id=43553146</link><dc:creator>tomblomfield</dc:creator><comments>https://news.ycombinator.com/item?id=43553146</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43553146</guid></item><item><title><![CDATA[New comment by tomblomfield in "Show HN: I vibecoded a 35k LoC recipe app"]]></title><description><![CDATA[
<p>Afraid I have a day job, so I will politely decline your kind invitation</p>
]]></description><pubDate>Wed, 02 Apr 2025 02:21:22 +0000</pubDate><link>https://news.ycombinator.com/item?id=43553136</link><dc:creator>tomblomfield</dc:creator><comments>https://news.ycombinator.com/item?id=43553136</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43553136</guid></item><item><title><![CDATA[New comment by tomblomfield in "Show HN: I vibecoded a 35k LoC recipe app"]]></title><description><![CDATA[
<p>Basically you declare to the AI which functions (tools) are available for it to call: <a href="https://platform.openai.com/docs/guides/function-calling?api-mode=responses" rel="nofollow">https://platform.openai.com/docs/guides/function-calling?api...</a><p>Then you handle those function calls in your javascript.<p>```
    if (function_name === 'search_recipes') {
      const searchParams = new URLSearchParams();<p><pre><code>      if (args.name) searchParams.set('name', args.name);
      if (args.difficulty) searchParams.set('difficulty', formatDifficulty(args.difficulty));
      if (args.min_duration) searchParams.set('minDuration', args.min_duration.toString());
      if (args.max_duration) searchParams.set('maxDuration', args.max_duration.toString());
      if (args.tag) searchParams.set('tag', args.tag);
      
      // Handle ingredients array correctly - the search page expects ingredients[]
      if (args.ingredients && args.ingredients.length > 0) {
        // Clear any existing ingredients
        searchParams.delete('ingredients[]');
        
        // Add each ingredient individually with the correct array notation
        args.ingredients.forEach((ingredient: string) => {
          searchParams.append('ingredients[]', ingredient);
        });
      }
      
      const queryString = searchParams.toString();
      const url = queryString ? `/search?${queryString}` : '/search';
      
      navigate(url);
      return;
    }
    
    // start_cooking function
    if (function_name === 'start_cooking') {
      // First check if we have an onStartCooking callback registered
      if (callbacksRef.current.onStartCooking) {
        callbacksRef.current.onStartCooking();
        return;
      }
    }</code></pre>
```</p>
]]></description><pubDate>Wed, 02 Apr 2025 02:19:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=43553130</link><dc:creator>tomblomfield</dc:creator><comments>https://news.ycombinator.com/item?id=43553130</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43553130</guid></item><item><title><![CDATA[Show HN: I vibecoded a 35k LoC recipe app]]></title><description><![CDATA[
<p>Over the last 2-3 weeks, I vibecoded the recipe app that I always wished existed - recipeninja.ai . It now includes a fully interactive voice assistant so you don't need to get your dirty hands over your new iPad when you're cooking.<p>Background: I’m a startup founder turned investor. I taught myself (bad) PHP in 2000, and picked up Ruby on Rails in 2011. I’d guess 2015 was the last time I wrote a line of Ruby professionally. Last month, I decided to use Windsurf to build a Rails 8 API backend and React front-end app, using OpenAI's realtime API for voice-to-voice responses. Over the last few days, I also used Claude Code and Gemini 2.5 Pro for some of the trickier features. 35,000 LoC later, this is what I built!<p>The site uses function-calling to navigate the site in realtime as you chat with the voice assistant, which I think is pretty neat.<p>For the long version, see <a href="https://tomblomfield.com/post/778601470234918912/vibecoding-a-production-app" rel="nofollow">https://tomblomfield.com/post/778601470234918912/vibecoding-...</a><p>I'd love any feedback you have!<p>Demo video of the voice assistant: <a href="https://www.youtube.com/watch?v=kRhVc9D5kcg" rel="nofollow">https://www.youtube.com/watch?v=kRhVc9D5kcg</a><p>Generate and edit new recipes: <a href="https://www.youtube.com/watch?v=VwwZF6dHcHg" rel="nofollow">https://www.youtube.com/watch?v=VwwZF6dHcHg</a></p>
<hr>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=43553031">https://news.ycombinator.com/item?id=43553031</a></p>
<p>Points: 126</p>
<p># Comments: 242</p>
]]></description><pubDate>Wed, 02 Apr 2025 01:57:13 +0000</pubDate><link>https://www.recipeninja.ai</link><dc:creator>tomblomfield</dc:creator><comments>https://news.ycombinator.com/item?id=43553031</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43553031</guid></item><item><title><![CDATA[New comment by tomblomfield in "All the data can be yours: reverse engineering APIs"]]></title><description><![CDATA[
<p>W</p>
]]></description><pubDate>Tue, 12 Nov 2024 01:10:21 +0000</pubDate><link>https://news.ycombinator.com/item?id=42111952</link><dc:creator>tomblomfield</dc:creator><comments>https://news.ycombinator.com/item?id=42111952</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42111952</guid></item><item><title><![CDATA[New comment by tomblomfield in "Waymo to begin testing on San Francisco freeways this week"]]></title><description><![CDATA[
<p>Yeah I think you have to change the traffic laws for that to happen.<p>AFAIK, they strictly follow the speed limit, which feels too slow when everyone else is speeding.</p>
]]></description><pubDate>Tue, 13 Aug 2024 01:52:51 +0000</pubDate><link>https://news.ycombinator.com/item?id=41231393</link><dc:creator>tomblomfield</dc:creator><comments>https://news.ycombinator.com/item?id=41231393</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41231393</guid></item><item><title><![CDATA[New comment by tomblomfield in "Waymo to begin testing on San Francisco freeways this week"]]></title><description><![CDATA[
<p>My Ubers often smell very strongly of the food the driver has been eating.<p>The driver is often on a call for the entire journey, which is annoying.<p>It’s often much colder or warmer than I’d ideally like.<p>An extreme case, but I once had a driver stop a ride, jump out of the car and pull the driver out of the car in front. They proceeded to have a fist fight. The other guy had honked at him for blocking the road or something.<p>I’d much prefer a computer to drive me around.</p>
]]></description><pubDate>Tue, 13 Aug 2024 01:50:17 +0000</pubDate><link>https://news.ycombinator.com/item?id=41231380</link><dc:creator>tomblomfield</dc:creator><comments>https://news.ycombinator.com/item?id=41231380</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41231380</guid></item><item><title><![CDATA[New comment by tomblomfield in "Waymo to begin testing on San Francisco freeways this week"]]></title><description><![CDATA[
<p>I’m a big Waymo fan. Some of my thoughts;<p>Waymos are one of the first things that my visitors to SF want to try. It feels like living in a science-fiction future.<p>The ride and navigation feels very smooth - after the novelty of having no driver in the front seat wears off, you become accustomed to the experience surprisingly quickly. In comparison, I found the Cruise driving experience pretty uncomfortable and stress-inducing.<p>The app and software inside the vehicle is really well-designed. Which is unusual for a google consumer product!<p>And my female friends, in particular, far prefer Waymo to Uber or Lyft because they don’t have to engage with a creepy driver trying to hit on them.<p>I, for one, welcome our new self-driving overlords.</p>
]]></description><pubDate>Tue, 13 Aug 2024 01:44:17 +0000</pubDate><link>https://news.ycombinator.com/item?id=41231359</link><dc:creator>tomblomfield</dc:creator><comments>https://news.ycombinator.com/item?id=41231359</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41231359</guid></item><item><title><![CDATA[New comment by tomblomfield in "Ask HN: What are examples of companies dying due to many people quitting?"]]></title><description><![CDATA[
<p>Famously, the Traitorous Eight left Shockley to found Fairchild Semiconductor. This was essentially the origin story of Silicon Valley.<p><a href="https://en.wikipedia.org/wiki/Traitorous_eight" rel="nofollow">https://en.wikipedia.org/wiki/Traitorous_eight</a><p><a href="https://www.amazon.co.uk/Power-Law-Venture-Capital-Disruption/dp/0241356520/" rel="nofollow">https://www.amazon.co.uk/Power-Law-Venture-Capital-Disruptio...</a></p>
]]></description><pubDate>Wed, 14 Sep 2022 01:49:18 +0000</pubDate><link>https://news.ycombinator.com/item?id=32832370</link><dc:creator>tomblomfield</dc:creator><comments>https://news.ycombinator.com/item?id=32832370</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=32832370</guid></item><item><title><![CDATA[New comment by tomblomfield in "Tell HN: HN London Meetup"]]></title><description><![CDATA[
<p>Captured for posterity! <a href="https://vimeo.com/201364257" rel="nofollow">https://vimeo.com/201364257</a></p>
]]></description><pubDate>Wed, 31 Aug 2022 17:21:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=32665431</link><dc:creator>tomblomfield</dc:creator><comments>https://news.ycombinator.com/item?id=32665431</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=32665431</guid></item><item><title><![CDATA[New comment by tomblomfield in "Tell HN: There needs to be a “right to speak with a human”"]]></title><description><![CDATA[
<p>You should direct your custom towards companies with high-touch human customer service. And you should expect to pay substantially more.</p>
]]></description><pubDate>Thu, 24 Mar 2022 14:18:32 +0000</pubDate><link>https://news.ycombinator.com/item?id=30790111</link><dc:creator>tomblomfield</dc:creator><comments>https://news.ycombinator.com/item?id=30790111</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=30790111</guid></item><item><title><![CDATA[Incident.io raises $4.7m to help teams communicate during outages]]></title><description><![CDATA[
<p>Article URL: <a href="https://incident.io/blog/weve-raised-from-index-point-nine-and-angels/">https://incident.io/blog/weve-raised-from-index-point-nine-and-angels/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=28704810">https://news.ycombinator.com/item?id=28704810</a></p>
<p>Points: 4</p>
<p># Comments: 4</p>
]]></description><pubDate>Thu, 30 Sep 2021 10:29:24 +0000</pubDate><link>https://incident.io/blog/weve-raised-from-index-point-nine-and-angels/</link><dc:creator>tomblomfield</dc:creator><comments>https://news.ycombinator.com/item?id=28704810</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=28704810</guid></item><item><title><![CDATA[New comment by tomblomfield in "How to Raise Investment"]]></title><description><![CDATA[
<p>I have made 43 angel investments in the last 6 months, 90% at seed and pre-seed. 75% in the UK.<p>The lowest valuation I've paid was £3m, and this happened exactly once.<p>My mean valuation for seed is around £8-10m.<p>It tops out at around £20m.<p>Perhaps my sample is skewed. Not many of the companies I'm investing in use SeedLegals. Investors often insist they use actual lawyers.</p>
]]></description><pubDate>Tue, 14 Sep 2021 08:38:37 +0000</pubDate><link>https://news.ycombinator.com/item?id=28521922</link><dc:creator>tomblomfield</dc:creator><comments>https://news.ycombinator.com/item?id=28521922</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=28521922</guid></item><item><title><![CDATA[New comment by tomblomfield in "How to Raise Investment"]]></title><description><![CDATA[
<p>The downside in the extreme is that the original investor pulls the termsheet and you end up empty handed. I know of cases of this happening, but it's rare.<p>More commonly, you develop a bad reputation in the VC community, which is very close-knit. Next time you come to raise money, this can hurt.</p>
]]></description><pubDate>Tue, 14 Sep 2021 08:33:40 +0000</pubDate><link>https://news.ycombinator.com/item?id=28521885</link><dc:creator>tomblomfield</dc:creator><comments>https://news.ycombinator.com/item?id=28521885</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=28521885</guid></item></channel></rss>