Hacker News new | past | comments | ask | show | jobs | submit | akavel's comments login

Take a look at the book: "Systemantics. How systems work and especially how they fail" - a classic, has more observations like this.


Ahhhhh, I think I get Spherical Harmonics! I'll try to explain in simpler words, roughly, assuming I got them correctly (which I am not 100% sure about)... I don't guarantee it'll be ELI5 though, so it may or may not work for you...

Let's start from a single guitar string. If you pluck it, it makes a sound. It's because the string vibrates. In sound processing (a.k.a. "signal processing"), it is said we can express any complex vibration of a string (or, a sound wave) as a sum of increasingly compressed ("higher frequency") sin/cos waves (called "higher harmonics"), each of them multiplied by its "contribution" (some frequencies, a.k.a. harmonics, are more present, others less). (This is also called more generally a "Taylor polynomial" IIRC/IIUC, or a "Fourier transform" in the particular case of a wave.) Notably, a .MP3 file format takes this sum, and cuts it off at some point - assuming that if we keep only a bunch of the "most strong" harmonics, and cut away the remaining waves that are less "contributing", the audible difference won't be noticeable. Also, a guitar string has a very tiny amplitude of those vibrations compared to its length, so they are barely visible. If you take a friend and start waving a piece of rope between you, you can get bigger waves, making the amplitudes much more visible.

Now, a guitar string is a 1-dimensional wave. If we go to 2D, we get a membrane of a drum. When you hit a drum to make a sound, it will start vibrating. In the same way, the shape the membrane takes in those vibrations, can be expressed as a sum of "simpler" 2D vibrations - presumably mathy/physicsy people call them "circular harmonics" or something. Again, on a drum the vibrations aren't really visible to naked eye, but if you instead took a floppy rubber circle loosely stretched on a metal ring, and start shaking it, probably you'd get bigger waves. Interestingly, IIUC, a JPEG image is basically "MP3 but in 2D case".

Now, back to Gaussian Splats and Spherical Harmonics - I assume that "spherical harmonics" are the same thing but done to a balloon. If you pump up a ("perfectly spherical") balloon, and then hit it, presumably the vibrations of its surface can also be expressed as a sum of increasingly more wrinkled ("higher harmonics") sphere-like shapes, each one multiplied by its factor/contribution/strength/presence in the actual vibration. Again, on a balloon the deformations from ideal shape are super small; but if you imagine some really floppy balloon-like sphere floating in the air, you could imagine the wrinkles being much deeper.

I assume in case of gaussian splats, apart from storing factors of each of the spherical harmonics contributing to the final "distorted blobby balloon shape", you also probably store a color of this contribution. This way, from some angles the dominating color of the blobby balloon would look more green, from others more yellow, etc.

