skysight-inc/HackerNews huggingface dataset:
“The thearubigins in brewed tea are highly coloured (red-brown) molecules that change according to the acidity of the liquid used.

If the water used for the tea infusion is relatively alkaline (for example, due to limescale found in “hard” water), the colour of the tea will be darker and deeper.

However, once an acid such as a slice of lemon or lemon juice is added, tea changes colour because of an increase in acidity (reduction in pH) of the beverage itself. Lemon juice is quite strong as a food acid – a few drops are enough to alter the theaurbigins, resulting in a dramatic change in colour. Interestingly, theaflavins are not that affected by the change in acidity, and still retain their normal dark red colour.”

Source: https://theconversation.com/ive-always-wondered-why-does-lem...
As an ex aws senior leader many products in aws operate at a loss when the underlying infrastructure becomes more expensive for some reason. Glacier is a great example of this, they ran at a steep loss as they mis-bet that hard drive prices would drop faster than tape storage and had to retire their original architecture and redevelop a tape infrastructure. It would have been totally reasonable to increase prices then decrease them once the new platform was available, but they chose instead to operate at a loss and not adjust prices. I believe they actually decreased prices once the tape infra was up.

That said margin is why they could do this. Aws as an overall portfolio of services is profitable enough that they can loss lead on many products that operate at a loss for many reasons.

Finally pricing is done with margins enough to later lower prices, mostly done to ensure they don’t end up in a permanent loss leader situation by misjudging margin or some other aspect prior to launch. But at least when Andy Jassy was in charge there never would have been a price increase - ever. We all knew down was the only thing he would consider, and lowing prices was a good way to get promoted.
>Enjoy her company and observe yourself as much as you observe her. The more important question is: I have fallen for a woman who is not attracted to me and I will settle for friends. What is going on inside me that makes that ok?

Thank you, I greatly appreciate the clarity in this, very helpful to me. As to the quesiton -- I don't fully understand what's happening, and I suspect my mind is convincing me that there are too many hurdles for it to become anything more than friends…and that friends would be better than not.
Show HN: WikiNewsFeed – RSS aggregator powered by Wikipedia
Comet 67P's Abundant Oxygen More of an Illusion
'Have experience starting Twitter mobs' is something I'm excited to start seeing on resumés soon. Followed by the discussion over whether that shows key leadership/organization abilities or not, a la the "Wow Raiding Guild Leader" debates of the late 2000's.
No one meaningfully "requires generics", people are just reluctant to set their ego aside and learn a different approach. Some use cases may benefit from generics, but even then "require" is too strong.
Standford Pupper has been added to ROS Gazebo
It seems to me that a barrier primitive needs at the very least acq+rel semantics [1], which means that TSO implicit acquire and release are neither necessary nor sufficient[2]. In practice on x86 this means an atomic RMW which is seq-cst. I'm not familiar enough with ARM/Power to know if acq+rel is significantly faster than seq cst.

[1] See the Laws of Orders paper.

[2] without using asymmetric synchronization which is not appropriate for a general purpose barrier.
Which apps would you specifically recommend as faster compared to their counterparts?
Gmail was famously "beta" for a very long time but I don't know how long exactly. A quick search seems to say 5 years?
Microsoft says Windows 11 File Explorer ads were ‘not intended to be published externally’ - https://www.theverge.com/2022/3/15/22979251/microsoft-file-e...
I wasn't a frequent user but from what I witnessed, its functionalities were merely a subset of Tiktok. Not surprising the later's network effects prevailed.
It's basically basil-like in flavor, right?
>I would bet money she has a bookshelf full of them.

So many books. Courses. Trinkets.
thanks, will watch!
Amazon Prime dark patterns are known and intentional
You're welcome, and I'm happy to discuss it further, and point you to the newer code that you can use or pick over for tips and tricks as you desire.

Once you can overlay 3D graphics on 3D video, you'll definitely want runtime scriptability!

Because of its name "UnityJS", sometimes people misinterpret that it's something like Unity's old and now thankfully deprecated "UnityScript", a compiled (not runtime interpreted or JITted) ersatz JavaScript-ish language, that was really just a thin wrapper around the CLR C# APIs, without most of the standard JavaScript APIs, plus it's own weird syntax and object system to make it even more uncanny.

But UnityJS is a totally different approach for a much different purpose, and I wish I could think of a better less confusing and loaded name for it.

Each platform has its own APIs and quirks for efficiently integrating and exchanging JSON messages with its own browser and Unity, in Objective C for iOS, Java for Android, and JavaScript for WebGL.

UnityJS abstracts those platform differences like (and by using) a web browser, so you can write cross-platform JavaScript code, and communicate with Unity via JSON messages, which uses JSON.net to convert back and forth between JSON and C# and Unity objects.

