tmoertel

Joined 19 years ago

Karma
3,479
Submissions
711
Member since
Feb 20
Xoogler (2014–2024) email: {user}@gmail.com blog: https://blog.moertel.com/
View on Hacker News

Recent submissions

Comment · 9 hours ago
Tired of low-effort YouTube clickbait slop? Just click on the Subscriptions heading to go to https://www.youtube.com/feed/subscriptions. You'll see only videos from the creators you have subscribed to. This one-click trick boosts the signal-to-noise ratio dramatically.
Comment · 11 days ago
I'm curious: With your approach, how do you make sure your code is secure? For example, how do you show that it isn't riddled with XSS or other injection vulnerabilities?
Comment · 1 month ago
If it is "cursed" for a function to do what it is clearly documented to do, instead of what someone mistakenly imagines it to do, then what function isn't cursed?

> Not being able to specify how ties are handled (and choosing, as far as I can tell, a fairly useless definition) fits the bill.

Actually, you can completely specify how ties are handled—and should, in any study designed to be repeatable. The docs for dplyr::ntile tell us that:

> To rank by multiple columns at once, supply a data frame.

So, repeatable, completely specified tiebreaking is as easy as adding a tiebreaker column to the dataset, using whatever strategy makes sense for your study. For example, if we wanted random tiebreaking using R's built-in `runif`, all it takes is one extra line of code:

    data_table |>
      dplyr::mutate(
        tie_breaker = runif(dplyr::n()),
        ntile_bin = dplyr::ntile(tibble::tibble(partitioning_key, tie_breaker), n = 4))
Almost 100% of the original author's problems could have been avoided by just reading the docs.
Comment · 1 month ago
Tl;dr: The trouble with ntile seems to be that, when the author of the post imagined what it did based solely on its name and she imagined wrong, she ran with her imaginary version way too long before checking the documentation, which was very clear about its behavior:

> Unlike other ranking functions, ntile() ignores ties: it will create evenly sized buckets even if the same value of x ends up in different buckets.

Comment · 1 month ago
You don't need to use homogeneous coordinates to represent a series of linear transformations as a single matrix. That's just basic linear algebra: any series of linear transformations is itself a linear transformation, and any linear transformation can be represented as an equivalent transformation matrix.

But you do need homogenous coordinates if you want to include translations (fixed distance shifts, such as moving the camera) in the set of operations you can represent as linear transformations and thereby gain all the benefits of linear algebra, including the benefit of being able to include them in a series of operations that you can represent with a single transformation matrix.

Comment · 1 month ago
No, the 2d x-y plane in your example cannot pass through the 3d space’s origin because that would imply that you fixed the z coordinate at zero. The plane must be fixed at some nonzero z because you need to be able move x and y values by some scaled version of z to make translation happen. If z is zero, that scheme does not work.

Consider a transformation f where we wish to move x-y coordinates s units to the right. In 2d, we could express it as:

f(x, y) = (x + s, y)

But that transformation is affine not linear. There is no way to generate the value s as a linear combination of the inputs x and y. So, our workaround is to embed the x-y plane into 3d space at z=1. Then we can move (x,y,1) points in that plane s units to the right using this transformation:

f(x, y, z) = (x + s*z, y, z)

This new transformation is linear: it maps (0,0,0) to itself. But it maps our embedded 2d plane's origin (0,0,1) to (s,0,1), shifting it right by s units, as we want.

The matrix form of that transformation is:

    [[1 0 s]
     [0 1 0]
     [0 0 1]]
