HNHacker News
TopNewBestAskShowJobs

franciscop

12,640 karma · joined August 27, 2014

I love Javascript and Open Source. Studied Industrial Engineering but now working and living in Tokyo.

https://francisco.io/

https://github.com/franciscop

submissionscomments
franciscop··on Ask HN: Share your personal website
My website, I rarely update it nowadays but I do try to throw 1 or 2 blog posts/year at least:

https://francisco.io/

franciscop··on Google broke my heart
AFAIK them not providing an address is not the main point, it's them not collaborating on your case for a copyright infringement. The not providing an address is just more evidence of them not following on their responsibilities regarding the copyright infringement.
franciscop··on Why users cannot create Issues directly
I'd rather OSS authors write and improve the software and documentation for most people than do the very time-consuming, burnout-inducing free customer support you are suggesting here (especially for those not bothering of reading even the first paragraph of the documentation).
franciscop··on Can Bundler be as fast as uv?
> PEP 658 (2022) put package metadata directly in the Simple Repository API, so resolvers could fetch dependency information without downloading wheels at all.

> Fortunately RubyGems.org already provides the same information about gems.

> [...]

> After we unpack the gem, we can discover whether the gem is a native extension or not.

Why not adding the meta information of whether the gem is a native extension or not directly to rubygems.org? You could fully parallelize whole installation trees of dependencies then.

franciscop··on Why users cannot create Issues directly
As an OSS maintainer myself, while the amount of tickets about a specific topic _might_ be loosely related to the quality of the docs/installation/etc, this hasn't been true in my observations.

It's one of those explanations that sound very plausible on paper, but if you see real world issues it just doesn't happen, users will ask questions that are clearly explained in the first paragraph of the readme, en masse.

franciscop··on Tell HN: Google ignores English searches and forces localized results
I have the same problem and my "solution" is mediocre, but kind of works: use a VPN. I used to set it to the UK, but since the recent developments I've been experimenting with other English-speaking countries. My native language is Spanish, but I live in Japan, and it's odd because I never want Japanese (language) results, but I am fine with Spanish results.

Some times I need to switch to Spain, or Japan, or just disable it due to geo blocking. I use Mullvad, which makes this easier, but TBH the main practical use of my VPN is what you mention, I never want results in Japanese and Google is very bad at getting the hint.

The worst one I keep noticing is MDN, I know there's an article in perfectly fine English but why am I always redirected to the local language one? That's not even location-dependent.

franciscop··on Build Your Own React
Yes, it's a JSX template engine. I'm pointing out that this blog post was the main inspiration to learning how "straightforward" JSX was under the hood.
franciscop··on Build Your Own React
That's very nice, sure, thanks! Would love to see what others are working on. My very minimal implementation and docs are here, not really yet in my public projects, I've only used it for experiments:

- Documentation: https://server-js.com/documentation#jsx

- Source of the main renderer: https://github.com/franciscop/server-next/blob/master/src/js...

franciscop··on Build Your Own React
I was strongly thinking about doing that, but I think I prefer (for now) explicitly not having events, than having events that work kinda similar but not the same. Did you end up publishing it? Would love to have a look!
franciscop··on Build Your Own React
No interaction built in for this kind of simplified use-case, it's just like one of the old "template engines" of the old day, just in JSX/TSX. It's actually much better than expected, I used to dislike that all the old templates had something "off" for me; either they invented their own syntax for logic that you needed to learn besides normal JS (think Handlebars, Pug, etc), or they were in JS-like and with an odd HTML syntax that made sharing between plain HTML and whichever language very hard (think Pug/Jade).

With JSX templating, it's a subset of React, so you can directly share "up"t, and sharing "down" is very easy as well (just removing interaction), since both use the same syntax.

franciscop··on Build Your Own React
This is an amazing resource to understand the internals/potential internals, and led me to build a small renderer that I've been using to amazing success for my own alt backend renderer. I now can do it like this:

    export default server()
      .get('/', () => <div>Hello world</div>)
      .get(...);
I've been using Bun's JSX transformer as well to do the transpilation, and since it's just a renderer on the backend I don't need to worry about events or hooks, just the rendering step. For this, the article was amazing and I learned a lot.
franciscop··on Tell HN: HN was down
No worries, please take care of your sleep and thanks for all your hard work
franciscop··on Ask HN: What Are You Working On? (December 2025)
I'm working on finishing my JS KV compatibility library polystore [0], the goal is to make a widely compatible library to connect to many stores so that you can have a wide range of stores easily accesible.

For example, you make an API client library, now you can add polystore and accept multiple cache stores without writing all the compat layer yourself. This is a problem I've had multiple times in the past.

Or you make a project with cache, having it in files for local dev (highly debuggable) and then with Redis in prod is a simple ENV var change:

    let store;
    if (process.env.REDIS_URL) {
      store = kv(RedisClient(process.env.REDIS_URL).connect());
    } else {
      store = kv(`file://${process.cwd()}/cache/`);
    } 
I've made many other libraries and projects during the years and having a single library handle all of this would be great.

[0] https://polystore.dev/

franciscop··on iOS 26.2 fixes 20 security vulnerabilities, 2 actively exploited
> Apple today released iOS 26.2, iPadOS 26.2, and macOS 26.2

For those as confused as me, I'm on macOS 15.6.1, and it seems for the next version they aligned everything and I do indeed see an update for "macOS Tahoe 26.2". However, I also see a Sequoia 15.7.3 update dated at the same time and together in the same upgrade blog post (and for Sonoma 14.8.3, kudos), so for those that doesn't seem to want to do the jump now into Liquid Glass, that seems available:

https://support.apple.com/en-us/100100

