HNHacker News
TopNewBestAskShowJobs

wgjordan

1,393 karma · joined August 29, 2012

submissionscomments
wgjordan··on GitHub Is Down
First incident posted: https://www.githubstatus.com/incidents/2nd6fyb4drjx
wgjordan··on Oncall Compensation for Software Engineers
While labor laws are indeed relevant, I think prevailing on-call compensation standards for software engineers have more to do with companies applying their own fairness standards to a tight job market than strict legal compliance.

In particular with regards to US law, salaried computer employees (and highly-compensated employees) are 'exempt' from the minimum wage and overtime rules of the Fair Labor Standards Act, so while it's true that you need to pay someone for doing work on an on-call shift, I don't think a US employer is necessarily legally required to pay them any _extra_ if they're an exempt employee.

wgjordan··on Oncall Compensation for Software Engineers
A typical on-call setup would be to have 'calls' sent to a mobile device, that can be acknowledged directly from the mobile. Sitting at a desktop computer with a browser open during an entire on-call period would be extremely unusual.
wgjordan··on Oncall Compensation for Software Engineers
Relevant US case law is Berry v. County of Sonoma, 30 F.3d 1174 (9th Cir.1994) [1], holding that county coroners' on-call time (requiring carrying pagers and responding by telephone within 15 minutes) was not compensable under the Fair Labor Standards Act.

Two key factors are "(1) the degree to which the employee is free to engage in personal activities; and (2) the agreements between the parties." Beyond these general factors, no universal rule applies since the details matter (frequency of calls, response-time requirements and geographical limitations, etc) in the degree to which they limit personal activities, as do any agreements laid out in a contract or company policy (e.g., how specific 'on-call' requirements and compensation are defined and agreed upon in advance).

Note that these factors have only to do with the time spent _waiting_ for a call; time spent _actually working_ while responding to a call is more clearly work that should be compensated.

[1] https://casetext.com/case/berry-v-county-of-sonoma

wgjordan··on Google Launches Carbon, an Experimental Replacement for C++
> Why try to compete with Rust while not really being a better Rust?

The article addresses this directly and is clear that Carbon is not designed to 'compete with Rust', and instead targets a much narrower use-case:

> Carbon is for those developers who already have large codebases in C++, which are difficult to convert into Rust.

I don't have a large C++ codebase to maintain so I don't currently have any use for Carbon, but I could see it being interesting for those who do.

wgjordan··on Publishing your work increases your luck
"Please don't comment on whether someone read an article."

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

wgjordan··on There are no open issues or pull requests on Flask
I've been similarly impressed by the quality of Sequel [1], a database toolkit for Ruby that accomplishes a similar feat. 0 open / 1150 closed issues, 0 open / 672 closed PRs.

[1] https://github.com/jeremyevans/sequel

wgjordan··on Contra Wirecutter on the IKEA air purifier
The only point was to confirm that Wirecutter doesn't always actually test all of the products they review, regardless of whether it's (arguably) justified in each individual case.
wgjordan··on Contra Wirecutter on the IKEA air purifier
>> They didn't actually try any of the products themselves (they admitted as much in the article).

> I’m going to dissent here on this thread because I’m not seeing any references.

OK, here's one such reference in "The Best Baby Formula" [1]:

> We didn’t do any testing for this guide, because babies have minds of their own, and it would be impossible to control for all of the variables that might make a baby prefer one formula over another.

Now there might be various reasons why actually testing the product is difficult or unnecessary to produce a helpful, well-researched review article, but there are definitely examples of this.

[1] https://www.nytimes.com/wirecutter/reviews/best-baby-formula...

wgjordan··on GitHub user sends notification to 400k users
If you read the page you linked more carefully, you will see that OSI does not own a valid trademark for "Open Source", only for "Open Source Initiative".

OSI in fact tried to file for a trademark on 'Open Source' in 1999 [1], but failed because the term is 'too descriptive'.

[1] https://opensource.org/pressreleases/certified-open-source.p...

wgjordan··on Google “hijacked millions of customers and orders” from restaurants – lawsuit
I think it's perfectly reasonable to blame/be upset with both the delivery operator (for infringing upon the restaurant's trademark by causing confusion as to the source of goods/services), and the e-commerce platform for knowingly facilitating/allowing the trademark infringement to occur on its platform. This is called 'secondary' or 'contributory' infringement in legal jargon.
wgjordan··on Request Coalescing in Async Rust
Excellent tour through this topic, here's my best attempt at a tl;dr summary:

1. write a 'Hello World' HTTP server to show how Tokio's async-Rust primitives work for epoll-based I/O;

2. show how the tracing crate ecosystem works to inspect and debug async-runtime tasks;

3. play with converting traces to OpenTelemetry, tokio-console, etc. for different views of the collected data;

