skysight-inc/HackerNews huggingface dataset:
So glad I migrated to SQL recently. I thought I had unstructured data and I had no real need for relational data. But oh boy I was wrong. Want a customer list, billing, emails, linked accounts with those users, etc. All of this was such a pain in mongo and remnants of messy schema still lurk in our codebase. Reminds me alot coding in typed languages like C vs. python or JS. But in the case of mongo I think I was getting the worst of everything ;)
> I personally DO use Lua sometimes to code general purpose stuff.

Speaking of general purpose application programming, you might be interested in my new(ish) project Teal:

https://github.com/teal-language/tl

It's a statically typed dialect of Lua, which is compatible with all modern Lua versions.

The core compiler itself is one tl.lua file which can be added to any Lua project, and includes a Lua package loader that makes Lua's `require()` support .tl files, and there's also a tl CLI for generating .lua from .tl files.
> This blog post is calling at least two different things SQL, and it's kind of infuriating.

For better or worse, that's not what "NoSQL" means. I understand that the name is a bit infuriating, and I personally map it to "non-relational" as I read.

> What's gone away is the practice of writing complex, highly linked, normalized database schemas with layers of constraints and foreign key references.

This may be true for some use cases, but in general that's wishful thinking.
VS Code Automagic Port Forwarding
> On the other hand, DBs call fsync() very often, which would presumably trigger this frequent "stop the world, write the data" behaviour vastly more than otherwise, which could make your I/O very stuttery.

But that's because they want to stop the world and write the data. Or more specically write the data they wrote. The issue is that more data is getting written than POSIX deems required, and that's the perf hit.

Depending on your usecase, libeatmydata or battery backed RAID can help, but I'd feel a bit skeptical of 'we want to lie about fsync() to our DB' for many workloads.
Do you think the recent privacy changes in WhatsApp is Facebook preparing in case antitrust started in December forces them to separate WhatsApp into its own entity?

As it is now, with WhatsApp being part of it, FB has access to any (non-e2e) data by default. The new agreement might have been them hedging to keep it that way, which backfired spectacularly.
> Heck, if you ask some people, Rust is less secure than a GC’ed language for web apps if you use any crates that have unsafe code - which includes Actix, the most popular web framework, because unsafe code allows things like deferencing raw pointers.

The presence of _unsafe_ is okay, it just means that this is a part of code, that the compiler cannot verify itself. Usually the unsafe part (verified by human) is wrapped in a API that is safe to use.

PS: You can still have memory leaks in GC-d languages by reference cycles.
True, but that's already been the case in biology.

https://en.wikipedia.org/wiki/List_of_unusual_biological_nam...
> This is not good. I've moved so many people over in the last week.

Please stop moving people to centralized services.
Bravo. Love anything that puts more power into the hands of people as opposed to massive corporations or governments
It’s an easy blind alley to blunder down on some platforms. If one’s package manager defaults to edge versions and you’re just getting standard with a new language/framework via a tutorial, for example, this is how you learn there’s an LTS release the hard way. Homebrew users on Mac are common victims, but similarly Arch Linux or FreeBSD may trap the unwary (and for more besides than merely Node)
Just saying, but WhatsApp encrypt communications the same way Signal does, it's good enough for me.
I used to agree, but this project feels different. I don't think it would require much structure in my system. I just deal with a single order. Then, I take pieces of that and send it out to a couple 3rd party API's. Those API calls are structured, sure, but so is a document. I only load orders by their order number and then deal in the order as a whole.

My joins are primarily to pull in all the pieces I need for an order.

Maybe this is just my current, "the grass is greener" view, but I wonder.
I just started posting on the Internet this year after many years of lurking, and I truly don't understand why a handful of people take such a negative tone without even reading what I wrote. Is there something specific you don't agree with?
The horse-drawn carriages analogy is not applicable because I'm using Java in my current project, like most other large corporations, I don't find it antiquated, I find it "state of the art".

