HNHacker News
TopNewBestAskShowJobs

zck

3,254 karma · joined September 24, 2008

Emacs, Lisp, guitars, improv, keyboards.

http://zck.org

http://twitter.com/zckzck

email:zkanfer@Google's eMAIL

meet.hn/city/42.3554334,-71.060511/Boston

submissionscomments
zck··on The truth that haunts the Ramones: 'They sold more T-shirts than records'
> Isn't a band's purpose to produce good music and aren't people supposed to like musicians because they produce good music?

There are two definitions of "good" here, that are different.

1. "good musician" means a musician who is skilled or adept in their instrument. I'm separating this from if a musician is good at writing music.

2. "good music" means music that is entertaining or enjoyable.

The Ramones were not incredibly skilled in their instruments. They wrote music that many people found enjoyable. They were not good musicians, but they created good music.

zck··on How to Have a Bad Career – David Patterson (2016) [video]
As he's mentioned, he has given this talk a few times, aimed at different audiences. One version of the talk has its slides here: https://drive.google.com/file/d/0Bzis5MXW83vCdUdXYnFIVDVOSkE...
zck··on Ask HN: Who wants to be hired? (February 2026)

  Location: Boston, MA
  Remote: Yes
  Relocate: No
  Technologies: backend web for >15 years. I've worked recently in Kotlin and Java. I've also done some Go, and in personal projects have worked with a lot of different Lisps.
  Email: zkanfer@gmail.com
  Site: https://zck.org/
zck··on Ross Stevens Donates $100M to Pay Every US Olympian and Paralympian $200k
Your link includes this quote from Stevens:

> "The Olympic and Paralympic Games are the ultimate symbol of human excellence. I do not believe that financial insecurity should stop our nation's elite athletes from breaking through to new frontiers of excellence,” said Stevens.

And furthermore:

> By providing financial support for athletes so they can continue competing and by increasing that support for each Games in which they compete, the Stevens Awards will dramatically increase the likelihood that athletes will continue competing, and winning, for America.

zck··on Ross Stevens Donates $100M to Pay Every US Olympian and Paralympian $200k
The stated goal is that the money will help people do better in the Olympics. I don't see how it will do that. It might be good to do, but it won't help people perform better.
zck··on Ross Stevens Donates $100M to Pay Every US Olympian and Paralympian $200k
How many of these normal careers pay a single paycheck of $100k that can't be cashed for twenty years? That's what this offer is.
zck··on Ross Stevens Donates $100M to Pay Every US Olympian and Paralympian $200k
Do you think a 21-year old fencer will be more competitive because of this money? A 17-year old swimmer? A 16-year old gymnast?
zck··on Ross Stevens Donates $100M to Pay Every US Olympian and Paralympian $200k
Is your argument that, if she knew she was going to get $100,000 in 2010, she would have been number 1 in the world in doubles in 1990? That's how I understand the stated goal of this gift.
zck··on Ross Stevens Donates $100M to Pay Every US Olympian and Paralympian $200k
> “I do not believe that financial insecurity should stop our nation’s elite athletes from breaking through to new frontiers of excellence,” Stevens said upon the announcement of his gift.

So his goal is to prevent money issues from being a thing getting in the way of athletes achieving. But he has structured it in a way that prevents the money from helping this goal.

> Per the Wall Street Journal, “Half will come 20 years after their first qualifying Olympic appearance or at age 45, whichever comes later. Another $100,000 will be in the form of a guaranteed benefit for their families after they pass away.”

So half of it will never be seen by the athlete. Ever. And the other half will not be seen for at least two decades.

What Olympic athlete is not able to achieve as much because they don't have money decades down the road? Or because their heirs don't have enough money? I might be missing something, but how do these two incredibly-delayed payments help them train now? They can't use money they won't see for 20 or 30 years to hire coaches, buy equipment or pay for track time. They can't buy food or pay rent with money they will never see.

zck··on Ask HN: Share your personal website
My personal site is https://zck.org/ . Mostly textual posts about Emacs, Linux, programming. There are a few pages that are games, and I also have a page for my my generative art: https://zck.org/art .
zck··on What sets great managers apart
> one of the most annoying things to me are managers who pull the "here's what I'm evaluating you on...now write up this self eval what you've done over the last year that fits these items and I'll copy paste it into your eval."

Every Friday morning, my company has a meeting for the teams to explain what they've worked on that week. Every Thursday afternoon, my manager asks me what I've worked on that week.

So when I do something, I have to explain that I did it at least three times:

1. In Jira. 2. In daily standup. 3. Every Thursday to my manager. 4. Sometimes in Slack, because no one reads Jira comments unless they're pointed to in Slack.

zck··on Lisp project of the day
Someone else has given you the Common Lisp version. Here's one for Clojure:

  (printf "x = %6d\ny = %.8E\n" x y)
If I've understood everything right, and your example is in C, the format string in Clojure is identical to the one in your comment.
zck··on Mathematicians hunting prime numbers discover infinite new pattern
> there's also the dubious, or trivial, or dunno (gotta generalize this pattern as well) of the first "consecutive" twin prime but they overlap which is 3,5 and 5,7.... which reminds me of how only 2 and 3 are both primes off by one; again, I need to generalize this pattern of "last time ever primes did that"

