Hacker Newsnew | past | comments | ask | show | jobs | submit | keepamovin's commentslogin

Hello HN — I made GOOD (aka BANG!), a tiny Web Components UI toolbelt built for joy. Dev joy. Minimal keystrokes, intuitive ergonomics, web grain. If you know the web, you know this. I wanted dev work to feel effortless, tools to get out of the way, and just to enjoy it. Real HTML/CSS/JS, no build, no parallel conceptual model. Minimal cognitive overload - at least for me. And that's why I built it. For me.

Maybe you like it, too. Maybe the ergonomics fit. Or maybe it doesn't. But we're all wired differentl, And i guess: build the tools that you know you need to do the work that you love. :)

Tech side: no build, no VDOM, just direct DOM updates and “bang tags” (HTML comments that upgrade into custom elements). Components live as simple files (markup.html, style.css, script.js), async templating just works, and you can lazy or super‑lazy load big UI.

Docs + demos: https://crisdosyago.github.io/good.html/ Love over fear! :)


Legal question for the Tor team (disclaimer, I love Tor and use it in BrowserBox):

- Does Tor need an OFAC license to supply to Russian and Iranian (and other sanctioned entities)? What's your approach to stay compliant and globally helpful? I know 50% of your funding comes from US government (or did a few years back, still?), does this give you extra pathways to engage those regions?

I'm wondering because the system would seem to fall under ITAR due to its encryption, and even if non-ITAR is still a cyber product and these countries are heavily OFAC listed rn.

This is relevant for me right now as I was recetnyl contact by a significant entity in a sanctioned region with a massive deal for BrowserBox. Applying for an OFAC license to see if it's possible to serve them (but we have to make final determination on ethics/legal even if license is approved, I guess). My feeling is that broad sanctions don't hurt the things they are meant to but punish people in all countries from forming transnational links that might actually help to prevent conflicts and build relations however small. Idk, just my reflections after encountring this situation.


This sounds a bit like the GrapheneOS shenanigans in France recently: it's an opensource project with no product per-se. There's no supplying to anyone; rather people help themselves to grab it. The debate would be should opensource projects like Tor or GrapheneOS prevent sanctioned people from grabbing the freely (as in both beer and speech) available project from the shelf.

(writing this message, I realized how hard it is not to write "product" for the thing graphene and tor make)


> supply

> product

OFAC regulates international trade. Isn't Tor's publication an act of pure speech, rather than commerce? They're not charging for it, and they aren't physically moving any goods across borders. How could Tor be subject to any restrictions here?

(not a lawyer, just someone who naively thought the Crypto Wars ended in the 90s)


I'm not sure that's why I'm asking.

Encryption isn’t ITAR.

> massive deal

OFAC applies to trade, like your "massive deal". OFAC's original authority comes from a law titled, literally "The Trading With the Enemy Act".

Tor publishes free software, asking nothing in return. That isn't trade. Neither are those evangelists who broadcast sermons on shortwave radio -- they certainly "serve" Iran in the sense that people in that country can hear their broadcasts.

"Cyber product" lolwut? I think you have been breathing too many beltway fumes.


I'm highly interested in approaches that utilize web grain in a balanced practical way. Do you have a framework/toolbelt or example sites to share? Would love to see.

If you're interested in my approach to custom elements I created: https://github.com/crisdosaygo/good.html

It utlizes custom elements, has autohooks for granular DOM updates, uses native JS template literal syntax for interpolation, imposes ordered component structure:

  .
  ├── package.json
  └── src
      ├── app.js
      └── components
          ├── app-content
          │   ├── markup.html
          │   ├── script.js
          │   └── styles.css
          └── app-header
              ├── markup.html
              ├── script.js
              └── styles.css

It even has a bit of a "comment node" hack to let you write "self-closing custom elements"

  <!app-header />
Good.HTML is the ride-or-die framework for BrowserBox.

In fact, the smallest perfect number.

Thanks! Now I get: https://dosaygo-studio.github.io/prime-news/index.html?p=931... (the next page) and interestingly the newest prime was 42 seconds old with a title of [delayed] - someone's delay setting I guess.

Thanks for the front page! This "web art" project views HN through primes, not time or score.

Tech: BigQuery dataset -> Node.js ETL -> 2.7M prime items packed into sharded SQLite (~500MB) -> queried client-side via sqlite3.wasm. No server.

Fun discoveries while building this:

- Only 7 Mersenne primes and 5 Fermat primes exist in HN's entire range

