<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Hacker News: tel</title><link>https://news.ycombinator.com/user?id=tel</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Tue, 11 Aug 2026 19:14:52 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=tel" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by tel in "Ask HN: What are you working on? (August 2026)"]]></title><description><![CDATA[
<p>In short, simplify the design to make it more reasonable for multiple implementations to agree while also adding intentional extensibility points and a governance model that allows for dialects to form without fracturing the community.<p>Markdown is really interesting. For most readers and most writers it's dead simple and you just get the idea from a few examples or reading a short description. In practice, it's dozens of dialects (though 3 related ones dominate) and dozens more implementations. It's hard to write new, compatible implementations, so they tend to fracture.<p>(This may be less true with LLMs nowadays, but it might also be worse.)<p>Often, someone wants to write a Markdown variant because they wish it supported some new extension to help it mesh with the use case and tool they are envisioning. Each one of these is a new fracture.<p>My goal is a simple specification that's easy to reimplement that eliminates years of cruft and subtle complexity. I'm designing it to be simple and obvious to extend and building a governance model so that extensions can live together, grow, maybe even become mainstream all without ever breaking compatibility.</p>
]]></description><pubDate>Mon, 10 Aug 2026 18:46:05 +0000</pubDate><link>https://news.ycombinator.com/item?id=49247930</link><dc:creator>tel</dc:creator><comments>https://news.ycombinator.com/item?id=49247930</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49247930</guid></item><item><title><![CDATA[New comment by tel in "Ask HN: What are you working on? (August 2026)"]]></title><description><![CDATA[
<p>I'm working on an improved Markdown that offers a simplified language, clear hooks for extensibility, and a governance model to let it grow over time.</p>
]]></description><pubDate>Sun, 09 Aug 2026 18:09:05 +0000</pubDate><link>https://news.ycombinator.com/item?id=49233881</link><dc:creator>tel</dc:creator><comments>https://news.ycombinator.com/item?id=49233881</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49233881</guid></item><item><title><![CDATA[New comment by tel in "Introduction to Formal Verification with Lean Part 1"]]></title><description><![CDATA[
<p>An assert statement requires that you specifically come up with a test case. Lean lets you verify <i>for all possible cases</i>. Infinity is not a problem.<p>It's similar to a type system in that regard. The same difference could be applied there (comparing a Python type assert). Types, however, generally only cover checks similar to "the shape of the data is X".<p>Lean is different in that its language for expressing properties is wide enough to express anything you can imagine. The bottleneck becomes accurately stating properties you'd like to enforce and, subsequently, discovering proofs of whether or not they're true.</p>
]]></description><pubDate>Wed, 22 Jul 2026 15:02:28 +0000</pubDate><link>https://news.ycombinator.com/item?id=49007921</link><dc:creator>tel</dc:creator><comments>https://news.ycombinator.com/item?id=49007921</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49007921</guid></item><item><title><![CDATA[New comment by tel in "My thoughts on the Bun Rust rewrite"]]></title><description><![CDATA[
<p>Without having any opinion on whether or not the Bun team was meaningfully fuzzing their codebase... Andrew's claim was not about whether or not they were, it was noting that the story was different between what they claimed in conversation and what they stated in this article.</p>
]]></description><pubDate>Thu, 09 Jul 2026 14:04:43 +0000</pubDate><link>https://news.ycombinator.com/item?id=48846075</link><dc:creator>tel</dc:creator><comments>https://news.ycombinator.com/item?id=48846075</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48846075</guid></item><item><title><![CDATA[New comment by tel in "My thoughts on the Bun Rust rewrite"]]></title><description><![CDATA[
<p>It's also a language of distancing from personal experience and honesty.<p>Not saying you're wrong. Professionalism is an important tool for maintaining professional relationships. Lack of professionalism is dangerous to the point where it is reasonable for certain kinds of societies to begin to shun people who don't engage with it.<p>And, at the same time, a certain amount of emotional honesty can be really important to share, too. And that includes some amount of judgement and criticism.<p>It sounds like Zig's relationship with Bun is over. While Anthropic/Jason/Bun did not write a personal narrative about the end of that relationship, they absolutely were the initiators and could not have done this in a more aggressive way. It feels to me to be approximately the equivalent of moving out in secret and serving the divorce documents through your lawyer.</p>
]]></description><pubDate>Thu, 09 Jul 2026 13:59:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=48845970</link><dc:creator>tel</dc:creator><comments>https://news.ycombinator.com/item?id=48845970</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48845970</guid></item><item><title><![CDATA[New comment by tel in "There Is(Ǝ) – Such That (∋)"]]></title><description><![CDATA[
<p>I think you've got it. You go in each day and work on things and talk with people working on things. There are multiple opportunities to share weekly, one or two are pretty regular and the rest are self-organized. Maybe you learn about something new and dive in, maybe you come up with a project and share it with others.<p>I think the beating heart is that everyone is there with some passion to learn and build and you're encouraged to do so collaboratively. It's surprising, I feel, how rare it is to have a community of folks who are all learning together and not afraid to dive in and figure things out. Recurse Center is a chance to spend 6 or 12 weeks building and then living in a place like that.</p>
]]></description><pubDate>Mon, 15 Jun 2026 19:00:51 +0000</pubDate><link>https://news.ycombinator.com/item?id=48545575</link><dc:creator>tel</dc:creator><comments>https://news.ycombinator.com/item?id=48545575</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48545575</guid></item><item><title><![CDATA[New comment by tel in "Ask HN: What are you working on? (June 2026)"]]></title><description><![CDATA[
<p>I'm working on an easy-to-embed typed language called Ekto. I am taking a lot of inspiration from Koka and aiming to support full multi-shot delimited continuations all while keeping the virtual machine deeply predictable from the host side.<p>I'm also rebuilding an integrated task/knowledge/publication system I'd previously built atop Gemini's Gemtext format. While I loved the simplicity, I've discovered that there are lots of burrs in that design, especially on the publication side, which I'd be able to lift by using a more fully featured document format like Djot.</p>
]]></description><pubDate>Sun, 14 Jun 2026 19:29:15 +0000</pubDate><link>https://news.ycombinator.com/item?id=48531643</link><dc:creator>tel</dc:creator><comments>https://news.ycombinator.com/item?id=48531643</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48531643</guid></item><item><title><![CDATA[New comment by tel in "Grok 4.3"]]></title><description><![CDATA[
<p>I was asking questions about compiler techniques. Then when I got annoyed I started asking about experimental design. Both were very frustrating experiences once I started realizing how limited its responses were.<p>Though yeah the edgelord-y style faded after I criticized it a couple times.</p>
]]></description><pubDate>Fri, 01 May 2026 22:53:38 +0000</pubDate><link>https://news.ycombinator.com/item?id=47981436</link><dc:creator>tel</dc:creator><comments>https://news.ycombinator.com/item?id=47981436</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47981436</guid></item><item><title><![CDATA[New comment by tel in "Grok 4.3"]]></title><description><![CDATA[
<p>All my usage of Grok for technical topics shows it regularly deeply misunderstanding things and just parroting back my question in fancy language. It’s the only frontier model I get this impression of. That makes it super annoying when it tries to market itself as good at engineering tasks when it seems (to me) to be much worse at them.</p>
]]></description><pubDate>Fri, 01 May 2026 18:04:53 +0000</pubDate><link>https://news.ycombinator.com/item?id=47977958</link><dc:creator>tel</dc:creator><comments>https://news.ycombinator.com/item?id=47977958</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47977958</guid></item><item><title><![CDATA[New comment by tel in "Gaussian Splatting – A$AP Rocky "Helicopter" music video"]]></title><description><![CDATA[
<p>I think, yes, with greater splat density—and, critically, more and better inputs to train on, others have stated that these performances were captured with 56 RealSense D455fs—then splats will more accurately estimate light at more angles and distances. I think it's likely that during capture they had to make some choices about lighting and bake those in, so you might still run into issues matching lighting to your shots, but still.<p><a href="https://www.realsenseai.com/products/real-sense-depth-camera-d455f/" rel="nofollow">https://www.realsenseai.com/products/real-sense-depth-camera...</a><p>That said, I don't think splats:voxels as pixels:vector graphics. Maybe a closer analogy would be pixels:vectors is the same as voxels:3d mesh modeling. You might imagine a sophisticated animated character being created and then animated using motion capture techniques.<p>But notice where these things fall apart, too. SVG shines when it's not just estimating the true form, but literally is it (fonts, simplified graphics made from simple strokes). If you try to estimate a photo using SVG it tends to get messy. Similar problems arise when reconstructing a 3d mesh from real-world data.<p>I agree that splats are a bit like pixels, though. They're samples of color and light in 3d (2d) space. They represent the source more faithfully when they're more densely sampled.<p>The difference is that a splat is sampled irregularly, just where it's needed within the scene. That makes it more efficient at representing most useful 3d scenes (i.e., ones where there are a few subjects and objects in mostly empty space). It just uses data where that data has an impact.</p>
]]></description><pubDate>Mon, 19 Jan 2026 11:25:50 +0000</pubDate><link>https://news.ycombinator.com/item?id=46677754</link><dc:creator>tel</dc:creator><comments>https://news.ycombinator.com/item?id=46677754</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46677754</guid></item><item><title><![CDATA[New comment by tel in "Gaussian Splatting – A$AP Rocky "Helicopter" music video"]]></title><description><![CDATA[
<p>Gaussian splatting is a way to record 3-dimensional video. You capture a scene from many angles simultaneously and then combine all of those into a single representation. Ideally, that representation is good enough that you can then, post-production, simulate camera angles you didn't originally record.<p>For example, the camera orbits around the performers in this music video are difficult to imagine in real space. Even if you could pull it off using robotic motion control arms, it would require that the entire choreography is fixed in place before filming. This video clearly takes advantage of being able to direct whatever camera motion the artist wanted in the 3d virtual space of the final composed scene.<p>To do this, the representation needs to estimate the radiance field, i.e. the amount and color of light visible at every point in your 3d volume, viewed from every angle. It's not possible to do this at high resolution by breaking that space up into voxels, those scale badly, O(n^3). You could attempt to guess at some mesh geometry and paint textures on to it compatible with the camera views, but that's difficult to automate.<p>Gaussian splatting estimates these radiance fields by assuming that the radiance is build from millions of fuzzy, colored balls positioned, stretched, and rotated in space. These are the Gaussian splats.<p>Once you have that representation, constructing a novel camera angle is as simple as positioning and angling your virtual camera and then recording the colors and positions of all the splats that are visible.<p>It turns out that this approach is pretty amenable to techniques similar to modern deep learning. You basically train the positions/shapes/rotations of the splats via gradient descent. It's mostly been explored in research labs but lately production-oriented tools have been built for popular 3d motion graphics tools like Houdini, making it more available.</p>
]]></description><pubDate>Sun, 18 Jan 2026 18:49:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=46670863</link><dc:creator>tel</dc:creator><comments>https://news.ycombinator.com/item?id=46670863</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46670863</guid></item><item><title><![CDATA[New comment by tel in "Org Mode syntax is one of the most reasonable markup languages for text (2017)"]]></title><description><![CDATA[
<p>Definitely not common! Nice to hear I'm not alone either.<p>And yeah, I agree. Practically, it's the thing that annoys me the most day-to-day. I've mostly got wrapping set up to handle it now, but it remains a little finicky.</p>
]]></description><pubDate>Sat, 10 Jan 2026 16:55:00 +0000</pubDate><link>https://news.ycombinator.com/item?id=46567369</link><dc:creator>tel</dc:creator><comments>https://news.ycombinator.com/item?id=46567369</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46567369</guid></item><item><title><![CDATA[New comment by tel in "Org Mode syntax is one of the most reasonable markup languages for text (2017)"]]></title><description><![CDATA[
<p>I've recently begun replacing Markdown with Gemini's .gmi/gemtext format. It is Markdown with fewer features. I appreciate the simplicity and it's tremendously easy for custom tools to parse.<p>It has no inline formatting, only 3 levels of ATX headers (without trailing #s), one level of bullet points using only asterisk and not dash to delimit, does not merge touching non-whitespace lines (thus expecting one line per paragraph), and supports only triple-backtick fenced preformatted text areas that just flip on and off.<p>Maybe the biggest change is that links are necessarily listed on their own line, proceeded by a `=>` and optionally followed by alt-text.<p>My gemtext parser is maybe 70 lines and it is arguably 95% of what one needs from Markdown.</p>
]]></description><pubDate>Sat, 10 Jan 2026 15:10:50 +0000</pubDate><link>https://news.ycombinator.com/item?id=46566325</link><dc:creator>tel</dc:creator><comments>https://news.ycombinator.com/item?id=46566325</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46566325</guid></item><item><title><![CDATA[New comment by tel in "Shaders: How to draw high fidelity graphics with just x and y coordinates"]]></title><description><![CDATA[
<p>SDFs still scale by geometry complexity, though. It costs instructions to evaluate each SDF component. You could still use something like BvH (or Matt Keeter’s interval arithmetic trick) to speed things up.</p>
]]></description><pubDate>Sun, 23 Nov 2025 20:24:25 +0000</pubDate><link>https://news.ycombinator.com/item?id=46027007</link><dc:creator>tel</dc:creator><comments>https://news.ycombinator.com/item?id=46027007</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46027007</guid></item><item><title><![CDATA[New comment by tel in "Boring is what we wanted"]]></title><description><![CDATA[
<p>Genuine question, how does SPIR-V compare with CUDA? Why is SPIR-V in a trench coat less desirable? What is it about Metal that makes it SPIR-V in a trench coat (assuming that's what you meant)?</p>
]]></description><pubDate>Tue, 28 Oct 2025 21:07:45 +0000</pubDate><link>https://news.ycombinator.com/item?id=45739204</link><dc:creator>tel</dc:creator><comments>https://news.ycombinator.com/item?id=45739204</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45739204</guid></item><item><title><![CDATA[New comment by tel in "I'm too dumb for Zig's new IO interface"]]></title><description><![CDATA[
<p>At the same time, if you want to use Claude to read the source and narrate how it works to you that’s trivial to do as a user.</p>
]]></description><pubDate>Sat, 23 Aug 2025 13:55:03 +0000</pubDate><link>https://news.ycombinator.com/item?id=44996012</link><dc:creator>tel</dc:creator><comments>https://news.ycombinator.com/item?id=44996012</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44996012</guid></item><item><title><![CDATA[New comment by tel in "Functions Are Vectors (2023)"]]></title><description><![CDATA[
<p>If you're familiar with Zorn's Lemma, the construction is just to order bases by inclusion and to consider chains created by noting that there must be an independent dimension and adding it inductively. You can upper bound each of these chains by unioning the members of the chain (which preserves linear independence). By Zorn's Lemma that means there is a maximal linearly independent system and if an element existed outside of that system's span it would contradict that maximality.</p>
]]></description><pubDate>Mon, 07 Jul 2025 14:32:18 +0000</pubDate><link>https://news.ycombinator.com/item?id=44490787</link><dc:creator>tel</dc:creator><comments>https://news.ycombinator.com/item?id=44490787</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44490787</guid></item><item><title><![CDATA[New comment by tel in "A list is a monad"]]></title><description><![CDATA[
<p>Yeah, that's correct. You also often see it as having that for any method `X -> T<Y>` there's a corresponding method `T<X> -> T<Y>`. Or you can have that for any two arrows `X -> T<Y>` and `Y -> T<Z>` there's a composed arrow `X -> T<Z>`. All are equivalent.</p>
]]></description><pubDate>Thu, 03 Jul 2025 18:38:40 +0000</pubDate><link>https://news.ycombinator.com/item?id=44457984</link><dc:creator>tel</dc:creator><comments>https://news.ycombinator.com/item?id=44457984</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44457984</guid></item><item><title><![CDATA[New comment by tel in "A list is a monad"]]></title><description><![CDATA[
<p>Every monad is also an applicative and liftA2 does/is the same thing as liftM2. The only reason they both exist was due to Monad being popularized in Haskell earlier than Applicative and thus not having it as a superclass until the Functor-Applicative-Monad Proposal in Haskell 2014. It was obviously correct, but a major breaking change that also got pork barreled a bit and so took a while to land.</p>
]]></description><pubDate>Wed, 02 Jul 2025 23:43:52 +0000</pubDate><link>https://news.ycombinator.com/item?id=44450039</link><dc:creator>tel</dc:creator><comments>https://news.ycombinator.com/item?id=44450039</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44450039</guid></item><item><title><![CDATA[New comment by tel in "A list is a monad"]]></title><description><![CDATA[
<p>Monad tutorials are on the rise again.<p>Let's start with function composition. We know that for any two types A and B we can consider functions from A to B, written A -> B. We can also <i>compose</i> them, the heart of sequentiality. If f: A -> B and g: B -> C then we might write (f;g) or (g . f) as two different, equivalent syntaxes for doing one thing and then the other, f and then g.<p>I'll posit this is an extremely fundamental idea of "sequence". Sure something like [a, b, c] is also a sequence, but (f;g) really shows us the idea of piping, of one <i>operation</i> following the first. This is because of how composition is only defined for things with compatible input and output types. It's a little implicit promise that we're feeding the output of f into g, not just putting them side-by-side on the shelf to admire.<p>Anyway, we characterize composition in two ways. First, we want to be clear that composition <i>only</i> cares about the order that the pipes are plugged together, not how you assemble them. Specifically, for three functions, f: A->B, g: B->C, h: C->D, (f;g);h = f;(g;h). The parentheses don't matter.<p>Second, we know that for any type A there's the "do nothing" identity function id_A: A->A. This doesn't <i>have</i> to exist, but it does and it's useful. It helps us characterize composition again by saying that f;id = id;f = f. If you're playing along by metaphor to lists, id is the empty list.<p>Together, composition and identity and the rules of associativity (parentheses don't matter) and how we can omit identity really serve to show what the idea of "sequences of pipes" mean. This is a super popular structure (technically, a category) and whenever you see it you can get a large intuition that some kind of sequencing might be happening.<p>Now, let's consider a slightly different sort of function. Given any type types, what about the functions A -> F B for some fixed other type F. F here exists to somehow "modulate" B, annotate it with additional meaning. Having a value of F B is kind of like having a value of type B, but maybe seen through some kind of lens.<p>Presumably, we care about that particular sort of lens and you can go look up dozens of useful choices of F later, but for now we can just focus on how functions A -> F B sort of still look like little machines that we might want to pipe together. Maybe we'd like there to be composition and identity here as well.<p>It should be obvious that we can't use identity or composition from normal function spaces. They don't type-check (id_A: A -> A, not A -> F A) and they don't semantically make sense (we don't offhand have a way to get Bs out of an F B, which would be the obvious way to "pipe" the result onward in composition).<p>But let's say that for <i>some</i> type constructors F, they did make sense. We'd have for any type A a function pure_A: A -> F A as well as a kind of composition such that f: A -> F B and g: B -> F C become f >=> g : A -> F C. These operations might only exist for <i>some</i> kinds of  F, but whenever they do exist we'd again capture this very primal form of sequencing that we had with functions above.<p>We'd again capture the idea of little A -> F B machines which can be plugged into one another as long as their input and output types align and built into larger and larger sequences of piped machines. It's a very pleasant kind of structure, easy to work with.<p>And those F which support these operations (and follow the associativity and identity rules) are exactly the things we call monads. They're type constructors which allow for sequential piping very similar to how we can compose normal functions.</p>
]]></description><pubDate>Wed, 02 Jul 2025 22:26:25 +0000</pubDate><link>https://news.ycombinator.com/item?id=44449498</link><dc:creator>tel</dc:creator><comments>https://news.ycombinator.com/item?id=44449498</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44449498</guid></item></channel></rss>