frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

fp.

Start all of your commands with a comma

https://rhodesmill.org/brandon/2009/commands-with-comma/
142•theblazehen•2d ago•42 comments

OpenCiv3: Open-source, cross-platform reimagining of Civilization III

https://openciv3.org/
668•klaussilveira•14h ago•202 comments

The Waymo World Model

https://waymo.com/blog/2026/02/the-waymo-world-model-a-new-frontier-for-autonomous-driving-simula...
949•xnx•19h ago•551 comments

How we made geo joins 400× faster with H3 indexes

https://floedb.ai/blog/how-we-made-geo-joins-400-faster-with-h3-indexes
122•matheusalmeida•2d ago•32 comments

Unseen Footage of Atari Battlezone Arcade Cabinet Production

https://arcadeblogger.com/2026/02/02/unseen-footage-of-atari-battlezone-cabinet-production/
53•videotopia•4d ago•2 comments

Show HN: Look Ma, No Linux: Shell, App Installer, Vi, Cc on ESP32-S3 / BreezyBox

https://github.com/valdanylchuk/breezydemo
229•isitcontent•14h ago•25 comments

Jeffrey Snover: "Welcome to the Room"

https://www.jsnover.com/blog/2026/02/01/welcome-to-the-room/
16•kaonwarb•3d ago•19 comments

Monty: A minimal, secure Python interpreter written in Rust for use by AI

https://github.com/pydantic/monty
222•dmpetrov•14h ago•117 comments

Vocal Guide – belt sing without killing yourself

https://jesperordrup.github.io/vocal-guide/
27•jesperordrup•4h ago•16 comments

Show HN: I spent 4 years building a UI design tool with only the features I use

https://vecti.com
330•vecti•16h ago•143 comments

Hackers (1995) Animated Experience

https://hackers-1995.vercel.app/
494•todsacerdoti•22h ago•243 comments

Sheldon Brown's Bicycle Technical Info

https://www.sheldonbrown.com/
381•ostacke•20h ago•95 comments

Microsoft open-sources LiteBox, a security-focused library OS

https://github.com/microsoft/litebox
359•aktau•20h ago•181 comments

Show HN: If you lose your memory, how to regain access to your computer?

https://eljojo.github.io/rememory/
288•eljojo•17h ago•169 comments

An Update on Heroku

https://www.heroku.com/blog/an-update-on-heroku/
412•lstoll•20h ago•278 comments

Was Benoit Mandelbrot a hedgehog or a fox?

https://arxiv.org/abs/2602.01122
19•bikenaga•3d ago•4 comments

PC Floppy Copy Protection: Vault Prolok

https://martypc.blogspot.com/2024/09/pc-floppy-copy-protection-vault-prolok.html
63•kmm•5d ago•6 comments

Dark Alley Mathematics

https://blog.szczepan.org/blog/three-points/
90•quibono•4d ago•21 comments

How to effectively write quality code with AI

https://heidenstedt.org/posts/2026/how-to-effectively-write-quality-code-with-ai/
256•i5heu•17h ago•196 comments

Delimited Continuations vs. Lwt for Threads

https://mirageos.org/blog/delimcc-vs-lwt
32•romes•4d ago•3 comments

What Is Ruliology?

https://writings.stephenwolfram.com/2026/01/what-is-ruliology/
43•helloplanets•4d ago•42 comments

Where did all the starships go?

https://www.datawrapper.de/blog/science-fiction-decline
12•speckx•3d ago•4 comments

Introducing the Developer Knowledge API and MCP Server

https://developers.googleblog.com/introducing-the-developer-knowledge-api-and-mcp-server/
59•gfortaine•12h ago•25 comments

Female Asian Elephant Calf Born at the Smithsonian National Zoo

https://www.si.edu/newsdesk/releases/female-asian-elephant-calf-born-smithsonians-national-zoo-an...
33•gmays•9h ago•12 comments

I now assume that all ads on Apple news are scams

https://kirkville.com/i-now-assume-that-all-ads-on-apple-news-are-scams/
1066•cdrnsf•23h ago•446 comments

I spent 5 years in DevOps – Solutions engineering gave me what I was missing

https://infisical.com/blog/devops-to-solutions-engineering
150•vmatsiiako•19h ago•67 comments

Why I Joined OpenAI

https://www.brendangregg.com/blog/2026-02-07/why-i-joined-openai.html
149•SerCe•10h ago•138 comments

Understanding Neural Network, Visually

https://visualrambling.space/neural-network/
287•surprisetalk•3d ago•43 comments

Learning from context is harder than we thought

https://hy.tencent.com/research/100025?langVersion=en
182•limoce•3d ago•98 comments

Show HN: R3forth, a ColorForth-inspired language with a tiny VM

https://github.com/phreda4/r3
73•phreda4•13h ago•14 comments
Open in hackernews

Show HN: Chawan TUI web browser

https://chawan.net/news/chawan-0-2-0.html
387•shiomiru•7mo ago
A terminal-based web browser in Nim.[1] Has acceptable (YMMV) CSS rendering, some JS support, and inline images (sixel/kitty). It can also use various protocols other than http(s) such as (s)ftp, gopher, gemini, ...

Chawan started out as a w3m clone, and the UI still resembles it. However, the architecture has turned out quite different, with pages loaded in separate processes, and protocol/file type handling separated out into external binaries. An interesting result is that you can even register decoders for custom inline image formats, although practical use cases of this are rather minimal.

There is a gallery showcasing some websites being rendered here: https://chawan.net/gallery/index.html

[1]: https://nim-lang.org

Comments

hecanjog•7mo ago
I love this browser, thank you for building it!
shiomiru•7mo ago
Glad you like it :)
marcodiego•7mo ago
GPM support?
shiomiru•7mo ago
No GPM yet, but it does recognize XTerm's mouse protocol.
etaioinshrdlu•7mo ago
I rabbit-holed a little and apparently Chrome and Safari no longer even fully pass Acid2 and Acid3?
ataylor32•7mo ago
Here is a relevant discussion: https://news.ycombinator.com/item?id=15256890
ijustlovemath•7mo ago
My jaw dropped when HN loaded first try from Termux! Nice work!
shiomiru•7mo ago
Thanks :)

If you're interested, I posted a user style for HN here: https://lists.sr.ht/~bptato/chawan-devel/%3CD9S40OS2QWHL.PXQ...

Mainly just to fix the vote arrows, because for now background-image only renders placeholders.

corv•7mo ago
Awesome and in Nim!
agumonkey•7mo ago
as a tiny web fan, it's lovely to see projects like these, *claps*
greenspam•7mo ago
Finally a good tool to view HN in terminal. Thank you! Where can I find the keyboard shortcuts? I can move with vim key binding, but can go back.
shiomiru•7mo ago
cha-config(5) or about:chawan. The former also has an online version: https://chawan.net/doc/cha/config.html#pager-actions

For navigation in particular you'd use capital D to discard the current buffer and return to the previous page. There's also , (comma, back) and . (period, forward), which non-destructively cycle through the stack.

