skysight-inc/HackerNews huggingface dataset:
> “However, Google is now modifying its rules to require Bandcamp (and other apps like it) to exclusively use Google Play Billing for payments for digital goods and services, and pay a revenue share to Google,” [Bandcamp CEO Ethan] Diamond says.

A great example of two polar opposite worlds:

- Bandcamp: lets artists set their prices, lets consumers purchase lossless DRM-free files. Mobile site works fine without Google. No uninvited algorithmic feeds ruining your personally curated collection.

- Google: entire business relies on the open web, yet the mobile platform follows a sharecropping model from the 1800s, the video platform pays creators fractions of a penny per view, and everything is nailed down with DRM.
Well "left" and "right" are kinda under-specified terms, and a simplistic one-dimensional model does not even begin to capture the full range of political orientations, so it's kinda hard to talk about this. At one time the "tech world" seemed to skew fairly heavily libertarian relative to the general population, but libertarianism does not fit anywhere in particular on the one-dimensional left/right continuum. As many libertarians like to say "We are left of Left and right of Right at the same time."

All of that said, I don't think there's any question that has been something of a shift in the prevailing zeitgeist among "tech people". But properly categorizing, much less explaining, that is a job I'll leave for somebody else.
> Although, relative to ICE racing, the bar is low.

You do realize the actual ICE emissions dwarf in comparison to the whole picture right? If you take Formula 1 for example, they run 20 cars that will each burn through about 200-300kg of fossil fuel per race weekend. Even so, the actual emissions from the cars only accounts for 0.7% of the total CO2 emissions of a whole season of F1. Almost half the emissions are just from transporting equipment from race to race (via air, sea and land). About a quarter is transporting the personnel. Almost all of these still apply to Formula E.
I got in the habit years ago of writing dates “27 February 2013” - recommended by some guidelines for lab notebooks as the least ambiguous.
Even if that was the case, it might actually be desirable. I think you can't appreciate the uniqueness in the other cases if you haven't met the general purpose mainstream.
One sees this a lot, but why do you filter interest in subjects by how much the proponents look like you -- don't you find it really limiting? In practice, how does this work, do you get in to someone's thing and then think "hang on, they're not like me, better stop being inspired".

For me inspiration comes from people, and when I think about whether they're similar to me mostly I find they're not at all.

Clearly inspiration must work entirely differently for you as you say physical similarity is vital. Can you explain that? Is it prejudice?
I feel justifiably #owned!
> I think I would say overall that I like the idea of Go better than I like Go itself. I like the idea of a simple language, but not the choices they made. I like the idea of simple tooling, but don't find their tooling simple to use

I think I just had a revelation moment. This is exactly how I feel about Go. I keep trying to use it for side projects and I think I'm lying to myself... It's not Go what I like, but the idea of it.
That’s pretty good for a dead language, but not so much for a living one to the OP’s point.
I think they name them all in Figure 10 in the actual paper [1]. But it doesn't seem to contain a rank ordering of the mathematicians that is easy to recover.

Also, it appears there is data duplication with the first four names appearing twice in the list (first four and last four).

[1] https://epjdatascience.springeropen.com/articles/10.1140/epj...
Example please? (Non-programmer here; I'm sorta familiar with s-exprs but can't quite picture what you have in mind.)
I was hoping not to have to dig through source material but i agree i do wonder how many Ramanujan style (isolated) mathematicians are in the field.
Scripting Languages II: Perl, Lua, Groovy
Sure, but I think '== might be a function call' is a lot less confusing than '== sometimes compares for equal value and sometimes doesn't'
> Binance is blocking certain users (linked to Russian government) (1) How is this possible when crypto is supposed to be decentralized?

The cryptocurrencies may be 'decentralized' but the exchanges are not and they can block or deny access to the customer's wallet address (with KYC/AML information) from sending and receiving the funds by disabling the deposit and withdraw functions, since these wallets are sitting on an exchange i.e custodial wallets.

