<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: alasdairnicol</title><link>https://news.ycombinator.com/user?id=alasdairnicol</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Sat, 23 May 2026 02:30:19 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=alasdairnicol" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by alasdairnicol in "Uv is fantastic, but its package management UX is a mess"]]></title><description><![CDATA[
<p>Forgive me for asking a slightly inhaled question - Is there a way to get uv to respect `exclude-newer` in `pyproject.toml`?<p>When I run `uv run` it removes `exclude-newer` from pyproject.toml.<p>I could run `uv run —-frozen` or `uv run --exclude-newer` all the time, but that doesn’t seem quite right. Is there an idiomatic flow that I’m missing out on?</p>
]]></description><pubDate>Fri, 22 May 2026 19:31:14 +0000</pubDate><link>https://news.ycombinator.com/item?id=48240411</link><dc:creator>alasdairnicol</dc:creator><comments>https://news.ycombinator.com/item?id=48240411</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48240411</guid></item><item><title><![CDATA[New comment by alasdairnicol in "Amazon Sidewalk"]]></title><description><![CDATA[
<p>My Roku remote takes several seconds to wake up and connect (over bluetooth?) every time I turn on the TV. It's infuriating. Give me back IR with its line of sight limitations!</p>
]]></description><pubDate>Tue, 11 May 2021 17:11:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=27120632</link><dc:creator>alasdairnicol</dc:creator><comments>https://news.ycombinator.com/item?id=27120632</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=27120632</guid></item><item><title><![CDATA[New comment by alasdairnicol in "My Python testing style guide (2017)"]]></title><description><![CDATA[
<p>Yes it looks as if that functionality is in 2.0, but the list of typos isn’t as extensive as in later versions.<p><a href="https://mock.readthedocs.io/en/latest/changelog.html#and-earlier" rel="nofollow">https://mock.readthedocs.io/en/latest/changelog.html#and-ear...</a></p>
]]></description><pubDate>Tue, 30 Mar 2021 09:57:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=26632797</link><dc:creator>alasdairnicol</dc:creator><comments>https://news.ycombinator.com/item?id=26632797</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=26632797</guid></item><item><title><![CDATA[New comment by alasdairnicol in "My Python testing style guide (2017)"]]></title><description><![CDATA[
<p>This behaviour has changed in Python 3.5 [1], and it was also backported to the mock package.<p>When unsafe=False (the default), accessing an attribute that begins with assert will raise an error.<p>[1]: <a href="https://docs.python.org/3/library/unittest.mock.html#the-mock-class" rel="nofollow">https://docs.python.org/3/library/unittest.mock.html#the-moc...</a></p>
]]></description><pubDate>Wed, 24 Mar 2021 21:25:20 +0000</pubDate><link>https://news.ycombinator.com/item?id=26573138</link><dc:creator>alasdairnicol</dc:creator><comments>https://news.ycombinator.com/item?id=26573138</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=26573138</guid></item><item><title><![CDATA[New comment by alasdairnicol in "Kickstarter’s staff is unionizing"]]></title><description><![CDATA[
<p>You aren’t forced to pay the political levy in the UK, you can opt in/out.</p>
]]></description><pubDate>Tue, 19 Mar 2019 19:09:46 +0000</pubDate><link>https://news.ycombinator.com/item?id=19434461</link><dc:creator>alasdairnicol</dc:creator><comments>https://news.ycombinator.com/item?id=19434461</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=19434461</guid></item><item><title><![CDATA[New comment by alasdairnicol in "Django Newbie Mistakes"]]></title><description><![CDATA[
<p>Thanks for the clarification. My point was that this wiki page is out of date so probably not that useful. I could have been clearer that the wiki is not part of the official documentation.</p>
]]></description><pubDate>Thu, 28 Jun 2018 15:42:51 +0000</pubDate><link>https://news.ycombinator.com/item?id=17417815</link><dc:creator>alasdairnicol</dc:creator><comments>https://news.ycombinator.com/item?id=17417815</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=17417815</guid></item><item><title><![CDATA[New comment by alasdairnicol in "Django Newbie Mistakes"]]></title><description><![CDATA[
<p>> The middlewares shouldn't be redirecting POSTs then! They could have returned a client error instead.<p>This has been fixed since Django 1.0, released in 2008. The page links to the commit that fixed the issue.</p>
]]></description><pubDate>Thu, 28 Jun 2018 15:40:43 +0000</pubDate><link>https://news.ycombinator.com/item?id=17417794</link><dc:creator>alasdairnicol</dc:creator><comments>https://news.ycombinator.com/item?id=17417794</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=17417794</guid></item><item><title><![CDATA[New comment by alasdairnicol in "Django Newbie Mistakes"]]></title><description><![CDATA[
<p>Django’s documentation is excellent, but parts of the wiki are out of date.<p>This page has barely been updated in the last four years. It mentions MIDDLEWARE_CLASSES (deprecated in Django 1.10) and using strings in url() (deprecated in Django 1.8). There may well be other bits which are out of date.<p>The entries in the faq [1] are more likely to be kept up to date.<p>[1]: <a href="https://docs.djangoproject.com/en/2.0/faq/" rel="nofollow">https://docs.djangoproject.com/en/2.0/faq/</a></p>
]]></description><pubDate>Thu, 28 Jun 2018 14:07:03 +0000</pubDate><link>https://news.ycombinator.com/item?id=17416947</link><dc:creator>alasdairnicol</dc:creator><comments>https://news.ycombinator.com/item?id=17416947</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=17416947</guid></item><item><title><![CDATA[New comment by alasdairnicol in "America’s Teens Are Choosing YouTube Over Facebook"]]></title><description><![CDATA[
<p>I didn’t like this attempt to get you to install the messenger app either. However, I found out you can access messages on mobile using mbasic.facebook.com</p>
]]></description><pubDate>Fri, 01 Jun 2018 09:56:53 +0000</pubDate><link>https://news.ycombinator.com/item?id=17203939</link><dc:creator>alasdairnicol</dc:creator><comments>https://news.ycombinator.com/item?id=17203939</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=17203939</guid></item><item><title><![CDATA[New comment by alasdairnicol in "219 days of postmarketOS"]]></title><description><![CDATA[
<p>Oops, I got my OSs mixed up. The bootloop was after I installed LineageOS, then OnePlus flashed it back to the official OxygenOS.</p>
]]></description><pubDate>Thu, 25 Jan 2018 16:56:26 +0000</pubDate><link>https://news.ycombinator.com/item?id=16232318</link><dc:creator>alasdairnicol</dc:creator><comments>https://news.ycombinator.com/item?id=16232318</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=16232318</guid></item><item><title><![CDATA[New comment by alasdairnicol in "219 days of postmarketOS"]]></title><description><![CDATA[
<p>I got my OnePlus stuck in a boot loop after installing Oxygen OS. OnePlus support scheduled a remote session and managed to flash it back to stock. I was very impressed, I had assumed they would refuse the help because I had flashed it with an unofficial OS.</p>
]]></description><pubDate>Mon, 22 Jan 2018 19:28:03 +0000</pubDate><link>https://news.ycombinator.com/item?id=16207135</link><dc:creator>alasdairnicol</dc:creator><comments>https://news.ycombinator.com/item?id=16207135</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=16207135</guid></item><item><title><![CDATA[New comment by alasdairnicol in "Facebook launches Stories in its main app"]]></title><description><![CDATA[
<p>You can still read Facebook messages on the mbasic site.<p><a href="https://mbasic.facebook.com/messages" rel="nofollow">https://mbasic.facebook.com/messages</a></p>
]]></description><pubDate>Tue, 28 Mar 2017 17:52:40 +0000</pubDate><link>https://news.ycombinator.com/item?id=13978857</link><dc:creator>alasdairnicol</dc:creator><comments>https://news.ycombinator.com/item?id=13978857</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=13978857</guid></item><item><title><![CDATA[New comment by alasdairnicol in "Removing Python 2.x support from Django for version 2.0"]]></title><description><![CDATA[
<p>Agreed 1.4 LTS to 1.8 LTS was tricky, but future LTS to LTS upgrades like 1.8 to 1.11 should be easier. From 1.8 onwards, if your code runs without depreciation warnings in one LTS, then it should work on the next.</p>
]]></description><pubDate>Thu, 19 Jan 2017 11:33:00 +0000</pubDate><link>https://news.ycombinator.com/item?id=13434950</link><dc:creator>alasdairnicol</dc:creator><comments>https://news.ycombinator.com/item?id=13434950</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=13434950</guid></item><item><title><![CDATA[New comment by alasdairnicol in "New XPS 15 Laptop"]]></title><description><![CDATA[
<p>There is one Thunderbolt 3 port.</p>
]]></description><pubDate>Tue, 20 Dec 2016 14:44:25 +0000</pubDate><link>https://news.ycombinator.com/item?id=13220180</link><dc:creator>alasdairnicol</dc:creator><comments>https://news.ycombinator.com/item?id=13220180</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=13220180</guid></item><item><title><![CDATA[New comment by alasdairnicol in "Django 1.10 released"]]></title><description><![CDATA[
<p>[1]: <a href="https://docs.djangoproject.com/en/1.9/internals/release-process/#release-process" rel="nofollow">https://docs.djangoproject.com/en/1.9/internals/release-proc...</a></p>
]]></description><pubDate>Mon, 01 Aug 2016 20:23:05 +0000</pubDate><link>https://news.ycombinator.com/item?id=12205590</link><dc:creator>alasdairnicol</dc:creator><comments>https://news.ycombinator.com/item?id=12205590</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=12205590</guid></item><item><title><![CDATA[New comment by alasdairnicol in "Django 1.10 released"]]></title><description><![CDATA[
<p>Django has a time based release schedule [1]. The class based authentication views weren't committed until after the feature freeze for the 1.10 alpha.</p>
]]></description><pubDate>Mon, 01 Aug 2016 20:10:40 +0000</pubDate><link>https://news.ycombinator.com/item?id=12205508</link><dc:creator>alasdairnicol</dc:creator><comments>https://news.ycombinator.com/item?id=12205508</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=12205508</guid></item><item><title><![CDATA[New comment by alasdairnicol in "The new Ford, a Silicon Valley software company"]]></title><description><![CDATA[
<p>As well as Holden in Aus/NZ, it's Vauxhall in the UK, and Opel in the rest of Europe.</p>
]]></description><pubDate>Tue, 12 Apr 2016 09:41:18 +0000</pubDate><link>https://news.ycombinator.com/item?id=11478229</link><dc:creator>alasdairnicol</dc:creator><comments>https://news.ycombinator.com/item?id=11478229</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=11478229</guid></item><item><title><![CDATA[New comment by alasdairnicol in "MacBook Pro Repair Extension Program for Video Issues"]]></title><description><![CDATA[
<p>My Macbook died last month after 15 months, outside of the 1 year warranty. I had bought it from Apple's website.<p>The local certified shop wanted £99 to diagnose the problem. Apple weren't particularly helpful when I asked for help to get the fee waived (their staff in the US don't know about the UK Sale of Goods act, understandable perhaps), so I had to take a 40 minute train journey to my nearest Apple store.<p>The Apple store diagnosed the problem and immediately offered to repair it for free 'under UK consumer law'. I was pretty happy with the experience, but would have preferred if the local certified shop had been able to diagnose and repair the laptop for free instead.</p>
]]></description><pubDate>Fri, 20 Feb 2015 13:07:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=9080225</link><dc:creator>alasdairnicol</dc:creator><comments>https://news.ycombinator.com/item?id=9080225</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=9080225</guid></item><item><title><![CDATA[New comment by alasdairnicol in "MacBook Pro Repair Extension Program for Video Issues"]]></title><description><![CDATA[
<p>> If an expensive laptop breaks after 4 years, then you can argue it wasn't fit for purpose and therefore must be fixed or replaced (or a full refund issued). As long as you haven't caused the problem through misuse, you're covered.<p>My understanding is that under the Sale of Goods Act you are entitled to a partial refund [1], which reflects the use that you got out of the product. For example, if a laptop broke after 4 years, and 6 years was a reasonable lifespan, that suggests a 1/3 refund.<p>I believe that the new EU directive entitles you for a full refund for the 2 years of the warranty. In this regard, it's a stronger protection than the UK Sale of Goods act. In other regards, the Sale of Goods act is stronger (5 years to make a claim in Scotland, 6 in England, Wales and Northern Ireland).<p>> Unless you'd bought it from another person rather than a business, you should have received the same treatment. This isn't Apple being nice, this is them fulfilling their legal obligations.<p>Some retailers might be quicker to fulfil their obligations than others, so that's worth considering when choosing where to buy the product. My recent experience at the Apple store after buying from the Apple website was pretty positive.<p>edit: re-reading your post, I realise that you already pointed out that your rights are against the retailer, not the manufacturer.<p>[1] <a href="http://www.which.co.uk/consumer-rights/regulation/sale-of-goods-act#link-4" rel="nofollow">http://www.which.co.uk/consumer-rights/regulation/sale-of-go...</a></p>
]]></description><pubDate>Fri, 20 Feb 2015 12:59:38 +0000</pubDate><link>https://news.ycombinator.com/item?id=9080212</link><dc:creator>alasdairnicol</dc:creator><comments>https://news.ycombinator.com/item?id=9080212</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=9080212</guid></item><item><title><![CDATA[New comment by alasdairnicol in "The God Who Peter Molyneux Forgot"]]></title><description><![CDATA[
<p>I have a happier experience of winning a Molyneux competition. Back in the day, I entered a Theme Hospital competion on the Bullfrog website, and received a copy of Syndicate and a Bullfrog leather jacket in the post. I was maybe 12, so the XL jacket was far too big for me, but I was still thrilled.</p>
]]></description><pubDate>Wed, 11 Feb 2015 19:41:18 +0000</pubDate><link>https://news.ycombinator.com/item?id=9035174</link><dc:creator>alasdairnicol</dc:creator><comments>https://news.ycombinator.com/item?id=9035174</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=9035174</guid></item></channel></rss>