frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

fp.

Open in hackernews

TikZJax: Embedding LaTeX Drawings in HTML

https://tikzjax.com/
137•steventhedev•12mo ago

Comments

Garlef•12mo ago
Hm. Either that page or the tech itself is not great on mobile.
ano-ther•12mo ago
Takes a second or so to load on mine (iOS Safari). But then it shows correctly, even if the second diagram is a bit small (it fits in a quarter of the 1in circle).
frumplestlatz•12mo ago
It crashes (“a problem repeatedly occurred”) a few seconds after loading everything on my device (also iOS Safari).

I love tikz, but lightweight it is not; it’s not a huge surprise it takes a few seconds to render.

No idea what’s causing the crash, though.

kccqzy•12mo ago
Well iOS Safari is in general buggy and tends to display the "a problem repeatedly occurred" message on many other slightly heavy web pages. This web page shouldn't be blamed for causing Safari to crash.
frumplestlatz•12mo ago
Nobody is assigning blame, we don’t know the root cause.

I could just as easily say that Safari shouldn’t be blamed for a buggy website, but I’d be overreaching just as much as you just did.

kccqzy•12mo ago
By definition buggy websites that crash the browser are bugs in the browser.

It may have security implications, or it may not. It might just be an innocent case of someone using assertions instead of proper error reporting. Nevertheless it's a bug in the browser.

frumplestlatz•12mo ago
Safari will terminate a page for using excess resources with the same message.
kccqzy•12mo ago
So? Still Safari's problem for not displaying a proper error message.
frumplestlatz•12mo ago
Sounds like you just dislike Safari. Doesn’t seem to be much help here.
kccqzy•11mo ago
No. Safari chose the exact wrong way to handle this case. Let's suppose some webpage is in fact allocating too much memory. It is the user agent's job to inform the user of this fact. What does Safari do? It silently crashes. It's not even about displaying the wrong error message here: the handler for the crash is to simply refresh the page and render it again. But this is exactly the wrong way to handle out-of-memory errors: chances are the web page will again allocate too much memory and crash yet again. In the end the final displayed error message is "a problem repeatedly occurred" with no reference to the nature of the problem.

I hate this trend of hiding error messages from the user. Apple as a company known for its attention to detail in UI, should have been the one company especially dedicated to presenting a good error message without overwhelming the user with technical details—it is supposed to be the master in user communication. And it is not. Hence my disappointment.

Jaxan•12mo ago
It doesn’t crash, but tells me there is a problem. To me,this seems like a safe way to deal with buggy websites.
revskill•12mo ago
The author does not have an iphone to test.
ics•12mo ago
Jim Fowler seemed like Calculus' biggest hype man when the MOOC ball was just starting to roll. If you're looking to brush up and like the more energetic/engaging style I'd recommend checking out his videos on YouTube or elsewhere.

> Using web2js, the Pascal source of tex is compiled to WebAssembly; the latex format is loaded (without all the hyphenation data), and [...] is executed. Then core is dumped; the resulting core is compressed, and by reloading the dumped core in the browser, it is possible to very quickly get to a point where TikZ can be executed. By using an SVG driver for PGF along with dvi2html, the DVI output is converted to an SVG.

This is the kind of hack I'm here for.

3abiton•12mo ago
Thanks for the recommendation, this is really cool!
kisonecat•12mo ago
Indeed, you can find my calculus videos at https://www.youtube.com/kisonecat

But maybe for a coding audience https://www.youtube.com/watch?v=MVtlD22Y8SQ is more entertaining.

frumplestlatz•12mo ago
Using a “core dump” (dumping the webassembly heap) is an interesting optimization approach with historical precedent both in TeX itself and projects like Emacs (dump/unexec) — https://www.gnu.org/software/emacs/manual/html_node/elisp/Bu...

It’s also notoriously fragile and non-portable on native targets; I’m curious how one implements it under webassembly, and how it compares.

drfuchs•12mo ago
Being able to start a process, have it run for a bit to, say, read in initialization data, populating dynamic data structures along the way, and then interrupt the process and save the whole state as a new executable, was a feature built into DEC’s Tops10 and Tops20 operating systems / standard runtimes, along with related custom systems like Waits, under which TeX was developed. It took just two lines of code for TeX to implement its side of this feature on those first platforms.

It came as a bit of a shock at the time that all the Unix-y systems had no such native concept, and that fragile, non-portable user-space schemes were required to mimic this functionality.

