HNHacker News
TopNewBestAskShowJobs

jdmichal

6,062 karma · joined February 9, 2012

I live in Tampa Bay, Florida, US. I find problems and drive them to solutions. I'm a software engineering manager, architect, and project manager.

Hobbies: sailing, gardening, linguistics, food and cooking, archery.

Feel free to contact me; I'm on gmail.

submissionscomments
jdmichal··on PRQL: Pipelined Relational Query Language
I'm quite aware of your advice regarding using `` against table. However, I'm talking about using `` against subqueries and CTEs where the pieces of the table have already been extracted.
jdmichal··on PRQL: Pipelined Relational Query Language
So unsurprisingly based on my gripes, we are an OLAP shop. I've never heard of ClickHouse before, and I'll be looking into it. We're doing OK on PostgreSQL, but just OK. A lot of learning and unlearning.
jdmichal··on PRQL: Pipelined Relational Query Language
I've had two real gripes with SQL. The rest of it has been, as you said, pretty good.

Complaint 1: Not being able to use selected columns later in the same select.

    SELECT
        gnarly_calculation AS some_value,
        some_value * 2 AS some_value_doubled
Instead:

    SELECT
        subquery.*,
        some_value * 2 AS some_value_doubled
    FROM (
        gnarly_calculation AS some_value
    ) AS subquery
Complaint 2: Not being able to specify all columns except. This combines with the above, where I have to pull some intermediate calculations forward from a subquery, but I don't need them in the final output. So I have to then enumerate all the output columns that I actually want, instead of being able to say something like `* EXCEPT some_value`.
jdmichal··on A third of North America’s birds have vanished
Why would one not want possums? They are great. Eats bad bugs, highly resistant to rabies, and generally non-aggressive towards humans.
jdmichal··on Breaking java.lang.String
Invariants and all methods -- including constructors -- enforcing them is OOP 101. I would be surprised if they felt the need to make such a callout in the language specification.
jdmichal··on SF's Anchor Brewing Company shutting down after 127 years
I've felt similarly for a while. It seems like all these smaller brewers start with an IPA, then maybe make something else later. Well, I don't like hoppy beers, and I especially don't like IPAs. I like malty dark beers like dunkels or Irish reds, and those are apparently way down on the "craft beer" clout list.
jdmichal··on Fluent: Static Extension Methods for Java
Or, in my opinion, even worse... When you get mix-and-match because you want to extend a fluent API. Using your example, what if `SetWriteTimeout` was a static method you wrote, but all the others were provided by library as a fluent API? Then you end up with this kind of unholy mess:

    SetWriteTimeout(FactoryClass.factory().SetConnectTimeout(100), 2000).SetReadTimeout(4000);
Good luck correctly guessing the order of operations on that in a quick read...
jdmichal··on Fluent: Static Extension Methods for Java
They're more discoverable, because typing in `object.` tells the IDE that you are looking for methods on the type of `object`. If the IDE is aware of extension methods, it can also expose them the same as instance methods.

Java specific: If you're looking for a static utility method, then `UtilClass.` will also autocomplete. However, what if the function you're looking for isn't in `UtilClass`, but `SomeOtherClass`? What if you don't even know whether a method already exists for what you're trying to accomplish, and it could possibly exist in multiple libraries? Your discoverability engine quickly becomes Google.

jdmichal··on When the facts change, I change my mind. What do you do?
> Since 2018 U.S. stocks have returned 9.59% per year (I checked with Portfolio Visualizer) and international stocks have returns 1.83%.

Right, so there's your 8% per year upside risk. So during US recessions, do international stocks provide a differential return against US stocks that is high enough to support that 8% yearly upside risk?