They can trace up addresses from a hack, tornado wallet address, funds transferred from one wallet address and linked to a sanctioned address and block associations with that as soon as the money touches their custodial wallets.

That is why custodial wallets are always associated with 'not your keys not your coins' and why the CEO of another crypto exchange has told their customers to stop using centralized exchanges. [0] Non-custodial wallets are 'decentralized'.

So, as soon as you asked:

> Can those users not access their wallets bypassing Binance's controls?

The answer is they cannot access them not bypass it. Hence, 'Not your keys not your coins'.

[0] https://cryptobriefing.com/kraken-ceo-warns-users-to-get-you...
Yea this was my main problem with this article as well. I started reading because I was interested in what this match made in Hell was, and then 10 minutes into the article I was wondering why I was reading about how Rust works... I understand that sometimes you need to build up to a point, but at least tell me within the first few paragraphs what the overall goal of the article is.

Also, I feel like people who program in Rust are constantly telling everyone why you should switch to Rust. It's just weird to me. A programming language is a tool, and if you've found a great tool I get being excited about it and wanting people to share in that enjoyment. But it's also annoying when they're constantly trying to convince me that I have problems with my current language of choice, even if I'm perfectly content with my language of choice. Like, I don't see python users or C users going around proselytizing to the general public. Are there any other programming languages that carry this kind of preachy attitude with them? (I can't think of a better word to describe it).
Searching HN for it brings up this explanation as the first hit: https://news.ycombinator.com/item?id=5072224
So pleased to see the Leuchtturm 1917 dotted grid at the top of this list. It's been my go-to notebook for the last few years. It comes with some nice stickers for labeling so that you can find past notebooks on the shelf. Lots of colors are easily available on Amazon.

I wrap my latest notebook in a Coal Creek leather cover to look all fancy (and hold my phone and pen). https://www.coalcreekleather.com/collections/a5
My disappointment with Rust, that in no way diminishes how much I enjoy using it in my own time, is that I have a hard time recommending it for microservices, which are arguably an average project at an average company. The ecosystem just doesn't feel as fleshed out or complete as in Go. It's a shame because there's libraries in Rust that I adore like clap, serde, and diesel but when I last wanted to write something that integrates with AWS, I found a deprecated unofficial crate and a non-production-ready official crate from AWS.

I don't know whether to attribute this disappointment to the breadth of what Rust can be used for and the difficulty in doing all of them well, or a lack of wider/corporate buy-in for these use cases. It's a pity, because after getting past the initial learning curve I struggle to find anything wrong with the language itself.
So basically it’s an Erdös number post.
Happy to find someone interested in my project to build a next generation search engine. I can't reveal its name yet, there's still quite some work to do. I'm curious to read about your interest on it if you don't mind.
Why require types have a meaningful zero value?

It's not necessary for value semantics. You can require that values be initialized and the machinery for that doesn't seem that bad.

Zero values seem as arbitrary as requiring all types be equatable.
I'm a lead. Getting another lead role would be difficult. Managers in tech are uniformly bad in my experience. If I don't tolerate this then I'll have to tolerate some other form of ridiculousness, but while I'm young I can listen for the dog whistles and report them.

Edit: these kinds of managers will always screw you one day; usually that day is a day when your interests aren't as useful to them. It's a mentality (and behavior pattern) that Succession does a fantastic job of roasting. The trick is to read the writing on the wall and the room, find a new job, and bring all the homies.

This is why I refer to software as a team sport.
Why is that though? I used to watch Don shipleys YouTube channel about stolen valor quite religiously, seems like looking up dates of service/enlistment shouldn’t be that challenging
> And then feel bad about not feeling good.

This is the sort of thought pattern that is very possible to change, and for the reader unsure how, I'd highly recommend looking into CBT and similar therapies.
I'm gonna soften that intro. I was definitely riled up when I wrote that and I can express the same sentiment better now - as soon as I'm done tending to the DDoS attacks (sorry, unsollicited load testing) I'm receiving today.

edit: Done removing some salt from the intro, DDoS still flaring up now and then, I'll be busy hardening some more.
Cloudflare. Between Pages, Speed, Access, Workers, durable objects, KV store, R2, Images, etc they’re maybe a small handful of product releases away from being able to replace the providers you mentioned for many users and applications. Plus I’d wager that many applications can be built 100% on Cloudflare today (and are).
Benefits?
- Pricing. Compare pricing on Workers to functions across those platforms as one example. For many use cases you can use the Bundled pricing model. It’s insanely cheap. Crazy cheap. Then start looking at pricing on bandwidth (ESPECIALLY BANDWIDTH), KV, R2, DO, etc. You’ll be pleased.
- Pace and market disruption. AWS is 20 years old. That makes them essentially the IBM of cloud. No one ever got fired for buying AWS but seriously compare uptime, pricing, etc.
- Speed, uptime, performance. Cloudflare’s edge network and architecture is truly impressive. KV store? Workers? R2? Durable objects? Forget worrying about regions, etc. All of this and more runs at their edge in more than 270 cities worldwide.
- Less vendor lock-in, more standards. R2 is S3 compatible. Workers are actually WebWorkers. Pages is Jamstack.
I’m not exaggerating when I say that Workers (as one example) have 2x the performance at 1/4 the cost compared to Lambda. Then start looking at bandwidth…
In my mind where AWS truly shines is exactly why they’re the IBM of cloud. Support for enterprise, government, etc. Really complicated access and management, regulatory requirements, extensive customer requirements, an entire cottage industry and ecosystem of consultants for everything you can imagine, various supplemental SaaS offerings, the list goes on.
Everyone likes to think you can’t go wrong even just starting out with AWS. I don’t like to crush dreams but the reality is most efforts fail in a year or less and only what, maybe 1/10,00,000 projects/companies will ever need the full scale of what I just listed.
Not shilling Cloudflare - just a happy customer who’s truly baffled why Cloudflare’s full product suite isn’t leveraged more often and more fully.

Also forgot to mention - for compute providers, other storage, bandwidth, etc look at their bandwidth alliance. Free bandwidth to/from any of the members.
Willing and able to pay is the most accurate description. Typically decisions to purchase are described as constrained optimization problems with the constraint typically being a budget constraint.
Mid 20th century business attire for men is very much out, but for women it would register as hip and fashionable.
> Haskell's primary solution to this is to burn it all to the ground. Mutation doesn't cause any type problems because there isn't any.

This is true, but I think it is also misleading. Haskell has the same problem if you use unsafePerformIO to create a polymorphic IORef at top level. You can then use this IORef to subvert the type system. I think this is something many Haskell programmers are not fully aware of: unsafePerformIO doesn't just break referential transparency; it can also fundamentally break memory safety. Now, you may say that unsafePerformIO is obviously unsafe (it's in the name!) and should never be used. But if you look at many foundational Haskell libraries, you will find that they use unsafePerformIO or similar functions internally, usually for performance reasons. What are the rules that govern safe usage of unsafePerformIO? As far as I can determine, these rules are basically just GHC implementation details, and people often get them wrong. And if you break these rules, you don't just get a function that doesn't do what you expected - you may have subverted memory safety entirely.