- Exactly 781 palindromic prime (but only ~760 in HN because some of those primes must not have items, unknown why), largest being ID 9,989,899. Why so few? Even-digit palindromes are always divisible by 11, so palindromic primes can only have odd digit counts (1,3,5,7 digits). We've captured ALL palindromic prime HN items that will ever exist until HN IDs hit 100M+!

The ζ logo = Riemann Zeta function, deeply tied to prime distribution.

"Live Mode": The last page fetches from the live HN API and mines primes client-side, bridging the static past to the live present.

Source: https://github.com/DOSAYGO-STUDIO/prime-news

CloudFlare Static mirror: https://falling-king-6f50.cris7fe.workers.dev

Why? I wanted to create a mirror of Hacker News that ignores time and popularity, and organizes the history of the tech industry purely by mathematical property. A way to explore the ancient and long history of HN through a filter that might surface interesting things. Hope you enjoy the beige!


Does it fetch the whole database and filter the results on client side? Because it seems like it would download 54 sqlite shards to show the few entries available for Mersenne and Fermat primes. It costs 40+ seconds of time and ~172MB of bandwidth. A cheaper option might be to generate the prime numbers first and then just fetch the shards it needs.

Other than that, I thought it was an interesting way of sampling the news as the time delta grow further apart between each item.


Yes, I agree there's probably a better way for the Mersenne and Fermat. And even the Germain we probably don't need to scan every shard for just the first page of them. Good points! And good idea to invert the lookup.

Thank you for the comment on interestingness. I thought so to, but I didn't realize it in same way you did in your observation that it gets more selective over time - I like that, in a sense that's kind of natural as the environment is more competitive over time. Thank you for the interesting idea!

edit: Your ideas are implemented!


Why?

For fun!

Good enough.

Wow, thanks for the front page, HN! I'm thrilled you're enjoying this little "web art" project.

The idea was to deconstruct Hacker News and view it through a different lens -- not time or score, but the fundamental, dynamic of prime numbers.

It's "useless", perhaps, but I find it fun!

Few tech details for those curious:

- Data Source: The public Google BigQuery dataset (bigquery-public-data.hacker_news.full). I did not scrape HN.

- ETL: A Node.js script ran a Sieve of Eratosthenes up to the current max ID (~46M) to find all the primes. It then processed the ~7GB of raw JSON, extracted the ~2.7M prime items, and packed them into sharded SQLite databases. The final repo size is only ~500MB.

- Frontend: This is a fully static site with no server backend. It uses sqlite3.wasm to load the specific database shard for the page you're viewing (e.g., shard_0.sqlite for the first 50k primes) and queries it directly in your browser.

- The Logo: The "Y" logo has been replaced with the Riemann Zeta function (ζ), which is deeply connected to the distribution of prime numbers.

- The "Warp Drive" / Live Mode: you might notice the static data is a few months old - that's a known lag in the BigQuery mirror.

To solve this, if you go to the very last page, the site switches to "Live Mode." Your browser fetches the current maxitem from the live HN API and starts mining for new primes client-side, bridging the gap between the static past and the live present. :)

Source code is here if you sho¨ld like to see the sausage being made: https://github.com/DOSAYGO-STUDIO/prime-news

Happy to answer any questions


I'm building Freelang, a small AOT systems language aimed at security tooling where auditability and deterministic failure matter. It compiles to native x86‑64, avoids libc by default, and keeps concurrency explicit (jobs + wait). There isn’t a public repo yet, but I’d love feedback on the philosophy/roadmap - v happ happ to share details here.

hey, i love this idea. for external tool calls id recommend looking into something like cacao playbooks, (open standard/spec forsecurity playbooks) and maybe integrate such things too. theres a lot of useful datamodels / specs out there slowly getting picked up - and DSL to tie it all together sounds to me like a good thing. will look into this further (didnt dive too deeply, just hyped about this idea!) and share it around.

Thanks! It’s very early days but feel free to reach out

The kindness of strangers never ceases to amaze me. People are good.

  `        _\/_          .
     -      /\
            /|\     `
  .   /    /*|O\.        .
          /*/|\*\
         /X/O|*\X\
        /*/X/|\X\*\   .
       /O/*/X|*\O\X\
      /*/O/X/|\X\O\*\
      ~~~~~~~~~~~~~~~
            |X|
            |X|
     Merry Christmas!
merry Christmas to all you people out there :)

Merry Christmas! Nice touch with the snow, makes for a cosy and homely atmosphere! (It's 25⁰C here. Please send help >.<)

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: