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 Cursorless is alien magic from the future
These things solved my RSI:

- Tenting split keyboard (Goldtouch V2)

- Vertical mouse (Evoluent)

- Strength training (Les Mills Body Pump class)

- Desk & chair at the proper height for me

- Keeping my body and arms warm throughout the day, especially at night while asleep

- Switching from Emacs to JetBrains editors

I hope you can solve your RSI issues. Thanks for the article. Good luck!

mleonhard··on Building a high performance JSON parser
I wrote a Rust library that works similarly to the author's byteReader: https://crates.io/crates/fixed-buffer
mleonhard··on Translations of Russ Cox's Thompson NFA C Program to Rust
If you're interested in Rust regex implementations, you may be interested in the one that I wrote in a macro: https://crates.io/crates/safe-regex . At build time, the macro generates the matcher as Rust code. The compiler then compiles and optimizes the matcher code as part of your Rust binary.

I wanted to see if it was possible to make a fast Rust regex library without using any unsafe code. It turns out that it is. Russ Cox's paper was very helpful.

mleonhard··on AngleLock, improvement on T-slot aluminum framing system (2022)
I was researching options for a small project and found this company. Their claims were interesting, but I have not studied mechanical engineering. I posted on HN hoping that someone knowledgeable would comment and confirm or refute the company's claims.
mleonhard··on Flawless – Durable execution engine for Rust
The boring way to do guaranteed execution with retries is to store the work items in Postgres and use a pool of workers. The workers store intermediate results in a cache.

Such systems need tooling for diagnosing and fixing problems: metrics, logging, dead-letter queue, inspecting and evicting cached items, retrying dead jobs, adjusting worker settings. Flawless and similar systems will have the same problems and need the same tools.

mleonhard··on Startup CTO's Handbook
"Section 3.4 Testing" is missing an explanation of why testing is necessary. Some startup CTOs make critical errors like un-staffing testing or migrating to Service-Oriented Architecture without integration tests. We need the handbook to instruct such people on why testing is a necessary part of the software process.
mleonhard··on Ask HN: Who wants to be hired? (October 2023)
Location: San Francisco, CA

Remote: Yes

Willing to relocate: No

Technologies: automated testing, cleaning up tech debt, making servers fast and reliable, fixing oncall, speeding up development, Rust, Golang, Postgres, Terraform, Datadog, AWS, DevOps/SRE, Swift iOS UIKit, Flutter, C++, Rails, Python

Résumé/CV: https://www.tamale.net/michael-leonhard-resume.pdf

Email: michael206@gmail.com

See my code: https://www.applin.dev https://crates.io/users/mleonhard (3M downloads)

mleonhard··on Strada – Create fully native controls, driven by your web app
Applin is a brand new product. I plan to use it to build and finally launch https://www.cozydate.com/ .
mleonhard··on Strada – Create fully native controls, driven by your web app
I built a thing that makes it much simpler to make apps: https://www.applin.dev

You make a web server that returns JSON defining your UI. Then you make a native iOS app by copy/pasting the provided Main.swift file and adding the URL of your server. The app uses an iOS client library, fetches the JSON page definition, and builds/updates the page with native widgets. I'm planning to eventually build Android, web, and desktop clients.

mleonhard··on Applin Server-Driven UI for Mobile Apps
Hi HN. I made Applin. I'm posting it here to get feedback from potential users. I need to know which features to build next.

More details:

https://news.ycombinator.com/item?id=37526861

mleonhard··on Apple iPhone 15 Pro and iPhone 15 Pro Max
> The Pro lineup is built to last, combining the strength of titanium with the toughest back glass in a smartphone and the industry-leading Ceramic Shield on the front.

The back panel is made of glass. This is a user-hostile design choice. Apple tries to gas-light us, claiming that it's a "Durable Design". This is deception. I hope FTC sues them for false advertising.

A real durable design would have a durable back (metal, plastic, or composite) and a raised lip around the screen. I would buy such an iPhone immediately and gleefully use it without a case.

mleonhard··on We are a lot closer to the Landauer limit than I thought
https://en.wikipedia.org/wiki/Landauer's_principle
mleonhard··on Unexpected link between pure mathematics and genetics
Did you put the papers on your website or on arXiv.org?
mleonhard··on Ask HN: Anyone Using Rust for Web Development?
There are two problems with using Rust for web servers:

1. The only production-ready Rust web servers require writing async request handlers. Async Rust is not fun.

2. The only good Postgres client library is async: https://crates.io/crates/sqlx

I'm trying to remedy the first problem with https://crates.io/crates/servlin .

Solving the second problem will be another project. I hope someone else does it. There is https://crates.io/crates/diesel but it has the same problem as async Rust: incomprehensible build errors.

mleonhard··on Show HN: I was frustrated with pricing of PagerDuty et al., so made one myself
Feature request: "Quiet wakeup mode" that vibrates the user's Apple Watch for a minute before making any sound. Then start the sound at the lowest volume (inaudible) and slowly increase it over 1 minute. This would be supremely useful for being oncall while sleeping near another person.

Feature request 2: "Earplug mode" that slowly increases volume and vibration from zero to max, and stays at max for 1 minute. Support alternating various tones, sounds, and voices.

mleonhard··on Show HN: Webapp.io - Free firecracker-based full-stack hosting
We need our server to run very close to our database, preferably in the same datacenter. Does webapp.io support that yet?
mleonhard··on Indoor air quality and learning: Evidence from large field study in schools [pdf]
Second. I was homeschooled K-12 and missed a lot of opportunities to learn social skills. Learning these skills later in life is very very very hard. Now, I would pay a lot of money for live role-playing classes to help me develop the missing mental habits, but I have not found such classes offered anywhere.
mleonhard··on Analyzing Carbon Dioxide levels while attending IETF-115 in London, UK
The author's DEN-LHR flight was on a Boeing 787 aircraft, which use electrically-powered air compressors [0]. They do not draw air from the engine.

787 maintain internal air pressure equivalent to 6,000 feet of elevation. All other commercial aircraft maintain 8,000 feet air pressure. I think most of my discomfort from long flights is due to altitude sickness. The only time I have slept on a long flight and awakened refreshed was on a 787.

Jet engines use a neuro-toxic lubricant. Occasionally, some of this enters the cabin through the compressed air feed and poisons the passengers [1]. 787 passengers don't have this risk because the planes don't draw air from engines.

[0] https://en.wikipedia.org/wiki/Boeing_787_Dreamliner#Interior

[1] https://pubmed.ncbi.nlm.nih.gov/24713335/

mleonhard··on Why are clinical trials so expensive? Tales from the beast’s belly
Can you share specific things that need to happen slowly and why that slowness helps protect study participants?

Some things mentioned in the article clearly increase risk to participants: manually re-assembling translated documents, using custom software and paper forms, and diluting important documentation with boilerplate. Other things seem to purely increase cost: starting meetings with smalltalk, overcharging for server hosting, and cronyism.

mleonhard··on Why do teachers give girls higher marks than boys? Researchers have the answer
I was homeschooled and it was very bad for me. I missed the chance to learn crucial social skills in the low-stakes school environment. Learning requires making mistakes. I had to make these mistakes in my 20s and 30s at work and in social circles. My parents' decision to homeschool me had the effect of making me play life on hard mode.
mleonhard··on Magical Handler Functions in Rust
I also wanted a Rust web server with no magic, that uses async internally, and lets me write threaded request handlers. None existed, so I wrote one:

https://crates.io/crates/servlin

Servlin contains no unsafe code. I picked dependencies to have as little unsafe code as possible. I wrote some unsafe-free deps: safina (async runtime), safe-regex, fixed-buffer, permit, temp-dir, and temp-file. I plan to replace other unsafe deps: url, async-net, and serde. Eventually Servlin's only unsafe will be in the standard library and `polling` crate.

Servlin supports single-file webapp deployments by including web assets in the binary. I plan to develop Servlin until it is as strong as nginx and can run reliably with no load balancer. And someday a good Rust unikernel will exist and we will run Servlin binaries directly on hardware. That will be the world's shortest, most secure, and most performant web stack.

Please contact me if you would like to help improve Servlin.

mleonhard··on Ox64 – a sub $10 Linux-capable SBC
> 3 cores: 64-bit RISC-V core, 32-bit RISC-V core and low power RISC-V core

Does Linux have support for running on heterogenous cores? Can I run a 64-bit process and 32-bit process side by side on the same kernel?

mleonhard··on Rent going up? One company’s algorithm could be why
2011-2015 SF jobs increased 23% and housing increased 3% [0]. During this time, my own rent increased about 10% per year.

California legislature is passing some housing good laws, but the state's attorney is not enforcing them. The non-profit CaRLA is doing the enforcement and having success [1]. Their wins in court have set precedent and unblocked a lot of building permits.

[0] https://news.ycombinator.com/item?id=19679440

[1] https://carlaef.org

mleonhard··on Emmanuel Mignot wins Breakthrough Prize for discovering cause of narcolepsy
Please post a link.
mleonhard··on A small town that saved its only grocery store by buying it
From the 2022-07-25 minutes, they discussed that the store is losing money. They decided to transfer money from sewer & equipment funds to it. They also decided to lower prices.

https://erieks.com/wp-content/uploads/2022/08/JULY25MINUTES....

I'm wondering why the city council is making such decisions. Do they have experience running grocery stores? Perhaps they cannot hire a capable manager to set prices and make the store break-even? They should consult someone with experience on the matter. The previous owners would probably be willing to give advice.

From the 2022-06-27 minutes, the council approved a request to use the store's freezer for a city event. The store's manager said they needed council approval. I think the council is micro-managing the store without competence in retail management. The store manager doesn't have authority to run the store. This is probably the root cause of the store's financial troubles.

https://erieks.com/wp-content/uploads/2022/08/JUNE27MINUTES....

mleonhard··on After self-hosting my email for twenty-three years I have thrown in the towel
Here are some ideas that could solve spam:

1. Require the email receiver to add the sender to their contact list, then put all other emails in "Junk". The UX of this could be quite good nowadays with smartphones and QR codes. The changes to email apps are minimal:

  - 1) When a user opens a "mailto:" URL, the email program shows the normal "send email" screen with a "Just add to Contacts" button at the top.

  - 2) Email program has a function to show a QR code with the user's "mailto:" URL.
2. Add support to the SMTP protocol to let the receiving server demand that the sender make a small "postage" payment. This will require a privacy-preserving micro-transaction system. I worked on one that doesn't use crypto [0].

Here are some ideas for improving the current system, but not actually solving spam:

3. Create a protocol for automatically reporting emails marked as spam back to their admins. Servers will only accept signed emails. Then servers can do lots of things like:

  - Mark sent emails as "Receiver flagged this as spam" and inform the user.

  - When an account begins sending spam, rate limit it, disable it pending password reset, or alert the admin.
4. Add SMTP responses that mean "rejecting because your server sends spam" and "rejecting because that user sends spam". Servers can mark sent emails as "Receiver rejected this email" and inform the user.

5. Build a shared spam reporting system that accepts only signed emails and supports searching by email address. Receivers can use it to identify compromised user accounts and reject their email. Senders use it to identify receivers acting in bad faith (reporting ham as spam). A centralized version would be straightforward. A decentralized version would be a challenging project.

6. Add support to the SMTP protocol for reporting rate limits and cooling-off times to email senders. Admins of large shared email systems can feed these metrics into a monitoring system and receive alerts of problems early.

[0] https://github.com/mleonhard/hipp

EDIT: tone

mleonhard··on After self-hosting my email for twenty-three years I have thrown in the towel
The suggestions are good. Do Postfix and other FOSS email servers implement them?

> - Let's keep antispam measures. ...

> - Change blacklisting protocols so they are not permanent and use an exponential cooldown penalty. ...

> - Blacklists should not include whole IP blocks. ...

> - Stop blackholing. ...

> - There should be a recourse for legitimate servers. ... doing some paperwork or paying a fee to prove I'm legit ...

mleonhard··on Tor – Arti 1.0.0 is released: Rust Tor implementation ready for production use
There are two instances of `unsafe` in Arti. Both are unnecessary.

1. A mmap'd file is checked to be UTF-8 and then assumed never to change on disk to become non-utf8. https://gitlab.torproject.org/tpo/core/arti/-/merge_requests...

2. A struct holds a raw pointer so it can report an offset into a string later. It should just store the offset. https://gitlab.torproject.org/tpo/core/arti/-/blob/main/crat...

The project has the option to use `tokio`, which contains a staggering amount of unsafe code. I hope nobody distributes prebuilt version of Arti that use tokio.

mleonhard··on Blocking Kiwifarms
"In the field of modern business, so rich in opportunity for the exercise of man's finest and most varied mental faculties and moral qualities, mere money-making cannot be regarded as the legitimate end. Neither can mere growth of bulk or power be admitted as a worthy ambition. Nor can a man nobly mindful of his serious responsibilities to society view business as a game; since with the conduct of business human happiness or misery is inextricably interwoven."

-- Louis Brandeis, "Business — The New Profession", La Follette's Weekly Magazine, Volume 4, No. 47 (November 23, 1912), p. 7.

mleonhard··on Experimenters’ sex modulates mouse behaviors in ketamine trial
Which languages have genders like alive/dead or adult/child-or-animal? Can you share other interesting genders?
← PreviousPage 4 of 34Next →