(Well, it's really a tree, but the UI mostly treats it as a stack.)

greenspam•7mo ago
Thank you so much!
mikeponders•7mo ago
Gotta love Nim
elcritch•7mo ago
I recommend perusing the code. Since it’s in Nim it’s pretty approachable (and performant). There’s still lots of gnarly bits like implementing HTML DOM and web specs, but it doesn’t take you days to grasp the basic setup.
isaacvando•7mo ago
This is super cool! Bravo. Awesome to see it written in Nim too.

When I do `cha example.com` I can't figure out how to use any of the commands (hjkl, etc). The only keys I've found that have any effect are typing numbers which show up in the bottom left. Haven't figured out how to do anything with those. Am I missing something obvious about how to use this or could this be a bug?

I built from source on MacOS Sequoia 15.5 Apple Silicon using Nim 2.24. Pages load correctly, I just can't get the commands to work. Thanks!

isaacvando•7mo ago
I tried it in Ghostty, iTerm2, and Terminal.app and they all behaved the same.
shiomiru•7mo ago
It's a bug, thanks for reporting. I've created a ticket: https://todo.sr.ht/~bptato/chawan/63

Could you please pull the macos-input branch from https://git.sr.ht/~bptato/chawan and report back on what the `a` file includes after opening a site and typing some commands? (Should be created in the current working directory.)

isaacvando•7mo ago
Here's the contents of a. Let me know if there are any other commands you'd like me to type.

``` handleCommandInput 1, buffer "" c 'j' handleCommandInput 2, buffer "" c 'j' after handleCommandInput, buffer 0x104c5b780"j" c 'j' handleCommandInput 1, buffer "" c 'k' handleCommandInput 2, buffer "" c 'k' after handleCommandInput, buffer 0x104ca8b70"k" c 'k' handleCommandInput 1, buffer "" c 'l' handleCommandInput 2, buffer "" c 'l' after handleCommandInput, buffer 0x104c5bab0"l" c 'l' handleCommandInput 1, buffer "" c 'k' handleCommandInput 2, buffer "" c 'k' after handleCommandInput, buffer 0x104ca8d20"k" c 'k' handleCommandInput 1, buffer "" c 'j' handleCommandInput 2, buffer "" c 'j' after handleCommandInput, buffer 0x104c5b480"j" c 'j' handleCommandInput 1, buffer "" c 'h' handleCommandInput 2, buffer "" c 'h' after handleCommandInput, buffer 0x104ca89c0"h" c 'h' handleCommandInput 1, buffer "" c 'g' handleCommandInput 2, buffer "" c 'g' after handleCommandInput, buffer 0x104cae780"g" c 'g' handleCommandInput 1, buffer "" c '1' after handleCommandInput, buffer "" c '1' handleCommandInput 1, buffer "" c '2' after handleCommandInput, buffer "" c '2' handleCommandInput 1, buffer "" c '3' after handleCommandInput, buffer "" c '3' handleCommandInput 1, buffer "" c '1' after handleCommandInput, buffer "" c '1' handleCommandInput 1, buffer "" c '2' after handleCommandInput, buffer "" c '2' handleCommandInput 1, buffer "" c '2' after handleCommandInput, buffer "" c '2' handleCommandInput 1, buffer "" c '3' after handleCommandInput, buffer "" c '3' handleCommandInput 1, buffer "" c '\3' handleCommandInput 2, buffer "" c '\3' after handleCommandInput, buffer 0x104cae690"\3" c '\3' handleCommandInput 1, buffer "" c '\3' handleCommandInput 2, buffer "" c '\3' after handleCommandInput, buffer 0x104adaed0"\3" c '\3' handleCommandInput 1, buffer "" c '\3' handleCommandInput 2, buffer "" c '\3' after handleCommandInput, buffer 0x104ca8720"\3" c '\3' handleCommandInput 1, buffer "" c '\4' handleCommandInput 2, buffer "" c '\4' after handleCommandInput, buffer 0x104bf8d80"\4" c '\4' handleCommandInput 1, buffer "" c '\3' handleCommandInput 2, buffer "" c '\3' after handleCommandInput, buffer 0x104caaa80"\3" c '\3' handleCommandInput 1, buffer "" c '\4' handleCommandInput 2, buffer "" c '\4' after handleCommandInput, buffer 0x104ca8e40"\4" c '\4' ```

shiomiru•7mo ago
Strange, so it sees your input but still doesn't evaluate the commands...

OK, let's try something else. On master, is anything written to the status line if you press `p` when started with

    cha -o'page.p="pager.alert(config.page.j)"' -V
erohead•7mo ago
I'm on Mac OS, encountering the same problem. I tried opening `cha -o'page.p="pager.alert(config.page.j)"' -V` then press `p`...nothing happens
isaacvando•7mo ago
Nothing happens for me either
shiomiru•7mo ago
Fixed on master.

(It turned out to be a miscompilation on part of clang; quite interesting, see the ticket linked above for details.)

lucideer•7mo ago
Absolutely incredible. And it even supports gopher.
silasdb•7mo ago
Wonderful! Thanks!

I see you don't use termcap/ncurses anymore. Do you perform terminal handling yourself directly?

Thanks again!

shiomiru•7mo ago
Chawan never really used ncurses, only termcap. (ncurses just happens to implement termcap too.)

I started with termcap because I was already familiar with it through w3m. But termcap is an obsolete interface, and cannot describe the only useful attribute for modern terminals (true color). Its only benefit was "maybe it accidentally works on a hardware terminal from the 80s", which is cool but not really worth the extra failure mode.

So instead of migrating to terminfo, I ditched it completely in favor of terminal queries (which were already necessary for other reasons). There is still a built-in terminal database, to detect known TERM values with XTerm incompatibilities. But a terminal that correctly responds to queries will work out of the box, even if its TERM value is unknown.

NoGravitas•7mo ago
> I started with termcap because I was already familiar with it through w3m. But termcap is an obsolete interface, and cannot describe the only useful attribute for modern terminals (true color). Its only benefit was "maybe it accidentally works on a hardware terminal from the 80s", which is cool but not really worth the extra failure mode.

Priorities, I guess. As long as I'm in a terminal, I'd rather have support for hardware terminals from the 80s than truecolor. But my only hardware terminal is a VT-420, so probably works for more or less anything that supports base XTerm (monochrome).

zquestz•7mo ago
This works great, been playing with it through s-search and it works way better than w3m. =)
higon•7mo ago
Long time w3m user here. Tried it and I can love it. Very nice.

