skysight-inc/HackerNews huggingface dataset:
How do you manage all these sqlite dbs? Throw them on 1 large server, develop some scheme to sprinkle them across multiple servers, something else?

Redis and Cassandra already handle distribution out of the box.

It seems like there product is basically a web GUI for creating db tables with workflow automation so it doesn't seem like too far of a stretch to have 1 table per customer table. I guess the alternative is designing some system for shoving arbitrary schemes into another schema.

I guess https://en.m.wikipedia.org/wiki/Entity%E2%80%93attribute%E2%... is an option
Great article. Lots of good stuff here to digest.

The last several years I've been having a "gut feeling" that the times we live share some similarities to the early stages of the Chinese Cultural Revolution. But it's been bothering me and I've been trying to better formalize my thoughts while slowly taking in more data. This presents an interesting perspective and a framework from which to view the cultural macro-trends around us.

Not sure I agree with the article 100% on the details, but I generally agree with the broad strokes of the cultural/political/commercial trends it attempts to draw together.

Assuming the author is correct in their assessment, the next question becomes "But what can be done?"
Not OP, but probably https://www.screen.studio/
A flags register is "threaded through the entirety of the program" just as much as all other registers. Though lui+add does have the benefit that the add should write over the lui result, whereas cmp+branch needs to both update the flags & do the branch (but x86 cores should have no problem with that, as every single add & xor & and & inc & load & etc also write to flags already).

