4/22/2025 at 10:30:54 AM
Reminds me of one of my most exhilerating old-timer stories. I once took 15 seconds off of the boot time of a smartphone - halving the startup time! - by replacing the MNG (think PNG but multi-frame animation; no surprise it never took off) startup animation with a custom encode-runs-of-pixel-offsets that nicely captured the way the logo swirled. Then encoded this as static data in a dll which the phone had a built-in system for compressing which worked well for this data, so doubly faster. This made me a complete legend for a while, although that phone model ended up never shipping.by willvarfar
4/22/2025 at 3:17:23 PM
Similar but different old-time story about a scroll wheel on a smartphone not working. I had unfortunately been flown to a foreign country to solve a FW issue where scrolling had been made unreliable with a development team I could barely communicate with, and build times measured in fractional days.Of course it turned out that ID had decided they wanted a longer bleep-boop every time you spun the wheel, and the real-time screen position update was dependent on the sound completing. Click-ticks were completely unacceptable, but adding a scroll buffer and detecting it's state while filling an audio buffer with tiny fractional bleeps allowed reasonable latency scrolling. Of course buffer cleanup and beep-slice management was the most annoying. Sadly, the phone shipped.
by kurthr
4/22/2025 at 3:29:05 PM
> and the real-time screen position update was dependent on the sound completing.Over the years I saw tons of software in windows that made mistakes like this. Some stupid animations or sounds that were synced with the actual logic of the application holding everything up.
Years ago there was some app our team installed that just took forever to install around 500MB of data, like 30 minutes. When we monitored it there was nothing going on most of the time. We ended up just batching out all the files, registry keys, and dll registrations to install in less than 5 minutes.
by pixl97
4/22/2025 at 8:09:37 PM
Every day I learn something that makes me wanna start building and repairing Z80 based computers running FORTH and patiently wait for the the modern computer ecosystem to collapse under its own weight.by namaria
4/22/2025 at 10:45:08 AM
MNG was unfortunately designed so badly that Mozilla had to create APNG to replace it. In retrospect, MNG was only capable to do about 10% of what SVG 1.0 can do on top of an incomprensible binary format. (One may argue that SVG is also badly designed for this reason.)by lifthrasiir
4/22/2025 at 2:57:21 PM
yeah I remember no joy working with implementations of it. The whole thing smelt like a standards body mess when really they should have got one good engineer to just make something workable in a weekend. Its possibly worse than the OpenGLES mess.by willvarfar
4/22/2025 at 12:11:02 PM
It's rare that I see such a fractally wrong comment. I guess APNG did come from Mozilla, which I think is the only true subpart of the above?by juped
4/22/2025 at 12:33:03 PM
Okay, I admit the "badly designed" part is my claim, but I'm very confident in that claim and can explain why.The original impetus that led to MNG was animated GIF. While GIF was also designed as extensible, GIF practically only had a handful number of extensions and wasn't that complex. MNG in comparison was essentially a binary version of SVG as I have described, except that it had no vector graphics and can more accurately be described as a binary slideshow format [1]. No one asked for this! The PNG development group forgot its goal and made a much bloated specification. As a result libmng, while working, was a quite big library to be incorporated into Gecko and ultimately rejected in favor of APNG which only required a small patch to libpng. It is amusing that the original PNG specification had chunks corresponding to GIF extensions including animation one; those chunks might have been widespread in the alternate universe!
If the group's goal was indeed a slideshow format, it should have been two separate formats, one for multi-part images and one for animations and object transformations. The former is necessary because one aspect of GIF was that a difference from the previous frame can be encoded, so this "Delta-PNG" format should have been made into the mainline PNG specification as an option. (These additional images could have been used as previews, for example.) And anything else should be a simple textual format that refers to external files. MNG instead had chunks for JPEG images---came with its standalone sister format called JNG---, which is absurd when you think about it---why should there be JNG when JFIF and Exif already exist? The modern SVG happens to be perfectly usable as this second format, and it is fine being textual.
[1] If you can't believe what I've said, see the table of contents of the actual specification: http://www.libpng.org/pub/mng/spec/
by lifthrasiir
4/22/2025 at 1:13:45 PM
Link [1] doesn't seem to mention svg or vector graphics at all.by jmmcd
4/22/2025 at 1:43:41 PM
I think the point was that like SVG, MNG has the ability to transform existing objects in order to compose an image.See this example[1] for illustration.
by magicalhippo
4/22/2025 at 9:59:57 PM
> Link [1] doesn't seem to mention svg or vector graphics at all.They specifically called out that it doesn't support vector graphics, so the latter shouldn't be a surprise.
And if you want to check if it's like SVG but worse, you need to compare that spec with the SVG spec, not look for the word SVG.
by Dylan16807