Is that your design choice not having "Open URL"(Address bar) feature?

shiomiru•7mo ago
The address bar should open by pressing C-l (control + L).
FerretFred•7mo ago
Very nice! I compiled this from source on my Lenovo M8 4h gen running termux: I only had to install nim. It even installed nicely despite there being no "root" user.
noufalibrahim•7mo ago
This is beautifully done. I'm going to use this for some of my daily work and see how far I can get with it. HN looks exceptionally good. Thank you!
dotancohen•7mo ago
Good of you! Don't forget to file the bugs you find.
desireco42•7mo ago
I think making markdown browser would totally make sense for terminal and would work really well. Come to think about it, you can even, Netscape style even allow editing of the pages. Now that would be something.

Nim is wonderful language and I am glad to see it used for this.

ralgozino•7mo ago
glow is kinda that: https://github.com/charmbracelet/glow
desireco42•7mo ago
Thanks, this is a good find
mariusor•7mo ago
I've always tried to make my websites look good in Links and now it looks like I have a new candidate.

Having support for some CSS makes it a bit more difficult, as spacing between elements is now an issue, where previously links would ignore margins and padding all together which were used to display cleaner inline list elements (for menus and such).

shiomiru•7mo ago
The intention is that it should "just work"... I'm aware sometimes it doesn't, you can consider that a bug :)

But if you really want custom CSS for grid displays, chawan does support the standard "grid" media feature: https://developer.mozilla.org/en-US/docs/Web/CSS/@media/grid

mariusor•7mo ago
I had no idea this CSS API existed. I'll add that to my CSS, thank you! :)

I'll check if the issue tracker has anything related to supporting titled alternate stylesheets (and eventually allowing users to pick one of them), because on the website where I made efforts for the markup to look reasonable on links, I also have a "simple" style that removes most of the CSS fanciness.

mariusor•7mo ago
I have implemented changes based on your advice of using @media: grid, and everything looks better now. You can check it here: https://brutalinks.tech (it's a link aggregator similar to HN).
eMPee584•7mo ago
Thanks, always appreciate ways of not using another blink engine for a brief research side quest! looking forward to test after school ; )

