Hacker Newsnew | past | comments | ask | show | jobs | submit | rrradical's commentslogin

I've always wondered why I can't pay some small fee (20 cents? $1?) to read an article. Why it have to be an entire subscription? If I put $20 / month into an account and then spend that bit by bit on high quality articles from different sites I'd gladly do that.

because payment processors hate small payments and punish accordingly (with flat fee +%)

That shouldn't really be a problem if there's an intermediary that takes the payment and distributes it.

We had a service that did this in the Netherlands (Blendle). They had a lot of the big Dutch media titles on-board. It failed and they pivoted to a crappy subscription service.

The model just doesn't work at this point.


Inkl, on the other hand, is still alive and kicking. If you're ok with their selection of sources it's 9.99 per month o 99.99 per year. I still have a pay-per-read subscription, which I prefer to the subscription model, but I'm afraid they don't offer that anymore.

Yes I know blendle but this was decades ago. In a market that was completely different, where paywalls weren't yet a thing and they would just display ads. It was "ads vs paying a bit". Not really a big incentive.

I think in this day and age where most news outlets simply give you a paywall I think this will work just fine. Because now the alternative is just not reading the content (or paying a sub which is ridiculous for a site you view a couple times a month)


Their hope with subscriptions is that there's value to you visiting more than a couple times per month.

Anecdotally, this works for me - I pay for a handful of subs, and I don't use any news aggregators or feeds - the sites with subs I pay for cover everything of interest to me.


1. You can be sure that most people still won't pay to read the article, so it might not be worth doing at all

2. "Number of subscribers" is a real, meaningful metric used across the industry for various purposes, including informing advertisers and calculating recurring revenue. Your proposal, on the other hand, is somewhat odd and questionable that people probably don't know how to make use of.



Throwing up hands and saying: internalizing the externalized cost is "ridiculously expensive" is not proof it doesn't work.

The examples of the a la carte exercise brands referenced (SoulCycle, etc) are quite ineffective arguments -- those are successful businesses with loyal, high retention users because they provide specific, high value products to the users.


If you’re looking for concrete examples of why it doesn’t work why not study the various companies that have tried this and failed?

It would be cheaper for you but not very profitable for them.

It's only extra money for them because I'm never ever going to subscribe a monthly sub to a site I read one or two articles a month from. So they're not losing anything from me, only gaining. It's basically free money.

Right now I use archive.ph because I can but if I couldn't (if they make it a hard block) I would just ignore links to said outlet.

I sub to a few outlets which I read daily. But I couldn't possibly sub to every single outlet I see a link from. And I wouldn't anyway.

However if I could click '€0.50 to read this article' then yeah I would if it seemed interesting. Especially real journalism, not reuters copy/paste.

And for a regular reader who reads said site daily, it still makes sense to take out a 10-20 bucks a month sub. Still cheaper than paying per read.


It really depends, there are so many peoole who just don't want more than a couple subscriptions.

The subscriptiin model only favor the giants like netflix, spotify and NYTimes but not necessarily the smaller players.


I tried Orion about a year ago. I tried using the profile sandboxing. Logging into my google account in one profile also logged me in in another profile.

I can definitely excuse some bugs (there were crashes for example that I didn’t overly mind; I understand I was using prerelease software). But something like account containers should be built fundamentally to disallow any data sharing. If data sharing is a bug, and not fundamentally disallowed by the architecture, then it’s going to happen again later.

So for that reason I’m not bullish on orion.


I'd be interested if the issue you ran into was actually due to poor architecture or just something not fully implemented in the pre-release. Unfortunately, it's closed source - so hard to tell from the outside.


Well it was definitely a bug. It worked in some cases (I think it even worked in google at first, and then a few days later it manifested). And the feature was advertised, even though, again, they never claimed the software to be release quality.

But my point is that, similar to security, you don't want to build this kind of feature piece meal. Either the containers are fundamentally walled off or they aren't.


I understand what your claim is, I just disagree it's that blanket. You could e.g. absolutely build the UI for a profile switcher before your implementation of the backend changes are merged without carrying implications of how well that will handle isolation in the same way in security you could implement the null cipher in TLS to test that portion of the code without it forever implying you have bad encryption.


As a haskell programmer, all of that was easily readable.


As a non-Haskell programmer, all of that was easily readable. Straightforward words for functions makes that pretty easy.


As a C programmer, that's the worst FizzBuzz implementation ever. You're not supposed to special-case % 15, just

    bool m3 = !(i % 3);
    bool m5 = !(i % 5);
    if (m3) printf("Fizz");
    if (m5) printf("Buzz");
    if (m3 || m5) printf("\n");
You can turn in your visitor badge at the front desk, and they'll call you an Uber.


They have

   n `mod` 3 == 0 && n `mod` 5 == 0
And you have

   if (m3 || m5)
I really don't see what point you're trying to make here...


the article has a special string that says "fizz buzz",

