<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: rahoulb</title><link>https://news.ycombinator.com/user?id=rahoulb</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Thu, 16 Apr 2026 23:43:51 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=rahoulb" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by rahoulb in "Writing code is cheap now"]]></title><description><![CDATA[
<p>I'd add in "code is easier to write than it is to read" - hence abstraction layers designed to present us with higher level code, hiding the complex implementations.<p>But LLMs are both really good at writing code _and_ reading code.  However, they're not great at knowing when to stop - either finishing early and leaving stuff broken, over-engineering and adding in stuff that's not needed or deciding it's too hard and just removing stuff it deems unimportant.<p>I've found a TDD approach (with not just unit tests but high-level end-to-end behaviour-driven tests) works really well with them.  I give them a high-level feature specification (remember Gherkin specifications?) and tell it to make that pass (with unit tests for any intermediate code it writes), make sure it hasn't broken anything (by running the other high-level tests) then, finally, refactor.  I've also just started telling it to generate screenshots for each step in the feature, so I can quickly evaluate the UI flow (inspired by Simon Willison's Rodney tool).<p>Now I don't actually need to care if the code is easy to read or easy to change - because the LLM handles the details. I just need to make sure that when it says "I have implemented Feature X" that the steps it has written for that feature actually do what is expected and the UI fits the user's needs.</p>
]]></description><pubDate>Tue, 24 Feb 2026 09:49:27 +0000</pubDate><link>https://news.ycombinator.com/item?id=47135034</link><dc:creator>rahoulb</dc:creator><comments>https://news.ycombinator.com/item?id=47135034</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47135034</guid></item><item><title><![CDATA[New comment by rahoulb in "Resizing windows on macOS Tahoe – the saga continues"]]></title><description><![CDATA[
<p>As a long-time Mac user, "it just works" actually meant "it either works or it doesn't" - a *binary*.  Whereas other OSes were shades of grey - it _might_ work if you spend time searching and trying random combinations in settings.<p>And it was good because it saved time.<p>(Same used to apply to iOS too)</p>
]]></description><pubDate>Fri, 13 Feb 2026 11:54:04 +0000</pubDate><link>https://news.ycombinator.com/item?id=47001702</link><dc:creator>rahoulb</dc:creator><comments>https://news.ycombinator.com/item?id=47001702</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47001702</guid></item><item><title><![CDATA[New comment by rahoulb in "Orchestrate teams of Claude Code sessions"]]></title><description><![CDATA[
<p>It also depends upon how you manage it<p>My process, which probably wouldn't work with concurrent agents because I'm keeping an eye on it, is basically:<p>- "Read these files and write some documentation on how they work - put the documentation in the docs folder" (putting relevant files into the context and giving it something to refer to later on)<p>- "We need to make change X, give me some options on how to do it" (making it plan based on that context)<p>- "I like option 2 - but we also need to take account of Y - look at these other files and give me some more options" (make sure it hasn't missed anything important)<p>- "Revised option 4 is great - write a detailed to-do list in the docs/tasks folder" (I choose the actual design, instead of blindly accepting what it proposes)<p>- I read the to-do list and get it rewritten if there's anything I'm not happy with<p>- I clear the context window<p>- "Read the document in the docs folder and then this to-do list in the docs/tasks folder - then start on phase 1"<p>- I watch what it's doing and stop if it goes off on one (rare, because the context window should be almost empty)<p>- Once done, I give the git diffs a quick review - mainly the tests to make sure it's checking the right things<p>- Then I give it feedback and ask it to fix the bits I'm not happy with<p>- Finally commit, clear context and repeat until all phases are done<p>Most of the time this works really well.<p>Yesterday I gave it a deep task, that touched many aspects of the app.  This was a Rails app with a comprehensive test suite - so it had lots of example code to read, plus it could give itself definite end points (they often don't know when to stop).  I estimated it would take me 3-4 days for me complete the feature by hand.  It made a right mess of the UI but it completed the task in about 6 hours, and I spent another 2 hours tidying it up and making it consistent with the visuals elsewhere (the logic and back-end code was fine).<p>So either my original estimate is way off, or it has saved me a good amount of time there.</p>
]]></description><pubDate>Fri, 06 Feb 2026 12:06:36 +0000</pubDate><link>https://news.ycombinator.com/item?id=46911835</link><dc:creator>rahoulb</dc:creator><comments>https://news.ycombinator.com/item?id=46911835</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46911835</guid></item><item><title><![CDATA[New comment by rahoulb in "Apple testing new App Store design that blurs the line between ads and results"]]></title><description><![CDATA[
<p>That's the demand for GROWTH.<p>They've hit the limits of iPhone sales - and upgrade cycles are slowing. Hardware products in general are "streaky" - ie. demand and sales drop in the period after a new product is released, so how often can you produce a new version and what happens if that new version isn't a hit?<p>Whereas subscriptions provide recurring revenue.  And services, in general, can bring in more money without an equivalent increase in costs.<p>I recently read "Apple in China" and one of the things I hadn't realised is how many people at Apple came from IBM under Tim Cook's reign. What he's done for Apple is turn them into a predictable, consistent, revenue machine.</p>
]]></description><pubDate>Tue, 20 Jan 2026 13:29:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=46691618</link><dc:creator>rahoulb</dc:creator><comments>https://news.ycombinator.com/item?id=46691618</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46691618</guid></item><item><title><![CDATA[New comment by rahoulb in "The Overcomplexity of the Shadcn Radio Button"]]></title><description><![CDATA[
<p>I agree it's not just React - I think a lot of people simply do not know what CSS can do nowadays.<p>I do like Tailwind (I guess it fits with how I think).  But to make good use of it you _do_ need to know how CSS works (for example, using variant selectors for picking out child elements, using container queries instead of global breakpoints etc).<p>One addition - I learnt a _lot_ about CSS by reading [Every Layout](<a href="https://every-layout.dev/" rel="nofollow">https://every-layout.dev/</a>).</p>
]]></description><pubDate>Tue, 20 Jan 2026 11:48:41 +0000</pubDate><link>https://news.ycombinator.com/item?id=46690842</link><dc:creator>rahoulb</dc:creator><comments>https://news.ycombinator.com/item?id=46690842</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46690842</guid></item><item><title><![CDATA[New comment by rahoulb in "Programmers and software developers lost the plot on naming their tools"]]></title><description><![CDATA[
<p>I remember writing a function to convert a string from snake case to camel case and calling it `humpify`.  And another that would take a string and locate the constant with that name called `constantinople`.<p>But then, this is ruby and it's known for its unusual naming.  Plus both also had sensible/boring aliases and they were for internal use only.</p>
]]></description><pubDate>Fri, 12 Dec 2025 10:08:10 +0000</pubDate><link>https://news.ycombinator.com/item?id=46242613</link><dc:creator>rahoulb</dc:creator><comments>https://news.ycombinator.com/item?id=46242613</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46242613</guid></item><item><title><![CDATA[New comment by rahoulb in "Some dogs can classify their toys by function"]]></title><description><![CDATA[
<p>(slightly off-topic) Many years ago, I got a puppy to keep my older dog company (it was as disaster as she was an over-excited nightmare and in the end I gave her to a friend, where she lived a happy life with two other over-excited dogs).<p>The older dog was sat on the stairs, sulking, as I played with the puppy (he was always very moody).<p>I showed her a squeaky ball; she liked the squeak so I tried to get her to bite it and make the sound.  But she just wasn't getting it.  Then the other dog charged down the stairs, stamped on the ball to make it squeak, then went back upstairs to continue his sulk.</p>
]]></description><pubDate>Fri, 03 Oct 2025 08:53:04 +0000</pubDate><link>https://news.ycombinator.com/item?id=45460631</link><dc:creator>rahoulb</dc:creator><comments>https://news.ycombinator.com/item?id=45460631</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45460631</guid></item><item><title><![CDATA[New comment by rahoulb in "The drawbridges come up: the dream of a interconnected context ecosystem is over"]]></title><description><![CDATA[
<p>As other posters have said - capitalism.<p>But also privacy - it would be amazing to just be able to connect to any app or service you want, interact and react to stuff that's happening _over there_.<p>However, do you want any old app or service connecting to _your_ data, siphoning it and selling it on (and, at best, burying their use of your data in a huge terms of service document that no-one reads, at worst, lying about what they do with that information)?  So you have to add access controls that are either intrusive and/or complex, or, more likely, just ignored.  Then the provider gets sued for leaking data and we're in a situation where no-one dares open up.</p>
]]></description><pubDate>Tue, 17 Jun 2025 12:24:23 +0000</pubDate><link>https://news.ycombinator.com/item?id=44298279</link><dc:creator>rahoulb</dc:creator><comments>https://news.ycombinator.com/item?id=44298279</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44298279</guid></item><item><title><![CDATA[New comment by rahoulb in "Why Claude Code feels like magic?"]]></title><description><![CDATA[
<p>My favourite way to use it is to write tests first, then say "make these pass". It will generate some code, run the tests, say "oh, there's an error here ... let's fix that ... oh, there's an error there, let's fix that ..." and (most of the time) it will reach a solution where the tests pass.<p>I already do TDD a lot of the time, and this way I can be sure that the actual requirements are covered by the tests.  Whereas asking it to add tests to existing code often gets over-elaborate in areas that aren't important and misses cases for the vital stuff.<p>Sometimes, when asking Claude to pass existing tests, it comes up with better implementations than I would have done.  Other times the implementation is awful, but I know I can use it, because the tests prove it works.  And then I (or Claude) can refactor with confidence later.</p>
]]></description><pubDate>Tue, 17 Jun 2025 11:40:18 +0000</pubDate><link>https://news.ycombinator.com/item?id=44297919</link><dc:creator>rahoulb</dc:creator><comments>https://news.ycombinator.com/item?id=44297919</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44297919</guid></item><item><title><![CDATA[New comment by rahoulb in "Storytelling lessons I learned from Steve Jobs (2022)"]]></title><description><![CDATA[
<p>I should refine my original comment: <i>good</i> marketing is about meeting the right people with the right message at the right time.<p>That kind of persistent nagging is the wrong time, with the wrong message at the wrong people.</p>
]]></description><pubDate>Thu, 13 Feb 2025 13:57:52 +0000</pubDate><link>https://news.ycombinator.com/item?id=43035869</link><dc:creator>rahoulb</dc:creator><comments>https://news.ycombinator.com/item?id=43035869</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43035869</guid></item><item><title><![CDATA[New comment by rahoulb in "Storytelling lessons I learned from Steve Jobs (2022)"]]></title><description><![CDATA[
<p>People often mix marketing and sales.  For me marketing is about "understanding your market".  You wanted an iPhone because His Steveness knew what many people were looking for in a phone.<p>(The other parts of marketing, IMO, are getting the right message across at the right time - to those right people.  The storytelling is the message part).</p>
]]></description><pubDate>Wed, 12 Feb 2025 09:18:44 +0000</pubDate><link>https://news.ycombinator.com/item?id=43023473</link><dc:creator>rahoulb</dc:creator><comments>https://news.ycombinator.com/item?id=43023473</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43023473</guid></item><item><title><![CDATA[New comment by rahoulb in "The subtle art of designing physical controls for cars"]]></title><description><![CDATA[
<p>There's a whole section in the article about experimenting with different positions and weights of the haptic feedback as the dial is moved and how to tie them in to the display on the control itself.</p>
]]></description><pubDate>Wed, 12 Feb 2025 09:12:33 +0000</pubDate><link>https://news.ycombinator.com/item?id=43023441</link><dc:creator>rahoulb</dc:creator><comments>https://news.ycombinator.com/item?id=43023441</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43023441</guid></item><item><title><![CDATA[New comment by rahoulb in "Mac(OS)talgia"]]></title><description><![CDATA[
<p>I love that.<p>Also the MacOS "Zoom" button makes so much more sense than the OSX/macOS green button - and I still miss window shading.</p>
]]></description><pubDate>Mon, 10 Feb 2025 20:08:16 +0000</pubDate><link>https://news.ycombinator.com/item?id=43004585</link><dc:creator>rahoulb</dc:creator><comments>https://news.ycombinator.com/item?id=43004585</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43004585</guid></item><item><title><![CDATA[New comment by rahoulb in "Show HN: Cut the crap – remove AI bullshit from websites"]]></title><description><![CDATA[
<p>I feel the real problem comes when people stop publishing on the (open) web because 1) no-one is reading it directly and 2) they know their hard work will just get slurped up and regurgitated by LLMs.</p>
]]></description><pubDate>Mon, 09 Dec 2024 13:35:39 +0000</pubDate><link>https://news.ycombinator.com/item?id=42366158</link><dc:creator>rahoulb</dc:creator><comments>https://news.ycombinator.com/item?id=42366158</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42366158</guid></item><item><title><![CDATA[New comment by rahoulb in "The tragedy of running an old Node project"]]></title><description><![CDATA[
<p>This is the issue I have with the "build vs buy (or import)" aspect of today's programming.<p>There are countless gems, libraries or packages out there that make your life easier and development so much faster.<p>But software (in my experience) always lives longer than you expect it to, so you need to be sure that your dependencies will be maintained for that lifetime (or have enough time to do the maintenance or plug in the replacements yourself).</p>
]]></description><pubDate>Tue, 19 Nov 2024 09:30:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=42181523</link><dc:creator>rahoulb</dc:creator><comments>https://news.ycombinator.com/item?id=42181523</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42181523</guid></item><item><title><![CDATA[New comment by rahoulb in "Apple may stop producing Vision Pro by the end of 2024"]]></title><description><![CDATA[
<p>I have done that with XReal glasses and my phone.<p>But they still look kind of off when wearing them in public (slightly bigger than normal sunglasses, cable from one ear and other people can see the light from the screens from the side or back).<p>And the lack of integration is a pain - the phone has to be unlocked so is subject to random taps and swipes in my pocket.<p>However, an Apple-built Carplay-style projection into XReal type glasses could work very well - the question being how would you control it?</p>
]]></description><pubDate>Thu, 24 Oct 2024 07:59:33 +0000</pubDate><link>https://news.ycombinator.com/item?id=41933176</link><dc:creator>rahoulb</dc:creator><comments>https://news.ycombinator.com/item?id=41933176</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41933176</guid></item><item><title><![CDATA[New comment by rahoulb in "Apple may stop producing Vision Pro by the end of 2024"]]></title><description><![CDATA[
<p>I wonder if the lack of third party software for it is because the resentment with the App Store has built up so much?<p>Building an iPhone app?  Pretty much required.<p>Building an iPad app?  Almost free when you're building an iPhone app (depending on your tolerance for UI/UX)<p>Building a Watch app?  It's a popular device but is it worth the investment?  Most people say no.<p>Building for a brand new platform where we have to live with Apple's rules?  No thanks.</p>
]]></description><pubDate>Thu, 24 Oct 2024 07:55:06 +0000</pubDate><link>https://news.ycombinator.com/item?id=41933135</link><dc:creator>rahoulb</dc:creator><comments>https://news.ycombinator.com/item?id=41933135</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41933135</guid></item><item><title><![CDATA[New comment by rahoulb in "Apple may stop producing Vision Pro by the end of 2024"]]></title><description><![CDATA[
<p>Before its release, I read that Sony had said they could produce 900,000 of the displays per year because the process was so complex.  Obviously with 2 displays per device, half that is the maximum number of Vision Pros per year.<p>I'm guessing Apple and Sony would have invested in improving the process if it had hit expectations.</p>
]]></description><pubDate>Thu, 24 Oct 2024 07:47:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=41933085</link><dc:creator>rahoulb</dc:creator><comments>https://news.ycombinator.com/item?id=41933085</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41933085</guid></item><item><title><![CDATA[New comment by rahoulb in "Sqlite3 WebAssembly"]]></title><description><![CDATA[
<p>Upvote for that book.<p>I read it a few months ago and was really impressed with how easy it was to read.<p>It starts out with simple stuff, like serialising data as JSON vs XML.  But it moves into complex areas - like how replication and WALs work, including different ways of handling consensus when using leader-leader replication and how Spanner needs atomic clocks to handle it.<p>But even the complex stuff was explained in a way that I understood, which is an immense achievement.</p>
]]></description><pubDate>Wed, 16 Oct 2024 10:26:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=41857486</link><dc:creator>rahoulb</dc:creator><comments>https://news.ycombinator.com/item?id=41857486</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41857486</guid></item><item><title><![CDATA[New comment by rahoulb in "Apple unveils 'Passwords' manager app at WWDC 2024"]]></title><description><![CDATA[
<p>The difference (in my experience) is if it works with Apple, it "just works".  If it doesn't work, it will never work.<p>It's a binary and you generally know the answer straight away.<p>Some people dislike it because they enjoy looking for answers and the freedom to change how things work.  Others like it because they don't want to spend their time searching and mucking about with configurations.</p>
]]></description><pubDate>Tue, 11 Jun 2024 08:18:26 +0000</pubDate><link>https://news.ycombinator.com/item?id=40643827</link><dc:creator>rahoulb</dc:creator><comments>https://news.ycombinator.com/item?id=40643827</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40643827</guid></item></channel></rss>