As it hasn't been brought up yet, a really great hack (esp. for us without sixel) is this terminal port of chromium: https://github.com/fathyb/carbonyl .. but the original creator hasn't had time to get back to it. So it is very bare bones & lacks a lot of features, like keyboard shortcuts, file saving.. but obviously it brings full web compatibility and is just very cool. Wishing for someone with rust skills to pick it up again, last time I looked (couple of months ago) none of the forks had any momentum.

Imustaskforhelp•7mo ago
Side note but on the carbonyl github post, everyone keeps asking about the author's health as if he's safe or not, given he is palestinian.

I hope the author is safe. His work was really good,I must say. Fuck wars in general.

eMPee584•7mo ago
Well his github profile says he's in France, so let's hope he's kinda safe.. But yeah, fuck wars in general. Also, fuck the generals.. and their commanders. Oh, and the whole military-industrial complex as well. We urgently need a transition towards a planetary non-commercial commons-based economy..
onetom•7mo ago
@shiomiru

What's the best resource (paid or free) in your opinion for learning about these TTY related concepts?

I'm aware of https://www.linusakesson.net/programming/tty/index.php for example, but that doesn't go into termcap/terminfo/curses.

one of the comments mentions http://www.amazon.com/termcap-terminfo-OReilly-Nutshell-Lind... though (online https://www.scribd.com/document/831486848/Termcap-and-Termin...)

shiomiru•7mo ago
chawan has a custom terminal module, so my knowledge about the standard X/Open curses is not that great.

That said, for the actual escape sequences, XTerm's ctlseqs.ms[1] is an invaluable resource. I also took many ideas from nick black's notcurses[2], and I especially recommend his notes on "sprixels".[3]

[1]: https://invisible-island.net/xterm/ctlseqs/ctlseqs.html

[2]: https://nick-black.com/dankwiki/index.php/Notcurses

[3]: https://nick-black.com/dankwiki/index.php/Theory_and_Practic...

anta40•7mo ago
Can be easily built on macOS with just a single 'make'. Cool.

And nice to see there's a new elinks alternative.

poulpy123•7mo ago
always nice to see something written in nim. In my very novice eyes, it is the most interesting language that is situated between C/C++ and python. It's a pity it never took off. The productivity of its users compared to the userbase size always made me think I'm right even if I'm far to be knowledgeable enough on the topic
pancsta•7mo ago
Nim(rod) was released soon before Golang, and the overlap in features probably stopped the former one.
avinassh•7mo ago
what does the name mean
meepmorp•7mo ago
I believe it's a chinese tea bowl,
adamseddie•7mo ago
Dockerfile: https://paste.rs/egbGg

docker build -t chawan:0.2.0 .

docker run -it --rm chawan:0.2.0 https://news.ycombinator.com/

ieee2•7mo ago
How are those images rendered in text UI?
dotancohen•7mo ago
Inline using sixel. Go look at the screenshots, it's not bad.
ieee2•7mo ago
Yes, screenshots are nice. That's why I asked.
ieee2•7mo ago
OK. Found it:

Displayed using Sixels or the Kitty protocol. Supported input formats are PNG, JPEG, BMP, GIF (stb_image), WebP (jebp) and SVG (nanosvg). Opt-in; edit the config to enable it.

ho_schi•7mo ago
btw.

Rendering images or movies on the TTY is common.

fbida: https://www.kraxel.org/blog/linux/fbida/

mpv: https://mpv.io/

Fbida sometimes need the -d option pointing to /dev/drm/something, when using screen or tmux.

MPV required for years -vo=drm on the TTY but since some months it always works. Nice improvement :)

A display server is not needed.

ieee2•7mo ago
It is first time I saw it today. Thanks!
gherard5555•7mo ago
Can we talk about how refreshing this web design is
ericrenan•7mo ago
Good job,really nice work,congrats.
Hrun0•7mo ago
This is really impressive! Do you a have roadmap for upcoming or planned features?
shiomiru•7mo ago
The closest thing is https://codeberg.org/bptato/chawan/raw/branch/master/todo, but it's somewhat outdated and I rarely bother to sort it according to priority...