HNHacker News
TopNewBestAskShowJobs

spinningslate

1,966 karma · joined July 31, 2018

submissionscomments
spinningslate··on Apple Keynote now showing ads in its UI
True. But that’s advertising the product, not advertising in the product. It’s the latter that’s happening here. Imagine spending hundreds of thousands on a Ferrari, starting it up, and … finding an ad on the touch screen.
spinningslate··on Apple Keynote now showing ads in its UI
Even if they’re not:

> They make great devices

They make great hardware. They used to make great devices - but a great device needs the whole user experience to be great. Ad-ridden UI does not make for a great device. Doesn’t matter if it’s first or 3rd party ads.

It’s a great shame. Apple used to be the design standard to aspire to. Now it seems to have embraced enshitification. All because the market needs that share price to keep growing. And lacking leadership good enough to find another way.

spinningslate··on Understanding Frontier Artificial Intelligence
“To us” is pivotal there. Continuing GP’s thought experiment: what if the model that produced the output perceives that the human it was presented to offers no value in helping it learn further?
spinningslate··on Typst makes big strides
I find typst a joy to use, either in the online editor or locally. It’s the best combination I’ve yet come across of “write what you mean” - simple markdown-like syntax - with document layout and styling. Happily pay for a subscription even though most of the time I don’t use the online editor. Software worth paying for.
spinningslate··on KDE turns 30 and someone's brought an AI-native desktop proposal
It’s going to happen in windows and most likely Mac too. In both cases, all your data will be shipped off to the model providers and then out into the panopticon.

The open source desktop environments don’t have the profit motivator that drives the commercial alternatives. They’re driven to deliver their interpretation of great UI. We can each debate whether we agree with the vision or execution but that’s the motive.

If they can employ AI to help remove desktop friction - and it’s local and not shipping my data off to the surveillance machine - I’d be open to it.

In fact, if it could sort out KDE wallet’s amnesia for my wifi password, I’d give it a roll now…

spinningslate··on OpenSpec – A lightweight and configurable AI spec framework
that's a good question. UML - at least the mainstream version pushed by e.g. Rational - failed for many reasons. A couple pertinent to this discussion:

1. Lack of closed loop between the "spec" and working code (your spec rot point). The Rational Unified Process(RUP) was a grossly inefficient, heavily manual undertaking. Mapping between artefacts - e.g. "Platform Independent Models" and "Platform Specific Models" was a manual, largely heuristic based approach. As a consequence the models were not generally kept up to date as the project evolved.

2. User experience mismatch. Developers were asked to create diagrams instead of writing code. Tool usability was poor ("write code with a mouse") and the artefacts didn't fit well with necessary tools like diffing and source code control (try diffing an xml file textually).

Coding agents have some potential for alleviating (1) in that they can read the result code and, at least to some extent, ensure spec and code are in sync.

(2) is more open. Some users - those proportionally more interested in solving the problem than designing/writing code - are more comfortable with natural-language-based specs and exploration. Those more experienced/comfortable with code will likely see those specs more akin to UML diagrams: a distraction from the real thing.

spinningslate··on A Design Space Exploration of Async/Await
> Yes, golang managed to create dynamic stacks, but this required major support from compiler and so unlikely to appear in existing languages

That's true but I'm puzzled by the decision rationale. It's undeniably a major undertaking to add first class, fine-grained processes to a language and its runtime. But time invested there gets the multiplicative upside that all language users benefit from the investment. Instead, Async/Await transfers the complexity to users of the language, as TFA describes.

As an Erlang and now gleam developer, I'm continuously grateful for the BEAM's support for fine-grained processes (note these are VM processes, not OS level). If I want to do things in parallel, I spawn a new process to do it. Do I want that concurrency because of io latency or parallel computation? Doesn't matter. Processes handle both. If I want an actor - a long(ish) lived "object" that responds to messages sent to it - I spawn it as a process. If I want to communicate between processes, I send a message. That's the only choice. No shared memory so no semaphores, locks and whatnot.

I never have to think "hmm, should this function be sync or async?" and reason about the transitive implications through the entire call stack. I write functions to calculate values. If I want function A to be called after function B in program 1, I write them sequentially. If I want to run them concurrently in program 2, I spawn them in separate processes. Concurrency is a decision at the calling site, not when writing the function being called.

One concurrency primitive that meets all the needs. The reduction in cognitive load is palpable compared to Python (the other language I use regularly).

The usual reaction is "yeah but performance". I've never found this to be an issue in real life. Sure there are benchmarks that show C/Rust/C#/whatever is faster, often meaningfully so. In practice, for my needs: never been a problem.

I'm ever more grateful for the elegance and consistency of the BEAM concurrency model. From an ergonomic perspective, Async/Await feels like a poor abstraction by comparison.