I think this is an interesting conundrum. Haskell makes much stronger promises than SML, but if you break the rules, all bets are completely off.
Please, reread your argument. You claim that aside from child support, having a child is trivial for a man and that the social pressure is orders of magnitude higher for mothers. You then bring up shotgun weddings - where a man is forced under lethal threat to marry. That's sounds about as non-trivial as one can get...
If you really want to experience early hyper growth, let me know.

I work for CloudKitchens, new startup of Travis Kalanick.
I agree that the scruffy tech is a uniform of it's own. I used to do it consciously myself, partly as a "joking but really". Different images for different audiences or different aims.

As for friction, that diversity should be actively saught, not allowed through blindness.

That friction and diversity of approach and standards and reasoning is a good thing. I'm over 50 now so now I'm almost not allowed to express such reasoning because it is taken as self serving, but when I was 30 the old-timers in my shop were the people I admired the most, still do. Even though yes there were a few differences of opinion and approach that never really went away. I picked my battles instead of being a baby about every single thing, and they in turn actually respected my input when I decided to take stance on something, state my case, and force us both to explain and defend the different positions and hash it out. Either I convinced them or they convinced me, and whichever way that went, we did that.

There were a few things where neither convinced the other, but, really very few. It's tolerable and worth it. I got way more out of working with these people, and so did the company and our customers.