The same scheme would work if we had embedded the plane at any fixed z=r for nonzero r. We would only have to rescale the s in the matrix to s/r. Again, however, if r=0, this scheme will not work, as 1/r has gone to infinity.
Comment · 1 month ago
The explanation of "What's that extra 1 for?" in the column representation of 3-d coordinates (x y z 1) could benefit from mentioning that translation—moving things—is not a linear transformation (the origin is not mapped to itself) but an affine transformation. Therefore, you cannot represent translation in 3-d space with a 3x3 matrix. What you can do, though, is embed that 3-d space within a 4-d space fixed at some coordinate on its 4th dimension, typically w=1. Then, a translation in the original 3-d space can be represented as a linear transformation in the 4-d space and thus can also be represented by a 4x4 matrix multiplication. So the extra 1 is actually what allows all common 3-d operations, including translation, to be done via linear algebra and thereby harness the brutal power of matrix multiplication on modern computing devices.
Comment · 1 month ago
But the public is still made a victim by being deceived about the authorship and hence the value and reliability of the work.
Comment · 2 months ago
Comment · 2 months ago
The problem with alternative query languages is that the people who have the most knowledge about creating queries and of the relational domains underlying their businesses are all experts in SQL. Introducing something else, then, means your most natural user base must migrate away from something they understand how to use well, and that's a hard sell.

So, until the ultimate query language is developed, I'll take SQL with pipes. It's an easy sell and good enough to eliminate 90% of my gripes about SQL.

Comment · 2 months ago
> Please please suggest me some books where language and style of speaking sentences takes the crown rather than the story being the selling point.

I will give you approximately twenty delightful novels where the prose and the stories are both excellent: Patrick O’Brian’s Aubrey–Maturin series.

I avoided these books for the longest time because I didn't believe I was the kind of person who would read “books about tall ships.” But so many people recommend these particular books because of the masterly writing that I tried the first, Master and Commander. Immediately, I was taken by O’Brian’s writing: vivid, lively, and engaging, while also utterly precise.

Give that first novel a try. It’s not easy, but it is oh so rewarding.

Edited to add some examples from the first novel:

“I have never yet known a man admit that he was either rich or asleep: perhaps the poor man and the wakeful man have some great moral advantage.”

“Where there was no equality there was no companionship: when a man was obliged to say ‘Yes, sir,’ his agreement was of no worth even if it happened to be true.”

“He held up two fingers, in case a landman might not fully comprehend so great a number.”

“But you know as well as I, patriotism is a word; and one that generally comes to mean either my country, right or wrong, which is infamous, or my country is always right, which is imbecile.”

Comment · 2 months ago
> I also think that we should have mercy for people who’ve made mistakes.

Yes. When people make mistakes, they sometimes fall into holes that are hard to climb out of. It is in society’s interest to place ladders in these holes so that these unfortunate people can climb out and become productive members of society.

Instead, we have self-interested parties who have figured out how to extract rents from keeping people trapped in holes. Some of these parties are preventing ladders from being built. Others are destroying existing ladders. Others still are even inventing deeper, stickier holes—crypto scams, ubiquitous gambling, addictive gas-station drugs, dopamine-hit apps—to trap even greater numbers of their fellow human beings.

When a society allows the suffering of others to become a profitable business model, good things rarely follow.

Comment · 2 months ago
I'm not who you asked, but I moved to Pittsburgh for a job, figuring I would earn money for a few years then move to real city. That was over thirty years ago. Turns out, I love the place.

Pittsburgh has most of the benefits of a larger city without most of the problems. Its infrastructure is in many ways over-provisioned, being built for past industry and a larger population (but the maintenance burden is catching up). Its unusually hilly and berivered geography has allowed its neighborhoods to escape homogenization and retain their individual ethnic characters. And the setting, with rivers, bridges, trails, forests, is beautiful. Plus the airport recently got overhauled to meet the region’s actual needs, making it way more convenient.

Oh, if you're in to sports, Pittsburgh has some great teams and a great fan base.

Yeah, I like the ’Burgh.

Comment · 2 months ago
Yeah, most people probably underestimate the effect that several things have on where they end up in life: education, self discipline, hard work, making good decisions, persistence, and, especially, chance. If you screw up majorly on any the factors under your control, you dramatically reduce your chances of “the good life.” But, even if you do all of them right, you are still at the mercy of chance. Get born in the wrong year or at the wrong place or into the wrong family or with the wrong genetics and that's all it takes to set you up for a hard life.

The tragedy is that we could have a society that gives people more opportunities to escape the downward pull of chance gone wrong early in life. Maybe someday we'll get there.

Live from the official Hacker News API

A modern reader for Hacker News · SvelteKit + Skeleton