frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

fp.

Pharmacologic reversal of advanced Alzheimer's disease in mice

https://www.cell.com/cell-reports-medicine/fulltext/S2666-3791(25)00608-1
1•pfrrp•3m ago•0 comments

Bringing Back the Battleship: Railguns US Shipbuilding and a 35000 ton bad idea? [video]

https://www.youtube.com/watch?v=qvUbx9TvOwk
1•Khaine•3m ago•0 comments

GC_photo_maker – a simple tool to help you with Green Card lottery photo

https://github.com/ishotaphoto/gc_photo_maker
1•devolt•13m ago•1 comments

From A.I. To Chips, Big Tech Is Getting What It Wants from Trump

https://www.nytimes.com/2025/12/28/technology/tech-trump.html
1•thm•14m ago•0 comments

He Was a Supreme Court Lawyer. Then His Double Life Caught Up with Him

https://www.nytimes.com/2025/12/28/magazine/thomas-goldstein-supreme-court-gambling.html
1•seemaze•17m ago•0 comments

Disconcordia – mystery story set in a discord interface

https://icely.itch.io/disconcordia
1•goekjclo•17m ago•0 comments

Cashmonki – local-first expense tracker that scans receipts and roasts spending

https://cashmonki.app/
1•dcardines03•17m ago•1 comments

Reddit, but with multiple LLM agents, works locally

1•huydotnet•22m ago•0 comments

Listing gaming on your resume might hurt your job prospects

https://www.psypost.org/listing-gaming-on-your-resume-might-hurt-your-job-prospects/
2•ivewonyoung•23m ago•0 comments

Deep Dive into Behringer's X32 – From FPGA to SharcDSP

https://www.youtube.com/watch?v=c5jjBm8EPsg
1•crmd•25m ago•1 comments

It's time for WA to ban cellphones in schools statewide at last

https://www.seattletimes.com/opinion/its-time-for-wa-to-ban-cellphones-in-schools-statewide-at-last/
1•ronbenton•26m ago•0 comments

Show HN: Matchstick Puzzle Game in the Browser

https://matchmath.pages.dev/
4•prettyblocks•27m ago•1 comments

Segue – Illustrated Vocabulary Builder

https://segue.app
1•stoicfungi•27m ago•0 comments

How Smell Guides Our Inner World

https://www.quantamagazine.org/how-smell-guides-our-inner-world-20250703/
2•anarbadalov•29m ago•0 comments

Customs: Council agrees to levy customs duty on small parcels as of 1 July 2026

https://www.consilium.europa.eu/en/press/press-releases/2025/12/12/customs-council-agrees-to-levy...
2•sva_•29m ago•0 comments

Entry-level AI job displacement

https://www.yahoo.com/news/articles/stanford-graduates-spark-outrage-uncovering-000500857.html
2•nomagicbullet•35m ago•1 comments

Love Letters to Writers and LLMs

https://blog.tdhttt.com/post/love-letters-to-writers-and-llms/
1•tdhttt•44m ago•0 comments

Superfest

https://en.wikipedia.org/wiki/Superfest
3•josephcsible•45m ago•0 comments

Wii Reinforcement Learning

https://github.com/VIPTankz/Wii-RL
1•arvindh-manian•47m ago•0 comments

Show HN: KRR v2.1 – A deterministic, reversible romanization system for Hangul

https://github.com/R8dymade/krr-2.1
2•R8dymade•49m ago•1 comments

Vacuum legend Dreame teases 1,000+ HP EV

https://www.notebookcheck.net/Vacuum-legend-Dreame-teases-1-000-HP-EV-spinning-its-record-fast-el...
1•thunderbong•49m ago•0 comments

Show HN: Claude Life Assistant – AI accountability partner for Claude Code

https://github.com/lout33/claude_life_assistant
2•lout332•51m ago•0 comments

Why your early 2000s photos are probably lost forever

https://www.bbc.com/future/article/20251212-why-your-early-2000s-photos-are-probably-lost-forever
3•slyall•51m ago•1 comments

Validating kiwi (AI design critique w personas) – looking for builder feedback

3•brandonlees•53m ago•0 comments

Gmail to Let Users Change Their Addresses While Keeping Data

https://www.nytimes.com/2025/12/28/technology/gmail-change-address-email.html
1•absqueued•1h ago•3 comments

Rust based Viewer: Any document, any platform, in milliseconds

https://github.com/abahjat/Prism
3•abahjat•1h ago•0 comments

AI Contributions to Erdős Problems

https://github.com/teorth/erdosproblems/wiki/AI-contributions-to-Erd%C5%91s-problems
3•tzury•1h ago•0 comments