I don't think I was a incredibly mature 30 year old. I mean, I've seen some of my old newsgroup posts. I really wasn't :)
It not hiding your age. It's showing that you are still in touch with new things and able to go with the flow. It's not even that hard. If you're 55, just don't show up with a baggy suit and fat tie you bought in the 80s. This is good advice for anyone - know how to dress for an interview.
If you have two types, there should be a single type that "joins" them, in the sense that you can understand both of the original types as somehow being special cases of the join type.

A join is not necessarily a union, since the representations of the three types might be completely different, and also because the third type might contain many values that don't correspond to anything in the two original types. (It might be much bigger than the union.)

Mathematical lattices must also have "meets", which are like joins except down instead of up. I'm not sure that meets are as important as joins in this context.
Consfigurator 1.0.0
Not sure why you wouldn't want to go for one of the bigger three. The advantage of using them is that you can find help online very easily. Also easier to hire an aws or azure specialist.
Kotlin coroutines are amazing. They're built on very clever tech that converts fairly normal source code into a state machine when compiled. This has huge benefits and allows the programmer to break their code up without the hassle of explicitly programming callbacks, etc.

https://kotlinlang.org/spec/asynchronous-programming-with-co...

However... an unavoidable fact is that converted code works differently to other code. The programmer needs to know the difference. Normal and converted code compose together differently. The Kotlin compiler and type system helps keep track, but it can't paper over everything.

Having lightweight thread and continuations support directly in the VM makes things very much simpler for programmers (and compiler writers!) since the VM can handle the details of suspending/resuming and code composes together effortlessly, even without compiler support, so it works across languages and codebases.

I don't want to be critical about Kotlin. It's amazing what it achieves and I'm a big fan of this stuff. Here are some notes I wrote on something similar, Scala's experiments with compile-time delimited continuations: https://rd.nz/2009/02/delimited-continuations-in-scala_24.ht...

I think this is a general principle about compiler features vs runtime features. Having things in the runtime makes life a lot easier for everyone, at the cost of runtime complexity, of course.

Another one I'd like to see is native support for tail calls in Java. Kotlin, Scala, etc have to do compile-time tricks to get basic tail call support, but it doesn't work across functions well.

Scala and Kotlin both ask the programmer to add annotations where tail calls are needed, since the code gen so often fails.

https://kotlinlang.org/docs/functions.html#tail-recursive-fu...

https://www.scala-lang.org/api/3.x/scala/annotation/tailrec....

https://rd.nz/2009/04/tail-calls-tailrec-and-trampolines.htm...

As a side note, I can see that tail calls are planned for Project Loom too, but I haven't heard if that's implemented yet. Does anyone know the status?

"Project Loom is to intended to explore, incubate and deliver Java VM features and APIs built on top of them for the purpose of supporting easy-to-use, high-throughput lightweight concurrency and new programming models on the Java platform. This is accomplished by the addition of the following constructs:

* Virtual threads

* Delimited continuations

* Tail-call elimination"