they saying its unnecessary because if you go in order you first print "fizz", then print "buzz" which will always print "fizz buzz" for the equivalent of " mod 15" you don't need a special string that like.

the "if (m3 || m5)" is just printing a newline because under that condition you printed something earlier.


It’s still an extra condition. So it really doesn’t matter if you’re printing “Fizz Buzz” string or not, it’s the same amount of branching.


add another bool that stores the information to write a newline whenever either fizz or buzz happen and you don't need the third branch


I agree. But you're also not supposed to have separate booleans for each special print, because when you have many special prints it gets annoying to extend.

I've always liked this solutiin, which avoids that: https://archive.is/KJ39B

    fizzbuzz i =
      fromMaybe (show i) . mconcat $
        [ "fizz" <$ guard (i `rem` 3 == 0)
        , "buzz" <$ guard (i `rem` 5 == 0)
        ]

    main =
      for_ [1..100] $
        putStrLn . fizzbuzz
This allows you to add special prints by adding just the one line of code, changing nothing else.


Nice. C looks like a safe language with the casual using an int as a bool.


Depends which of the hundreds of C compilers you used, as some "bool" are cast as uint8_t, others unsigned char, and others bit-packed with an optimizer.

With C, any claim one makes about repeatability is always wrong at some point depending on the version compliance.

I like C, but Haskell is a happy optimistic syntax... Julia is probably the language I'd wager becoming more relevant as Moore's laws corpse begins to stink. =3


I can't tell if you're being serious or making a joke.


That's an extra system call for printing the newline.


Well, duh, yeah, if you call setbuf(stdio, NULL) first.


Uh, setbuf(stdout, NULL)

I'll call my own Uber, thanks


I think this person wants a space between Fizz and Buzz.


Exactly, which means the interviewer didn't even state the problem correctly. The train had already jumped the rails by the time the candidate started writing. Hopefully HR will agree that they deserve each other.


And yet it's funny how many times you see the supposed "correct" solution missing that 3x5=15. I wonder how AI will answer fizzbuzz, is that part of any standard benchmark?


I mean, all trolling aside, that's kind of the idea behind FizzBuzz. If you don't notice that 15 is divisible by 3 and 5 and take advantage of that somehow in your logic, or at least acknowledge it, you really cannot be said to have aced the problem, even if your program's output is technically correct.

Phrasing the question in a way that doesn't leave room for that insight is also a pretty big goof.

As for AI, yes, FizzBuzz is trivial for any model because it's so well-represented in the training data. The common benchmarks involve things like "Render a physically-correct bouncing ball inside a rotating hexagon," or something else that is too complex to simply regurgitate.


and people say haskell is hard to get


There were a couple of places that took me a couple reads to figure out, like the fact that `(x:)` was "prepend". But overall, I followed the code pretty well. From the context of someone that wrote a small amount of Haskell a decade ago.


The : operator is the linked list data constructor. It takes an element and a list and creates a new linked list by linking the element to the existing list. It does the opposite when used in a pattern match: separates out the first element in a linked list.

It is also an operator, meaning it can be used with infix notation, as in (x : xs). Haskell has something called operator sections, where if one supplies only one of the arguments to an operator it will return a function expecting the other argument. In other words

    (x:) == \xs -> (x:xs)
and

    (:xs) == \x -> (x:xs)
This can be used as in this article, to create a function that prepends x to any list. Another common example is (1+) which increments any number it is given, or (:[]) which turns any value into a one-element list.

It can also be used much more cleverly -- especially considering that any two-argument function can be turned into an operator with backticks -- but then (in my opinion) readability starts to suffer.


So it's the equivalent of Lisp's cons then?


Yeah so prepend is just currying cons with the head


Yes, : is pronounced cons.


It’s partial application of cons via the operator, admittedly a poor choice from Haskell, a language which likes operators a bit too much. I think eta-expansion makes the whole thing clearer: (\xs -> x:xs) but most Haskellers would disagree.

The article also features examples of point-free style, another unfortunate trend for readability.

As long as you use operators sparingly, don’t abuse partial application and prefer explicit lambdas to composition, Haskell is fairly readable. The issue is that approximately no Haskeller writes Haskell this way.


I don't use Haskell nearly enough to call myself a Haskeller but I will still disagree. Yes, operator sections are yet another thing to learn but I find them very intuitive, and actually easier to read than the equivalent lambda expression because I don't have to match up the bound variable.

(For example, (\x -> x ++ y) and (\y -> x ++ y) look pretty similar to me at first glance, but (++y) and (x++) are immediately distinguishable.)

Of course, this is reliant on knowing the operators but that seems like a mostly orthogonal issue to me: You still need to know the operator in the lambda expression. That said, the niceness of sections gives people yet another reason to introduce operators for their stuff when arguably they already are too prevalent.