Why I Think Valve's Retiring the Steam Deck LCD

https://gardinerbryant.com/why-valves-retiring-the-steam-deck-lcd/
11•Ariarule•1h ago•15 comments

Build a dinosaur runner game with Deno

https://deno.com/blog/build-a-game-with-deno-1
3•RyanShook•1h ago•0 comments

Fast GPU Interconnect over Radio

https://spectrum.ieee.org/rf-over-fiber
4•montroser•1h ago•0 comments
Open in hackernews

You can make up HTML tags

https://maurycyz.com/misc/make-up-tags/
98•todsacerdoti•2h ago

Comments

macintux•1h ago
Huh. That led me to wonder whether anyone has created CSS for DocBook, and it appears it exists.

http://www.badgers-in-foil.co.uk/projects/docbook-css/

hecanjog•1h ago
You sure can! They all have inline defaults like `<span>` so set some CSS baseline on them as needed, but this is like the best kept secret of HTML or something? Unknown tags will become `HTMLUnknownElement` and behave like a span.

Edit: the reason for avoiding this in the past was name-spacing. But the standard says you can use a hyphen and then you're OK, native elements won't ever use a `-`.

Edit 2: also it's great because it works fine with CSS selectors too. Write stuff like `<image-container>` in plain HTML docs and it's fine.

Edit 3: but also `<albums>` tags and etc which won't be adopted into the HTML standard soon work too if they don't conflict with element names, and the rare case that they might be adopted in the future as an element name can be resolved with a simple text search/replace.

Edit 4: This all really has little to do with javascript, but you can use `querySelector` and `querySelectorAll` with any of these made up names the same as any native name too.

It's very nice to write. I used and liked vue for a little while when it was needed(?) but modern HTML fills that gap.

ameliaquining•1h ago
Nitpick: If a nonstandard element name contains a hyphen (and is otherwise a syntactically valid custom element name), the element's DOM object is an instance of HTMLElement, not HTMLUnknownElement.

Quoth the standard: "The use of HTMLElement instead of HTMLUnknownElement in the case of valid custom element names is done to ensure that any potential future upgrades only cause a linear transition of the element's prototype chain, from HTMLElement to a subclass, instead of a lateral one, from HTMLUnknownElement to an unrelated subclass."

ok123456•1h ago
By default, they will behave like spans.

You can customize it using the Custom Element API: https://developer.mozilla.org/en-US/docs/Web/API/Web_compone...

lofties•27m ago
I used custom elements extensively in 2014 when support was not as widespread. I think it's a beautiful, elegant solution and I'm still a little bit bitter that React became as big as it was. Now everything "has" to be a SPA because developers want to use React, whereas most users would actually be better served with good 'ol HTML with some custom elements where needed.
teaearlgraycold•17m ago
I’ve been getting into SSR with JSX as a template engine using kita. You still get full typescript analysis and composability. It beats any other SSR web templating system I’ve used.

I agree the need for everything to be a react app by default has gotten out of control. But I think if you’re a startup with unknown future needs it’s hard to ignore the flexibility and power of something like react. If you know you’re just making a CRUD app and good old fashioned form POSTs will do then it’s beautiful to have that speed and the lightweight pages.

gkoberger•1h ago
I probably wouldn't do this for a lot of reasons.

That being said, if you read through that post and were intrigued, you might also like custom web components: https://web.dev/articles/custom-elements-v1

It's a simple way to add more to your "made up" HTML tags. So you could have a tag called <my-code>, for example, that automatically has a copy button and syntax highlights the code.

aaviator42•1h ago
I used this to implement <yes-script>, the opposite of <noscript>, to be able to designate sections of a page to be hidden if JS was disabled. You can of course do the same thing with classes, but custom tags are fun.

https://github.com/aaviator42/yes-script

ianbutler•1h ago
https://lit.dev/

That's the premise behind Lit (using the custom elements api)! I've been using it to build out a project recently and it's quite good, simpler to reason about than the current state of React imo.

It started at google and now is part of OpenJS.

sleazebreeze•1h ago
I just evaluated Lit for work and while we didn't go with it, it was very nice. I love the base custom elements API regardless of using Lit or not, turns out that's all you really need to make intricate UIs that feel seamless.
g0wda•59m ago
Something about Lit/web components that's not written clearly on the label is the hoops you have to jump through to style elements. If you're using tailwind in the whole app, you just want to pull it into your custom elements without much boilerplate. My main app compiles a single minified app.css, it felt not so modular to now include that in every single component. The alternative is create a subclass that injects tailwind into Lit components. It'd be perfect it just had a switch to inherit everything the page already has.
hunterloftis•49m ago
> It'd be perfect it just had a switch to inherit everything the page already has.