There are some improvements that can be made however (any language can be improved on), that would require minimal breaking changes (like fixing Type-Erasure), and I'd even be fine with minimal breaking changes that break backwards compatibility every 5 years or so.

The problem is when people say "Let's burn it all down and start over, so zero existing code is salvageable."
No shit prosecutors don't want to make public statements that are even potentially stronger than what they can support in court, while in the middle of an active investigation.

But that's EXACTLY what they did. Turned out to be a massive exaggeration with no evidence to actually back it up. Didn't stop it from being covered broadly in the media and the "correction" getting no press at all.

I just said that "starting a fire inside the fence" is categorically different from your previous characterization that they "set the building on fire".

But why did you say that? And it's disingenuous when the article I linked to showed a burned out door to the building.

And I know exactly why you quibble over "inside the fence/outside the fence" because you're trying to split hairs in an effort to downplay what it is - arson committed against federal buildings.

Again, proving my point you're treating the antifa/BLM side with kid gloves, but believing (without question) every single rumor and innuendo about the Capital Riots and ready to slap labels on them like "seditionists" or "domestic terrorist" and use phrases like "kill squads".
If you look downthread, I missed an important bit of context where the goal is solving programming challenges, not general programming problems (which I misperceived). That’s a significantly more narrow focus to which none of my preamble or conclusion is applicable.
Yeah, the NRA still does some useful stuff at the local level (hunter education, NRA ranges, etc) but they really need new leadership. For the moment, GOA seems like the best alternative for advocacy efforts.
rolleiflex is referring to the text status along with profile picture. The other new Status feature was added in 2017 when Facebook went crazy adding Snapchat Story like features to all their apps (Facebook, Messenger, Instagram, Whatsapp)
This book gets posted at least once a year, and I don’t even mind. Such a gem. Besides the more general advice on programming and optimization that is still relevant, the stuff at the end on the development of Quake is a really fun read.
Rust will always be harder than Go because Rust has an intentionally strict compiler. That said, there is a lot of progress to be made in this space. It doesn't make sense to write off Rust as being a contender for mainstream web development, as it is still in its early stages.
It certainly could be. Pair a bluetooth controller and hook it up to HDMI, and play Retroarch to your heart's content.
Parler CEO John Matze, family forced into hiding over death threats
This is filled with incomplete information. MongoDB has had transactions since 4.0 and a strong consistency model by default from the start. That's not to say they didn't have some bad defaults early on... This article makes gross generalizations and just doesn't really add all that much value.

Document databases offer a full-featured general-purpose alternative and really shouldn't be compared to Key/Value stores at all. They're only being lumped together since both are "nosql", a fairly tired term at this point
Yes, this was a source of many problems when firefox moved its history and bookmarking engine to sqlite (I think) which used fsync for consistency guarentees. Leading to situations where making a bookmight might cause your entire computer to pause as disk writes spin up.
FYI I believe WhatsApp was written in Erlang (Elixir uses the BEAM VM as well), but it was rewritten in C++ after Facebook bought it.
IMO the first approach is the best, unless there's a very high number of items (which usually in these scenarios, there's not, even a couple thousand wouldn't be catastrophically bad to update if it's not a common operation). they all kind of suck but everything else seems worse.
That subreddits name had an interesting history if you google it.
no, the fsync call remains the same as it does in ext3 and most filesystems.

However in ext4 there is no need to call sync unless you disable batch processing of synchronous writes.
I always think of Heinlein's water brothers when I see that subreddit.
I think it actually is more helpful to the business to get a loan instead of a donation. With a huge donation you can do whatever you want with it and may overinvest or spend wastefully, until the cash reserves run out. A loan means that the business has X-many years to be self-sufficient. So I think it helps the business's culture as it's developing.
Looks like the donations are powered by Donorbox.org.
That would be Zero Wing of "All your base are belong to us" fame, and no, that was just a bad translation. https://en.wikipedia.org/wiki/All_your_base_are_belong_to_us