https://wiki.openjdk.java.net/display/loom/Main
I'm surprised there's been many mentions of DigitalOcean, but none of Linode, which I think of as occupying almost the exact same space in terms of offerings.
Yes, I'd love to read it, if you have time to find the DOI. Thanks!
Thanks for hearing the feedback. FWIW I think you're putting out good content. Keep writing it for us, not the trolls :)
No one has mentioned Linode yet, I had a good experience with them around 10 years ago, seems like they have more cloud product offerings now.
Why did they go fully open-wheel when aiming for higher efficiency? I always thought that the wheels produce some brutal drag.
This is one of the warts I wish Go would fix (implementing Rust-like enums, and ideally getting rid of zero values and nils, but these things won’t happen). Even still, Go is the most productive language I’ve used because it turns out type-systems (cool though they are) are overrated—you only need enough of a type system to keep things documented for humans and tools. 95% type safety seems to be the sweet spot (peak productivity) after which productivity begins to rapidly diminish. It’s more important to have decent performance, good tooling (simple with sane defaults), small learning curve, great deployment story, etc.
That notion might seem plausible, but the author of Pipewire witnessed the entire PulseAudio process, so has strong motivation not to repeat its reception, and plenty of hindsight to help.

Notably, the developer of Jack, the universally admired professional audio system, now uses PipeWire via its Jack-compatible API. He is frequently here on HN.
If only Hetzner would bring bare metal to the U.S....
It’s a statement of how it is, not how it should be. Once you’re outside of expectations you get a much harder row to hoe.

Which can be somewhat countered by having a solid network by that time rolls around.
Linode.

- no nonsense prices

- solid hardware, with good, consistent performance & low steal (even on shared nodes, but dedicated is there if you need it)

- great support (humans you can call)

- adding more and more managed services over the last few years
Interesting. In my experience, I end up cleaning my house the next day, because I noticed that the light switch in my room isn't just a light switch, it's a dirty light switch. I'll see stains or smudges that I never noticed. Suddenly there are tons of details that I can see that just got smeared in "normal" waking life.
Luckily that must happen in the day time.
A4 hardback Leuchtturm square dotted notebook is the best I've ever used. A real joy!
Farewell old bird
Isn't that about co-authoring rather than teacher-pupil relationships?
What are some sensible (coherent, load-bearing, force-multiplying etc) tools that have terrible adoption?

Unreasonably open-ended question (suppose the scope is ML, or perhaps FP in general, or maybe even wider) - but I'm very curious.
Local intranet / work tools would actually be a good use case for this as the load is small (tens, hundreds, maybe thousands of employees at absolute most) and mostly the same repeat users so browser caching would make it snappy for them on future visits.

A public marketing page where it's the random internet of totally new/anonymous users who want to instantly find out info about your product would be the worst use case for this IMHO.
I don’t know about you, but I just interviewed in a black tshirt at FAANG and got an offer. What does dress have to do with anything?
I enjoy taking notes. A colleague sent me this link, so I'll post here to amuse him.

My favorite notebook is the National Brand "Engineering and Science Notebook" - which has become my go-to. [0]

I like to diagram, so having the reverse page be graph paper makes it easier for me. I also prefer spiral bound since they tend to hold up better in travel, but that's purely subjective.

[0] - https://www.amazon.com/dp/B001E69X52
Some complaints also seem like a lack of experience using the language. For example

Initialization with make behaves differently for maps and slices:

m := make(map[int]int, 10) // capacity = 10, length = 0
a := make([]int, 10) // capacity = 10, length = 10 (zero initialization)
b := make([]int, 0, 10) // capacity = 10, length = 0
So not only is there an inconsistency, the more common operation has a longer spelling.

In my experience, the two-value (explicit capacity) form of "make" is significantly _less_ common than the single-value form. Indeed, gripping through the stdlib shows "make([]T, n) is much more common than "make([]T, n, m)".

I agree that appending to "make([]T, n)" is not an uncommon mistake. But, in general, you can avoid that problem by assigning to specific indices instead of using append.

I think the place I regularly use "make([]T, 0, n)" is when I'm collecting items from a

s := make([]K, 0, len(m))
for k, v := range m {
s = append(s, k
}
I suffer from migraines from time to time, over the years I've found that some foods can trigger them, for example plant oils. I eat salad with olive oil and half an hour later I start getting these headaches that start at the eyes.
What's debatable? Banning math?
Pivot for Impact