That's not to say the BEAM (or its languages) is the final word in concurrency. The strong encapsulation boundaries from Structured Concurrency[0] would be a useful addition. Though even there, Erlang's supervisor hierarchies provide a a similar mechanism. Dataflow is another interesting area (many task-concurrent design questions are essentially dataflow problems).

Even without improvement though I'd still take Erlang's approach over Async/Await every day.

[0] https://en.wikipedia.org/wiki/Structured_concurrency

spinningslate··on Bespoke: A programming language for people who say please
Same here:

> Colour is the namespace for values of A Distinguished Colour. Color is evidence that the source has arrived without a proper education.

Laughed unreasonably hard at that. Been a less than pleasantly civilised day at work, this was the relief I didn’t know I needed.

spinningslate··on If this is true, the hyperscalers are toast
Exactly. Seems naive at best for an investment consultant to look narrowly at current model capability and not consider the broader market. For example:

1. The hyperscalers are in a positive reinforcement loop. Despite any suggestions to the contrary they keep getting bigger. And can, er, “influence” government policy/officials and anything else needed to keep it that way.

2. The frontier labs and their investors. Another self-fulfilling reinforcement loop. Witness the circular gymnastics among OAI/Anthropic, Microsoft/Amazon and Nvidia

3. Data. No-one believes that Zuckerberg and co are going to say “great, we can just run the models on devices we don’t own and stop the surveillance economy because, y’know, privacy matters and we really care about mental health”.

And then there’s data centre locations and “yeah but jobs” even though your power bills are going up, and “why run your own data centre Mrs CTO, let us do it for you and save all that capex and those pesky employees you need to do it”.

Don’t get me wrong: I’m rooting for local, open weight/source models. But “hey look they benchmark well” is an unhelpfully narrow basis to forecast the demise of central hyperscaler hosting.

spinningslate··on Alibaba to ban Claude Code in workplace over alleged backdoor risks, source says
> an environment that favors profit above everything will naturally select for individuals who are unencumbered by such hindrances.

Exactly. Dairy farms optimise for milk production so favour cows that produce the most milk.

The market economy optimises for profit so favours those most willing/able to generate it. Zuckerberg, Musk, Thiel, Andreesen and co are products of the system.

spinningslate··on Zuckerberg's war on whistleblowers
I’d hazard a guess they might be referring to an ex-British politician who went on to have a high profile role in comms at meta.
spinningslate··on Is Meta destroying its engineering organization?
> Id honestly wager that at you and most of the people who are agreeing with you in the comments don't make the meta SDE salary, and if offered the 300k/year positions at Meta, even for a limited time, you would absolutely take it

Not OP but I can say with 100% truth and certainty that it wouldn’t matter how much money they offered - I would not work for meta. Some things matter more than money.

spinningslate··on Sweet Jeebus, macOS 27 Golden Gate Removes the Dumb Icons from Menu Items
Exactly this. The “one UI to rule them all” paradigm has been a persistent, recurring flaw for decades. It probably hit its lowest (to date) with the exhortations to “mobile first design”. The motivation for that was reasonable: conventional desktop UIs of the time didn’t render on mobile. However the ensuing “mobile first” instead became “mobile only” - and consequently wide screen displays with buttons the size of elephants.

Phones and desktops are so radically different that your sedan/bulldozer analogy seems like shades of grey. It’s more like taking a Saturn V rocket to the local shop for a pint of milk.

spinningslate··on The hypocrisy of cyberlibertarianism
Yes, I would like to see a full cost comparison. Transferring one time digitally will no doubt cost (a lot) less than physical manufacture and distribution. But it’s not one time transfer: it’s streaming on demand, every time each person listens to each track, because the economic model is rental not purchase.

I use streaming services. I like the flexibility and ubiquity of access. But my favourite music I still buy on cd or vinyl. Why? Because it means I’m not subject to the whims of a megacorp removing access and it means more goes to the artist. I’ve been buying music for 40 years and still listen to some of stuff I bought then. I hope to live long enough to do the same for the music I buy now.

spinningslate··on The hypocrisy of cyberlibertarianism
I would like to see a full cost comparison. Centralised storage - replicated, distributed and maintained online as necessary - vs media that, once manufactured and distributed, essentially costs nothing to maintain. iPods/phones get replaced much more frequently than LPs/casettes/CDs. And that’s just the resource consumption comparison. There’s then the economic polarisation of wealth to the small handful of online music renters vs distributed ownership (of copies: the original work of art remains with the artist, at least in theory).
spinningslate··on The hypocrisy of cyberlibertarianism
Instead of what - vast data centres full of electronics, consuming huge quantities of electricity, controlled by techno-feudalistic megacorps who keep almost all of the money and supply a pittance to the artists? Everything has a cost but those records, CDs and cassettes look like a good deal from here. I still have LPs I inherited from my parents. They still play on my 20 year old turntable.
spinningslate··on Statecharts: hierarchical state machines
> But I think it corresponds to 8 separate states in an FSM (or statechart? not sure)