Random anecdote: in 2005, when "all your base" was still in peak meme, I happened to be in Kuta Square in Bali with a friend when Jemaah Islamiyah blew up one of their devices. Rattled but unharmed and unclear on what exactly had just happened, we returned to our hotel and watched TV news. Once the penny dropped, the following dialogue ensued:

- What happen?

- Someone set us up the bomb.
that's sort of a feature though, since it makes it less likely to be used ;-)

rust, i believe, can also recover from panics, but it's even less ergonomic, which makes it even more of a feature

zig goes to the extreme and makes panics completely unrecoverable, tho it's unclear how practical that is for e.g. long running servers w/ many clients

interesting discussion here:

https://github.com/ziglang/zig/issues/3516
One thing that I think is going away is eventual consistency at the application layer. It is too much of a technical debt and error prone for most applications. It is much easier to reason about a consistent database.

And systems like Google Spanner, and CockroachDB show that you can have a consistent database with good scaling and good performance.
Yes, for sure. My NoSQL experience is primarily with MongoDB, which is a document store.
https://knowyourmeme.com/memes/sites/water-niggas-hydro-homi...
It might be a silly question, but when you say you're waiting for node.js to die, do you mean node specifically or server-side JS?
> "on a long enough timeline, every cell is a cancer cell."

So does that mean for the off chance we live long enough for aging reversal to be developed and affordable we'd still die of cancer? :)
Fashion-oriented posts like this are always a shitfest, and this one is no different. It is setting up a variety of different architectural styles as if they were in competition for the "top spot", which is to say the only option that should be applied in all use cases. This isn't just garbage, it's actively encouraging a whole breed of shitty engineers who never learn how to approach solving a problem.

> The goal of a NoSQL database, on the other hand, is to ensure ultimate scalability by making sure that the data is stored in a format that can be shared—or sharded—across multiple servers

From here, it then proceeds to list architectural specialisms that have absolutely nothing to do with scaleability

- "Document stores" excel at managing compound representations of data, they do an amazing job of minimizing IO when many small sets of (usually hierarchically structured) data can be stored as a single unit. Document stores map particularly well to the "REST" service architectures in the original Sam Ruby meaning of the word

- Graph databases are (usually but not always) document stores that excel at indexing and executing transitive queries. Their innovation is not in storage, but in querying particular kinds of data sets with complex (and possibly undefined upfront) relationships using queries that are also likely complex and possibly undefined. This has more to do with expressiveness than scaleability

- Column stores excel at managing timeseries. Like document stores, their entire point is IO and processing optimizations that become possible when data is in a particular shape -- varying with a particular profile, and with high redundancy when viewed along a single (usually time) axis. Column stores absolutely rock when applied to the right kind of data -- they can provide 20x storage size improvements and similar query execution time improvements. Finally we can say that column stores have something to do with scaleability. A 20x improvement in hardware utilization could very much be make or break for many kinds of common project

- Time series databases are column stores.

> Because companies like Google and Amazon created these databases for their own massive data stores, the goal was to reduce the time needed to grab a piece of data

Every. Single. One of these architectural styles long predates the FAANG-industrial complex.

> NoSQL databases don’t offer much in the way of transaction management or real coding

Real coding?

> NoSQL databases like MongoDB just take data and store it

Nobel Prize stuff right here.

I stopped reading
Funnily enough, BTRFS and ZRAM out-of-the-box are the reasons I moved to Fedora for all but my main Gentoo/ZFS system. To each their own c:

Would you mind sharing what other features you've found pushing you away from Fedora and why? For my part, I'll admit, BTRFS and ZRAM both work against hibernation out-of-the-box, which is my most major gripe.
heavy user of whatsapp and I can't recall having any issues with whatsapp ever. I'm a heavy user of signal as well and... it's a bit crap honestly. I actually needed to transfer a file to a client today and was strongly relying on signal for that...
If only decentralized services worked as well as centralized ones..
We didn't have it any better wit Scala. We'd run sbt and it would download the internet.

