HNHacker News
TopNewBestAskShowJobs

mleonhard

4,067 karma · joined February 26, 2008

Michael Leonhard. San Francisco. Software engineer and entrepreneur. Interested in many things.

michael206@gmail.com

http://www.tamale.net/

submissionscomments
mleonhard··on What is our hidden consumption of microplastics doing to our health?
The cardboard bowl from Whole Foods is likely water-proofed with PFAS.

People with PFAS in their blood tend to be overweight or underweight. The body eliminates PFAS very ver slowly. There was a recent study that showed that replacing a person's blood plasma was an effective way to remove PFAS. Keeping it out of the blood seems to be much harder.

mleonhard··on Riot Games: Artificial Latency for Remote Competitors
Why not? Their system simulates latency between their facilities in two cities. Latency does not change much. Their solution adjusts to realtime latency variance, but they don't show that such realtime adjustment is needed. The article doesn't say whether they even measured latency variance.

And they also don't show that their dynamic adjustments are more fair than a static adjustment. I think it's likely that their system penalizes local players for too long after a short remote latency spike.

mleonhard··on Riot Games: Artificial Latency for Remote Competitors
Are you saying that Linux's packet delay function is imprecise? Can you link to more information about this?
mleonhard··on Riot Games: Artificial Latency for Remote Competitors
They used a complex and buggy solution when a simple solution exists: Use the `tc` traffic control [0] program to configure the Linux kernel to add a fixed amount of latency to traffic from the local players [1]. If the game server does not run on Linux, they could put a Linux bridge/router in front of it.

[0] https://en.wikipedia.org/wiki/Tc_%28Linux%29

[1] https://serverfault.com/a/841865

mleonhard··on Riot Games: Artificial Latency for Remote Competitors
That's also the kind of error that one can easily catch with a unit test.
mleonhard··on Transfusion of brain fluid from young mice improves memory in old mice
Thanks for explaining. How about publishing those rejected grant proposals?
mleonhard··on Jabra denies support for Elite 85t Bluetooth earbuds on computers
Violence and crime are unacceptable strategies for citizens of democracies. Please delete your comment.
mleonhard··on Computer powered by colony of blue-green algae has run for six months
Here is a better and non-paywalled article from the researcher's university: https://www.cam.ac.uk/research/news/scientists-create-reliab...

The paper: https://doi.org/10.1039/D2EE00233G

mleonhard··on Jabra denies support for Elite 85t Bluetooth earbuds on computers
When I receive a call, my Bose SoundSport headphones randomly ring at max volume, with audible clipping. This happens when the iOS ring volume slider is set to the middle and hearing protection is enabled at 75dB. The sound is shockingly loud, especially when listening to an audio book at low volume. There was a multi-year megathread about it on the Bose forums before the company removed the forums entirely.

I chatted with five different Bose Support staff and they all refused to file a bug report. They are happy to send me a third pair with the same problem.

How can we get companies to respect their users?

mleonhard··on A portable wind turbine the size of a water bottle
An informative forum discussion of the Archimedes wind turbine: https://permies.com/t/37219/Archimedes-efficient-wind-turbin...
mleonhard··on Transfusion of brain fluid from young mice improves memory in old mice
Do you have any evidence to accuse NIH of fault, or is your comment pure speculation?
mleonhard··on Infrastructure From Code
Infrastructure from code is great, when your CI system generates the production diff and adds it to the code review. Then it's clear exactly what will get deleted. The deployment process also needs to be restartable and steps skippable. So for example, when a migration fails, you can perform it manually, re-deploy and skip the broken step. So far, no infrastructure-as-code tool works like this.

I know of only two tools that work effectively: Terraform & Pulumi. Terraform's config language has major flaws and Hashicorp is not interested in fixing them. For example, one cannot use a single Terraform config to create a database instance and a database inside it, or a VM and a server inside it, etc. So every application requires multi-stage configs which are full of footguns. Pulumi supports proper languages like Python & Golang and does not have this problem.

I would like to see a Rust version of Pulumi that uses static typing to eliminate run-time errors in infrastructure config. Maybe Shuttle will become that? It looks like they're integrating the web server with the infrastructure code. I think they should go in the opposite direction and make everything modular (usable separately) and composable. I want to write `deploy.rs` and run `cargo deploy`.

mleonhard··on Transfusion of brain fluid from young mice improves memory in old mice
It doesn't happen because of the structure of society. Capitalism efficiently allocates capital, but does not maximize citizen quality-of-life.
mleonhard··on I stopped to watch kids playing at recess – security was called
I've visited many expensive buildings in SF and lived in several. Those buildings do have study areas and lounges. But those places are never cozy and never designed to help people interact. They are often in a separate area or floor, away from the main entrance. The lounge areas are separated for multiple groups to use without interfering with each other. Furniture is heavy, expensive, and hideous. Tables are heavy or unmovable. There are no coffee tables. Music blares.