In a conventional FSM yes but not a statechart. Statecharts support parallel regions within a single state. You’d have 3 regions for your example: one waiting for each person. There would be 4 states total: one to wait on each person, each in its own region, plus the superstate. The superstate would exit when all 3 “waiting for person <x>” sub states exited, independent of their sequence.

I’m with you on Petri nets though, very helpful for modelling concurrent behaviour.

spinningslate··on Ada, Its Design, and the Language That Built the Languages
Thanks, that’s helpful. My wife is a teacher and talks about knowledge being recreated, not relearned: IOW it’s new to the learner even if known by the teacher. Hadn’t put those things together before.
spinningslate··on Ada, Its Design, and the Language That Built the Languages
Erm, well, the comment wasn’t AI generated, it was by me - a warts and all human. The sibling comments say TFA is AI generated and I’ll be the first to admit I didn’t spot that. Still found it interesting though.
spinningslate··on Ada, its design, and the language that built the languages
Wonderful article and a good fit with HN’s motto of “move slowly and preserve things” as opposed to Silicon Valley’s jingoistic “move fast and break things”.

It highlights the often perplexing human tendency to reinvent rather than reuse. Why do we, as a species, ignore hard-won experience and instead restart? In doing so, often making mistakes that could have been avoided if we’d taken the time or had the curiosity/humility to learn from others. This seems particularly prevalent in software: “standing on the feet of giants” is a default rather than exception.

That aside, the article was thoroughly educational and enjoyable. I came away with much-deepened insight and admiration for those involved in researching, designing and building the language. Resolved to find and read the referenced “steelman” and language design rationale papers.

spinningslate··on Lean proved this program correct; then I found a bug
This is the biggest risk with the rejuvenated interest in formal proof. That LLMs can generate proofs is useful. Proof assistants that can check them (Lean/FStar/Isabelle/...) similarly so.

But it just moves the question to whether the theorems covered in the proof are sufficient. Underlying it all is a simple question:

Does the system meet its intended purpose?

To which the next question is:

What is the intended purpose?

Describing that is the holy grail of requirements specification. Natural language, behaviour-driven development, test-driven development and a host of other approaches attempt to bridge the gap between implicit purpose and explicit specification. Proof assistants are another tool in that box.

It's also one of the key motivators for iterative development: putting software in front of users (or their proxies) is still the primary means of validation for a large class of systems.

None of which is implied criticism of any of those approaches. Equally, none completely solves the problem. There is a risk that formal proofs, combined with proof assistants, are trumpeted as "the way" to mitigate the risk that LLM-developed apps don't perform as intended.

They might help. They can show that code is correct with respect to some specification, and that the specification is self-consistent. They cannot prove that the specification is complete with regards its intended purpose.

spinningslate··on Jolla phone – a full-stack European alternative
Jolla has announced a new phone using its Sailfish OS so providing a full-stack European alternative to the Android/Apple duopoly.
spinningslate··on Microgpt
That’s beautifully done, thanks for posting. As helpful again to an ML novice like me as Karpathy’s original.
spinningslate··on Mark Zuckerberg to testify in landmark social media trial
All true but it's a circular argument: these are unhealthy products because they're _designed_ that way. That design is directed from the top - no more so that Facebook/Instagram. Zuckerberg retains a controlling interest in Meta so he can't use the excuse of other public firms where CEOs throw up their hands and say "yeah, but we need to deliver shareholder return - it's out of my hands". Zuckerberg could choose differently. As GP notes, he hasn't - he's gone consistently hard the other way.

> It’s clear, people want to be addicted to social media

I'd say people are susceptible to addiction rather than wanting it. Suppliers of any addictive product - whether its tobacco, class A drugs, alcohol, gambling or social media - know that. Going too hard the other way into full prohibition is impractical because it starts to impinge on civil liberties: as a capable adult, why shouldn't I be able to smoke/drink/doomscroll instagram if I want?

That's why it's dificult; neither extreme liberty nor extreme prohibition is the answer. It's a grey area as GP notes. The trouble is it creates opportunities for people like Zuckerberg to exploit the middle ground and amass huge personal wealth paid for, in part, by the health detriment of those unable to self-regulate the addiction.

spinningslate··on Design Thinking Books (2024)
I think that's the point. The underpinning exhortation is to "think about design" where the outcome is something that successfully addresses users needs, is feasible to create, and commercially viable.

"Design Thinking" as a brand has codified that in several ways - not all successful. But the underlying principle is sound: there are plenty of examples of products/services that failed to address one or more of the 3 dimensions.

