View on GitHub

Quorten Blog 1

First blog for all Quorten's blog-like writings

Coronavirus mutated and new form is more contagious. Wow, be on the lookout.

20200505/https://www.cnbc.com/2020/05/05/the-coronavirus-mutated-and-appears-to-be-more-contagious-now-new-study-finds.html

Build-a-Bear workshop, I remember years ago they would put identifying barcodes inside the plush toy bears customers would make together with them that could be used to find lost bears. But optical barcodes put inside the stuffed bear, they require all the stuffing to be taken out of the bear to find the barcode and read it, yuck. Surely, they’re using a less invasive solution now where they put an RFID inside the bear, right? Wrong, they are still stuck on old-fashioned barcodes.

20200505/DuckDuckGo build-a-bear workshop rfid
20200505/DuckDuckGo build-a-bear workshop identification
20200505/https://www.businesswire.com/news/home/20060926005731/en/Build-A-Bear-Workshop-Find-A-Bear-ID-Program-Helps-Reunite

Nevertheless, one thing good they’ve been doing is partnering specifically with Hotel companies to get Find-a-Bear rolling. It’s pretty tough when you’re the only game in town providing a service to find lost objects that nobody else really cares about, so this really speaks to trying to make the system more successful in the event of lost plush toys.

This is interesting, Build-a-Bear workshop got a new CEO who started making changes to the store to bring it back to profitability. The company before wasn’t doing anything wrong, it just got to a point that many companies get to when growing and being run by the founder Maxine Clark: it grew past the abilities of the original founder. Unwilling to make changes, the company was slipping away from its previous position of strength.

Read on →

utm_source is Urchin Tracking Module

2020-05-05

Categories: misc  
Tags: misc  

What is this utm_source thing you tend to see on the end of URLs? It is Urchin Tracking Module parameters, what came before Google Analytics.

20200505/https://en.wikipedia.org/wiki/UTM_parameters

This is an interesting review of someone who read a letter written during the 1918 pandemic flu in the United States, just a year ago and didn’t think much of it. Until now, when we are really living in a pandemic flu in the United States once again, reviewing it all becomes much clearer.

20200505/https://slate.com/news-and-politics/2020/05/1918-flu-pandemic-nurse-letter.html

Fast Fourier transforms… ah yes, very important in modern multimedia computing, but very few common people understand it. For many seeking to learn more about it, they find themselves deep in the water of complex math that they haven’t yet been educated in when they try to study the subject. Although I have a fairly good conceptual understanding of it, I have not been ableto phrase it up in simple terms, until now. Here, I present a simplified frequency analysis technique that I’ve been dubbing “dumb Fourier transform” while my ideas were in development.

So, what is the simplest frequency analyzer you can design? One that uses basic math that is easy to explain and understand? The simplest frequency analyzer is this: define a window around each point on your time-series where you average together all samples. This is known as a moving weighted average. Or, in other words, a moving product-sum.

For example:

Read on →

When writing my application-specific integer vector math library, I was looking around at some Golang math libraries. Indeed they have some good things for me to keep in mind about adding to my own library. This is a tough space in terms of apparent duplication of effort… but if you must create a new library, if you can provide a familiar interface to most other libraries, that’s the most you can ask for.

20200504/DuckDuckGo go vector math library
20200504/https://github.com/atedja/go-vector
20200504/DuckDuckGo go linear algebra
20200504/https://github.com/skelterjohn/go.matrix
20200504/https://github.com/skelterjohn/go.matrix/blob/go1/dense.go
20200504/https://github.com/skelterjohn/go.matrix/blob/go1/arithmetic.go
20200504/DuckDuckGo golang integer vector math
20200504/https://github.com/golang/image/blob/master/vector/vector.go

20200504/https://en.wikipedia.org/wiki/Kronecker_product

This provides familiar features and functions from BLAS/LAPACK.

20200504/https://github.com/gonum/gonum

How do you plot a rotated ellipse pixel-perfect? Well, I was almost stymied on this one, until I applied the idea I came up with for quadratic Bezier curves that I thankfully didn’t have to use for that problem. I would instead linearly combine an x-axis and a y-axis parabola using cosine and sine. In order for it to have the same equation result, though, we have to cosine squared and sine squared so that they sum to one. Here is the application for the case of an ellipse.

m = cos(w)
n = sin(w)

a^2 * x^2 + b^2 * y^2 = a^2 * b^2

m^2 * (a^2 * x^2 + b^2 * y^2) + n^2 * (b^2 * x^2 + a^2 * y^2) = a^2 * b^2
(m^2 * a^2 + n^2 * b^2) * x^2 + (m^2 * b^2 + n^2 * a^2) * y^2 = a^2 * b^2

But alas, this does not work! Why? If you look at these equations, all we are doing is computing another ellipse on aligned axes but with different radii. We can’t just add squared components, we need to add linear components too, just like the case of quadratic Bezier curves that effectively allow rotated parabolas.

Read on →

Inflating a Bezier curve

2020-05-04

Categories: media-prog  
Tags: media-prog  

How do you inflate a Bezier cuves? That is, move each point a constant distance from its current position. Circles are easy, just increase or decrease the radius accordingly. But Beziers, come on, a quadratic Bezier is a parabola, if you just increase the scale of a the parabola, you’ll end up with the endpoints being skinnier than the vertex. But, couldn’t you just stretch the envelope wider/narrower and be done with it? Okay, okay… well I guess that’s a pretty good approximation. Just be careful about very sharp quadratic Beziers, ideally I’d recommend subdividing this down into something close to linear then using the mentioned approximation technique.

Now, cubic Beziers are not so easy. I’d say in general with Beziers, with the exception of lines, there is not an exact solution to inflating a Bezier, only approximate ones. For cubic Beziers, if you are just rendering, yeah you can subdivide into approximate quadratic Beziers and then use the mentioned approximate inflation technique.

Read on →

I’ve seen the Wikipedia article link to using Bresenham’s algorithm for computing pixel-perfect Beziers, but it honestly wasn’t all that well explained in my opinion. I tried once before but failed to create my own derivation. But this time, I am successful.

This is key to converting parametric Bezier equations into an implicit form where you can single-step pixels for error minimization: We assert the substitution a*x + b*y = c must hold true in order for it to even be possible to compute single-pixel stepping. So, each parametric equation can be substituted in the x and y quantities, the parameters removed, and the constants recomputed to make this so.

The equation as-is is obviously the equation of a line, which is why we can do it for lines. A short proof shows that this also holds for circles.

x(t) = r*cos(t)
y(t) = r*sin(t)
cos(t)^2 + sin(t)^2 = 1

(r*cos(t))^2 + (r*sin(t))^2 = r^2
x^2 + y^2 = r^2

Read on →

I remember reading about the Franka Emika robotic arm many years ago as being advertised as a much cheaper and easier to use robotic arm than the typical industrial robotic arm. Well, we’ve come a long ways since then. Not only is there the Franka Emika out in the market, but there are now many other competitors too, such as the AGILUS. Alas, the prices are still about the same… $29,351.27 and going up from there.

20200429/https://www.digikey.com/en/articles/use-compact-industrial-robots-to-make-any-shop-more-productive
20200429/https://www.digikey.com/en/product-highlight/k/kuka-robotics/agilus-kr3-r540-robot-kit
20200429/https://www.digikey.com/product-detail/en/kuka-robotics-corporation/KR-3-R540/2122-KR3R540-ND/10239959

Unless you go really cheap and use this Tinkerbit robot designed by Arduino.

20200429/https://www.digikey.com/product-detail/en/arduino/T050000/1050-1135-ND/6829063