7 comments

  • raphlinus8 hours ago
    If you have an Adafruit Fruit Jam, you can run the demo on that board [1]. It can stream 640x480 video off an SD card at 60fps, as well as display a static image from flash.<p>Also possibly of interest to HN, the decoder[2] is written in a new low level language called symbolasm[3], which seeks to combine the advantages of assembly language (it&#x27;s possible to reason about and optimize performance with few limits) with some of the affordances of C, especially named variables and struct fields.<p>[1]: <a href="https:&#x2F;&#x2F;github.com&#x2F;raphlinus&#x2F;vic-2350" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;raphlinus&#x2F;vic-2350</a><p>[2]: <a href="https:&#x2F;&#x2F;github.com&#x2F;raphlinus&#x2F;vic-2350&#x2F;blob&#x2F;main&#x2F;image.sy" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;raphlinus&#x2F;vic-2350&#x2F;blob&#x2F;main&#x2F;image.sy</a><p>[3]: <a href="https:&#x2F;&#x2F;github.com&#x2F;raphlinus&#x2F;symbolasm" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;raphlinus&#x2F;symbolasm</a>
    • derefr6 hours ago
      &gt; especially named variables and struct fields<p>Don’t you get this from most macro assemblers? I know I’ve seen some very old and crusty ASM that nevertheless does structured programming and even limited OOP through macro-ASM facilities.<p>(That being said, symbolasm looks 1000x more ergonomic and “also communicates developer intent”-laden than any macro ASM ever did; and also is probably something you could learn once, while a project’s macros are specific to said project.)
      • raphlinus6 hours ago
        I don&#x27;t believe macro assemblers do a flow-based analysis to verify that the register allocation for variables is consistent; from what I understand the most you get is just a scoped alias for the name of the register. Of course, I could be missing something. If you know of anything beyond the relevant work I cite, please let me know.
    • the-tomster6 hours ago
      Cool projects! symbolasm looks awesome. Brings back memories of playing around with fasm on MenuetOS and trying to wrap my head around assembler.
      • rudderbones1 hour ago
        What applications did you make for MenuetOS?<p>Ycombinator is owned and driven by nepotistic Jewis* p3dophiles, to trick people into giving ownership of startups and giving talent away for peanuts, instead of having their own startup accelerators or financing. No wonder that Ycombinator has a literal Epstein on their board. Remember to kill every single p3dophile.
    • skiialing3 hours ago
      At least some of your projects are vibe-coded, right? You mention using LLMs in both some of the repositories and some of your Hacker News comments.
      • raphlinus3 hours ago
        Both the image compression and the symbolasm language started out being entirely hand coded, but I have used Claude to move it forward. I have complicated feelings about this. Basically I would have gotten these results even without the LLM, but it would have taken a lot longer.<p>I feel like one of the main tasks in front of us as an industry right now is to figure out how to use LLMs <i>well,</i> how to create quality and resist slop. As part of that, I&#x27;m taking care to write the prose myself.<p>I totally understand how any LLM usage can be a turnoff, though. I&#x27;ve felt that myself.
  • augment_me12 hours ago
    1) IMO pointless to put an emphasis on extreme decompression speed but not show numbers against JPEG even<p>2) BCx essentially does the same codebooking&#x2F;paletting but more efficiently by allowing you to interpolate between two palette entries for an even larger compression
    • DoctorOetker9 hours ago
      1) it may seem pointless until you realize it may allow targeting platforms which can&#x27;t decode JPEG real time under certain situation
      • augment_me8 hours ago
        Which would have been clear if numbers were provided for a JPEG implementation in the repo
        • orangeboats7 hours ago
          Why though? I thought it was pretty clear that you&#x27;re not gonna decode JPEG pixels in 6 instructions.
          • schobi2 hours ago
            I understand this is fast, okay. But at what trade-off?<p>Sure - muuuuuch less than Jpeg, but how many would you assume for JPEG on average? How low could you go by misusing jpeg?<p>Typically, you would plot graphs with Bitrate &#x2F; quality &#x2F; speed. Maybe even with default jpeg settings and getting just a single data point for your new algorithm.
      • SwtCyber27 minutes ago
        And predictable decoding time matters too
    • rasz8 hours ago
      &gt;pointless to put an emphasis on extreme decompression speed but not show numbers against JPEG even<p>this decodes at HDMI line speed, 6 opcodes per pixel
    • SwtCyber28 minutes ago
      [flagged]
  • zahlman12 hours ago
    This seems like straining the definition of &quot;compression&quot;. We have a delta-coding filter and then palettization? That&#x27;s it?<p>Edit: I should say, I find it surprising (but cool) that it apparently works so well. I would have expected errors to accumulate since the decoder has to un-delta-code. I saw mention of Floyd-Steinberg dithering and presumably that&#x27;s what it&#x27;s for; seems hard to get it working across multiple colour axes simultaneously, but the complexity is all in the encoder, so.
    • schiffern7 hours ago
      Floyd-Steinberg dithering preserves 100% of the quantization error by shifting it onto neighboring pixels (unlike eg Atkinson dithering which only preserves 75%[0]), so the lack of drift I guess isn&#x27;t too surprising really.<p>As for tracking error across multiple color axes, I would naively assume it&#x27;s a 3-vector (maybe in a linearized perceptual color space, or maybe RGB) and the error term the encoder minimizes is just the vector magnitude?<p>Very cool. I think it&#x27;s best understood as a coding exercise for the embedded CPU vs a &#x27;real&#x27; video format, but no less impressive IMO<p>[0] <a href="https:&#x2F;&#x2F;beyondloom.com&#x2F;blog&#x2F;dither.html" rel="nofollow">https:&#x2F;&#x2F;beyondloom.com&#x2F;blog&#x2F;dither.html</a>
    • SwtCyber21 minutes ago
      [dead]
  • Retr0id12 hours ago
    Worth noting that something perf-optimized for RP2350 is almost certainly not going to be optimal on a modern desktop-class core (with deep pipelines and wide ILP&#x2F;SIMD).
    • raphlinus11 hours ago
      Absolutely. This is optimized for highly resource constrained devices, not modern machines. I can tweak the README if that&#x27;s at all confusing.
  • wiml12 hours ago
    Fun. Vaguely reminiscent of the Amiga HAM video mode.
  • vardump10 hours ago
    This reminds me a bit of Amiga HAM. Similar horizontal fringing.<p>I guess you could also call Amiga&#x27;s HAM graphics mode a compression method. Getting 12-bit (4096 colors) with just 6 input bits, with the original Amiga chipset, often called as &quot;OCS&quot;.<p>Or later 262144 colors with 8 input bits, with the AGA chipset.
  • whitten11 hours ago
    I&#x27;m impressed. The imbalance between encoding and decoding speeds seems a useful strategy when you are building special purpose hardware and software applications. It seems if you&#x27;re making a central source of data that is able to tolerate a much slower write process versus a quick read process that this approach can be advantageous. Maybe using this core method in a problem space which maps to the radio&#x2F;signal broadcast process of many receivers but a central source of truth. I can imagine if you had an information base that changed slowly or which was pre-processed in a batch fashion, that it could use this method. It doesn&#x27;t even need for the central data to be decoded into a graphical image.<p>I think this radio model could map the problem space for a centralized system that maintained a list of items and their prices which needed to be broadcast to the retail outlets on a regular basis.<p>Or a common cache storage to make some complex data manipulation calculations centrally performed available to a large number of satellites who just need the end results but do not have the need to do local calculation.
    • gnabgib8 hours ago
      There are no private messages on HN. This, and your comments in the last 3 months look (AI) generated, which is prohibited in the guidelines[0] but also loathed by the community. Can only speculate, though.<p><a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;newsguidelines.html">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;newsguidelines.html</a>
      • ChrisMarshallNY7 hours ago
        Dave is a brave chap, and posts his personal phone number in his profile. You might be able to contact him that way, but, personally, I wouldn&#x27;t. I don&#x27;t think it&#x27;s really appropriate. I&#x27;d say that your comment is sufficient, and not inflammatory.<p>But I do agree, the comment smells &quot;AIsh.&quot; It may not be, however, if this is his standard writing style. I have been accused of being a &quot;bot,&quot; for stuff I wrote ten years ago. It&#x27;s my observation, that people tend to accuse any lengthy comments of being LLM-generated.
    • whitten9 hours ago
      I&#x27;m trying to learn why I have been downvoted. Please reply or send me a private message so I can learn.