Hudson Reid

Hudson Reid

Building better ways to learn

About

Working on education, startups, and products that help more people learn. I enjoy building useful things, sharing ideas, and exploring how tech improves learning.

Badges

Tastemaker
Tastemaker
Gone streaking
Gone streaking
Gone streaking 5
Gone streaking 5

Forums

4d ago

I think PH has better talent than linkedin. change my mind

Been on this platform a month now, and genuinely think the people here are sharper than what i've found anywhere else.
Curious if that's actually held true for others when it comes to hiring.
Have you hired someone you found on ph, or been hired yourself through here.
Also curious what your actual go-to platform is for finding people, ph, linkedin, twitter or somewhere else entirely.

10d ago

What did you learn from your first Product Hunt launch?

I m preparing for my first Product Hunt launch and would love to learn from makers who have already gone through the process.

What surprised you most about your launch?

I m particularly interested in:

  • What you did before launch day

  • How you prepared your launch page

  • What happened during the first 24 hours

  • Where your early users came from

  • What you would do differently next time

Skim v1.0.24 — "You were knocking with the wrong key" 🔑

The one where OpenAI's smartest models finally answer. Turns out we'd been calling one JSON field by a name they retired back when o1 shipped, and they were not shy about it.

Fixed

  • Reasoning models on a custom OpenAI endpoint work again. Point the OpenAI-compatible provider at OpenAI itself, pick anything from the o-series or the GPT-5 family, and every single request died before the first token: Unsupported parameter: 'max_tokens' is not supported with this model. Use 'max_completion_tokens' instead. Which is a wonderfully clear error message to receive zero times, because you're in a chat window and all you see is that nothing happened.

    The lazy fix would be to rename the field everywhere and move on. Except only about half of the OpenAI-compatible world speaks the new name: Mistral answers 422, and Ollama and llama-cpp-python ignore it in complete silence which doesn't fail your request, it just removes the ceiling on the answer. That's strictly worse than an error, because nobody ever finds out.

    So Skim now opens with the name every server understands, and switches only for an endpoint that asks for the other one by name, in its own error and only when that error names both keys, which is what separates "use the other name" from "that number is too big". Cost: one rejected request the first time you talk to such an endpoint. No new settings, no model list to maintain, nothing for you to choose. Exactly the amount of thinking about this you should have to do: none.

    Huge thanks to @ondrahracek for this one not just the fix, but a writeup that walked through what LangChain and goose each broke trying the obvious thing first, and two tests verified by mutation. Reviewing that was a genuine pleasure.

Housekeeping

View more