It does! <https://lit.dev/docs/components/shadow-dom/>

By default, Lit renders into shadow DOM. This carries benefits like encapsulation (including the style encapsulation you mention). If you prefer global styles, you can render into light DOM instead with that one-line switch.

However, shadow DOM is required for slotting (composing) components, so typically what I'd recommend for theming is leveraging the array option of each component's styles:

    static styles = [themeStyles, componentStyles]
Then you define your shared styles in `themeStyles`, which is shared across all components you wish to have the same theme.
g0wda•35m ago
oh nice! I didn't know that you can just make it use light dom.

  protected createRenderRoot() {
    return this;
  }
And that's what it takes! I like using tailwind/utility classes so for the styles I'd need to have layers of compiled css files rather than one giant one.
spankalee•44m ago
There's a long standing standards issue for this: https://github.com/WICG/webcomponents/issues/909

While you can easily turn rendering to shadow DOM off on a per-component basis, that removes the ability to use slots. It only really works for leaf nodes.

Pulling a stylesheet into every component is actually not bad though. Adopted stylesheets allow you to share the same stylesheet instance across all shadow roots, so it's quite fast.

ianbutler•14m ago
Interesting, I'd be curious to know why you all decided not to go with it if you're open to sharing! Minimally to know if I should look at any other promising frameworks.
superkuh•1h ago
https://blog.jim-nielsen.com/2023/html-web-components/ - Jim Nielsen has a series of posts on how to use made up HTML tags in a way that doesn't just fail to nothing when the javascript defining the custom-element doesn't get successfully executed.
ycombiredd•1h ago
As someone who writes html only rarely (I'm more of a "backend" guy, and even use that term loosely.. most of my webdev experience dates back to the CGI days and often the html was spat out by Perl scripts) and usually in vim, I am pleased to know there is an in-built solution outside of me properly indenting or manually counting divs. Thanks for enlightening me.
wging•1h ago
A more common alternative to counting divs would be CSS classnames or (for unique elements on the page) IDs. You'd do `document.querySelector('.my-class')` to locate `<div class="my-class">` or similar, rather than using the fact that e.g. something is nested 3 divs inside <body>.

Even if this custom element trick didn't work, I don't see why one would need to count divs (at least if you control the markup, but if not then made-up tags aren't an option anyway). The article even mentions using class names as an option.

ycombiredd•1h ago
Sorry, I didn't mention class names because the article explicitly did and I assumed that my aversion to the extra typing would be presumed by a reader of my comment. My mistake.

So yeah, I guess what wasn't obvious from my statement of gratitude was that I appreciate knowing that there is a more concise way of keeping track - even without CSS styling. If I make up tags, they will just inherit default styling but to my eye I can be clear about where things are closed, and where to insert things later. I was talking about the manual editing (in vim, as I mentioned), rather than any dynamic query selectors. Make more sense?

flexagoon•1h ago
> <main-article>

> <article-header>

> <article-quote>

> <quote-body>

Not the best example, because in this case, you could just use real HTML tags instead

  <article>
  <header>
  <blockquote>
  <p>
chrismorgan•1h ago

  <div class=article>
  <div class=article-header>
  <div class=article-quote>
  <div class=quote-body>
  ... a bunch more HTML ...
  </div>
  </div>
  </div>
  </div>
Just one quibble over this specific example (not the broader concept, which is sound): it probably didn’t have to be div soup to begin with. Something like this may have been more reasonable:

  <article>
  <header>
  <blockquote>
  <p class=quote-body>
  ... a bunch more HTML ...
  </p>
  </blockquote>
  </header>
  </article>
fpoling•47m ago
This example also shows a weakness of custom tags compared with using the class attribute. An element can have only single name but may have several classes. And as classes are unordered set, one cannot in general emulate that with several elements as the nesting introduces an order absent in the class list.
dleeftink•10m ago
Good use case for @container, @scope and :has(), where you forgo class definitions and use --custom-properties on the parent scope/container which are inherited downwards based on the existence of a scoped DOM pattern/container query, or 'upwards' by using a :has(child-selector) on the parent.

Although be sure to avoid too many :has(:nth-child(n of complex selector)) in case of frequent DOM updates.

callc•1h ago
Wow, this is great, unlocks lots of freedom. I was under the impression that this was not possible, maybe through web components or <slot>.

As a side note, I’ve been going through all the HTML elements slowly to learn the fundamentals, and it turns out that lots of elements are just a <div> or <span>, with different default styles and default ARIA things.

And a <div> is just a <span> with display block…

This and TFA both help me to realize HTML is pretty darn simple.

pests•1h ago
> And a <div> is just a <span> with display block…

It's a bit more subtle than that. HTML5 defines "Content Models", two of which are 'Phasing Content' and 'Flow Content'. Phasing Content can only contain text and text-like tags (em, strong, bold) whereas Flow Content can contain anything.

Technically <span> is defined as accepting Phrasing Content and <div> accepts Flow Content. Changing this with CSS doesn't change the content model.

Although browsers are very forgiving so it all works anyways and this is very in the deep end, I can't think of the last time I've consciously thought of this stuff.

https://html.spec.whatwg.org/#the-span-element

https://html.spec.whatwg.org/#the-div-element

https://html.spec.whatwg.org/#content-models

nektro•1h ago
the comments here informing us they default to behaving like <span> instead of like <div> is the biggest disappointment of my day so far
orliesaurus•57m ago
If this works, then the point of having standards, is just for screen readers??
singpolyma3•52m ago
You can but you never ever should. Do not do this. Use the `class` attribute to provide extra context about the kind of data your tag represents, that is what it is for.
yawaramin•8m ago
See https://news.ycombinator.com/item?id=46417607
crazygringo•37m ago
But there's no real reason to, and it just adds confusion around which elements are semantic -- bringing formatting, functionality, meaning to screen readers and search engines, etc. -- vs which are custom and therefore carry no semantic meaning.

If there's no native semantic tag that fits my purposes, I'd much rather stick to a div or span as appropriate, and identify it with one (or more) classes. That's what classes are for, and always have been for.

Support for custom HTML elements seems more appropriate for things like polyfills for actual official elements, or possibly more complicated things like UX widgets that really make sense conceptually as an interactive object, not just CSS formatting.

Using custom element names as a general practice to replace CSS classes for regular formatting just feels like it creates confusion rather than creating clarity.

yawaramin•8m ago
So, the article doesn't discuss this, but there's actually a really good reason to make up and use custom elements: the browser can hydrate their dynamic behaviour automatically. For example, suppose you have:

    <div class=expander>
      <button aria-expanded=false>Expand</button>
      <!-- Some other stuff here -->
    </div>
And you have some JS that handles the expander's behaviour:

    for (const expander of document.querySelectorAll('.expander')) {
      const btn = expander.querySelector('button');

      btn.addEventListener('click', () => {
        btn.ariaExpanded = 'true';
      });
    }
This will work fine for `.expander` divs that are already in the page when the event handler is set up. But suppose you dynamically load new expander divs, what then? Your event handler is not going to retroactively set up their click listeners too.

Custom elements solve exactly this problem. You can now do:

    <expander-elem>
      <button aria-expanded=false>Expand</button>
      <!-- Some other stuff here -->
    </expander-elem>
And then set up the listener:

    customElements.define('expander-elem', class extends HTMLElement {
      connectedCallback() {
        const btn = this.querySelector('button');

        btn.addEventListener('click', () => {
          btn.ariaExpanded = 'true';
        });
      }
    });
And the browser will ensure that it always sets up the listeners for all of the expanders, no matter whether they are loaded on the page initially or dynamically injected later. Without this you would have had to jump through a bunch of hoops to ensure it. This solves the problem elegantly.
tombert•23m ago
Many years ago, I decided to reinvent the `blink` tag, because the monsters who make browsers removed support for it.

I didn't know you could just make up tags, but I figured I'd give it a shot, and with a bit of jquery glue and playing with visibility settings, I was able to fix browsers and bring back the glorious blinking. I was surprised you could just do that; I would have assumed that the types of tags are final.

I thought about open sourcing it, but it was seriously like ten lines of code and I suspect that there are dozens of things that did the same thing I did.

JediBurrell•4m ago
I for one am glad that blink is no longer a thing, it's certainly behavior that should require more thought than a simple html element can provide.
shevy-java•18m ago
Hmmmm.

On the one hand I kind of want to use any random tag and have it work.

On the other hand ...

    <div class=main-article> # or <div class="main-article">

    versus

    <main-article>
I am not 100% sure, but I think I kind of prefer the div tag.

I understand that it is not the same semantically, but I am using div tags and p tags a LOT. I avoid the new HTML tags for more semantic meaning as this adds cognitive load to my brain. I'd rather confine myself to div and p tags though - it is just easier. And I use proper ids to infer additional information; it is not the same, but I kind of want to keep my HTML simple too. So I don't want to add 500 new custom HTML tags really. Even though I think having this as a FEATURE, can be useful.

cheeaun•4m ago
Many years ago, IE requires `document.createElement`.

HTML5 Shiv was needed, with added history https://www.paulirish.com/2011/the-history-of-the-html5-shiv... (2011)