When you get into #TypeScript and realize JavaScript classes are so... Weak.
Okay, so I figured this part out: a matrix multiplied by its transposition is a covariance matrix. By which I mean: the higher the value in a given (row, col), the more data in those axes were correlated.
https://en.wikipedia.org/wiki/Covariance_matrix
To simplify, consider a 3x3 matrix `A` and multiply `A` by `transpose(A)`.
What each cell of the result is telling you is how likely it is that when you change the value on the row axis, the value on the column axis changes the same way. So the diagonal will always be large, because data on an axis will always correlate with itself (i.e. when you change the value of `x`, the value of `x` changes in *exactly* the same way, `x*x = x^2`), but cell 0,2, for example, tells you how much changing x causes z to change the same way (if it's the same value as cell 0,0, then the points lie on a diagonal in the xz-plane: changing `x` causes the exact same change in `z`).
I still need to cogitate a bit on why the eigenvector with the largest eigenvalue of this matrix is the axis along which the data has the highest variance in the original coordinate space.
Hey lazymastodon, I have a linear algebra question.
So I've been thinking a bit about principle component analysis as of late. The way to find the vector of most variance in a multidimensional dataset is to put every datapoint in a column matrix, multiply that matrix by its transpose, and find the eigenvectors of the resulting square matrix.
Here's my question: I don't have a good intuition for what "multiply the matrix by its transpose" is doing. That compares every point to every other point by multiplying the same-dimension components together and summing the result across dimensions, but like... Why does that result in an interesting matrix instead of a pile of noise?
Election day in the US.
It's indicative I think of the modern nature of social interaction that I meet more of my geographic neighbors working the polls than I do any other day of the year.
They're all fine and lovely people, but we spend our lives living next to each other and commuting to thousands of different places to spend most of our waking time.
@jleedev Not a moment too soon!
Oop, looks like I've been out of the C++ game for long enough that I forgot some fundamentals. ;)
CoderPad does support `unique_ptr`; you have to `#include <memory>` to pull it in because C++'s std lib is carved up into a bunch of smaller headers.
It's been awhile!
@orcmid Very true. Regarding infringement, the relevant question, I think, is whether creation of the recognizer itself is an infringement. Once the recognizer has been created, the act of using it to synthesize art *smells* a lot like "creating novel work in the style of the artist," and (unlike Google v. Oracle where we had no precedent on the copyrightability of APIs) precedent for copyright is that a style cannot be copyrighted.
If creation of the recognizer is infringement, that opens a whole can of worms... ContentID (which protects artists) is also a recognizer, and I don't think artists in general want it to be illegal overnight to create a ContentID thumbprinting algorithm.
@rob Back in the day I attempted to source a simple USB pushbutton. It ended up being such a bear that I soldered a button to an Arduino and fed the push signal back to the computer over serial instead.
... which almost turned into a mistake. Did the math wrong on my voltages and put not nearly enough resistance in the circuit, resulting in a *very* warm pushbutton.
@jleedev The only thing I will not miss about having lost my job working on self-driving vehicles is it will probably be a *long* time before I need trouble myself with the gory details of school zones again.
@jleedev I *must* know which one. ;)
Hypothetically speaking, I can see no obvious reason copyright law cannot be extended to exclude from "fair use" the injection of images into a machine learning engine without consent of the copyright owner of the image.
This will need to be done carefully, because if the goal is to throw a wrench into Stable Diffusion and its siblings, that wrench can easily ping-pong into e.g. banning Google from creating ContentID fingerprints to protect artists from copyright abuse. Some specific dimensions to pin down:
- what is a machine learning engine?
- what does it mean to train one on an artist's work?
- what does 'consent' look like? How explicit must it be?
Implementation will be messy but it's always messy; this is copyright, there's no other kind of implementation of copyright. "...other nations have thought that these monopolies produce more embarrassment than advantage to society" (Thomas Jefferson). But it may be a good idea if we have no alternative that protects the livelihoods of artists in a world where everyone is now a mediocre visual artist.
... And, of course, US copyright law has no bearing on China's law. Nor Russia. Nor dozens of other countries. So we would have to be prepared for our entertainment industries paying top-dollar for human labor competing on the international stage with a sea of mediocre artists that cost electrons and little else.
When you want to update a LaTeX document with some information provided on the command line.
https://blog.fixermark.com/posts/2022/latex-content-from-command-line/
General #GraphQL thought:
I fear the possibility GraphQL is a trap. I think, in principle, it's a good idea. In practice, I'm concerned that pretending one can offer a pretty flat access to the underlying data in a backend store ignores some irreducible complexity in the question of data storage and retrieval.
How easy is it, in general, to build a GraphQL query that is expensive to answer because it skips all the indexes the backing database supports? I don't know; I've only worked with one or two GraphQL APIs. But one advantage to REST and RPC is that since you have to be intentional about creating new procedures or new resources, you have to be intentional about creating indexes.
Can modern DB engines compute those indexes based on usage patterns or is it still a very manual process?
Playing with AprilTags: building a recognizer in Python
https://blog.fixermark.com/posts/2022/april-tags-python-recognizer/
Creating a custom Shuffleboard plugin 2: making it play sounds. #frc
https://blog.fixermark.com/posts/2022/create-custom-shuffleboard-plugin-2/
Creating a custom plugin for the Shuffleboard FIRST Robotics dashboard system.
https://blog.fixermark.com/posts/2022/create-custom-shuffleboard-plugin/
Career software engineer living something approximating the dream he had as a kid.