<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: franey</title><link>https://news.ycombinator.com/user?id=franey</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Wed, 15 Apr 2026 04:26:01 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=franey" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by franey in "Pebble Index 01 – External memory for your brain"]]></title><description><![CDATA[
<p>It looks to me like the big benefit is being able to use just one hand for this. I'd be more likely to use the watch, too, but this would be great for people with one arm, for example.</p>
]]></description><pubDate>Tue, 09 Dec 2025 16:10:23 +0000</pubDate><link>https://news.ycombinator.com/item?id=46206587</link><dc:creator>franey</dc:creator><comments>https://news.ycombinator.com/item?id=46206587</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46206587</guid></item><item><title><![CDATA[New comment by franey in "It's time for modern CSS to kill the SPA"]]></title><description><![CDATA[
<p>For anyone looking to use this, I recommend using this CSS before the closing body tag. It disables the fade effect for visitors who prefer reduced motion, and the old page fades out while the new one fades in. (I've got an optional rule that keeps my header in place while the rest of the content fades out/in)<p><pre><code>  @media (prefers-reduced-motion: no-preference) {
    body > header {
      view-transition-name: header;
    }

    @view-transition {
      navigation: auto;
    }

    ::view-transition-old(root) {
      animation: fade-out 0.3s ease;
    }
    ::view-transition-new(root) {
      animation: fade-in 0.3s ease;
    }

    @keyframes fade-in {
      from { opacity: 0; }
      to { opacity: 1; }
    }
    @keyframes fade-out {
      from { opacity: 1; }
      to { opacity: 0; }
    }
  }</code></pre></p>
]]></description><pubDate>Sat, 26 Jul 2025 15:06:29 +0000</pubDate><link>https://news.ycombinator.com/item?id=44694657</link><dc:creator>franey</dc:creator><comments>https://news.ycombinator.com/item?id=44694657</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44694657</guid></item><item><title><![CDATA[New comment by franey in "How to help us build open source Pebble software"]]></title><description><![CDATA[
<p>I had a Pebble Time Round, too, and it was great. For me the Pebble hit a sweet spot for a smart-enough watch that allowed me to keep my phone in my pocket. I could get notifications and reply to them right from the watch. I have a Withings SteelHR now, and it's great as a watch + activity tracker, but not being able to dictate replies to the notifications I get means I reach for my phone more now than I did with my Pebble</p>
]]></description><pubDate>Fri, 07 Feb 2025 15:14:33 +0000</pubDate><link>https://news.ycombinator.com/item?id=42973565</link><dc:creator>franey</dc:creator><comments>https://news.ycombinator.com/item?id=42973565</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42973565</guid></item><item><title><![CDATA[New comment by franey in "How to write user stories that get done"]]></title><description><![CDATA[
<p>This post might have some hot takes and I'm no expert, but over the past decade I've found these rules of thumb to be helpful when reviewing and writing user stories.<p>If you have some other tips, I'd be happy to hear them!</p>
]]></description><pubDate>Tue, 23 Jan 2024 13:45:48 +0000</pubDate><link>https://news.ycombinator.com/item?id=39103201</link><dc:creator>franey</dc:creator><comments>https://news.ycombinator.com/item?id=39103201</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39103201</guid></item><item><title><![CDATA[How to write user stories that get done]]></title><description><![CDATA[
<p>Article URL: <a href="https://johnfraney.ca/blog/how-to-write-user-stories-that-actually-get-done/">https://johnfraney.ca/blog/how-to-write-user-stories-that-actually-get-done/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=39103200">https://news.ycombinator.com/item?id=39103200</a></p>
<p>Points: 2</p>
<p># Comments: 1</p>
]]></description><pubDate>Tue, 23 Jan 2024 13:45:48 +0000</pubDate><link>https://johnfraney.ca/blog/how-to-write-user-stories-that-actually-get-done/</link><dc:creator>franey</dc:creator><comments>https://news.ycombinator.com/item?id=39103200</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39103200</guid></item><item><title><![CDATA[New comment by franey in "What dif­fer­enti­ates front-end frame­works"]]></title><description><![CDATA[
<p>It is something that distinguishes them, certainly. As someone who switched from using Vue to React at my day job, dev tooling & editor support have been the things that stand out the most to me. React works well with Vite, which has helped make it easier to use, and I've been migrating projects away from Webpack + Jest to Vite + Vitest, which saves a lot of dependency maintenance. I definitely miss Vue 3's VS Code extension when I work in React, though.</p>
]]></description><pubDate>Wed, 19 Jul 2023 21:17:48 +0000</pubDate><link>https://news.ycombinator.com/item?id=36793547</link><dc:creator>franey</dc:creator><comments>https://news.ycombinator.com/item?id=36793547</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=36793547</guid></item><item><title><![CDATA[New comment by franey in "Ask HN: Could you share your personal blog here?"]]></title><description><![CDATA[
<p><a href="https://johnfraney.ca/blog/" rel="nofollow noreferrer">https://johnfraney.ca/blog/</a><p>Generally I'll write a post when I try to do something that's difficult to find an example of online. I don't get a _ton_ of traffic, but writing prose is a nice change from writing code.</p>
]]></description><pubDate>Tue, 04 Jul 2023 17:32:05 +0000</pubDate><link>https://news.ycombinator.com/item?id=36589884</link><dc:creator>franey</dc:creator><comments>https://news.ycombinator.com/item?id=36589884</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=36589884</guid></item><item><title><![CDATA[New comment by franey in "EU-wide maximum limit of €10K for cash payments"]]></title><description><![CDATA[
<p>We're getting pretty off topic, but it wasn't what they were protesting that was illegal, it was how they did it. For a US comparison, First Amendment rights don't include a right to occupy city streets for weeks, even if you're doing it to protest the government.</p>
]]></description><pubDate>Sun, 11 Dec 2022 02:03:04 +0000</pubDate><link>https://news.ycombinator.com/item?id=33939258</link><dc:creator>franey</dc:creator><comments>https://news.ycombinator.com/item?id=33939258</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=33939258</guid></item><item><title><![CDATA[New comment by franey in "EU-wide maximum limit of €10K for cash payments"]]></title><description><![CDATA[
<p>It wasn't, no. It was meant to clarify for other readers that people didn't have their bank accounts frozen for protesting COVID; they had their bank accounts frozen for financially supporting or participating in an illegal occupation of a city centre.<p>Your point stands that governments/courts decide what is illegal and that they have the power to freeze bank accounts when those accounts are used to fund illegal activities.</p>
]]></description><pubDate>Sun, 11 Dec 2022 01:58:21 +0000</pubDate><link>https://news.ycombinator.com/item?id=33939229</link><dc:creator>franey</dc:creator><comments>https://news.ycombinator.com/item?id=33939229</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=33939229</guid></item><item><title><![CDATA[New comment by franey in "EU-wide maximum limit of €10K for cash payments"]]></title><description><![CDATA[
<p>For people not familiar with Canadian politics, this summary missed some important nuance. Bank accounts were frozen for some people who donated money to support an illegal occupation of part of Canada's capital city, Ottawa. The occupation was a mix of people protesting COVID measures and others demanding that Justin Trudeau resign.<p><a href="https://www.cbc.ca/news/politics/emergency-bank-measures-finance-committee-1.6360769" rel="nofollow">https://www.cbc.ca/news/politics/emergency-bank-measures-fin...</a></p>
]]></description><pubDate>Sun, 11 Dec 2022 01:48:55 +0000</pubDate><link>https://news.ycombinator.com/item?id=33939145</link><dc:creator>franey</dc:creator><comments>https://news.ycombinator.com/item?id=33939145</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=33939145</guid></item><item><title><![CDATA[New comment by franey in "AVIF support enabled by default in Firefox 86"]]></title><description><![CDATA[
<p>You bet. I've played around with AVIFS and it can autoplay and loop. I made gif2avif.com for fun, but I can't promise that it will work well.</p>
]]></description><pubDate>Sun, 10 Jan 2021 02:45:17 +0000</pubDate><link>https://news.ycombinator.com/item?id=25708442</link><dc:creator>franey</dc:creator><comments>https://news.ycombinator.com/item?id=25708442</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=25708442</guid></item><item><title><![CDATA[New comment by franey in "DigitalOcean App Platform"]]></title><description><![CDATA[
<p>That was a great MVP plan for that feature! Figuring out what not to build is a great way to save development time.</p>
]]></description><pubDate>Tue, 06 Oct 2020 20:59:46 +0000</pubDate><link>https://news.ycombinator.com/item?id=24702276</link><dc:creator>franey</dc:creator><comments>https://news.ycombinator.com/item?id=24702276</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=24702276</guid></item><item><title><![CDATA[New comment by franey in "Thank You MDN"]]></title><description><![CDATA[
<p>I'm over a decade into web development, and I still reference it every week. Last week I thought I should start a blog post about how, for me, it's the single best resource on the web. I sure hope it stays that way!</p>
]]></description><pubDate>Wed, 12 Aug 2020 23:40:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=24138403</link><dc:creator>franey</dc:creator><comments>https://news.ycombinator.com/item?id=24138403</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=24138403</guid></item><item><title><![CDATA[New comment by franey in "Overview of Python dependency management tools"]]></title><description><![CDATA[
<p>This is a good point about complexity. I started with pip + virtualenv, and I'd recommend pip + venv to anyone learning Python. venv is in the standard library, so there's official documentation for it.<p>I picked up Pipenv when a point-point release of a dependency broke a production deployment. Pipenv's dependency locking meant that I wouldn't get surprised like that again.<p>Part of why this topic comes up so much is the desire to run with a language before learning to walk with it, perhaps. I'm a big fan of Poetry, but I like it because I know what it gives me compared to vanilla pip and a setup.py file.<p>Installing dependencies at the OS level will get you far as a beginner. And when the time comes that you need a virtual environment, you'll probably know.</p>
]]></description><pubDate>Mon, 01 Jun 2020 21:37:15 +0000</pubDate><link>https://news.ycombinator.com/item?id=23384216</link><dc:creator>franey</dc:creator><comments>https://news.ycombinator.com/item?id=23384216</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=23384216</guid></item><item><title><![CDATA[New comment by franey in "Overview of Python dependency management tools"]]></title><description><![CDATA[
<p>I think this is a good basic overview of the dependency management landscape. I have a few things to add.<p>One is that because Python has been around for so long, it's easy to find outdated or conflicting advice about how to manage Python packages.<p>I think it's important to stress that pyenv isn't strictly a dependency manager, too, and depending on your OS, isn't necessary. (Supported Python versions are in the AUR[0].)<p>A lot of pain from Python 2 -> 3 is that many operating systems were so slow to switch their default Python version to 3. Unless something has changed in the last month or so, Mac OS _still_ uses Python 2 as the default.<p>It's a shame to see Python take a beating for OS-level decisions.<p>[0] <a href="https://aur.archlinux.org/" rel="nofollow">https://aur.archlinux.org/</a></p>
]]></description><pubDate>Mon, 01 Jun 2020 21:30:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=23384133</link><dc:creator>franey</dc:creator><comments>https://news.ycombinator.com/item?id=23384133</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=23384133</guid></item><item><title><![CDATA[New comment by franey in "Overview of Python dependency management tools"]]></title><description><![CDATA[
<p>Poetry does a good job of managing/publishing a package without having to custom-code a setup.py. I have a blog post about it but I don't want to spam. Poetry works well for a package of average complexity, and it's configured entirely in pypyroject.toml. I don't have experience publishing something complicated with it, though.</p>
]]></description><pubDate>Mon, 01 Jun 2020 21:20:33 +0000</pubDate><link>https://news.ycombinator.com/item?id=23383990</link><dc:creator>franey</dc:creator><comments>https://news.ycombinator.com/item?id=23383990</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=23383990</guid></item><item><title><![CDATA[New comment by franey in "Overview of Python dependency management tools"]]></title><description><![CDATA[
<p>Pipenv has had a couple releases recently, but I've had an easier time with Poetry. Poetry is almost always[0] faster than Pipenv, and I find its commands more intuitive.<p>I've been meaning to take another look at Pipenv, but the huge pause without a release makes me nervous that it could happen again.<p>[0] <a href="https://johnfraney.ca/posts/2019/11/19/pipenv-poetry-benchmarks-ergonomics-2/" rel="nofollow">https://johnfraney.ca/posts/2019/11/19/pipenv-poetry-benchma...</a></p>
]]></description><pubDate>Mon, 01 Jun 2020 21:17:09 +0000</pubDate><link>https://news.ycombinator.com/item?id=23383948</link><dc:creator>franey</dc:creator><comments>https://news.ycombinator.com/item?id=23383948</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=23383948</guid></item><item><title><![CDATA[New comment by franey in "Ask HN: What is your blog and why should I read it?"]]></title><description><![CDATA[
<p><a href="https://johnfraney.ca" rel="nofollow">https://johnfraney.ca</a><p>I'm not sure how awesome it is, but I like to write about a particular problem that I came across and solved recently or an experiment that I tried, like writing a Vue app using a Python-to-JavaScript transpiler. I mostly write about Python and Vue, sometimes veering into CSS, Markdown, and TypeScript. Instead of just giving the solution, I try to walk through the problem and give background and bad jokes along the way.</p>
]]></description><pubDate>Tue, 07 Apr 2020 13:37:05 +0000</pubDate><link>https://news.ycombinator.com/item?id=22803063</link><dc:creator>franey</dc:creator><comments>https://news.ycombinator.com/item?id=22803063</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=22803063</guid></item><item><title><![CDATA[New comment by franey in "What the Heck Is Pyproject.toml?"]]></title><description><![CDATA[
<p>I think of Poetry as the Yarn of Python packaging for two main reasons (apart from package locking, which is the biggest similarity): the commands are more intuitive and the lockfile starts with a different letter from the dependency file. I don't know how many times I open package-lock.json instead of package.json because I tab-complete from my shell. Same with Pipfile and Pipfile.lock for anyone using Pipenv.<p>I wrote this post[0] that compares Poetry and Pipenv if you're interested and talks about some of their differences. Poetry has both add and install commands, whereas Pipenv only has an install command, for instance.<p>[0] <a href="https://johnfraney.ca/posts/2019/03/06/pipenv-poetry-benchmarks-ergonomics/" rel="nofollow">https://johnfraney.ca/posts/2019/03/06/pipenv-poetry-benchma...</a></p>
]]></description><pubDate>Thu, 02 Apr 2020 03:45:53 +0000</pubDate><link>https://news.ycombinator.com/item?id=22756026</link><dc:creator>franey</dc:creator><comments>https://news.ycombinator.com/item?id=22756026</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=22756026</guid></item><item><title><![CDATA[New comment by franey in "You’re not writing code, you’re solving problems"]]></title><description><![CDATA[
<p>I second this. Poetry is a great all-in-one tool for dependency and package management. I've written a few blog posts about it, and I remain happy with it. The Poetry team has done a great job making quality of life improvements to the tool, and it's actively maintained. It's worth checking out.</p>
]]></description><pubDate>Sun, 29 Mar 2020 19:42:30 +0000</pubDate><link>https://news.ycombinator.com/item?id=22722010</link><dc:creator>franey</dc:creator><comments>https://news.ycombinator.com/item?id=22722010</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=22722010</guid></item></channel></rss>