(And, even if they do, now it's a matter of timing the market...)

> I don't see how that supports the idea that economies are very interconnected and investing outside the country can't produce a large return differential.

I didn't say it wouldn't provide any differential. I implied that that differential will either always be negative or positive but small enough that it's not worth moving.

Or, in other words, US or European recessions would equally tank foreign investments dependent on US or European consumers. Of course these markets would be somewhat resistant based on the strength of their own local economies, but are those economies strong enough to provide solid returns through a US or European recession? And if they are, is the differential high enough to risk the 8% yearly upside during non-recessions?

jdmichal··on When the facts change, I change my mind. What do you do?
Is that entirely recency bias, or also changing facts? Economies are very interconnected now. It's hard to imagine a scenario today where a global economic power enters a large recession, but there's some other economy out there that gets by relatively unscathed. And by that I specifically mean: providing a return differential large enough to justify the upside risk of investing there in the first place.
jdmichal··on Suit alleges recreation.gov cluttered with junk fees, seeks millions in refunds
If your goal is to maximize the number of people actually in the park, then you want cheap early cancellations, and high late cancellation and no-show fees. You want to encourage people to cancel with enough warning if they no longer plan to be there.

Not surprisingly, this is also the exact model that hotels use...

jdmichal··on The only acceptable rating to leave an Uber driver is 5 stars
> *****: This person deserves to have access to this platform and the ability to earn a living through it

> *, **, ***, ****: This person is a danger to me, themself, and others and should be removed from the service

Sure sounds like your exact experience falls under that second group!

jdmichal··on The only acceptable rating to leave an Uber driver is 5 stars
If only the article had covered such a scenario...

And I quote:

> *****: This person deserves to have access to this platform and the ability to earn a living through it

> *, **, ***, ****: This person is a danger to me, themself, and others and should be removed from the service

Sure sounds like your exact experience falls under that second group!

jdmichal··on European Union votes to bring back replaceable phone batteries
I would imagine that thin plastic is more resistant to permanent deformation than thin metal. Or, in other words, when then metal bends, it tends to stay bent. Thin plastic can more easily bend, but then restore to its original shape.

But I'm not a materials engineer. This is just in my lay experience of how thin materials I've encountered perform.

jdmichal··on LCD TVs won’t see any further development
CRT TVs automatically degaussed every time they were turned on...
jdmichal··on European Union votes to bring back replaceable phone batteries
I agree with you. But also, to be fair, I'm pretty sure in that time phone bodies have transitioned from mostly plastic to mostly metal? I'm sure that has something to do with the weight, and I would guess that the metal shell is probably thicker too?
jdmichal··on Effective Rust (2021)
> The litmus test for panic! vs. Result<T,E> is not rarity of occurrence, it's whether the condition represents a programming bug or a recoverable error.

Because that exact same conceptual separation worked so well for Java with checked vs unchecked exceptions...

Everyone just started using unchecked exceptions because they provide an easier coding experience.

Also, there's legitimate situations where the library cannot make that decision, but rather the user. As someone else says in another example, who are you to say that my request to allocate too much memory is a panicable offense? What if my program can, in fact, recover from that situation?

At least in Java, catching checked vs unchecked exceptions is the same if you do choose to handle them.

jdmichal··on Infrastructure should be boring (2022)
My bad, I looked at the bottom of the page and misread the Redis trademark callout as a company copyright. Apologies for any insults!

I didn't even read the full line, because it clearly says not even affiliated. I have no excuse other than posting while distracted.

jdmichal··on Infrastructure should be boring (2022)
I'm pretty sure to be a submarine, the implication is that someone not related to the project is writing the piece. This is just straight PR fluff on the project's own website.

~~Also, apparently the project is part of Redis.~~

EDIT: My bad, I looked at the bottom of the page and misread the Redis trademark callout as a company copyright. Apologies for any insults!

I didn't even read the full line, because it clearly says not even affiliated. I have no excuse other than posting while distracted.

jdmichal··on Maryland License Plates Now Inadvertently Advertising Filipino Online Casino
In Florida, the fees paid for specialty plates are given directly to an organization which established the plate -- typically a charitable organization. So they're a way to support, while also providing personalization. The $25/year for my plate goes directly to my alma mater. Even Disney set up their plates to go to the Make a Wish Foundation.
jdmichal··on Cases where full scans are better than indexes
The answer will heavily depend on what you're doing.

CRUD patterns where you're pulling out a small group of rows from several tables, you probably want indexes on `JOIN` clauses so that you can quickly find those links using nested loop index scans. And maybe a few indexes on common ways to find records.

Analytics patterns where you're aggregating a large number of rows, indexing `JOIN`s won't help you, because you really want hash or merge joins anyway. Instead, tune your indexes for `WHERE` clauses, because you want a filtered index scans instead of table scans on the reads.

You also want to learn about cardinality and selectivity. Ideally your indexes are organized by selectivity.

jdmichal··on IRS tests free e-filing system that could compete with tax prep giants
Another asymmetry: Winnings are always included while losses are itemized. Which means if you take the standard deduction you cannot write off the loses, but still have to include the gains.
jdmichal··on IRS tests free e-filing system that could compete with tax prep giants
Indeed, there's a size limit on reportable winnings that trigger the necessity of a W-2G. There's also potentially different requirements that trigger tax withholding by the payer.

It's generally $600 for winnings, and $5000 for withholding.

https://www.irs.gov/pub/irs-news/at-01-17.pdf

https://www.irs.gov/pub/irs-tege/gaming_withholding_reportin...

jdmichal··on See this page fetch itself, byte by byte, over TLS
Think of it like the NTP protocol to for machines to sync wall-time. The idea is that there's an authoritative source of data, in this case the local time on the server. Your machine also does its best to independently track and maintain the current time. But it may be fast or slow, or experience some other issue that causes it to drift. And the longer its left by itself without syncing to an NTP server, the larger that potential drift.

So the server and the client are both independently calculating the state. But whatever the server calculates is authoritative, and the client's version is just a local simulation that is very accurate, but not 100%. Especially when it comes to other players, where your client is typically just executing under simplistic assumptions of things like constant forward movement.

However, luckily for the client, it receives a data sync from the authoritative server several times a second, so all that potential drift gets quickly corrected while the differences are still extremely small. For your own actions, where your client had access to all your input, the differences are probably even too small to notice. For other players though, it will be more noticeable, especially if there's an abrupt change in input.

jdmichal··on Carbon-negative concrete
https://en.wikipedia.org/wiki/Biochar

> Biochar is the lightweight black residue, made of carbon and ashes, remaining after the pyrolysis of biomass. Biochar is defined by the International Biochar Initiative as "the solid material obtained from the thermochemical conversion of biomass in an oxygen-limited environment".

You may be thinking of biochar specifically as a soil amendment, where it is sometimes loaded with probiotics and such:

https://en.wikipedia.org/wiki/Biochar#Soil_amendment

> She pointed out that when pre-charged with these beneficial organisms, biochar promotes good soil and plant health.

jdmichal··on People are trying to claim real videos are deepfakes
> Haven't read this case closely but it sounds to me like the attorneys said "it's possible these are deep fakes" and not "these are deepfakes." The former seems like a reasonable argument to make, but according to the judge, a flawed one.

IANAL, but this sounds appropriate to me? Couldn't all forms evidence be hit with various types of "this might be fake" claims? So I think it's fair that the court assert that you must claim "this is fake", then be willing to battle it out with the opposing side. Otherwise it's not a defense, it's just empty words, isn't it?

jdmichal··on America will soon see a wave of bank mergers?
The bigger change for mortgage interest was the massive increase in the standard deduction in 2018 to $24,000 from $12,700. We were barely doing better than the standard deduction prior to that, and the increase put us pretty far into "just take standard" territory.
jdmichal··on Let's make sure GitHub doesn't become the only option
Three-way merge might not be the correct term. I mean it as in the three versions being "original", "version-a", and "version-b". Original is the most recent common ancestor of version-a and version-b. So the system can generate clean diffs based on that original version during the merge.

I've seen other systems essentially say, "Oops both versions modified this file... Good luck!" It didn't matter that the modifications were to very different parts of the file. I've never seen that in Git. Any merge conflict I've gotten in Git has been a true potential conflict, even if the resolution is straight-forward from my perspective.

jdmichal··on Let's make sure GitHub doesn't become the only option
Yes, the Bitbucket PR screen is really good. Even when a commit removes the code a comment is tied to, it still shows it as an "outdated comment" or some verbiage like that. The approval controls available are pretty good too. But we've loosened up on the use of these a bit, as we're a really small group and the overhead was not worth the control for known and trusted actors.
jdmichal··on Let's make sure GitHub doesn't become the only option
There's also Atlassian Bitbucket. Which we're moving away from, because they do not support arm Docker builds. They don't support it because it requires privileged flag, and so it would give access to other builds on the same machine...

So apparently there's two great reason to move away from Bitbucket. Not supporting arm builds and apparently you're one exploit away from other builds on the same machine having access to yours?

https://jira.atlassian.com/browse/BCLOUD-15317

← PreviousPage 3 of 34Next →