Note: I had to click the [i], then unselect the "macOS Tahoe 26.2" and select the "macOS Sequoia 15.7.3" manually to avoid a full upgrade.

franciscop··on Koralm Railway
I opened the article expecting to see news about the budget and how they stayed within it, since that SEEMS like the biggest surprising news in a project like this. How is that overly pedantic?
franciscop··on Koralm Railway
Sure, I'm just pointing out that this article doesn't follow the HN Guidelines, so I was confused at not seeing any mention of the budget within the article:

> "Please don't do things to make titles stand out, like using uppercase or exclamation points, or saying how great an article is. It's implicit in submitting something that you think it's important."

> "Otherwise please use the original title, unless it is misleading or linkbait; don't editorialize"

franciscop··on 4 billion if statements (2023)
Aha, you forgot to specify the country of those "dollars"! For $10 (2025 [Cayman Islands] dollars)! Which is higher than USD10
franciscop··on Koralm Railway
This headline is a bit odd and doesn't represent the original title nor article content. What does "within budget" mean here? That it costed what the original budget set out to cost? Couldn't find anything related to the budget within the article.
franciscop··on Anthropic acquires Bun
Amazing news, congrats! Been using Bun for a long while now and I love it.

Is there anything I could do to improve this PR/get a review? I understand you are def very busy right now with the acquisition, but wanted to give my PR the best shot:

https://github.com/oven-sh/bun/pull/24514

franciscop··on 28M Hacker News comments as vector embedding search dataset
What would a company that does that, hypothetically, then tell a user that requests their data held by the company reply? With their soft-deleted data, or would they say they have no data?
franciscop··on I didn't reverse-engineer the protocol for my blood pressure monitor in 24 hours
Yeah, my doctor said they always add some padding to the measures for this same reason.
franciscop··on I took all my projects off the cloud, saving thousands of dollars
Could you give a reference please? I was literally going to recommend Netlify at work, but didn't after I saw that story.
franciscop··on Facts about throwing good parties
Excellent tips, I've naturally followed most of these, it's crazy to see them reflected here explicitly, they felt "such a natural thing" to do. Given the quality of most of them, I'll try to follow better the couple I don't yet.

> 2) Advertise your start time as a quarter-to the hour. If you start an event at 2:00, people won't arrive till 2:30; if you make it 1:45, people will arrive at 2:00.

Needless to say this is highly culture-dependent. I recently threw a dinner at my place in Tokyo, and I had to add the warning:

- Official dinner time was 7pm.

- Told my Southern European friends at 7pm, expecting them to arrive at 8pm.

- Told my Japanese and American friends at 7:30-8, expecting them to arrive at 8pm.

It went much better than expected, everyone arrived within 8pm~8:10pm (okay, except that one friend who is chronically late, but that's a lost cause).

franciscop··on URLs are state containers
As a dev who cares about UX, this is crazy to hear but resonates, I've got a few weird looks from people whenever I mentioned some URL improvements. I've also worked with people who understood it. I've seen a correlation though, when people cared enough I could share freely about this, when I did the designer's and dev work I would just add that in (I'm def not a designer, so if I'm doing design work that means the owner doesn't care about design, let alone URLs).

I can imagine in your situation as a pure designer how you got it though though, sorry to hear that and I wish other devs cared more. I've def mentoring people to care about it so hope others do so too.

franciscop··on URLs are state containers
This is one of the things that bothered me the most from existing React libraries, if you wanted to update a single query parameter now you needed to do a lot of extra work. It bothered me so much I ended up making a library around this [1], where you can do just:

    // /some/path?name=Francisco
    const [name, setName] = useQuery("name");
    console.log(name);  // Francisco
    setName('whatever');
Here's a bit more complex example with a CodeSadnbox[2]:

    export default function SearchForm() {
      const [place, setPlace] = useQuery("place");
      const [max, setMax] = useQuery("max");

      return (
        <form>
          <header>
            <h1>Search Trips</h1>
            <p>Start planning your holidays on a budget</p>
          </header>
          <TextInput
            label="Location:"
            name="place"
            placeholder="Paris"
            onChange={setPlace}
            value={place}
          />
          <NumberInput
            label="Max Price ($):"
            name="max"
            placeholder="0"
            onChange={setMax}
            value={max}
          />
        </form>
      );
    }

[1] https://crossroad.page/

[2] https://codesandbox.io/p/sandbox/festive-murdock-1ctv6

franciscop··on Tinkering is a way to acquire good taste
I recently tried to play a bit of tennis, which I've already stopped. My friend was appalled when I proudly announced that my tennis racket costed $15. "But we are in tech!" he cried. But for a couple of games, I know I won't be able to tell the difference between a $15 one and a $150 one (I know because I've played tennis in the past).

And true to my predictions, I no longer play tennis and I'm only $15 poorer. I don't know the name for this, but the fact that I avoided wasting $150 and only "wasted" $15 into something I knew might be temporary also feels very satisfying.

franciscop··on What we talk about when we talk about sideloading
Wait, do you need to do that? I've never attempted distribution, but I've created multiple local apps with Electron and Tauri for myself, and they are just a .app on my Applications folder. Wouldn't it be as easy as sharing this file with anyone else if I wanted to distribute them?
franciscop··on Recall for Linux
I've directly moved at least 3 people out of Windows, and indirectly I'd guess at least a dozen. If all of us techies did the same, it'd be over pretty soon.
franciscop··on Evaluating Argon2 adoption and effectiveness in real-world software
This reminded me to check, and now I'm happy to see Argon2 has finally made it into Node.js core!

https://github.com/nodejs/node/issues/34452

franciscop··on Silver trades to $50 an ounce
I agree, that would've been a much more interesting statement.
← PreviousPage 3 of 34Next →