Our belief was that there are some odd behaviors in every tool and we had to figure out a way around.
I'd say my (basic) understanding of Zig has actually helped me better understand C, since its semantics around pointer operations and allocation are a lot more explicit and intuitive; it's really helped make things "click" for me. Plus, the build system is infinitely better than I've seen from any native-compiled language, period.

Those two factors make me think it's close to the ideal language for newcomers to lower-level programming. Even the syntax ain't bad, as far as C-like syntax goes; it'd be interesting to see some alternative languages that put alternate syntaxes over Zig's semantics, though (and one of my New Year's Resolutions is to put together something to that effect, whether by transpiling to Zig or by (ab)using Zig's compile-time programming).
Yeah, the complaints don't seem to have anything to do with GraphQL.

Writing efficient SQL for GraphQL resolvers is more or less the same as writing efficient GraphQL for any application or API. If you just write all of your queries in the most naive way possible, you're going to have inefficient queries. If you pay attention to querying in an efficient way, you will be able to do it without too much difficulty.
A similarly unintentional comedy in translation was a book I found several years ago that I believe was an autotranslation: "How to Good-bye Depression: If You Constrict Anus 100 Times Everyday. Malarkey? or Effective Way?". The amazon reviews are similarly hilarious.

https://www.amazon.com/How-Good-bye-Depression-Constrict-Eve...
> In 70 years

2068 is in 47 years. A long way away, yes, but still a big difference.
As someone who works in security and deals with these questionnaires a lot, I don’t have any idea how they caught on. It is my opinion that they mean nothing and are worth nothing.

Asking how a company’s development practices protect against the OWASP Top 10 doesn’t make a lot of sense. The top 10 isn’t a static list, nor is it backed by any real data, and many of the entries are fairly generic concepts that aren’t something that can be addressed holistically with any particular development practice.

Everybody lies on these. They’ll just say a best practice, or they’ll quickly run a scanner in response to the question, or they give you the policy that no one actually follows, or they’ll give a partial truth, like saying that they use 2FA, when they only use 2FA in some places, etc.

Every company you hear about getting hacked had great answers on their security questionnaire. I guarantee that Equifax had a policy of patching vulnerabilities for example. These are just paperwork that wastes everyone’s time.

Certifications like SOC 2 are even worse, but they sure do make some people a lot of money.
> So is l[len(l) - 1] == l[-1] in those contexts?

No, because Lua is 1-based :) The last element is l[#l] (#l is "length of l"). Negative indices aren't really used in arrays, but are used in the string library, so given s = "hello"; s:sub(1,4) gives you "hell" and s:sub(-2,-1) gives you "lo".
It is fitting. Water is a miracle drug. And we take it for granted. Needs more hype!
SQL should go away, though. It is an astonishingly poor method of communicating your query to the database server. Generating and parsing it is problematic and expensive. It really has nothing going for it, except that a lot of people already know it.
JavaScript and even modern TypeScript has syntax that is extremely similar to Java, so you can't really say that when I claim Java was already "mostly" everything we needed (WAY before "Go" and "Rust" were invented) that somehow that means I would have therefore said the same about COBOL.

There is such a thing as "finally getting it right". We don't need to replace English with something "new" every couple of years, and writing instructions for machines is the same. The syntax of Java was "almost perfect" and is STILL extremely similar in TS/JS so there was no need to "burn it all down" like Go and Rust did.

Why do you think JavaScript has the word "Java" right in it. lol. Must have been something in there that was good to this very day.
> over the last 20 years

20 years is an interesting time horizon for the NASDAQ -- it crashed in March 2000. If you go back 30 years you'll note that Berkshire actually outperformed NASDAQ by quite a bit.
Got a landing page that I could put my email into to hear more about this down the line?
> Don’t pick tech spot SOLELY based on FAANG use.

Agreed, and I'd go even further than that:

FAANG use should be quite far down the list of criteria, since the use cases and engineering culture are so different to most people's.
Geniuses, maybe, but also exceedingly lucky - right place, right time, right idea, right connections etc :)
I'm shocked that this book is so rare (and going for $200!).

