News for hackers. Stuff that matters.

tanin

Facebook Groups has tons of private room and sublet listings which are difficult to find elsewhere.

We support various useful filters like nearby train stations, locations, female only, price, furnishing. We also supports sorting e.g. sorting by the distance to the nearest BART station.

I hope this will save you many hours from scrolling through 10+ FB groups.

Re:Amazon's "Digital Pacifier" for Toddlers on Sunday October 25, 2026 @11:04PM (#50238565)
I wish people should just avoid talking about using tablets on flights altogether.

It's a non-issue. Toddlers/kids maybe fly once a month max. Using tablets during that time is negligible.

Re:UUIDv7 doesn't have the properties you think it does on Friday October 23, 2026 @03:56PM (#50214473)
I generally avoid using UUID unless there's a strong reason for it.

I know the conventional wisdom says that the collisions are extremely rare <insert some sort of cosmis analogy>

Then, some reddit users reported encountering a collision: https://www.reddit.com/r/webdev/comments/1kvkxte/comment/mud...

Ultimately, you'd have to design the system to handle collision anyway. Might as well design a system that avoid collision in the first place.

At least not 20 characters. My generated password isn't insane. It is 4 words with delimiters, so the length varies between 20-28 characters.
My 1password actually generates 4 random words with symbols and numbers as delimiters. A generated password is often ~24 characters.
I didn't know trailing slash didn't on my website. I'll fix this. Thank you for pointing it out.
Author here

Wow, thank you for testing it. I did test it on my own laptop (Seattle).

> date_add(b.month_start, interval '1 month', 'UTC')

I didn't know this. Thank you.

Show HN: Open-source revenue recognition and analytics for Stripe and Metronome

Hi HN,I’m Tanin. For about four years, I worked on the Revenue Recognition and Analytics teams at Stripe. Today, I'm open-sourcing Book of Revenue, a self-hosted revenue engine and drop-in alternative to Stripe Revenue Recognition (with optional support for Metronome).### The Problem:Most founders track MRR or cash collected in Stripe and assume that reflects revenue. But cash collected isn't...

( Read More... | no comments | 2 points | on HN )
Re:Ask HN: What are you working on? (September 2026) on Sunday September 13, 2026 @09:49PM (#49690869)
I'm working on an open-source, self-hosted revenue recognition and analytics for Stripe.

Here: https://bookofrevenue.com

To my surprise, I think it's the first open-source revenue analytics for Stripe.

I worked at Stripe building both revenue recognition and analytics, and I always wanted to build an open-source version of those. Finally, I had the time to do it.

Bonus: Revenue is not MRR nor payments: https://medium.com/@tanin47/revenue-is-not-mrr-nor-payments-...

Re:Ask HN: Who wants to be hired? (August 2026) on Monday August 03, 2026 @07:44PM (#49162784)
I'm offering a consulting service for integrating with Stripe Revenue Recognition.

I'll help set it up correctly including improving your billing integration that will work well for both revenue recognition and tax integration.

Email: tanin (at) nanakorn.com

With DST, there are actually 2 new concepts: ambiguous time (if the clock rolls back) and invalid time (if the clock jumps forward).

Java and Ruby work differently. Java would simply round the invalid time to the closest valid time IIRC. Ruby would accurately raise the InvalidTime exception. Same behaviors for an ambiguous time.

Chile is actually the country that will cause tricky issue in a system because they adjust DST at midnight... so there is one day a year where its midnight is considered invalid time. If we are building a system that depends on a day's boundary, then we will encounter this nightmarish issue where one of the days must start at 1am instead of midnight.

I really hope DST is going away soon.

Thank you!
Please let me know if you have questions or suggestions.
Re:Midjourney Medical on Wednesday June 17, 2026 @10:26PM (#48579862)
I had to check whether this was some kind of an april fool joke.

It looks like a legit attempt. Wow. This is insanely innovative.

Thank you!

My thesis is that an intermediate layer would eventually end up being equivalent to the docx format, so I've decided not to have any intermediate representation.

We convert docx to html and send it AI. When AI rewrites the HTML and it back, we diff the rewritten HTML against the docx's document.xml and make the modification. This is a simplistic explanation of it. There are a bunch of validations and processing going on.

Regarding the tracked changes/comments, we simply invent new HTML tags for those things e.g. <ins>, <del>, <commentRangeStart> and etc.

Show HN: Cowork/Codex DOCX plugin. Uses 2x fewer tokens than the docx skill

https://github.com/LegalRabbit-AI/legalrabbit-docx-claude-plugin

Hi HNers,I'd like to share our DOCX plugin for Cowork and Codex.It uses 2-5x fewer tokens compared to the traditional docx skill because it doesn't write any code nor execute python/node script. It is also much more reliable.Our DOCX plugin converts docx&lt;-&gt;html bidirectionally. This means AI only operates on HTML. AI is excellent and very efficient when it comes to HTML.Most libraries (if...

( Read More... | 6 comments | 4 points | on HN )
Re:Ask HN: What are you working on? (June 2026) on Sunday June 14, 2026 @07:19PM (#48534100)
I'm working on a Cowork/Codex plugin for reading and manipulating docx files. It uses 2-5x fewer tokens compared to the Anthropic's docx skill and is much faster.

The main target users are lawyers who redlines and drafts legal documents, and they almost always use docx.

It can be used together with Claude For Legal; The combination is pretty magical.

Here's the plugin: https://github.com/LegalRabbit-AI/legalrabbit-docx-claude-pl...

Re:MCP Is Dead on Saturday May 30, 2026 @02:10AM (#48333162)
The AI probably can figure out. However, Claude Code and other tools are built to support MCP. This means MCP is probably more reliable than using REST API + llms.txt.
Re:MCP Is Dead on Friday May 29, 2026 @08:56PM (#48331264)
If you build connectors for yourself or your team, you probably can skip MCP because you can tell your friends to install CLI or whatever and provide extra prompts for your CLI.

If you have external users, then you have to use MCP, which comes with how to use each endpoint and etc. MCP is what their current apps e.g. Cowork, Cursor support out-of-the-box.

In that sense, MCP is very much not dead

DOCX or OOXML takes it to another level.

Instead of making something an attribute, they make it a child element...

Yeah, I try to avoid 3rd party libraries unless it comes from credible sources/companies or vetted by famous frameworks e.g. Rails uses it.

Not just for NPM but for Intellij plugin, VSCode extension, and etc.

If Node has officially pre-vetted libraries, that would be really awesome.

I forgot to provide the link in the tldr at the top. I'll do that. Thank you for the feedback.
(The author of the blog here)

To clarify this: we don't intend to open-source it. There's no source code.

The only reason we need a github repo is because Claude Code/Cowork requires a plugin to be a github repo, which contains the plugin configuration.

Moreover, our users are lawyers. They don't have Node/Python runtime i.e. unable to run code. They need a single-file executable.

It's a nice spin. The AI is so productive that we can cut people. Not "revenue is down, so we have to cut people"

Older »