I found this quote from the linked article [0] more helpful:

> Design thinking can be described as a discipline that uses the designer’s sensibility and methods to match people’s needs with what is technologically feasible and what a viable business strategy can convert into customer value and market opportunity.

[0]: https://www.designorate.com/design-thinking-guide-what-why-h...

spinningslate··on LWN is currently under the heaviest scraper attack seen yet
I’m going to presume good faith rather than trolling. Some questions for you:

1. Coding assistants have emerged as as one of the primary commercial opportunities for AI models. As GP pointed out, LWN is the primary discussion for kernel development. If you were gathering training data for a model, and coding assistance is one of your goals, and you know of a primary sources of open source development expertise, would you:

  (a) ignore it because it’s in a quaint old format, or

  (b) slurp up as much as you can?
2. If you’d previously slurped it up, and are now collating data for a new training run, and you know it’s an active mailing list that will have new content since you last crawled it, would you:

  (a) carefully and respectfully leave it be, because you still get benefit from the previous content even though there’s now more and it’s up to date, or

  (b) hoover up every last drop because anything you can do to get an edge over your competitors means you get your brief moment of glory in the benchmarks when you release?
spinningslate··on Spec-Driven Development: The Waterfall Strikes Back
Extend your reasoning.

> it's really just a spec that gets turned into the thing we actually run. It's just that the building process is fully automated. What we do when we create software is creating a specification in source code form.

Agree. My favourite description of software development is specification and translation - done iteratively.

Today, there are two primary phases:

1. Specification by a non-developer and the translation of that into code. The former is led by BAs/PMs etc and the output is feature specs/user stories/acceptance tests etc. The latter id done by developers: they translate the specs into code.

2. The resulting code is also, as you say, a spec. It gets translated into something the machine can run. This is automated by a compiler/interpreter (perhaps in multiple steps, e.g. when a VM is involved).

There have been several attempts over the years to automate the first step. COBOL was probably the first; since then we've had 4GLs, CASE tools, UML among others. They were all trying to close the gap: to take phase 1 specification closer to what non-developers can write - with the result automatically translated to working code.

Spec-driven development is another attempt at this. The translator (LLM) is quite different to previous efforts because it's non-deterministic. That brings some challenges but also offers opportunities to use input language that isn't constrained to be interpretable by conventional means (parsers implementing formal grammars).

We're in the early days of spec-driven. It may fail like its predecessors or it may not. But first order, there's nothing sacrosanct about the use of 3rd generation languages as the means to represent the specification. The pivotal challenge is whether translation from the starting specification can be reliably translated to working software.

If it can (big if) then economics will win out.

spinningslate··on Migrating from AWS to Hetzner
Related: Michael Kennedy moved TalkPython [0] hosting to Hetner in 2024. There's a blog about the move here [1] and a follow up after Hetzner changed some pricing policy [2].

He's also just released a book on hosting scale production Python apps [3]. Haven't read yet though would assume it'll get covered there in more detail too.

--

[0] https://talkpython.fm/

[1] https://talkpython.fm/blog/posts/we-have-moved-to-hetzner/

[2] https://talkpython.fm/blog/posts/update-on-hetzner-changes-p...

[3] https://talkpython.fm/books/python-in-production

spinningslate··on Igalia, Servo, and the Sovereign Tech Fund
yes, though perhaps stating the obvious: it depends what they do with it.

Ladybird currently has 8 full-time devs [1] and is making impressive progress on delivering a browser from scratch. Wise investment in small, focused, capable teams can go a long way if they're not chasing VC-driven Unicorn status (or in stasis as a Google anti-trust diversion).

That's not challenging your point though: in the face of competing budgets at US tech giants, EUR17Mn still barely registers above noise level. Nevertheless, it's a start. We can only hope it grows and doesn't get shut down by some political lobbying by the aforementioned US behemoths. A modest budget might actually help there - not yet big enough to cause concern to incumbents.

[1]: https://ladybird.org/

spinningslate··on Why our website looks like an operating system
> The EU law is fine

Kind of. The intent is good and the wording disallows some of the dark patterns. The challenge is that it stands square in the path of the adtech surveillance behemoths. That we ended up with the cesspit of cookie banners is a result of (almost) immovable object meeting (almost) irresistable force. There was simply no way that Google, Facebook et al were ever going to comply with the intent of the law: it's their business not to.

The only way we might have got a better outcome was for the EU to quickly respond and say "nope, cookie banners aren't compliant with the law". That would have been incredibly difficult to do in practice. You can bet your Bay Area mortgage that Big Tech will have had legions of smart lawyers pouring over how to comply with the letter whilst completely ignoring the intent.

Page 1 of 11Next →