I have it on my shelf (w/ cd!).
I bought it out of a bargain book bin from a computer store I worked at.

It helped me write a 3d engine.
The first launch on iPhone asks me if I want to share my contacts, and then outlines a massive paragraph explaining something about identity servers that I’m expected to choose.

This is a friction-filled experience for someone coming from WhatsApp
I’d highly recommend keeping TS first class. There are components/tools available to group TS/JS examples in tabs and let the user consume whichever they prefer. (Forgive me for not linking I’m on phone and gotta run.)
> the function calls make it crystal clear that something non-trivial is happening under the hood

Alright well I'd also rather write "vec1 [*] (vec2 [+] vec3)" too. Or equivalent.
I'm building an alternative to dating apps: https://metromatch.me/
Wean of google is tough and want to do the same. The most problematic being Gmail. Because although its possible now to migrate emails to new service (e.g. Fastmail), I have many accounts created to sites using that gmail address. I seem to recall seeing a Gmail plugin that helped identify signups.
FFRs have better elastic that hold fit much better than surgical masks which have weak elastic loops. (remember the pictures of nurses with red rings around their faces from wearing N95s 8hrs+ ? Thats due to tight fit.)

Surgical masks are better than cloth or gaiters but N95s are better yet.
How do you get the list back in order if there are thousands of entries?
hm I agree on the points made you made on the GoLang -- its design seem to be a regression. (to add another: look at Go's "default-value instead of Null" instead of adding actual null-safety in the type-system like kotlin/swift/scala/typescript/etc.)

Anyway, this blog-post seems to rally for a better eco-system work on Rust part. Being a new language without a rich parent (like Go's "google" or C#/Typescript's "MSFT"), the situation is somewhat understandable.
How's their authentication solution? Auth is such a critical component of most web apps, yet something that IMO a lot of web frameworks don't fully flesh out compared to how easy it is with Django.

I took a quick look at their auth docs, and while the docs seem pretty detailed, I noticed it involves multiple packages (@nestjs/passport, passport, passport-local, and their corresponding types) that you then have to glue together into a full solution. The instructions also apparently only show you how to store passwords in plain text, and using something like bcrypt to do it yourself is an exercise left to the reader. Not rocket science, as this [1] (older) article pointed out, it's hard finding quality auth-related tutorials in the Node ecosystem. With Django a lot of this stuff is built-in and solidly implemented. Granted, this was after a quick look at the docs, so my impression might be off.

[0] https://docs.nestjs.com/security/authentication

[1] https://hackernoon.com/your-node-js-authentication-tutorial-...
Then you have projects like bootstrap using z vals of 3000 etc.
I don't have much experience but you can easily mess up both SQL and NoSQL. I recently picked up Datomic and honestly I'm not looking forward using SQL again for a while.
"almost all of them are conformists. They are more or less honest, but they tolerate those who are not honest" - Grigori Perelmen

Basically we need to round up and shoot the conformists and dishonest bunch to Mars when ever the rockets are ready. We already have enough personal data to categorize everyone pretty accurately.
I’m curious if you’ve looked at SolidJS, which has similar goals.
I can’t even get a low-latency mouse response in X. What chance does VR have?
First, that is "software signed with a new Developer ID". You can just not sign software and it does not need to be notarised.

Second, notarisation is not an "approval". It is a malware scan.

The only thing that requires notarisation, which, again, is not "approval", is kernel extensions.
Unfortunately the fit hypothesis was not tested in the study, so it doesn't answer any of those questions.

The real issue addressed here is with the valves, not the mask type or fit - outflow is not filtered through the valve, only inflow. The difference is stark: https://aip.scitation.org/doi/pdf/10.1063/5.0031996