4. play with hyper and axum to build a simple HTTP service that makes an upstream HTTP request to the YouTube API;

5. cache results by ID so it can shared across all request-handlers;

6. add 'request coalescing' to prevent multiple concurrent requests from making upstream requests in parallel;

7. fix a bug in the request-coalescing implementation that caused coalesced requests to hang when the in-flight request raised an error.

One word of caution about using any request-coalescing pattern like this on a highly-loaded server: in the case where every request fails to populate the cache (e.g., timeout / not found), you end up in a situation where all requests end up _serialized_ and can quickly lock up a server under constant load. You need to either add a circuit-breaker, or otherwise ensure that _something_ always gets cached in any otherwise-uncacheable edge case (e.g., hit-for-pass in Varnish [1].)

[1] https://info.varnish-software.com/blog/hit-for-pass-varnish-...

wgjordan··on Show HN: A pure bash web server. No netcat, socat, etc.
> and it just so happens that I started an MVP shell-script testing library for just such an occasion when I ALSO got frustrated with the bash-accessible testing libraries available to me

I found Bats straightforward and simple to use, never felt the need to reinvent the wheel there.

wgjordan··on Welcoming Recorded Music to the Public Domain
> AIUI you would be able to reproduce Steamboat Willie verbatim

The cynic in me suspects that even this might be challenged. Is there anything specifically preventing trademark protections from applying to unauthorized verbatim reproduction, and only derived works?

wgjordan··on DoE spent $1.1B to build carbon capture demos
Shifting goalposts here:

At first, you said that if any CC could achieve net-zero emissions, then it would be significantly more cost-effective than rebuilding infrastructure. Baseless assertion without any specific numbers to cite.

Now, you're saying that if any CC could be net-zero and more cost-effective, then it should be welcomed. Well, yes, obviously.

wgjordan··on Bigger vehicles are directly resulting in more deaths of people walking
The linked Dangerous by Design 2021 report [1] shows the data on increased pedestrian deaths:

> The number of people struck and killed by drivers nationwide while walking increased by an astonishing 45 percent over the last decade (2010-2019).

[1] https://smartgrowthamerica.org/dangerous-by-design/

wgjordan··on Masks Are Back, Maybe for the Long Term
> In a world where vaccines are widely available, there is little value in forcing the vaccinated to collectively protect people from their decisions to remain unvaccinated.

Three reasons unvaccinated-by-choice individuals continue to pose a public health burden:

1. Vaccines not yet available for children under 12

2. Economic costs of covid treatment for unvaccinated (including long covid) passed on to taxpayers / insurance groups

3. Increased risks of even more deadly / infectious / vaccine-resistant virus mutations emerging from ongoing spread

wgjordan··on Fullstaq Ruby: Ruby, optimized for production
Aside- thanks for engaging in detailed discussion here and more generally for all of the Ruby-performance contributions you've made over many years, I truly appreciate them.