vdm•12mo ago
Checkpoint/Restore In Userspace https://criu.org/
kisonecat•12mo ago
Resurrecting this workflow was one of the funniest things in implementing TikZJax.
kisonecat•12mo ago
Author of TikZJax here...

I'm endlessly distracted by other things at work, but I believe this same idea could also be used to provide real-time compilation of TeX'd documents as they're typed. Simon Rubinstein-Salzedo had suggested wanting something like a real-time Overleaf to teach his classes at https://eulercircle.com/ Interrupting and resurrecting the TeX-in-the-browser would let you render a document as it is typed.

svat•11mo ago
See also (if you haven't already) SwiftLaTeX ( https://www.swiftlatex.com/ https://github.com/SwiftLaTeX ) and their paper (DOI: 10.1145/3209280.3209522 ).
apetresc•12mo ago
Funny seeing this on the front page – I'm coding a project as I'm browsing this that makes heavy use of TikZJax.

Overall, I'm impressed by how seamlessly it works when it does work. But it's not perfect:

- Some core library functions (for example, most types of fill patterns) simply don't work or aren't implemented for some reason.

- There are a few long-standing bugs. For instance, if using the intersections library to compute the intersection of a line and a circle, it straight-up crashes the entire TikZJax process. Intersections of two lines or two circles are fine, but circle+line fails. My attempts at diagnosing this seem to indicate that it's running out of stack space, so maybe the original TikZ code uses some inefficient recursive algorithm to compute this intersection, and this exceeds some stack size limit that the WebAssembly version introduces. I'm not sure and I haven't been able to get much traction.

- The project doesn't seem to get any love from the original developers anymore. I've filed multiple bugs for months now that never get any form of acknowledgement.

- The build process is pretty convoluted and difficult to reproduce (to try to fix those aforementioned bugs myself), which I guess is what you'd expect from a project that attempts to cross-compile a 20-year-old macro package for a 50-year-old Pascal codebase for rendering in the browser.

Overall I'm very glad TikZJax exists and there's still no better-looking and convenient-to-author diagramming language than TikZ itself. But there's definitely rough edges.

steventhedev•12mo ago
Apparently there are some forks that offer more features and fix some of those bugs. Maybe one of those can help you?

This is the one that was shared on lobsters, but there are likely more: https://bill-ion.github.io/tikzjax-live/

kisonecat•12mo ago
As the author of TikZJax, I can certainly apologize for not making more progress on this.

I need to get back to this project! I'd very much like to clean up the build process.

xenonite•12mo ago
While live rendering is nice, I suppose that generating static SVGs that are embedded in a static webpage generator are more fruitful for the typical case. A quick search yielded this: https://polbarrachina.com/2022/05/23/latex-and-tikz-in-jekyl...
psychoslave•12mo ago
In a wiki setting for example, it might be nice as it makes the direct human edition more accessible. Not as accessible as an embedded SVG editor of course. But still, compare how latex formula are used in Wikipedia, compared to mathml, or SVG.
steventhedev•12mo ago
I'm fond of using KaTeX for my personal blog posts. There is support for server side rendering for KaTeX (but not on GitHub pages because it necessarily opens it to arbitrary code execution - I asked).

But it notably lacks tikz support and if it can emit SVGs I'm beginning to wonder why I even use KaTeX and not something like this (beyond my personal anti-JS sentiment)

klabetron•12mo ago
Holy smokes. That’s a name I haven’t heard in a while. I submitted many calculus homework assignments in LaTeX because Jim introduced it to me back at our high school. (Go Mankato West Scarlets!)
kisonecat•12mo ago
Matt Klaber?! If so, great to run into you!

I mean, I'm guessing from "klabetron"... Unfortunately I don't think my "kisonecat" gives much clue to "Fowler".

klabetron•11mo ago
lol yep
ycombinatrix•11mo ago
this looks cool. i guess i would generally prefer to do the SVG rendering on the server rather than on the client.

€54k spike in 13h from unrestricted Firebase browser key accessing Gemini APIs

https://discuss.ai.google.dev/t/unexpected-54k-billing-spike-in-13-hours-firebase-browser-key-wit...
70•zanbezi•29m ago•36 comments

IPv6 traffic crosses the 50% mark

https://www.google.com/intl/en/ipv6/statistics.html?yzh=28197
431•Aaronmacaron•1d ago•260 comments

Ancient DNA reveals pervasive directional selection across West Eurasia [pdf]

https://reich.hms.harvard.edu/sites/reich.hms.harvard.edu/files/inline-files/2026_Akbari_Nature_s...
27•Metacelsus•1h ago•5 comments

Codex Hacked a Samsung TV

https://blog.calif.io/p/codex-hacked-a-samsung-tv
65•campuscodi•1h ago•45 comments

Darkbloom – Private inference on idle Macs

https://darkbloom.dev
304•twapi•8h ago•158 comments

FSF trying to contact Google about spammer sending 10k+ mails from Gmail account

https://daedal.io/@thomzane/116410863009847575
213•pabs3•8h ago•118 comments

Modern Microprocessors – A 90-Minute Guide

https://www.lighterra.com/articles/
50•Flex247A•4d ago•4 comments

Cybersecurity looks like proof of work now

https://www.dbreunig.com/2026/04/14/cybersecurity-is-proof-of-work-now.html
471•dbreunig•1d ago•173 comments

RedSun: System user access on Win 11/10 and Server with the April 2026 Update

https://github.com/Nightmare-Eclipse/RedSun
117•airhangerf15•8h ago•24 comments

Too much discussion of the XOR swap trick

https://heather.cafe/posts/too_much_xor_swap_trick/
98•CJefferson•3d ago•57 comments

The paper computer

https://jsomers.net/blog/the-paper-computer
177•jsomers•3d ago•44 comments

The Death of Character in Game Console Interfaces

https://vale.rocks/posts/game-console-interfaces
24•PaulHoule•3d ago•25 comments

ChatGPT for Excel

https://chatgpt.com/apps/spreadsheets/
241•armcat•15h ago•150 comments

Moving a large-scale metrics pipeline from StatsD to OpenTelemetry / Prometheus

https://medium.com/airbnb-engineering/building-a-high-volume-metrics-pipeline-with-opentelemetry-...
46•jmarbach•7h ago•9 comments

RamAIn (YC W26) Is Hiring

https://www.ycombinator.com/companies/ramain/jobs/bwtwd9W-founding-gtm-operations-lead
1•svee•5h ago

North American English Dialects

https://aschmann.net/AmEng/
53•skogstokig•9h ago•22 comments

PHP 8.6 Closure Optimizations

https://wiki.php.net/rfc/closure-optimizations
8•moebrowne•2d ago•2 comments

FIXAPL

https://fixapl.netlify.app/
47•tosh•4d ago•3 comments

Cal.com is going closed source

https://cal.com/blog/cal-com-goes-closed-source-why
332•Benjamin_Dobell•21h ago•264 comments

Google broke its promise to me – now ICE has my data

https://www.eff.org/deeplinks/2026/04/google-broke-its-promise-me-now-ice-has-my-data
1553•Brajeshwar•18h ago•668 comments

Introduction to spherical harmonics for graphics programmers

https://gpfault.net/posts/sph.html
115•luu•3d ago•18 comments

The Accursèd Alphabetical Clock

https://boat.horse/clock/index.html
38•ohjeez•1d ago•7 comments

I made a terminal pager

https://theleo.zone/posts/pager/
144•speckx•14h ago•35 comments

Fast and Easy Levenshtein distance using a Trie (2011)

https://stevehanov.ca/blog/fast-and-easy-levenshtein-distance-using-a-trie
78•sebg•4d ago•13 comments

The noise we make is hurting animals. Can we learn to shut up?

https://www.technologyreview.com/2026/04/16/1135179/anthropogenic-noise-hurting-animals/
27•joozio•1h ago•24 comments

A Look into NaviDial, Japan's Legacy Phone Service

https://www.tokyodev.com/articles/a-look-into-navidial-japan-s-legacy-phone-service
64•pwim•8h ago•9 comments

Retrofitting JIT Compilers into C Interpreters

https://tratt.net/laurie/blog/2026/retrofitting_jit_compilers_into_c_interpreters.html
106•ltratt•1d ago•22 comments

CRISPR takes important step toward silencing Down syndrome’s extra chromosome

https://medicalxpress.com/news/2026-04-crispr-bold-silencing-syndrome-extra.html
191•amichail•20h ago•113 comments

Show HN: Libretto – Making AI browser automations deterministic

https://github.com/saffron-health/libretto
112•muchael•20h ago•43 comments

US v. Heppner (S.D.N.Y. 2026) no attorney-client privilege for AI chats [pdf]

https://fingfx.thomsonreuters.com/gfx/legaldocs/xmvjyjekkpr/Rakoff%20-%20order%20-%20AI.pdf
154•1vuio0pswjnm7•22h ago•105 comments