For the triplet n, n+2, n+4, exactly one of those numbers is divisible by 3. So the only triplet n, n+2, n+4 where all numbers are prime contains 3: 3, 5, 7.

zck··on Literal Fuck Hats Saved the Peregrine Falcon
Weirdly, the hats remind me of things used for the opposite purpose -- diaphragm birth control (c.f. https://healthjade.com/wp-content/uploads/2018/06/coil-sprin...), or rolled condoms.
zck··on Amelia Earhart's Reckless Final Flights
https://archive.is/5kYUW
zck··on Binary Wordle
I also made some number-based wordle-variants, which I call "numberdle". I found that it was hard to come up with good ways of guessing because wordle has the restriction that most combinations are invalid. You won't ever have to guess xwqqf, because that's not an English word. And more importantly, guessing some letters gives you information about the other letters. If you find out three letters, and have the target as _a_ts, you can use that to figure out the other two letters.

But if you need to guess a number, and you know it's _5_34, having three correct digits don't help you figure it out.

So I made some variants where guessed values do help you figure out the correct answer.

In rationerdle (https://zck.org/numberdle/?variant=rationerdle), you have to guess a rational number x/y, where both x and y are between 1 and 99, inclusive. It displays the rational number you actually guessed, and whether x and y separately are too high or too low.

In factordle (https://zck.org/numberdle/?variant=factordle), the player has to guess the factors of a target number.

In formuladle (https://zck.org/numberdle/?variant=formuladle), there is a graphed straight line, and the player has to guess the mx+b formula that graphs that line.

I would like to make more, but didn't have any other great ideas when I ran out of interest.

zck··on In the US, a rotating detonation rocket engine takes flight
>...if you substitute fuel "burning" process with subsonic propagation used in every conventional engines with fuel "explosion" process with supersonic wavefront...

This fragment confused me, because it looks like there are three substitutions. There aren't; there's only one. Read it as:

If you substitute fuel burning (which has subsonic propagation, and is used in every conventional engine) with fuel explosion (which has a supersonic wavefront)...

The first and third "with" link a noun (the respective process) with a property (how fast it shoots gas out the back). The second "with" is the substitution.

English is hard! I'm a native speaker, and I had to take a look at a few webpages to understand just this part! And I'm still left with questions, like why subsonic is described as having "propagation", but supersonic is described as having a "wavefront". Is this a distinction with a difference? I don't know.

zck··on Moving Forth: a series on writing Forth kernels
I understand implementing words as you think they should be. However, you need the core first, and that's where I'm working right now. I'm trying to get the central loop, dictionary, and threading model functional.

Which brings up another complication -- the threading model. There are multiple, of course. But sometimes I want to figure out, for example, what the `w` variable does. Is it different between indirect threading and subroutine threading? Maybe!

zck··on Moving Forth: a series on writing Forth kernels
Writing a Forth myself, I find it somewhat frustrating that I have relatively different design restrictions than these guides. I don't need to be incredibly low-power, so I'm using C, not assembly. I'm not a great C coder, and I've never done assembly, so I find it hard (but not impossible) to learn from assembly. Also, because it's not assembly, I can't just JUMP to code the same way assembly can.

It's also frustrating trying to understand some of the lowest-level information. For example, a few systems have a very fundamental `w` variable -- but what is is used for? You can't search for it. Or just using registers and having to remember that %esi is the program counter (aka instruction pointer).

I keep wanting to make a series of diagrams to really understand Forth's program flow. It makes sense in concept, but when I go to program it, there are a lot of nuances I keep missing.

zck··on UTC is Enough for Everyone, Right? (2018)
I'm not sure this exactly is what I'm thinking about. Yes, `at time zone "UTC"` does the proper conversion, so all times will represent the exact instant they should. But in no cases do you know what time zone the data came in as -- that information is thrown away.

When you look at your data, what is the time a user's watch said when the data was input? What time zone was the data input as?

Here's some queries:

  create table tz_test ( comment varchar, ts_tz timestamptz );
  
  insert into tz_test (comment, ts_tz) values 
  ('midnight US Eastern', timestamp with time zone '2025-05-13 00:00:00-4'),
  ('4am UTC', timestamp with time zone '2025-05-13 04:00:00+0');

  select comment, 
         ts_tz
  from tz_test;
I would expect that one row comes out as midnight, and the other row comes out as 4am. But they both come out as midnight. That's what I don't like.
zck··on UTC is Enough for Everyone, Right? (2018)
One place I've been bitten lately is storing timestamps in Postgres. Postgres lets you store time with a time zone -- but what that means is that upon receiving a timestamptz converts it to UTC and stores that instead.

Which is fine, in a way -- it won't store the wrong instant in time. But it also won't let you know the time the user sees. For example, you might want to tell someone when the store opens.

Fine, you say. You can look up the location of the store and use that to get the timezone. But what about a different case? What about if you want a user to test their blood sugar every day. Did they test their blood sugar on Tuesday? Well, then it depends what timezone they're in. What is the problem with having each user set their time zone? Isn't this just like the store issue?

No! Notably, unlike stores located in fixed buildings, people move around. They go on vacation. And if you don't know where they were when an event happened, you don't know what time the user was.

So it seems you have to, when you get a timestamp with time zone from a user, store the timestamptz, but also store the time zone in the database.

How frustrating, for a database that has a data type called "timestamp with time zone".

zck··on Clowning Around: On the Principles of Clowning
One thing that this article talks about, but could be more explicit about, is the different kinds of clown.

There's the kind we all think of -- white face, red nose, at the circus.

But there's other kinds too. I know the most about two related forms: commedia dell'arte and bouffon.

In commedia dell'arte, performers play different "stock characters" based on Italian society in the 1600s, when commedia was originally developed. Commedia is concerned with status within a society: rich/poor, servant/master, young/old. Each character has its own specific mask. One character might be the blue-collar working person, who isn't learned, but is not dumb. Another character is the rich person who thinks themself smart and cultured, but is neither. These performances are often partially scripted, partially improvised. One example is: https://www.youtube.com/watch?v=3DjGoDEks7U

In bouffon (mentioned in the article as the group Mil Grus). These characters are grotesque (physically -- often these performers put foam inside their clothing to make the character look inhuman) and outcasts. You might think of them as a tribe of people thrown out of society in the middle ages, who the king invites back in once a year. Because of their outcast status, they are allowed to say things that people inside that society cannot. One modern example is Red Bastard (who I've studied with), who can be seen here: https://www.youtube.com/watch?v=kFJWnfNUXnc.

zck··on Half Constructed Objects Are Unnecessary
> However, in pretty much any language, it's hard to avoid the user having some ability to fill out even "mandatory" fields in some invalid manner.

I 100% agree. It's just that go seems to make it easier to make invalid values than valid ones, because the programmer doesn't have to actually type the values that end up invalid.

zck··on Half Constructed Objects Are Unnecessary
I'm also bothered by half-constructed objects. In my previous job, I was on a team creating a Go project that integrated two different parts of the company. It was an HR company, with lots of random fields in objects.

The API given to us often returned objects with only certain values filled out. Go encourages this, because there it is so easy to do that. `StructName{}` will create a struct, and is easier than filling out values. It will fill out all the values with the "zero value" of the thing.

And there's no way to know if you have a zero value! I would commonly get back an object and have to dig into the code or ask people to find out when certain values would be filled out!

Compare to a language where you have to provide a constructor. Fewer people would write:

public ClassName() { var1 = 0; var2 = ""; }

It lead me to be able to trust values less than I had to in other languages I've used.

zck··on Google announces agreement to acquire Wiz
Just to respond to the Whatsapp part of the comment, apparently Whatsapp made about $1.7 billion in 2024. https://www.businessofapps.com/data/whatsapp-statistics/
zck··on Google to buy Wiz for $32B
Whatsapp was $1/person/year for a license. Wiz is "contact sales for pricing". Presumably that's more than $1/year.

According to Amazon's Wiz integration (https://aws.amazon.com/marketplace/pp/prodview-ibgbkrqusncsm), the lowest cost they have is $24,000/year.

zck··on Static Site Generator for Emacs Lisp Programmers
I wanted to:

1. Write HTML in org-mode. Org-mode is great for thinking. 2. Publish clean HTML.

The other libraries I was seeing were about exporting arbitrary org files for being consumed online. For example, the built-in exporter has a bunch of html classes that include "org" in them.

So I built a custom exporter: https://hg.sr.ht/~zck/ox-zhtml. It's definitely not documented well, but it works well enough for my use.

zck··on The Golden Age of Japanese Pencils (2022)
This pack contains one pencil of each hardness 9H through 6B. There are 17 hardnesses in that range.
zck··on Work with people who tell you when you're stupid
I think they meant non-monetary personal expense. As in "I'll book the crappy motel that requires me to take the subway for 45 minutes, rather than spend an extra $25/night for the lovely hotel that's right next to where I need to go".
zck··on Ask HN: Who wants to be hired? (September 2024)
Location: Boston, MA, USA

Remote: No

Willing to relocate: No Technologies: Historically Java, but recently I've been working in Kotlin and Go. Mostly backend. Personal projects in Clojure, Arc, Emacs Lisp.

Website: https://zck.org/

Résumé/CV: https://www.linkedin.com/in/zacharykanfer/ (email me for a pdf)

Email: zkanfer@gmail.com

---

I just moved to Boston for my partner's doctorate program, and my current job isn't ok with remote work. So here I am. I've done mostly backend work, but have done a little bit of frontend for internal tooling and personal projects.

The thing I'm most proud of at a job is a hackathon project I made to schedule shipping services in a warehouse. It moved these schedule changes from taking an hour to taking less than ten seconds. We later extended it with more features, becoming the backbone of things like shipping pricing and capacity limits. It was the first multi-warehouse aware piece of software at the company.

Page 1 of 29Next →