Flags for FP aren't particularly nice, but without them you just can't implement <fenv.h> which software may be expecting. (of course using a global flag for semantics isn't particularly nice either, but hey that's what's been standardized in C)
If you're not coding, programming, a Mac is just expensive and overkill.
With foreign keys, I can't use https://github.com/github/gh-ost for zero downtime migrations. Instant deal breaker, because schema changes are inevitable given business evolution.
Vim stockholm syndrome ?

I don't know about RSI yet but I do know one thing :
Vim workflow is to make a quick edit and then go back to normal mode as quickly as you can. This prevent accidental inserts and you are always back at the command center for your next edit.
The same way some people understood most of the time is spent reading code rather than writing, vim's insight is that more time is spent doing edits than actually inserting text.
So maybe strecthing your pinkie to the far (but admittedly easily locatable) corner of your keyboard is good RSI exercise I don't know but the Caps lock is just as easy for your finger to locate and don't require strechting. It's just better.
The iOS camera API is pretty limited in terms of giving you raw access to everything the built in camera has access to.

Things like the parameters for the optical image stabilization algorithm aren't settable.

I'm therefore surprised a 3rd party can make a camera app that 'beats' the built in one.
Why write a book on an experimental feature (Flakes)?
Is the API unlikely to change?
> Further inspecting, we discovered that your code never makes the actual DB call. Your Prisma code performs a GraphQL network request (?) to the Prisma Rust query engine, which then translates your request into actual DB calls.

I haven't used Prisma past fiddling with it a bit and this is extremely surprising to me. I guess it stems from Prisma's history but to me it's really off-putting and I don't think I'd use it in production. Not that I've got too much against graphql, but shipping a SQL ORM with this in between feels unnecessary imo.

> Every new insert via Prisma opened a database-level transaction (?).

Surely there must be some way to control this? Can a seasoned Prisma veteran here chime in?
The reason they want to emulate CRTs is because the pixel art of some 2D games are designed around the artifacts of CRTs.

https://twitter.com/CRTpixels/status/1408451743214616587?lan...
It's true. Except it was the people in charge of the great company that sold it to the big corporation / monopolist in the first place. Bandcamp was doomed when it was sold to Epic -- everybody knew that. They knew that doing that was bad for the product and bad for the company and they did it anyway, because they didn't and don't give a damn.
Perfect description of autocratic rulers, too.
I believe you are the one not reading (hint, read the line after the part you find so enamoring):

"Two days after the update, Pinduoduo disbanded the team of engineers and product managers who had developed the exploits, according to the Pinduoduo source.

[..]

Most of the team were transferred to work at Temu. "

>Chinese apps steal data no less then their western counterparts do.

The whataboutism you add doesn't strengthen your argument. Also, source for American apps using 0 days to escalate privileges, please.
I tend to reach for TypeORM. It supports every database under the sun.
> Cite?

Telegram channel of Vyacheslav Volodin, chairman of the State Duma of the Russian Federation.
Mostly curious how they have Redis setup. Article mentioned they're using it to buffer writes before hitting Cassandra but that seems pretty easy to lose data unless they're running Redis in sync mode (afaik it's a lot slower)

I've seen a similar architecture using Kafka to buffer writes but then you lose kv lookup at the buffer.
Default signed/unsigned is not a platform convention but a compiler one. You can change it with a compiler switch, in the makefile.
Short Ruby News – Edition #62
I have heard it claimed that because historically high-budget hollywood films were shot on film at 24fps, while low-budget TV content was shot on tape at 30fps interlaced to 60fps, people came to think the lower framerate is "cinematic" and that higher framerates "don't look right"

Personally I'm not enough of a film buff to notice the difference. Apparently film enthusiasts do notice, and care a great deal, though.
The Need for Speed: When Cloud Attacks Take Only 10 Minutes
The Flavors of TypeScript: There's TypeScript and Then There's TypeScript
Yes, it's basically a ready feature that's not currently the default
Please don't use HN primarily for promotion. It's ok to post your own stuff part of the time, but the primary use of the site should be for curiosity.

<https://news.ycombinator.com/newsguidelines.html>

Your post and comment history are exclusively of your own site.

Single-issue accounts are also not allowed: <https://news.ycombinator.com/item?id=19382257>
The phone has to do a significant amount of post-processing to get the sensor data to look as good as it does. With a better sensor, you'd actually have less work to do in post.
Hmmmm, sounds like my future niche then. I’ve got a PhD in electronics, developed a consumer product and ran a factory for 8 years to make it, been in dev for 5 years (on top of 10 years of coding) and am now a CTO for a software company.

What even would that role be called? I suppose CTO but if a company that does HW and SW.
Maybe I missed it, but is there maybe a side-by-side comparison of the footage that usually comes out of an iPhone camera versus how it can look (with light, simple controls) out of this Blackmagic app?

And question for others, while I'm at it. What was it about Blackmagic cameras or software (or company) that "broke the curve of what you could get for the same $" versus like RED or whoever expensive studio cameras? Did they do something clever with the hardware and controls to get much more out of consumer grade sensors? Or did they make tradeoffs that you eventually hit against when you try to use their cameras for real professional high-duty purposes?
> Weird pricing: PlanetScale prices you on row-reads and row-writes per month. What is weird is that row-reads is something that nobody controls. It is the SQL query planner which determines the query plan, which results in how many rows you’re reading internally. Remember that row-reads are not row returns. You can write a wrong query that returns 0 rows but can still do a full table scan of 1M rows and PlanetScale will charge you for it.

Followed by:

> AWS Aurora Serverless v2 Postgres

I hope they don't get an unpleasant shock when they see the IO pricing on their aurora bill (it's per block read/write rather than per row, but that's proportional in the random access case, and you're also beholden to the query planner, so basically the same).
I experienced the same thing in another aspect of my life.
My light switches at home can't light the room with just one switch for some reason.
Each time I want to enter a room, I have to write LIT in morse with the switch.
It was a bit weird at the beginning but now I got used to the pattern and I can do it under two seconds and I have not noticed any discomfort.
Although more on the electronics side this is good for learning BASIC
https://picaxe.com/what-is-picaxe/

The manual support is good too.
Netflix crushed the Latin American password black market
I would modify this to "Don't use Prisma if you're using serverless"

With actual servers and prisma running close to the underlying database, it should be much better.

Regarding using joins, that's not necessarily the best choice either. When using simple flat joins naively, you get a lot of repetition for the more toplevel nodes of the join tree, which eventually adds up to a lot of network traffic and allocation. (TypeORM tends to have this issue, for example)

What you really want are joins that build the JSON on the server. In MSSQL this can be as simple as `FOR JSON`. In Postgres it can get... a bit more involved - Drizzle can do it: https://github.com/drizzle-team/drizzle-orm/releases#:~:text...

This is probably okay, although I do wonder what happens after you hit the compute limits of your database server (i.e. scenarios when you don't use things like planetscale). In those cases (again, non-serverless), Prisma's choice might work better as long as it runs close to the DB. It will still likely be slower than the fancy JSON join, but probably need fewer database resources (depending on how its done).
Okay but how does a "random" Chinese company get the kind of backing to pull that off? It just can't happen in a vacuum right?
There is no ONRUN: "you can think of docker mods as a missing ONRUN hook"
I really like the UI in the sound production software. It's neat, has good colors and keep being eye candy even given the number of controls and information it provides.
Is it some sort of standardized style guide for this kind of UI or everyone just takes inspiration by some industry leader products?
+1 for drizzle. And writing queries with joins is possible. :)
"We migrated to SQL. Our biggest <<lesson>>? Don't use Prisma".

Old man shouting at the literal IT clouds.
Shameless plug: This is why I created Yaade. A self-hosted alternative to Postman and Insomnia. Unfortunately, being OSS is not enough anymore. The rug-pulls will keep happening. Remember: If you don't host it, you don't own it!

Check out Yaade on GitHub. Will be interested to hear what you guys think.
you can always use views + triggers for a zero downtime migration, this is a non-issue
> typedef char byte;

That one is dubious. Char has magic aliasing properties that uint8_t might not have (iirc that was contentious in a GCC bug report) and it will be signed on some platforms and unsigned on others, which changes implicit integer conversions.

Missing from this is to embrace attribute((overloadable)) and attribute((cleanup)).

Overloadable is the sane, useful alternative to the thing standardised as _Generic. The C _Generic will let you define an overload set, with some weirdness around type conversions, provided you write the entire set out as a single _Generic expression, probably wrapped in a macro. If you want to dispatch on more than one argument, you nest _Generic expressions. If you want to declare different functions in different headers - maybe you want 'size(T)' defined on various types in the codebase - you can't. If you don't like the idea of thousands of lines of distracting nonsense in the preprocessed output, tough. Or - use overloadable, get open overload sets, minimal compile time cost, obvious intermediate IR, everything works. Prior art is all of C++, so talking decades of the tooling learning to deal with it.

Cleanup is either a replacement for raii, or a means to have debug builds yell at you when you miss a free. It looks like that got warped into a thing called 'defer' with different behaviour that didn't make it through the committee last time.

Other than that, ad hoc code generators work really well with C. Especially if you're willing to use some compiler extensions. Code generators + overloadable will give a fair approximation to templated data structures without going deep into the insanity of the preprocessor. If the overloadable functions are static inline forwarding things in a header they don't even mess up symbol names; you just get a straightforward translation to vector_float_size or whatever.

Personally I've given up on ISO C. I'd quite like to code in a dialect of C99 with a few of the GNU extensions and the equivalent of `fno-strict-aliasing`, but C with the pointer provenance modelling and an accretion of C++ features has no personal value. Currently still using clang with flags to make it behave like that but I'm conscious that's on borrowed time - the application performance friendly aliasing rules are the default and gaining popularity, and relying on opt-out flags is a means of opting into compiler bugs.

Semi-actively seeking something that will let me write assembly without the hassle of manual register allocation and calling conventions. Old style C with some of the warts bashed off would be good for that.
Is this a desktop browser issue? Here on Android neither Firefox nor Chrome make the text unreadable, and zoom works just fine for me.
The transformation is {kids, clothing}-> [{kids, clothing}, {children, clothing}, {kidswear}, {kids, apparel}, {kids, outfit}] for the _advertiser_ trying to buy adds on a query.

"tj maxx" isn't the part being matched, it's the "kidswear" in "tj max kidswear" that is causing it to match to {kids, clothing} because of the aforementioned transform
I am amazed at the number of engineers I've worked with who jump straight into the full implementation. I've done it myself on a few occasions thinking "how hard can this be".

Building the "toy" first is great.

In my experience, about one third of the time the toy is all you need, you can stop there, and what you were going to build fully would be over-engineering. About one third of the time, building the toy tells you you're taking the unworkable approach as you mentioned. And the other third of the time you can extend the toy.
How do you find fkey constraints making maintenance or migrations a nightmare? I've always found them reasonably pleasant to use on postgres.
I'm not a musician, but I've been happily using Ardour to edit a podcast for many years now (paying for a subscription the whole time too) and I really like the workflow I arrived at with it.

One particular feature I like is the ability to edit while playing the audio at 2x speed, which I use to do a quick first pass where I remove obvious things like dead air, coughs, uhms, etc., before doing a second pass at 1x looking for finer details to fix. However, I've found that this feature has been worsened a bit since v6, so I've been stuck at v5 this whole time despite the many new releases. Every time a new version comes out I try it out immediately, but so far v5 has been the superior one for my particular workflow.

I'm not complaining though, for as long as Ardour 5 still runs on my computer I'll be a happy user, and I'm very grateful for Ardour's existence, but I wonder if anyone else uses it the way I do and if they've had the same issue with newer versions.
If you never touch the schema in any way, perhaps...? It sounds like an operational nightmare otherwise.
Your link gives "an email address" as one of the examples for personal data.

And Anna's email address is part of the email in Benjamin's inbox.
> I believe that requiring users to type the full long option '--force' each time
they intend to forcefully remove files or directories that would serve as an
effective safeguard against inadvertent deletions.

Of course software isn't a dogma and it's beautiful is that you can change it forever; but I believe somethings it's hard to sacrifice for the sake of ergonomics and/or safety.

...

Some years ago I met a person who was responsible for firearms design, mostly doing some due diligence for police forces about firearms ergonomics and safety.

In the words of this person, one of the biggest mistakes in the Brazilian army in terms of the bidding process; was the manufacturing/acquisition of a firearm called Imbel [1] that due to safety concerns a firing pin lock (PT-BR: percussor lock) and handle lock (PT-BR: lock of fist). With those 2 devices the chances of some accidental shoot drops dramatically; in some cases you can drop a loaded gan that it will not shoot.

However, with those extra safety mechanisms that prevented accidental firing, at least 2 severe compromises were made, one was that this firing pin lock had an entire mechanism that had another tree failure that was not calculated, and guess what started to have some issues; and, due to weight restrictions the pistol had half of the ammunition (from 15 to 7) and for operations that you had some intense cross-fire this firearm is not suitable.

[1] - https://www.cayanarmas.com.br/produto/armas-de-fogo/pistola/...
Another test under GDPR is if the data is stored in a way designed to make looking it up easy. I forget the exact working, but broadly personal data stored in records designed to make looking up that data easy falls under a “right to data” request, and data that isn’t recorded like that doesn’t.

As a consequence personal data that exists only within the content of an email wouldn’t be considered. Just like free form notes wouldn’t be considered, unless the notes were filled and recorded in a manner that made lookup easy.

Then there’s also other people’s right to privacy. Your right to data doesn’t provide you with a right to intrude into other people privacy. So emails in your account, and records associated with your account are all fair game, but you don’t have a right to reach into other people’s account for data, or a right to force companies to perform super broad searches across every piece of data they have, just in case your name or similar appears in it.

Of course all of these laws have space for interpretation, but that’s why we have courts. They’re ultimate arbiter of edge cases where it’s not clear what the correct cause of action is.
Is it really worth making a mould for making 500-1000 units?

At those kinds of quantities, I would just fire up the 3D printer, and leave it printing in the corner of the office for a few weeks (with an auto-ejector).

It would end up costing ~10 cents/part, assuming you already have a 3d printer for prototyping and already have someone who knows how to load a new reel of filament into it every morning and evening.

Thats hard to beat for anything under 10k units...
I understand that some comparisons with realistic assumptions have been made. Notably, high-speed trains cause significantly more emissions than classical trains, but are still better than planes.
Blackmagic’s reputation took a major hit after their infamous CinemaDNG bait-and-switch.

They made true interoperable raw video format a selling point of their BMPCC lineup, only to irreversibly cripple units later by removing CinemaDNG support after the fact. This dramatically narrowed toolchain options (mostly to Blackmagic’s own software suite), effectively making cameras useless for enthusiast FOSS videographers. Furthermore, the hush-hush way they pulled it off using a firmware update says something about their ethical standards, so as a rule I’m not using their products anymore.

The fact that they offer a cheap software product of their own (even with a free version) in no way justifies removing features (especially support for an open format with a thriving FOSS ecosystem) in a camera that they already sold.
Sure, it's very common to flush a system with dry nitrogen for that reason. But of course if you have to fully open a part of the system you're usually out of luck (also you usually don't have valves at every intersection etc., so some part may still be exposed to the atmosphere even if part is "kept dry").
Like a manager forcing you to make the sexy bits first so the demos look nice?
On postgres at least you can split creating the foreign key, and validating it into separate steps and ensure you have zero downtime Migrations. No idea about MySQL though, so maybe it's different there.
Although more on the electronics side this is good for learning BASIC and one of the chips now does Assembly.

https://picaxe.com/what-is-picaxe/

The IDE is good and the manuals cover the topics well.
You don't need the address, you just need to know in which city they live, AT MOST.

Taxes don't change every street.
Drizzle is much better in queries, but migrations fail very often.

And a lot of mysql bugs are reported in GitHub and waiting for fixes.
Zimaboard: The closest thing to my dream home server setup
I use very similar types as the author in my own libs and framework.

I think this is perfectly legitimate, in the same way that I don't use std libs directly but always behind wrappers or my own implementation.

The C std lib and default types are often what is keeping the language back.

And they should be used when you have no other choice.

Short name for scalar types is also pretty much the new standard for modern languages such as Zig.
Can you expand on this? I'm curious about the steps.
The author says it's fine to add a barrel file for a public package; they're just saying you shouldn't add a barrel file for every folder: https://infosec.exchange/@marvinh/111203114104449172
Thanks for making the recommendation. I've been increasingly realizing that my procrastination, which has been extremely resistant to "usual" methods, may be driven primarily by habituated, intense anxieties. I'm only beginning to look at it from this angle, and going through this book you mentioned feels like a good next step.
Most applications don't even need to optimise for N+1 queries and the ones that do could get by with just optimising it in a few places. Measure first then optimise as you see the need.

GraphQL batching together what would be multiple waterfall REST requests is such a perf boost for most cases that N+1 is really only an issue if your DB is bottlenecked.
IMO, defining your own aliases for stdint.h types is innocent enough, but manually defining prototypes for Win32 calls instead of including standard headers is one step too far. You don’t own the ABI here: things like HANDLE and WPARAM have already changed sizes once, who’s to say ULONG_PTR will stay the same as uintptr_t for all future architectures? There is a good reason why doing the same on Unix is discouraged.
> Then you'd get much better image quality and wouldn't have to rely as much on AI to fix the sensor's limitations.

Interesting, I've always thought the iphone camera produces extremely good results. Subject to the obvious limitations like not being able to replace the lens! What sort of benchmarks should I be looking at, to really measure the camera's limitations?
> Then why didn't the markets go up in Japan and Europe (per the GP)? Also

Japanese companies are notorious for having poor return on equity for decades.