Architecture & design that fosters community will have a space for eating and socializing near the main entrance. When you enter or or exit the building, you can see who is there and walk over to say hello. The space will be cozy, clean, with warm lighting, good ventilation, movable chairs & tables, and no music or TV. There will be a sink with hand soap & paper towels, a microwave oven, and a hot water kettle. And a clean toilet around the corner.

I would be willing to pay for that, but so far no company has had the imagination to offer it. There's a similar lack of hot-desk co-working spaces that are suitable for coding. I would love to pay for that, too, but it doesn't exist. I've spoken with many co-working space managers and none have shown interest in making it happen.

mleonhard··on I stopped to watch kids playing at recess – security was called
US apartment buildings are designed to maximize profits (rentable floorspace) and therefore contain no communal spaces, no seating. There are no stairs except dark cramped fire escapes. Some elevators are configured to prevent people from meeting. Many modern buildings are also too big to know most of your neighbors and feel part of a community.

Additionally, large leasing companies set rents to maximize profits, at the cost of turnover. It's hard to feel part of a community when people are constantly leaving and new people arriving. Residents can't feel like they belong when they expect to be priced out and forced to move in a year or two.

Capitalism produces efficient allocation of capital, but not maximum citizen quality of life.

USA needs housing coops like there are in Denmark: https://stories.coop/stories/kab-how-cooperative-housing-wor...

mleonhard··on Transfusion of brain fluid from young mice improves memory in old mice
Thanks for checking. Alzheimer Management By Albumin Replacement (AMBAR) treatment has shown efficacy in slowing the progression of moderate & advanced stages disease [0, 1].

[0] https://doi.org/10.1080/14737175.2021.1960823

[1] https://doi.org/10.1002/alz.12137

mleonhard··on Transfusion of brain fluid from young mice improves memory in old mice
Can you share any more information about the medical device that showed efficacy against Alzheimers in the 200-patient trial?
mleonhard··on AI-engineered enzyme eats entire plastic containers
In 2009, a Taiwanese high-school student (Tseng I-ching) discovered bacteria that decomposes polystyrene [0]. I think she deserves credit for starting this field of research.

[0] https://taiwantoday.tw/news.php?unit=10,23,45,10&post=15307

mleonhard··on Flutter 3
Do you have tests that run on your host machine, can start an API server and interact with it, and also drive the Flutter app? Or do your tests run on the mobile device?
mleonhard··on Flutter 3
Integration testing supports only running tests inside the device. If your test needs to start an API server, then you must use the deprecated and broken flutter_driver module. See the bug I linked.

Flutter's Cupertino dark mode support is broken. Some text is invisible. Some widgets are unusable. Cupertino Dark mode theme support is completely absent. See the bug I filed, with a comprehensive reproduction with screenshots. It's like the dev who added it just decided to stop half-way.

> - iOS keyboard scroll-to-dismiss mode - This is trivial to setup, just listen on scroll and hide keyboard. You could even create a generic handler that can be reused everywhere for this.

Please use an iOS device and notice how nicely one can dismiss the keyboard in iMessage, FB Messenger, Instagram, etc. Getting that behavior in Flutter requires using a third-party package.

The Material date picker is not a date-time picker. Letting the user pick a date & time requires a lot of extra code. For example, I spent many hours writing a widget that displays the date & time and lets one click to change it, like in Google Calendar.

See the bugs I linked about Navigator. The docs have multiple omissions. I lost a day and a half on them.

Yes, you can debug tasks with a breakpoint. You cannot see which async tasks are running. You cannot pause a task. I needed to debug concurrent RPC problems and tried using print. Unfortunately, print provides no visibility into tasks running in standard library code, like timed-out HTTP requests that continue running.

You can timeout waiting for an HTTP request to finish, but the request still continues in the background. If it's a large upload then it can continue for minutes, draining the device's battery and transferring data. See the bug I linked.

> - Testing on physical devices for apps that use flavors - We do this regularly across 5 different flavors on both iOS and Android.

How do you install on iOS? I tried `flutter build --flavor staging --release` and then `flutter install` which fails saying that I must supply `--flavor`. But when I supply `--flavor` it says the parameter is not supported. See the bug I linked. I spent a few hours and figured out how to first do a Flutter build and then use XCode to build again, then use Devices & Simulators to manually install the archive. But this requires that I remove the app from the device first, which destroys the app state. This makes manual testing extra slow. The process is noxious.