It’s not that those language features are hard to understand. They’re all syntactic and don’t bring a ton of theory with them. It’s just that the tower of understanding for basic programs is very tall, and the tendency to introduce abstraction essentially never ends. I spent ten years with Haskell as my go-to language and there are still things I don’t understand and haven’t explored. It’s not like that with Python, or Go, or even Rust.


I honestly just skimmed the code and assumed it probably does what I would guess it does. It seemed to make sense and be straightforward... assuming my guesses were right, I guess?


So the AI wrote a bug; but if humans wouldn’t catch it in code review, then obviously they could have written the same bug. Which shouldn’t be surprising because LLMs didn’t invent the concept of bugs.

I use LLMs maybe a few times a month but I don’t really follow this argument against them.


Code reviewing is not the same thing as writing code. When you're writing code you're supposed to look at the documentation and do some exploration before the final code is pushed.

It would be pretty easy for most code reviewers to miss this type of bug in a code review, because they aren't always looking for that kind of bug, they aren't always looking at the AWS documentation while reviewing the code.

Yes, people could also make the same error, but at least they have a chance at understanding the documentation and limits where the LLM has no such ability to reason and understand consequences.


I'm having a lot of trouble understanding your definition of work. Even if you meant perform- most athletes have to perform continuously outside out of games in order to earn minutes in game. And touring musicians are performing way more hours than you cite.

Imagine if programmers were like NFL players, constantly measured on their performance against their peers.


NFL players wouldn’t have time to do drills if their games last 8 hours and they need to play everyday.


I think a great example of the point you're trying to make is taxi drivers and motorsport pilots.


FYI to anyone out there considering this- don't plant tropical milkweed:

"Another problem with tropical milkweed is that it harbors a one-celled parasite, Ophryocystis elektroscirrha, called OE for short. Because tropical milkweed does not die out in winter, the parasite does not die back either. Monarchs with large numbers of this parasite – which coevolved with monarchs and does not infect other species – are born with crumpled wings and cannot fly; the less infected are smaller, have shorter lifespans, fly poorly or are unsuccessful at mating. Only the healthiest butterflies reach overwintering areas in Mexico; butterflies with this parasite do not survive long migrations. "

https://www.cambridgeday.com/2024/08/03/more-abut-monarch-bu...


Additionally don't plant butterfly bush, it's considered an invasive noxious weed and illegal in a few US states (at least Washington and Oregon, possibly New York). https://invasivespecies.wa.gov/wp-content/uploads/2019/07/Bu...


This always seems like a stretch to me? I have two large butterfly bushes in my ~2000 sqft pollinator garden (NorCal) and they seem to perform only moderately; I.e. they attract significantly less pollinators than almost any other plant in the garden. Lavender, salvia, sage, rosemary, Mexican sage, Mexican marigolds, poppies, and daisies all attract way more pollinators even though they are smaller.


Those bushes not attracting many pollinators doesn't make them less invasive or noxious.


True, but they aren’t invasive here (NorCal, they are “potentially invasive” because they are invasive elsewhere, but do not spread) and native butterflies can use them as a host species here.


I don't know about the US but in most of France and Belgium they are everywhere, they grow like weeds, including on badly maintained brickwork, they seem to be especially suited to urban areas.

All these other plants you mentioned do attract pollinators but they don't propagate as well, they are only where they have been planted at least around here. Even on the warmer Atlantic coast, rosemary and lavender grow well but they don't propagate nearly as much by themselves as butterfly bush (Buddleja) does.


I have two butterfly bushes in upstate NY. They are not invasive here; they struggle to survive cold winters (being killed back to the roots and recovering only partially.) They show no signs of spreading. When I lived near Chicago, they wouldn't survive cold winters at all.


It's super hardy and opportunistic. It's not uncommon here in the UK to see it growing out of cracks in brickwork at the tops of buildings.


The best case is to use the native Milkweed in your geo. Source that if you can. However, in a lot of places only tropical milkweed is available. You can still grow it, but like the parent suggests, it is a problem if you let it survive the winter. Cut it down to the roots post summer.


??? You can order seedlings online.


I believe also quads also deform better during animation.


I switched from opengl b/c I was tired of staring at a black screen with no debugging information (sure...glGetError) when I tried to implement a non-trivial feature. After tons of work to learn vulkan and getting it up and running, I still think it was worth it.



Can't believe no one has yet mentioned the full volume commercials they play beforehand. I'm not talking about trailers, which are benign or even enjoyable sometimes. But you used to be able to arrive a little early and chat with your friends before the trailers start. Now they blast ads at you. Who would even buy those ads? People know not to show up on time to avoid them, so it's a mostly empty theatre anyway.


It's because the advertising industry in general has gotten utterly abusive of what they believe to be their god-given right to your eyeballs, ears, and attention at all times and in all places that it's possible to advertise at you. If they could beam advertisements directly into your brain like the joke in Futurama, you'd never get a moment's peace.


For a long time now I don't even come to the theater until after about 10 minutes from the official start time.


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: