- "In 2018, Buckley and the other nine senior members of the editorial board resigned, claiming that MDPI "pressured them to accept manuscripts of mediocre quality and importance."
Even before reading this I definitely got vibes of "Wine makers find drinking red wine has benefits" or "Starbucks finds that coffee is the ultimate health drink" etc.
"1-2 glasses of wine a few days a week associated with better health outcomes" was true, but it leaves out "1-2 glasses of wine a few days a week associated with wealth". There's some correlations there, but neither statement is pointing the finger at the causation.
Also teetotalers, as a group, includes people who don't drink because an undiagnosed underlying health issue makes them feel ill when they imbibe. Maybe a latent hepatitis-b infection.
This is obnoxious. You cannot disprove a scientific study by pointing at who funded it, and a properly constructed one won't be able to hide bad results since it'd be preregistered.
He doesn't have the burden of disproving it, the study has the burden of proving its claims. I consider studies funded by an interested party as weak evidence at best - perhaps enough to encourage an independent party to conduct another study.
All medicines in the US are approved using studies funded by the company that submitted them. There's a simple reason for that - nobody else would care enough to do it.
If you can't read a study well enough to tell if the methods it uses are good, that's your problem.
Proving or disproving a claim is the purpose of a study. At this point, it's out of the researchers hands and up to other research teams to replicate the research and confirm or deny the results.
It's not an effective heuristic. Overly online cynical people are just obsessed with the idea that everything is a conspiracy that can be undone by "following the money".
Bad science reporting is common, but it's more common for the reporters to just misread what a study says.
I don't think there's a D1-ESP32 board? The D1 Mini is Wemos' ESP8266 board. They do have ESP32 boards with the same footprint, but those are not D1 Mini but S2 Mini, S3 Mini and C3 Mini, depending on whether it's ESP32-S2/-S3/-C3.
You'll find many varieties of boards with different SoCs being sold mentioning the D1 Mini in their model number or product description, as it initially defined the form-factor being referred to.
Similar to the ESP-12F, which you can also get with ESP32 SoCs, if you want, even though the ESP-12F originally is an ESP8266 board.
Indeed, there is no D1-ESP32 from Wemos. It's a name used by several non-Wemos clones that have an ESP32 chip in a module form factor that is compatible with the original Wemos D1 mini.
The challenge is that these modules are not all the same. The differences are for example in the voltage regulator and how much current you can draw from it. Which can make something work fine with one "D1-ESP32" while not working with another.
What if the captive portal just had a link (or on an IFE screen, a QR code) that connected your phone to a different, WPA2/WPA3 protected, hidden WiFi SSID that was generated exclusively for you? Phones nowadays support joining a passphrase protected WiFi AP via a QR code, so I'd imagine that's doable. The hard part would be finding routers that support >300 different hidden SSIDs, but honestly I would hope that that is technically feasible nowadays.
That way you'd at least have the protection of the WPA GTK.
You can have an AP accepting multiple different WPA2-PSK and/or WPA3-SAE passphrases, and since on WPA2 PMK depends on the password, and on WPA3 PMK is different for each client, you can put them in different VLANs or have per PMK MAC mapping if they share the same VLAN.
This. And even if the >300 is not available, how many people actually buy Wi-Fi on the plane? That is the number of clients that need to be supported. And if that's still a problem (or you don't want to guess), the SSID can be hidden and static and the only thing non-static is the password that works for just the duration of the flight you are on.
> NGINX Unit – universal web app server – a lightweight and versatile open source server project that works as a reverse proxy, serves static assets, and runs applications in multiple languages.
For the postgres config, set fsync=off and full_page_writes=false, and increase min_wal_size, max_wal_size and checkpoint interval with the hope that your tests pass before having to flush the WAL. Maybe slap in some tunings from PGTune.
If you're using docker/podman or docker-compose and your db size is small, a major speedup on linux is to just mount the entire data dir into memory with --tmpfs /var/lib/postgresql/data (or tmpfs: - /var/lib/postgresql/data in docker-compose)
Additionally, if you constantly reset your db in the tests, consider making a template db at the start and later just doing CREATE DATABASE ... TEMPLATE foo; to copy the pages from that template instead of running migrations that produce WAL log. In fact, consider making a db for every test suite from that template at the start - then you can run each suite in parallel (if your app's only state is the db and a single backend).
I was surprised but CREATE DATABASE TEMPLATE is still pretty slow, a few hundred ms on my machine. Better than alternatives though.
A few more application-level optimisations: if you need to clear your database between tests, the best way is to wrap each test in a transaction and roll it back (Postgres supports nested transactions with checkpoints which might help make that transparent to the application under test). The second best way is usually to use DELETE rather than TRUNCATE, the latter is much slower on small tables (but much faster on big ones). The third fastest way is to create a new DB from template, although it plays nice with parallelisation.
It looks similar to the style you get from draw.io if you choose "Sketch" as the style for an object (add box -> "Style" from right sidebar -> Sketch).
I like that ScrollTimeline is coming, I hope to get rid of JS scroll listeners for good. Can't wait to use this in like 5 years when all browsers finally support it.
> The V8 engine is updated to version 11.3, which is part of Chromium 113. This version includes three new features to the JavaScript API:
> ...
> - Methods that change Array and TypedArray by copy
> ...
Excited to see these in. I've been waiting for the non-mutating versions of .sort() and .splice() and now they're finally here (.toSorted and toSpliced)!
> - Resizable ArrayBuffer and growable SharedArrayBuffer
Does this mean that WebAssembly memory can also now grow without making a copy of the entire buffer?
> The V8 update was a contribution by Michaël Zasso in #47251.
I have one of the Wemos C3 pico boards which rely on the C3's native USB serial controller. The experience is pretty rough for quick iterations on a devboard on Windows.
You restart the board to programming mode by holding down the BOOT button down while pressing RESET. Wait a few seconds, then COM7 is available. You program the board, and then manually RESET the board with the button. COM7 disappears. Then you wait a few seconds, then COM6 appears. Oh, did you print some debug info on boot? Too bad, it takes a few seconds for the virtual serial port to appear in Windows so you just can't get input during that time because the reset resets the USB controller as well (the entire chip).
This is the benefit of on-board USB-UART chips: if you need to reset the chip, your USB controller doesn't need to be reset so your serial port stays open. Additionally, most ESP32 dev boards offer automatic reset by utilizing the DTR or RTS pins of the UART chip and a couple of transistors.
No button presses necessary (there are no buttons even, I have a slide switch on my PCB but almost never need to use it), everything resets automatically (except when it's in deep sleep, then I need to unplug it and plug it in again), I see log lines from the very first line in `app_main()`, etc.
I'm using a recent version of the ESP-IDF framework including all its tools (there is a VS Code extension that has a `Build, Flash and Monitor` button, I think all the operations are just run using the `idf.py` script, but not sure).
I'm sure.