Flutter Inspector in Android Studio on macOS breaks 1 out of 5 times I try to use it. I often waste a few minutes trying to figure out why my code changes did not have the desired change on the widget tree. Then I finally realize that the widget tree pane is broken and I need to restart Android Studio. It's been like this since 2018 through multiple upgrades of Flutter, Android Studio, and macOS.

mleonhard··on Flutter 3
The only way I will get what I need from Flutter Team is if Sundar fixes the company's incentive structure to align employee incentives with long-term profitability. I do not expect that will happen. But if it did, I would probably immediately go back to work at Google and buy Google stock.
mleonhard··on A Simple Hash for Perlin Noise
Thanks for sharing that. Someday, an AI will want an eye-catching way to display its mood to others. I expect it will use images like your color orbs.
mleonhard··on Flutter 3
Google Flutter Team: You launched Flutter Desktop and got your promotions. Now can you please go back and finish Flutter Mobile? Specifically, please add:

- Integration testing [0, 1]

- Location [2]

- iOS dark mode [3, 4]

- iOS keyboard dismiss decoration [5]

- iOS keyboard scroll-to-dismiss mode [6]

- iOS NavigationLink widget [7]

- iOS checkbox widget [7]

- Android camera that doesn't randomly crash (unfixed for 3 years) [8]

- Android date-time picker (Requested in email to Flutter Team. They refused.)

- Usable documentation for Navigator 2.0 [9, 10]

- Debugger visibility into Dart async tasks

- Stop HTTP requests on timeout [11]

- Testing on physical devices for apps that use flavors [12]

- UI inspection tools that don't randomly stop working

EDIT: Added bug links.

[0] https://github.com/flutter/flutter/issues/88549

[1] https://github.com/flutter/flutter/issues?q=is%3Aissue+comme...

[2] https://github.com/flutter/flutter/issues/31453

[3] https://github.com/flutter/flutter/issues/48438

[4] https://github.com/flutter/flutter/issues/80860

[5] https://github.com/flutter/flutter/issues/45076

[6] https://github.com/flutter/flutter/issues/57609

[7] https://docs.flutter.dev/development/ui/widgets/cupertino

[8] https://github.com/flutter/flutter/issues/70751

[9] https://github.com/flutter/flutter/issues/69315

[10] https://github.com/flutter/flutter/issues/81610

[11] https://github.com/dart-lang/http/issues/424

[12] https://github.com/flutter/flutter/issues/99607

mleonhard··on Effective altruism and the current funding situation
Global warming should increase the total amount of arable land and therefore increase agricultural output.

The harm comes from displacement of people from coastal cities, islands, and regions that become unsuitable for agriculture. Billions will try to move to Siberia & Canada. There will be conflict.

mleonhard··on Ask HN: Who wants to be hired? (May 2022)

    Location: San Francisco, CA, USA
    Remote: Yes
    Willing to relocate: No
    Technologies: Rust, Go, Postgres, all the tools of the craft
    Résumé/CV: https://www.tamale.net/resume-20220506.pdf
    Email: michael206@gmail.com
My Rust crates: https://crates.io/users/mleonhard . No crypto-currency companies, please. I'm looking for work that is full-time, part-time, contract, on-site near SF, or remote. I love automated tests.
mleonhard··on Simple declarative schema migration for SQLite
An additional benefit: The CREATE TABLE statements serve as documentation of the structure of the production database.
mleonhard··on Show HN: Radiopaper – Troll-resistant public conversations
radiopaper.com/mleonhard would be nice. :)

I was hoping that https://radiopaper.com/Socrates is role-played by a trained living philosopher. That would be fun.

mleonhard··on How to Walk (12 miles a day)
I walk about 3 miles a day. I'm interested in trying sandals + socks. I'm concerned about exposure to MOAH substances in Vaseline. Is there a good alternative to vaseline? Shea butter?

Do the Teva XLT2 sandals provide enough shock absorption for walking on concrete?

mleonhard··on How to Walk (12 miles a day)
Clear safety glasses block UV as well as tinted & polarizing sunglasses.
mleonhard··on I won free load testing
I'm working on two projects that could let a stand-alone Rust web server weather a moderate DDoS attack like the author had:

Beatrice [0] - A web server with built-in connection limits and thread limits. It's async but supports non-async request handlers.

fair-rate-limiter [1] - In theory, one could use this to shed most of the load from DDoS attacking nodes.

[0] https://crates.io/crates/beatrice

[1] https://crates.io/crates/fair-rate-limiter

← PreviousPage 6 of 34Next →