It's better to rely on the build-in JavaScript engine in each platform's standard web browser, than trying to roll your own scripting language from scratch, bundle your own copy of Chrome, or use a less ubiquitous languages than JavaScript (as much as I love Lua and Python).

What's great about that approach is that it lets you use standard development tools: you can live code and debug WkWebView based iOS apps with the desktop Safari developer tools, and Android Chrome component based apps with the desktop Chrome developer tools.

And it works seamlessly with the entire ecosystem of browser based JavaScript libraries. (Which is a relief if you've ever tried to get a Windows C# library to work with Unity's version of C#, let alone trying to port any JavaScript library to UnityScript, which was practically futile).

On iOS, using the standard WkWebView browser as a scripting engine also avoids the infuriating non-technical Dumb Apple App Store Rules Problem, because they prohibit apps that dynamically download and update and interpret any kind of dynamic code, UNLESS you use their browser and JavaScript engine.

Consequently, WkWebKit's JavaScript is the only runtime scripting language you're allowed to use on iOS (it's much better than the old UIWebView because it has a great JIT compiler). Fortunately it works quite well! So be it.
Indeed OPs comment doesn't make much sense. Ganges is sourced in Gangotri, Yamuna in Yamunotri which are in Indian territory, behing massive himalayan wall separating it from (occupied and formerly indian) chinese territory.

Mighty fine hiking locations too!
My favorite feature is a tiny, couple line bug fix that I pushed hard to get included during the feature freeze. Full details here, but a summary is below: https://github.com/golang/go/issues/51127

For the past ~8 years, many hundreds of people reported on GitHub - and likely many multiples more have encountered and not reported - a program that didn't work with the error "cannot unmarshal DNS..."

This error seems to be caused by two things:

1. DNS proxies not adhering to the DNS spec. This would be due to VPNs with integrated DNS proxies such as Cisco AnyConnect, internet connection sharing on Windows (which affects DNS resolution in the Windows Subsystem for Linux), or even just incorrectly implemented recursive resolvers. Specifically, if these servers receive a DNS message that utilizes RFC 1035, section 4.1.4 "message compression", which is an extremely simple compression scheme, then they may transmit a DNS message that doesn't utilize message compression, which means the proxy isn't in response size 1:1 but almost always increases the size of DNS responses.

2. Go's net/dns resolver enforcing a strict 512 byte limit on responses. This is the same behavior as musl (and I would implore a musl maintainer to increase this limit) but not in glibc or most OS distributions' default DNS behavior.

I read every single GitHub issue related to this and found the frustration of both end-users and OSS software maintainers overwhelming. End users lacked the tools to diagnose why the software didn't work, maintainers couldn't reproduce the issue.

This bug affected major projects: Mesos, Docker, Consul, Terraform, and more. For nearly a decade. Sometimes (as in Mesos) these were projects where they controlled the DNS server and client, so they could implement DNS message compression and solve it. In other cases, such as with Docker or Pulumi, where software runs on end-user machines, maintainers may have had to "close, can't repro" issues. The error was inscrutable and otherwise very skilled maintainers wrote this off as a fluke or user error.

And these are just the tools that are typically used by skilled technical users - usually engineers. It's hard to estimate but not difficult to imagine underestimating how many bug reports and issues end-users encountered where a cryptic error message, if shown, never made its way to GitHub.

Software that works is better than software that - sometimes cryptically - does not. And when things just work, well, very few people using Go will realize that this fix prevented them from experiencing an afternoon or a day or more of frustration; but I will :) and I think that's what makes contributing to OSS awesome.
> As someone who doesn't want to be killed or permanently injured by a Tesla driver

just stay inside in front of netflix, you'll be perfectly safe that way.
Perhaps, but if so, that would be a bug in the browser’s WebAssembly implementation, not CheerpX.
Reminds me of the Neruda quote: "You can crush the flowers, but you can't stop spring from coming."

Free Tibet
As someone leery of tying my domain to my Google account, I'm curious what people recommend for this use case. I have a vanity domain currently hosted on a web hosting platform. These days it only gets used to forward the email of a few people to their contemporary email accounts, all gmail based.

As I no longer use the web hosting, storage, or anything else like that I'd love to find something cheaper that can just handle the email forwarding. I like the idea of using Google as for many things I trust them more than a smaller company. But there are too many stories out there of people having no idea what they did wrong and losing all access to their account, with no recourse.
What is wrong with a theocratic government if the people want it and it suits their way of life, especially if it is a peaceful spiritual way of life and makes people happy. Last I checked Bhutan, which is also Buddhist, was doing well.

Also, I hope you're not saying that the way of the China/CCP is better than how Tibetans were before Chinese invasion. I don't think they were ever ravaged, unless you're referring to the Chinese propaganda to show them as the savior. And, if they were such a savior why are people killing themselves?

Moreover, I'm assuming you're on a similar crusade against the Pope and other theocratic governments, of other religions, in the world.
GCC and Clang aren't super aggressive with DCE (dead code elimination) because most of the time the complex cases for DCE have essentially no impact on run time performance, and may be expensive to implement (i.e. significantly increase compile times).

For example, suppose you have a library that is configured with some options struct that contains a bunch of flags/settings. The behavior of the library changes based on these flags. The compiler will see a bunch of branches like "if (opts.foo) { ... }" and will generate code for all of these branches of. Now let's say you statically compile this library, and in practice in your code you only ever has one set of options enabled. In principle the compiler could figure out which branches can be eliminated based on the single instantiation of the opts struct in your code, and eliminate dead branches. But in practice neither Clang nor GCC will actually do this kind of DCE even at -O3 because it's simply not worth it. By the way, this kind of example is exactly the kind of DCE that the blog post is talking about and could be removed by the new DCE pass implemented by the author.

How big of an impact would this kind of DCE make on performance? Well the compiled binary size will be a bit smaller, which is kind of nice. But in practice this will have almost no impact on performance. Loading and mapping an ELF file is practically instantaneous even on huge executables. The branch predictor will predict all of the options branches that are hit repeatedly at close to 100%. Eliminating the branch entirely is in theory better than having a branch with a 100% hit rate, but hard to demonstrate in real world benchmarks for all but the most critical code paths. If there are large pieces of code in the executable that are unused they'll be mapped but won't even be page faulted during program execution. There are some kind of hand wavy arguments you can make about the extra code wasting space in the icache but again it would probably be difficult to actually demonstrate the impact even in microbenchmarks.

This isn't to say that there are no benefits to more expensive DCE passes. But they're generally extremely meager, so it's not worth increasing compile times for most applications. Wasm is an exception because compiled assets need to be transferred over the network and apparently it takes longer to load wasm code than it does to map an ELF executable. It's also worth noting that Clang and GCC do a lot of other types of simpler DCE, and these simpler DCE passes can be critical for performance, so I'm not trying to suggest that DCE entirely is worthless; just that the type of DCE presented here is less useful for traditional compilation.
As with many words, monorepos can mean different things to different people.

Some people use it for a repo where a single product is developed and typically deployed/published together, but happens to be distributed through separate packages. The Babel repository would be one example of this: https://github.com/babel/babel
Many “design system monorepos” fall in this category as well.

I would say the difference between one team building a single product in one repo or many might be interesting to some, but it’s a completely different problem from a multi-product multi-team repository. At some companies this would be a single repo for all source code.

Building software like this can have a profound impact on your entire engineering culture - for the positive, if you ask me. The single-product monorepos are unlikely to have a similar impact.
Now seems like a good time to point out that Google is fully aware of the linkages between all of your various Google accounts (work, personal 1, personal 2, side project, other domain, etc). Both mobile platforms allow multiple Google account login and if you use one account for work slack and one account for personal gmail then thanks to your phone OS's giant gaping per-app sandbox hole, big daddy G can see all of your credentials are being used on the same device and connect them together as a single user.

This means that any itty bitty TOS violation on one account means you potentially lose all your accounts. Accidentally contradict the WHO (who, for example, said not to wear masks) in a YouTube comment and get your personal video watching account TOSed for posting fake news? Accidentally mention an ITAR/SDN country by name in a comment field in a Google Wallet/Pay transaction? Send a zipped malware sample to a colleague for analysis from your gmail? Say goodbye to your Play Store apps published under your work account, AND your domain names registered under your side project account, AND your Google Voice number, AND all your cloud instances on your GCE account, AND all your YouTube uploads on the video account, AND all your files in Google Drive, et c.

You also lose ability to reset all of your accounts that have your @gmail.com address as the login name, and you lose the ability to even log into any accounts for which you may have used that "Login with Google" button.

Google is not trustworthy. Don't give them your money or data. Register a domain with someone who isn't Google, and point it somewhere that isn't Gmail. There are step-by-step instructions on how to do this on my website.
This article (from 6 years ago) has a picture of what they will actually look like with wires:

https://www.theguardian.com/environment/2015/apr/09/new-styl...
If it helps at all, all your Firefox data is encrypted client side before getting uploaded.
I use a completely de-googled phone OS - /e/. MicroG works great.
I see where you come from with those super smart one liners (guilty of it when I started programming). But sometimes, you can do something nicely in one line instead of three or four, and it makes it easier to parse.
I think it's some of both. I emulate my dealer (Taiwanese direct importer), who intimated that she skips the strainer with her green tea and just puts here whole leaf green tea straight into the cup (you can only do this with whole leaf, as your lip becomes the strainer and broken tea ends up in your teeth). She reuses the same cup all day, topping it off when it's half full. When I space and drain it (often in the middle of a coding session), it still tastes and acts like tea for at least the first three cups, after that it gets pretty weak, until I abandon it for a good long while and then discover it's gone from weak to bitter.
Making Serverless Accessible to New Devs
Going from an led (with local dimming zones) to OLED (LG C1) has completely changed how I feel about 'too dark' content on my home television.

I now appreciate scene lighting much more than before, so much detail is lost trying to balance back lighting to a room and comfort. I remember having to rewind a bit of a Mr. Robot ep because I started to notice trivial background details in a dark scene to the point I was distracted.

The experience was sort of like moving to a higher end surround sound system and clearly hearing everything.
For me the most puzzling aspect of Go is channels. Ada tried CSP (Concurrent Sequential Processes that Go channels are based on) in eighties and people quickly realized that it lead to bad performance and was unsuitable for a lot of useful cases. So Ada got standard mutexes and signals.

So why CSP which does not allow to implement priority delivery or multicasting and makes cancelling much harder compared with normal polymorphic message queue per thread? Moreover, Go crippled CSP even further as one cannot select on channel and file descriptor.

Fortunately Go does provide mutexes and signals so one can ignore channels unless required by Go API. Still without proper sum types polymorphic and type-safe message queues are not possible.
There is an implied seq-cst barrier in the atomic INC.
>You're basically looking to rationalize the irrational. This is an exercise in futility.

I think this is a broadly fair assessment at a base level, but I hadn't considered it as such until you said it.
> Go wins because it's generally simple and consistent. People like simplicity rather than kitchen-sink languages.

Rust often gets accused of being a "kitchen sink" language, but the Rust folks have tried doing the simple thing and it came with severe limitations - Rust 0.x was pretty much indistinguishable from a glorified Go. It even had green threads and GC!

It's no coincidence that they, much like Go, provide a test framework, build system, dependency management, CI, code formatting etc. out of the box. Because these things meaningfully improve productivity.
I use { } to move by paragraph/block quite a bit.

/ or ? to search forward or backward.

C-f and c-b to go a full page. U and d are half.

But for me it’s not only about speed. I guess it just feels nice to use the keyboard, even when it’s a little slower.
> So, for those of you who are willing to explore the part of this that goes beyond a simple rational analysis and criticism of language design, whats bugging you?

I think the reason Go gets a lot of criticism is that at a language level it misses a lot of constructs and features. So for everything it doesn't have, you'll find someone who is really used to leverage those constructs or features when they program and who favor that style, thus they will be bothered that Go doesn't have them, as it makes it less enjoyable for them to use Go.

Now normally this wouldn't be an issue, you'd say, just don't use Go. But here's the thing, the best part about Go isn't the language, but the compiler and runtime. That's the combination which attracts a lot of criticism, because everyone would like to be able to use the Go compiler and runtime since it creates beautifully efficient, small and low memory binaries with cross-compilation, and it has a good set of libraries.

I'd say on that front Go is unparalleled honestly, I can't think of any other compiler that can produce binaries for various targets that easily. Its cross-compilation is simply excellent.

That means everyone would want to use Go, but not because of the language, but because of the compiler and runtime. As all these people come to Go, they're forced to use the language, and very quickly realize this doesn't have the features or constructs that they'd want to program with, and there goes the criticism.

The trade-off is just hard to swallow, if you come from a more expressive and powerful language, with more features or styles, the Go language will be a harsh reality of how minimal it all is, so much so that they decide not to use Go.

So what's happening is a bunch of people are waiting for Go to have feature X,Y,Z before they jump back to Go, and that creates loud voices, and the reason is that they want to use Go the same way they currently program, but have access to its awesome compiler and runtime.
Hey - I'm still personally sore over iGoogle. They killed off an absolutely trivial to use RSS reader - I made heavy use of iGoogle while it still existed... and they killed it off to try and save Google+ which they then proceeded to also abandon.

I've definitely felt the burn of Google just randomly killing off a useful thing for some opaque marketing decision that turned out to be extremely ill-advised.
Never reached being a vim power user. Somehow I always end back up to an IDE especially when it involves a bigger project. Could someone share some power user examples when only using vim it really shines for programming?
Seeking the ever elusive Oracle to help us make sense...

And when we have the Oracle, we can still choose to ignore what it tells us...

I believe Freebase was trying to meet similar goals ( https://en.wikipedia.org/wiki/Freebase_(database) )

And Wolfram Alpha has similar features/functions to provide a look into data & its connections ( https://www.wolframalpha.com/ )
More content allows you to increase your rankings in search results. Especially if you become an "authority" for a topic. More views to content pages gets you a chance to promote your products better than search results alone.
Pretty common for Google. Gmail was in beta for five years, Google Docs and Calendar I believe were also in beta for similar lengths of time.