First, my lack of confidence in depending on Jemalloc 3 in production is not only the 'unknown reasons' underlying such a frozen dependency, but also due to the fact that this particular dependency is over six years old and unmaintained. Not only does this lack more recent security/bug fixes and features, but also makes it more complex to integrate with up-to-date Linux distributions (e.g., your need to maintain custom compilation patches instead of simply depending on the OS's jemalloc package).

> What I mean is that it's not known in what way the algorithms and data structures are different. [...] The differences between Jemalloc 3 and 5 are not explicitly documented anywhere, and to find out requires research.

As I mentioned, the jemalloc developer already highlighted the exact differences back in 2018, and he even provided a MALLOC_CONF environment variable to use that makes memory usage in jemalloc 5 behave like jemalloc 3:

> You could verify this by setting dirty decay and muzzy decay to 0 in the MALLOC_CONF environment variable (i.e. MALLOC_CONF="dirty_decay_ms:0,muzzy_decay_ms:0", unless I've typoed something).

There is also a very readable page on performance tuning in the jemalloc 5 documentation [1].

In your research, have you ever tried running jemalloc 5 with this configuration? I did this back in 2018, tested/verified against my production workload, and have been running Ruby on jemalloc 5 without any issues since.

All that's involved is installing your OS's 'jemalloc' package and setting two environment variables (LD_PRELOAD and MALLOC_CONF). Simple enough and more confidence-inspiring than maintaining a patch against a six-year-old frozen dependency if you ask me.

> The pragmatic thing to do is not to prioritize figuring out exactly how Jemalloc 5 works. It's to continue the packaging work to make Ruby + Jemalloc 3 available to the public. Jemalloc 5 can wait.

I disagree about the relative priorities- I spent a day tuning Jemalloc 5 for my team's Ruby application back in 2018 [2] and it's been a done issue for us since then.

[1] https://github.com/jemalloc/jemalloc/blob/dev/TUNING.md

[2] https://github.com/code-dot-org/code-dot-org/pull/24676#issu...

wgjordan··on Fullstaq Ruby: Ruby, optimized for production
Thanks, these extra details are helpful and seem like the more significant motivations underlying this distribution.

> For reasons that are not yet clear, significant memory savings are only achieved with Jemalloc 3, not with Jemalloc 5.

So the real advantage of this package is that it bundles a 6+ year-old, unsupported version of Jemalloc, because the more recent versions found in current OS distributions don't yield memory savings in practice- for unknown reasons. This doesn't instill very much confidence.

I would be much more excited by efforts to investigate the jemalloc > 3.x changes so Ruby can work optimally with current releases packaged in modern Linux distributions, rather than double-down on a workaround that requires bundling an increasingly-ancient version of the software.

I should also add - as mentioned by the jemalloc author [1], the addition of the time-based purging feature is likely responsible for memory-usage differences between jemalloc 3.x and 5.x, so you can reduce `dirty_decay_ms` and `muzzy_decay_ms` to get 3.x-like memory usage. I have been using this configuration in production since 2018 for significant memory savings in Ruby using jemalloc 5.x.

[1] https://bugs.ruby-lang.org/issues/14718#note-86

wgjordan··on Fullstaq Ruby: Ruby, optimized for production
The parent comment noted that using jemalloc for Ruby without compiling is already trivially easy, so the argument that 'compiling is hard' is irrelevant even if true.

The real argument is that installing jemalloc separately and running Ruby with an environment variable is too hard.

wgjordan··on A Storage Crisis
> I think $6 a month for "unlimited data" is going to end badly.

Backblaze has been offering their 'unlimited data' for over a decade [1], and it hasn't ended badly for them yet.

It's fully sustainable because they only lose money on a few customers (like that one customer storing 430TB for $6/month [2]), while most customers use much less storage than that, so the service remains profitable overall.

The soft limit of its 'unlimited' comes from it being a personal-backup mirroring service and not a fully-external cloud storage, so the service only fits certain use cases.

[1] https://www.backblaze.com/blog/all-in-on-unlimited-backup/

[2] https://www.reddit.com/r/IAmA/comments/b6lbew/were_the_backb...

wgjordan··on A foreign seller has hijacked my Amazon Klein bottle listing
> Amazon began selling a competing product with a similar (not identical spelling but pronounced the same) name they successfully trademarked B

Trademarks are published for opposition for this reason, right? Client could have filed an opposition against the confusingly similar mark during the opposition period and it never would have ended up in that situation with trademark C. Monitoring trademarks posted to the Official Gazette is an extra burden but important if your brand is valuable.

wgjordan··on Ask HN: Is HN Down?
I would add a comment, but HN is down.
wgjordan··on Distributed Cloud Builds for Everyone
> Is Llama a typo for Lambda? OR is there a service which uses Lambda for doing remote builds? Sorry, unable to figure it.

"Recently, I blogged about building LLVM in 90 seconds [1] using AWS Lambda and my Llama project."

[1] https://blog.nelhage.com/post/building-llvm-in-90s/

wgjordan··on Why Corporations Won’t Hire Remote Workers in Colorado
Just post salary ranges for open positions! If the position is vague or covers a wide range of experience, just post a wide range. Salary transparency is a very good thing, it empowers employees and is good for the industry overall.

Note that CA law requires employers to provide salary ranges upon request after any initial interview. So not knowing a salary range for a posted position is no excuse, unless you plan on excluding CA from your remote position as well.

wgjordan··on Tim Cook’s Fortnite trial testimony was unexpectedly revealing
Pretend that Apple is a federal agency, not a corporation? Then its monopoly power would be legitimate and antitrust laws would not apply.
wgjordan··on Tim Cook’s Fortnite trial testimony was unexpectedly revealing
Analogy to drug safety makes no sense - FDA regulates drug safety and 'fake' generic drugs are very much allowed, so customers may choose generic drugs without needing to distinguish safe/unsafe themselves.
wgjordan··on Welcome to Libera Chat
In my experience (US mid-90s) this kind of greeting was common in random, mass-consumer chat channels (e.g., on AOL), but nowhere found (or ridiculed as mainstream) on technical/hacker-oriented BBS or IRC channels.
wgjordan··on The digital currencies that matter
"In comments, it's ok to ask how to read an article and to help others do so."

https://news.ycombinator.com/newsfaq.html

wgjordan··on Perfectly Ordinary Stones, Carried for 1,300 Years (2014)
Reminds me of the Stone of Scone, a perfectly ordinary stone carried for over 1,000 years and used in the coronation of English monarchs:

https://en.wikipedia.org/wiki/Stone_of_Scone

← PreviousPage 4 of 11Next →