Interestingly and coincidentally, a similar thing happens in an atom. The various "contributions" to the "blobby balloon" shape are called "electron energy levels" (or "orbitals") IIRC (https://en.wikipedia.org/wiki/Atomic_orbital). And the actual "blobby balloon" shape is probably called an "electron cloud" IIRC. I'm super grateful you pointed me in the direction of trying to understand Spherical Harmonics, because when I saw those shapes of atomic orbitals in the past, they always seemed weird to me, and confusing. Now it seems I understand where they came from, that's super exciting!

Found a decent video series about this on YT, showing vibrations of a plucked string, etc.: https://youtube.com/playlist?list=PLpBx-1imHuxISNflNHo0Qr4mQ...

Eheh, found one more video - building up the shape of the surface of the Earth from a sum/superimposition of increasing number of Spherical Harmonics - https://youtu.be/dDQTHFeJf5M - again roughly what an MP3 or JPEG algorithm does, depending on how much "fidelity" you choose, i.e. how many more precise harmonics you keep :)

Ah, and also - IIUC, in some other domains of math, those "harmonics" can also be said to be "eigenvalues" (https://en.wikipedia.org/wiki/Eigenvalue), and in somewhat more familiar territory, they could be called "orthogonal" meaning that a sum of them can allow to represent any shape in some space - in a similar way as orthogonal vectors of a cartesian coordinate system (i.e. the "1"s on XY axes in 2D, or on XYZ in 3D - or your green/blue/red arrows in Blender) allow to represent any point in that coordinate system.


A kind of a configuration management tool, helping me manually "reconcile" between three concurrent aspects of the state of a machine (and then apply the result):

- what is "out there" on the machine ("queried"),

- vs. what was the state last recorded in (git) history,

- vs. what I want there to be on the machine (described in Nickel language https://nickel-lang.org/, a statically-typed successor to the Nix language).

https://github.com/akavel/mana


What's the difference between the latter two? Apart from that, it sounds like a gitops thing "deploy on push", while trying to meld the mutating pets with declarative cattle somehow.


Nickel vs. Nix? as I wrote, Nickel is a "statically-typed successor" - newer, created (in progress) by people with Nix experience, vs. Nix being dynamically typed.

As to the rest - more or less yes, nicely put :)


No I mean your last two list items, starting with "vs".


"Last recorded" is intended to reflect what was previously observed on the machine.


Sounds very cool!


Or also Rust, Zig, or Nim.


How is the cross-compilation of these 3 languages compared to Golang? I suggested Golang because it’s super easy, just set the correct GOARCH and you’re good to go.


Zig is also super easy; just use the -target flag and you're good to go.

Pretty sure Rust is only slightly less easy. No idea about Nim.


I did something similar in Nim and published it in 2020 (less pretty graphics however). The difference is that I went deeper and actually wrote an assembler for the Dalvik bytecode and .apk files:

https://www.youtube.com/watch?v=wr9X5NCwPlI&list=PLxLdEZg8DR...

The code in the repo has unfortunately bitrotten. I am sometimes thinking to try and resurrect it Some Day™... from time to time I think of some simple app I could write if it was a bit more polished.


Ok, but apart from just noticing it, how can I/we combat the normalization of deviance?

I don't see practical guidance on how to do it in the article? Do I just sit down and throw my arms in the air, and complain "oh, how things are going in a bad way"?


You can’t generally change anything about this kind of culture unless you’re in charge of a large department, but it’s still worth understanding how it plays out because you’re going to be affected.

https://raw.githubusercontent.com/lorin/resilience-engineeri...

This one diagram neatly captures tension between infosec/devops/management/engineering/qa at most organizations. If you know who has the most power, how the executive suite evaluates liabilities, etc, you can guess which gradient has the most momentum, and maybe even start a countdown to disaster when deviance is too normalized for too long.

Anyway, grassroots “we need more tests” stuff can’t actually hurt, but other stakeholders can always make sure it won’t help. Safety/quality is an org responsibility, and it requires cooperation. Only someone who can hire/fire department heads can really create the necessary conditions. One of the biggest red flags is leadership that acts like it’s one group’s responsibility, because that’s such a naive POV that no one senior would really believe it, and most likely someone is about to be scapegoated.


From https://news.ycombinator.com/item?id=21406452:

> One way to mitigate the "drift" is to have zero tolerance for deviation from procedure, but to also have a formal and rapid system for updating procedures, including explicitly temporary measures.


That really doesn’t answer the question. I’ve been in Told You So situations particularly last year where people wanted to take the safeties off. These were literally the same people who voted to put them on in the first place.

Kaboom.


80% of the post mortems I’ve been in are caused by someone insisting on removing safety processes we had all agreed to. All you can do is get that shit in writing beforehand so someone is accountable, and resist the (reasonable) urge to yell I told you so afterwards because that will get you fired. Suggest that there needs to be process involved in changing established processes and then the lazy/unsafe way becomes more work.

Or to put it more in terms of Dekker and Rasmussen, there’s a gradient towards least effort and a gradient towards higher efficiency and that’s almost all there is to work with at a systems level. Safety/quality culture can’t really operate in terms of “look, this is the virtuous way you’re ignoring here!”


Mine haven’t been that high but once you’ve dialed in a process a lot of post mortems do come down to the Law of Unintended Consequences. We changed this and now that breaks. Usually not a straightforward cause and effect like you’re seeing.

I do spend time trying to combine or automate steps by other mechanisms though, so I am always on a team where the growth rate of the burden of the rules is a little flatter than they otherwise would be. So the rate at which people get fed up and start rallying to delete things may be a little lower for me than the mean.


Any easy distillation loses crucial tail frequencies. I read The Design of Everyday Things by Don Norman and Understanding Human Error by Sidney Dekker back to back and it seemed to me that a lot of this was:

1. Have ergonomic procedures

2. Measure usage

3. Treat compliance failure as a problem with the procedure

4. Treat 100% compliance as evidence of lack of reporting

5. Defence in depth

If you want quick heuristics for a blind man, listen for "if they had just", "oh we never", "a competent X would have". All are signs your tools and procedures have problems. You should expect to have many low-level compliance failures but they should be uncorrelated (i.e. same person should not be making all the mistakes, many people should not be making the same mistake).

I am not a professional in this field, however, so take this with a grain of salt as my understanding based off what I read.


"Sprytile" is the open-source Blender addon inspired by Crocotile.

Seems last updated a few years ago from a quick googling; I never used either, so no idea how they compare or how Sprytile works with the newest Blender.


There is "ReSprytile", updated for 4.1 (not tested).


Wikipedia links to a nice visualization on youtube of the moments when the photo was taken, synced with the recording of the actual conversation of the Astronauts as recorded by the Apollo 8 equipment:

https://www.youtube.com/watch?v=dE-vOscpiNc


"calm down, Lovell!"

That's a fun listen.


If you're interested - on the opposite side of the spectrum, I did some assembling Dalvik a while ago: https://www.youtube.com/watch?v=wr9X5NCwPlI&list=PLxLdEZg8DR...


Does it support a practical stylus-oriented workflow? Can I use all its functions in a purely touch+stylus mode, without reaching for the keyboard at all? I'm looking for such a pixel-art tool, not aware of any at the moment. (Also, I'm totally an absolute amateur, so I might be missing some.)


Yes it does support non-keyboard usage through the stylus and touch, I tested on a Wacom tablet and a Surface Pro during development - I recommend downloading the demo first to be sure that it fits your requirements.


Consider applying for YC's Spring batch! Applications are open till Feb 11.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: