awarenessofthemeta: someone got the robots.txt joke

on blog at

A few years back I put some lame jokes in my robots.txt and said a hello to any human reading it. Yesterday someone(?) took a string from that greeting and set it as their bot's user-agent while mirroring a large part of the site.

...
User-agent: Zombies
Disallow: /brains

User-agent: Killer AI
Disallow: /~superkuh/

User-agent: The person who is reacting to the lame jokes that is reading this robots.txt right now. Yes, you.
Allow: /hello/awarenessofthemeta/
...
83.159.xx.xx "GET /whysospurious.png http://superkuh.com/radio-filter-simulations.html" "awarenessofthemeta"
83.159.xx.xx "GET /fig-3-from-bandstop-paper-by-guyette.png http://superkuh.com/radio-filter-simulations.html" "awarenessofthemeta"
83.159.xx.xx "GET /library/Space/Radio%20Astronomy/Time-scale-of-solar-effects-at-1AU.png http://superkuh.com/libra
ry/Space/Radio%20Astronomy/" "awarenessofthemeta"

Well... hello person. I really enjoyed the out of band mechanism you've used to talk back. Either it's that or some very weird bot behavior pulling substrings from robots.txt as a random user-agent.

[comment on this post] Append "/@say/your message here" to the URL in the location bar and hit enter.

[webmention/pingback] Did you respond to this post? What's the URL?


[photo] purple sunflower seeds

on blog at

I've been growing "Titan" sunflower seeds for about 6 years now. They result in large white/grey seeds. Last year some of my Titan plant heads were cross pollinated and came up with black seeds. When I planted those black seeds this spring these purple seeds resulted. The purple was pretty intense. It even stained my fingers.

I was harvesting the seed heads early because the squirrels (and birds) had taken more than half of them. I could see the local squirrel was very upset by my audacity to take any of the seeds for myself. It stared at me the entire time alarm calling and flicking it's tail.

[comment on this post] Append "/@say/your message here" to the URL in the location bar and hit enter.

[webmention/pingback] Did you respond to this post? What's the URL?


How the show Stargate Universe should have ended.

on blog at

Stargate SG-1 is the best scifi TV show that has existed so far. Some of it's spin-offs were pretty good. Others, like Stargate Universe, were just okay. But Stargate Universe did have a very interesting plot device. In it they were in a spaceship traveling across galaxies setting down a chain of stargates (wormholes). The ship itself seemed to be trying to read a message in the cosmic microwave background radiation. Neat, right? But the tone of the show was weird and not stargate'y so it was canceled after the first season with no explaination of any of the plots.

I always thought the best resolution of the Stargate Universe plot was that the Destiny spaceship was traveling across the universe in order to get enough baseline distance and so interferometric resolution to see the data encoded in the fine structure of cosmic microwave background. When the ship calculates it is far enough away that the detail encoding the message can be resolved they'll fire up the chain of gates connecting Destiny back to the first end of the telescope, manufactured by the Ancients, creating an interferometer the size of an entire galaxy cluster.

It gives a reason for the ships behavior that's both scientifically plausible and fits in perfectly with the canon plot.

[comment on this post] Append "/@say/your message here" to the URL in the location bar and hit enter.

[webmention/pingback] Did you respond to this post? What's the URL?


Flash may disable itself but I'll always be able to view Flash swf files

on blog at

The Flash plugin is being forcefull killed off by Adobe now, years after Apple first banned the plugin from safari and started the trend. Adobe's newly distributed plugin will come with a time-limit baked in and eventually stop working. This is another reason I'm glad I don't upgrade my software to the same versions across all physical machines.

I have a 2006 era computer with 2010 era software. A 2010 era computer with 2013 era software. A 2013 era computer with 2016 era software. All but the last is well outside of official software support. But I'll always be able to easily play Flash media if I want to because I can just load it up on my 2010 era machine. And on that machine the Flash plugin creates /proc/ temp files on disk so you can directly interact with the swf files. The old machine's HTTPS cypher set and TLS protocol might not be acceptable to a modern fancy website but I can always use a $modern era machine to grab the files w/curl-or-wget if I'm not loading from disk.

This also applies to things like GNU Radio. I can still run any GR 3.6, 3.7, or 3.8 flowgraph I find online. No more loading up a flowgraph to see a bunch of missing blocks. Instead of having to try to port things each generation I just leave them in-place, working, and then wait a couple years longer than most people to adopt the newest version of things on an entirely new machine. Like the xkcd comic says, it pays to live in the past.

Obviously this means security holes that aren't patched. I can't backport everything or provide static compiled deps for all of userspace. But for the most security problematic programs, like browsers, the kernel, x.org, it's usually possible. But these days security is more about attacks through your browser's VM or router's interface than your actual OS's programs.

[comment on this post] Append "/@say/your message here" to the URL in the location bar and hit enter.

[webmention/pingback] Did you respond to this post? What's the URL?


TLS everywhere: how the 'net is lost through good intentions.

on blog at

It won't be too long before browsers (and search engines) stop accepting HTTP at all and getting permission from a centralized authority for your TLS cert will be required to host a visitable website. Even the most popular federated protocol, smtp, is being centralized and soon the big email walled gardens will require TLS for all transport if only to prevent surveillance. But the very means used to avoid government (and other) surveillance will give those entities complete control of our most popular communication systems.

TLS means that every single server is only allowed to exist at the end of a very long leash back to a centralized provider of certs. Even if that provider is currently benevolent, dot org shows what can and will happen with time and money. No one is going to be accepting self signed and with no other option, suddenly things are centrally controlled. Non-encrypted mail and web and everything have their place.

Sorry to harp on this subject again but I keep seeing people saying that it's time to *enforce* TLS for everything these days. Even if there's no malicious behavior enforcing TLS brings in a single point of failure you can't control. Higher-up cert authorities mess up regularly.

[comment on this post] Append "/@say/your message here" to the URL in the location bar and hit enter.

[webmention/pingback] Did you respond to this post? What's the URL?


Gardening, crystal growth, dams, transmitting on HF again.

on blog at

Trying to go forward through time as fast as possible.

It's been a while. For those of you coming from the far future (hopefully is hasn't gotten worse) the gap in posts was because I was trying to sleep my way through the beginning of the pandemic. But life goes on and there are only so many hard scifi books to read. I've just been trying to go forward without making memories so it'll seem to pass by quickly. But since I'm still only shopping once per month (since Feb) that makes doing technical projects on a whim harder but not impossible.

1. Squirrels are the enemy.

Lately I'm working on a few things. First and foremost is what everyone else is doing: gardening. Gardening sure is fun. Except for the squirrels. I can plant a seedling, cover it with chicken wire for a month, remove the chicken wire, and the next day the now established plant gets dug up. The squirrels have been trained by the neighbor feeding them for 20 years. They think all bare dirt is just some other squirrel's hiding spot. So, after losing about 40% of my garden I caved and bought a trap. So far I've caught 3 of the little tree rats. I've been relocated them 10mi east out of town. It seems to be helping. You can't get rid of squirrels but I can at least get rid of these trained ninja plant assassin squirrels and trade in for some new ones that don't suck.

2. Excess crystalization driving pressure is the enemy.

My second project have been making little PID temp controlled water baths and stirrer to grow large single crystal KDP (Potassium dihydrogen phosphate) and TGS (Triglycine Sulfate crystals). My first efforts with very slow evaporation being the only driving force worked well for a while, but then crystals started forming on the bottom of the containers. So I started pouring the solution into new jars every day. Then eventually the saturation would get too high and dendritic forms would appear and cloudy main crystals. So I started over but this time I add a few ml of clean water every night that I change the jar. So far this is working well to make large clear single crystals. Once I have a few a cm or so wide perpendicular to their optical axis it'll be time to try using them as seeds to grow large boules.

The above crystal was the seed I started with. The crystal now is almost too large to fit in the quart mason jar. I'm mostly making the KDP for practice without having to waste my previous synthesized TGS but in the end it might be fun to try two-photon harmonic upconversion with them. The purpose for the TGS crystals is pyroeletric acceleration. Although making a simple bolometer might be fun too.

3. Flow is the enemy.

At one point I started going out and making random dams across local rivers. That was a nice way to get away from everyone else but still exercise.

4. Routing cables and coaxial cable cost is the enemy.

Just this evening I cleaned up and reconnected all my HF (1-30 MHz) radio transceiver but removed the manual tuner and the 1500w amp from the chain. I threw together the most janky and simple of all possible dipoles using an F-connector with no balun, and the two wires connected to it were each dumpster dive finds made of multiple sections soldered together. In the end each half of the dipole was about 20ft (6.3m). Not a lot to work with. But it's about all that I could fit up into my maple tree using the slingshot/fishing line method without getting close to powerlines or making it obvious. The other half I ran along my house and off to the disconnected garage. Total parts costs was about $5 (no including the $10 zebco fishing reel and $10 slingshot).

My Kenwood TS-450S with it's basic auto-tuner seemed to be able to match it over a pretty good range from 3.8 MHz up to 28 MHz. I'm sure it wasn't actually radiating that well but I did manage to make contact on 80m with a guy down in florida with voice. A good afternoon project.

But that was just checking everything still worked. My next project will be a 3m diameter 4" wide aluminum flashing magnetic loop antenna attached to the inside of the back of the garage. I plan to just let the flashing overlap 9 inches or so with transparency sheet between to the ~200 pF needed for ~3.975 MHZ I want. That should be just under the near vertical incidence scattering edge and cover a nice 100-600 mile donut around me to try mesh stuff. But that's a story for another day.

5. We have always been at war with headphone cables.

As per usual, my headphones started going flaky on one side. Too much shock or torque or bending stress. After 3 previous repairs, each lasting a few years but shortening the cord, I decided to bite the bullet and replace the cord entirely. I cut a long male to male extension in half for the purpose and this final cord is about 5m long. I can now scoot around in my chair with impunity. No cord pulling. It sounds the same.

[comment on this post] Append "/@say/your message here" to the URL in the location bar and hit enter.

[webmention/pingback] Did you respond to this post? What's the URL?


Well fuck and the degrees of belief.

on blog at

[attention conservation notice: this is just me venting anxieties about the pandemic]

Seriously. Fuck.

There are many types of believing. You can "believe" in religion but for most people it doesn't really effect their actual behavior. And even if it does at some level it's not like military generals out there are planning for what to do if god intervenes. It's a belief but it isn't held in the same context as other beliefs.

Back in 2005 I learned about the vulnerability of the health care system to viral pandemics. I believed in them and it scared the shit out of me. I was embarrassed later for doing typical "prepper" things like buying a 3 month food supply and rotating it, buying boxes of n95 masks, etc. I believed, but I didn't really anticipate anything concretely out of h5n1 influenza despite my obsession that well crossed the border into mental pathology.

At first I talked to everyone around me about it. There was serious danger. Not saying anything would be like not saying, "There's a bear behind you." But this was obviously not received well and for good reason. I slowly stopped with this negative feedback. I just did things quietly. Then years passed and nothing happened, and nothing happend, and something happened (2009 swine flu) but it was all okay. I eventually, thankfully, became convinced by others and the lack of realization that it wasn't a realistic scenario. That was good. I couldn't really function believing otherwise. I stopped rotating food and gradually forgot about my anxieties.

Now this. The nightmare that I had every night and day for 5 years but painstakingly moved past is real, or at least part of it is. The rest is excruciatingly uncertain. It's surreal and terrifying. I hadn't had an anxiety attack in almost a decade till yesterday at the grocers seeing my fears in everyone else for the first time.

And I don't even get to fucking say "I told you so." because I stopped believing. I never really believed.

[comment on this post] Append "/@say/your message here" to the URL in the location bar and hit enter.

[webmention/pingback] Did you respond to this post? What's the URL?


Businesses only accepting interactions from corporate people is the death of volition for human persons

on blog at

You hear about on the news every month now. $x store is opening a location that allows shoppers to buy without human interaction, without a checkout. Restaurants are slowly but steadily being replaced by food trucks which won't take your order unless you pay with a credit card first, no cash allowed. Browsers and search engines both are starting to refuse to display websites that don't exist on the whim of some leased SSL cert saying you're part of the established corporate order. Soon no businesses will accept interacting directly with human persons. All transactions, all interaction, will require a third party corporation (one whom is almost certainly extracting rent) to do the transaction for you.

It's so fast, so easy, so convenient. All the complexity and awkwardness is hidden from the human persons and their life is easier. But a chain around your neck is still a chain no matter how long you make it. Human person motives and corporate person motives rarely align and in the future when there's a disagreement it's clear who's going to make the decisions about what is allowed and what is not: the corporate people everyone loves and depends on.

[comment on this post] Append "/@say/your message here" to the URL in the location bar and hit enter.

[webmention/pingback] Did you respond to this post? What's the URL?


The pandemic stirs old memories: an over-the-counter tamiflu synthesis from when influenza was the big worry

on blog at

The potential for reinfection after being sick with SARS-CoV-2019 has me a little unsettled. I hope it's just a idiosyncratic case.

I had a bit of a freak-out back around 2005 when I learned about influenza pandemics and H5N1. I did all the things from buying basic supplies (and rotating food for years) to working with a friend online (over AIM w/trillian) to come up with an over-the-counter route to synthesize oseltamivir (tamiflu).

For example the starting material, furan, can be sourced from corn cobs (furfural from corncobs, 2-furancarboxylic acid from furfural, furan from 2-furancarboxylic acid). Or, far more feasibly, just extracted from it's use as a solvent from a commercial product. The current pandemic reminds me of that fun but wasted effort. It's presented below so someone might get a kick out of it.

OTC Oseltamiver Synthesis
By Chris The Great, 2006

This document has not yet been tested to ensure that it works as presented.

Step One: Synthesis of A
Methyl acrylate (2.78mol) is added to furan (3.95mol) and cooled to -10*C.  AlCl3 in DCM (1.15mol in 1-5M conc.) is added slowly with stirring, keeping the temperature below -10*C.  The mixture is then cooled with a cold water bath and stirred for 2 hours.  The mixture is added to 1000ml of saturated sodium bicarbonate solution, and the precipitate is filtered out.  The aqeous layer is extracted twice with 250ml DCM, and the organic layers are combined and dried over anhydrous sodium sulfate.  The solvent is distilled away and the product purified by silica gel column chromatography to give the desired product in 38.6% yield (1.07mol).

Step Two: Synthesis of B
A (1.07mol) is added to NaOH (1.65mol, 3 to 15M concentration) in water with stirring, maintaining a temperature of 5*C.  The mixture is allowed to warm up over a period of 30 minutes with stirring, and stirred at room temperature for 2 hours.  HCl (310ml of 31% sol.) is added to adjust the pH to below 1, and then the mixture is extracted 4 times with 200ml of DCM.  The combined organic layers are dried with Na2SO4, and solvent evaporated and the product recrystallized from ethyl acetate to give the desired product in 87.5% yield (0.936mol).

Step Three: Synthesis of C
B (0.936mol) is dissolved into 850ml water, and NaHCO3 (0.936mol) is added slowly, with stirring to control the foaming.  After foaming ceases, bromine (0.936mol) is added dropwise with stirring, and then the mixture is stirred at room temperature for 2 hours.  The mixture is extracted with 400ml ethyl acetate, washed with 100ml thiosulfate solution (to remove unreacted bromine) and dried with Na2SO4.  The solvent is distilled away and the product purfied by recrystallizing from ethyl acetate, giving the desired product in 89.6% yeild (0.84mol)

Step Four: Synthesis of D
Potassium hydroxide (2.5mol) is dissolved into dimethylacetamide (1000ml) and methanol (150ml), and C (0.84mol) is added slowly as the mixture is heated to a gentle reflux.  It is stirred under reflux for 3 hours, then ethyl iodide (1.6mol) is added and the mixture stirred under reflux for another 3 hours.  To the mixture is added HCl (300ml 31%) and the solution extracted with ethyl acetate (250ml) eight times.  The organic layer is washed with saturated brine and dried with Na2SO4.  The solvent is distilled away and the product purified by recrystallization to give the desired product in 95.9% yield (0.804mol).

Step Five: Synthesis of E
A solution of sodium methoxide (0.9mol) in tetrahydrofuran (500ml) is cooled to -30*C, and D (0.804mol) in tetrahydrofuran (500ml) is added dropwise with stirring.  After the addition, the mixture is stirred at 30*C for 1hr.  To the mixture is added acetic anhydride (1.05mol) and the mixture is stirred at room temperature for 3hr.  To the reaction mixture is added saturated ammonium chloride (1000ml), and the mixture is extracted with ethyl acetate (800ml).  The organic layer is dried (Na2SO4) and the solvent distilled away.  The product is recrystallized (ethyl acetate) to give the desired product in 80.0% yeild (0.644mol).

Step Six: Synthesis of F
E (0.644mol) is dissolved into 3-pentanol (600ml) at reflux, and AlCl3 (0.7mol) is slowly added with stirring.  The mixture is stirred at reflux for 1 hour, and then allowed to cool to room temperature.  A saturated solution of NaHCO3 is added (1000ml), and the mixture is extracted with 750ml DCM, washed with saturated brine (750ml) and dried with Na2SO4.  The solvent is distilled away and the product recrystallized (DCM) to give the desired product in 81.2% yield (0.522mol)

Step Seven: Synthesis of G
F (0.522mol) is dissolved in DCM (750ml) and triethylamine (0.78mol) is added.  The mixture is stirred at room temperature for 5 min. and then cooled to 0*C.  To the mixture is added tosyl chloride (0.78mol) and the mixture is stirred at room temperature for 1hr.  The reaction mixture is washed with saturated sodium bicarbonate solution (1500ml), saturated brine (750ml) and then dried with sodium sulfate.  The solvent is distilled off, and the crude product recrystallized from DCM to give G in 97.3% yeild (0.508mol).

Step Eight: Synthesis H
G (0.508mol) is dissolved in ethanol (1000ml) at reflux, and potassium carbonate (0.25mol) is added with stirring.  The mixture is stirred at gentle reflux for 1.5 hours, and then cooled to room temperature.  Saturated ammonium chloride solution (1000ml) is added.  The mixture is extracted with DCM (750ml), washed with saturated brine (1000ml) and dried (Na2SO4).  The solvent is distilled away and the crude product recrystallized from DCM to give H in 98.5% yeild (0.5mol).

Step Nine: Synthesis of I
H (0.5mol), sodium azide (0.6mol) and ammonium chloride (0.6mol) are dissolved into water (70ml) and ethanol (250ml), and refluxed for 8 hours.  Aqeous NaHCO3 (105ml of 8% solution) is added and the ethanol distilled in vacuum.  The aqeous residue is extracted with ethyl acetate (250ml), the extract washed with water (125ml).  The wash is back extracted with 125ml of ethyl acetate and the combined organic extracts washed with brine (125ml), dried over Na2SO4, filtered and concentrated in vacuum to give I as a dark brown oil in 102% yield (0.512mol)

Step Ten: Synthesis of J
Step One:
J (0.512mol) and ammonium chloride (1.2mol) are dissolved into ethanol (1500ml), and zinc (0.7mol) is added and the mixture refluxed for 30 minutes.  The solvent is distilled off to give Ib, which is used directly in the next step.
Step Two:
Tosysl Chloride (1.13mol) is added portionwise at room temperature to a stirred mixture of Ib (from the step one), K2CO3 (2.5mol) in acetonitrile (1000ml) and stirred for 6hr.  Toluene (2500ml) is added, the solid is filtered off and the solvent evaporated to give J in approx 80-90% yeild.  It is used directly in the next step without purification.

Step Eleven: Synthesis of K
J (0.494mol), sodium azide (1.2mol) and ammonium chloride (1.2mol) in dimethylacetamide (400ml) is heated to 80-85*C for 5 hours.  NaHCO3 (50mmol) in water (250ml) is added, and the mixture extracted with hexanes (6x250ml).  The combined hexane extracts are concentrated to 1200ml, and 250ml DCM is added, followed by 1100ml NaHCO3 8% solution and acetic anhydride (0.6mol).  The mixture is stirred at room temperature for an hour, and then the aqeous layer is removed.  The organic phases are concentrated in vacuum to 430g total weight), dissolved in ethyl acetate (50ml).  The mixture is cooled and K crystallizes out and is collected by filtering.  The crystals are washed with cold 15% ethyl acetate in hexane (250ml) and dried in a vacuum at room temperature, to give K in 55% yield (0.272mol). [may be slighly higher, ie 60%]

Step Twelve: Synthesis of L (oseltamivir freebase)
K (0.272mol) is dissolved into ethanol (600ml) along with ammonium chloride (0.64mol).  Zinc (0.36mol) is added and the mixture refluxed for 30 minutes.  The precipitate is filtered out, giving L in 98% yeild (0.266mol).  [90-95% more likely]

Step Thirteen: Synthesis of Oseltamivir Phosphate
L (0.266mol) is dissolved in acetone (1000ml) and treated with phosphoric acid (85%, 0.266mol) in absolute ethanol (300ml).  The mixture is cooled, and after 12 hours the precipitate is filtered out to give oseltamivir phosphate in 75% yield (0.2mol, 82g). A second crop of presumably lower purity crystals can be obtained by concentrated the solution and collecting a second crop of product.

[comment on this post] Append "/@say/your message here" to the URL in the location bar and hit enter.

[webmention/pingback] Did you respond to this post? What's the URL?


Actual nano-amp perpetual electrical currents in resistive permanent magnets at some scales in some arrangements because of weird quantum stuff.

on blog at

Today in my RSS feeds an APS paper summary came up called, "Heat Flows in a Circle Without Gradients. It was about this ring of spaced ring oscillators that supported both mechanical excitation modes and phonon modes but where phonon excitations flowed around forever. It's interesting but more interesting was the offhand comment in support of infinite currents saying,

Undriven flows do occur in nature, as evidenced by persistent electric currents in permanent magnets and superconductors.

At first I thought they might be talking analogy, like spins as currents or electron "orbits", or something, but no, the wikipedia article, https://en.wikipedia.org/wiki/Persistent_current#In_resistive_conductors talks about real nanoamp currents physically existing. And then that leads to any even weirder rabbit hole.

I feel like that I can normally ignore quantum physics when doing radio and electromagnetics work. I don't do a lot of polarization stuff and quantum effects normally average out in imprecise many-sample systems. But apparently at specific mesoscopic length scales the quantum stuff I don't understand actually starts coupling to electromagnetic excitation modes. But the gist is that there's a neutral AC oscillation normally and applying an external magnetic bias to these magnetic material rings creates an internal asymmetry causing an perpetual tiny electrical current to flow.

This type of persistent current is a mesoscopic low temperature effect: the magnitude of the current becomes appreciable when the size of the metallic system is reduced to the scale of the electron quantum phase coherence length and the thermal length. Persistent currents decrease with increasing temperature and will vanish exponentially above a temperature known as the Thouless temperature. This temperature scales as the inverse of the circuit diameter squared.

And it does so in regions where there should be both zero electric and magnetic field the https://en.wikipedia.org/wiki/Aharonov-Bohm_effect. It's apparently strong philosophical support for the mathematical formalisms of the electric and magnetic potentials (as opposed to fields) as *real* physical things and beyond that delocalized physical things.

The Aharonov-Bohm effect, sometimes called the Ehrenberg-Siday-Aharonov-Bohm effect, is a quantum mechanical phenomenon in which an electrically charged particle is affected by an electromagnetic potential, despite being confined to a region in which both the magnetic field B and electric field E are zero. The underlying mechanism is the coupling of the electromagnetic potential with the complex phase of a charged particle's wave function, and the Aharonov-Bohm effect is accordingly illustrated by interference experiments.

[comment on this post] Append "/@say/your message here" to the URL in the location bar and hit enter.

[webmention/pingback] Did you respond to this post? What's the URL?


Web security fetishism where it isn't required does more harm than good.

on blog at

There are two mutually exclusive views of the web. As a set of protocols set to allow individual humans to share information about things they love and the web as a set of protocols to make a living.

Profit motivated web presences want views, they want attention, they need nine 9s uptime, need to be able to do monetary transactions absolutely securely, and they want to be an application not a document. They live and die on the eternal wave of walled garden's recommendation engines because that's the network effect and that's where money flows. It doesn't matter if this means extremely high barriers to entry because money solves everything.

Individuals' websites are freeform presentations about the things that person is interested in. They are the backyard gardens of the mind and the most important thing is lowering the friction from thought to posting. There's no need to get tons of traffic instantly (or ever), they're mostly time insensitive.

Year by year browsers' evolution into another OS are creating new barriers to entry for those wishing to host personal website. Just one tiny example of this is browsers (and search engines, and etc) requiring HTTPS and not just SSL certs but only certs with lifetimes less than 1 year. All this piles on, destroys access to old web content, and generally creates cyber gentrification. With the WC3 now marginalized and corporate run web standards groups (ie whatwg) setting the protocols there may soon come a time where it's infeasible to run a website without relying on a third party entity to do some part of it for you.

[comment on this post] Append "/@say/your message here" to the URL in the location bar and hit enter.

[webmention/pingback] Did you respond to this post? What's the URL?

█▓▒░ Comments ░▒▓█
20:54:11, Tue Feb 25, 2020 : /blog/blog.html/, Re: web security fetishism. Without HTTPS, an adversary can man-in-the-middle your connection and do all kinds of nasty things, from surveillance, to denying access, to altering the content, to running arbitrary javascript exploits against users' browsers. Given that certbot is free and now auto-renews your certificate for you on most platforms, I can't say that it is an especially high barrier to rule out this class of attacks, which may not be a personal threat to you, but can have severe consequences for the vulnerable. And although it does require trust in a 3rd party, which is not ideal, everybody is better off with it than without it.

re: random commenter above, as you can see from this site of mine I do like and use HTTPS. But I think HTTP has a valuable and essential place beside it. Going only HTTPS is bad. Going HTTP and HTTPS is great. Browsers and search engines punishing, hiding, and demonizing HTTP sites in their listings or notifications does more damage than then some potential downgrade attacks.

Reliance on third parties is also a bad idea. Sure, letsencrypt is great, but it's also causing extreme centralization of the web since it's so nice. The .org situation shows that no matter how benevolent and longstanding institutions that have power will be corrupted. And no matter how "easy" it is, acme2 is not a simple protocol. There's tons of complexity hidden behind that "easy" that has to be supported over time and changing software stacks.


Memory is two different systems both operating in parallel at the same instant of perception.

on blog at

Memory is two different systems both operating in parallel at the same instant of perception.

There's the short term awareness as encoded in the ~40 Hz cortico-thalamo-cortical loops of active cortical neuronal populations. The binding in time of different types of cortical processing at the thalamic relays and stimuli representation are essential to, if probably not all of, conscious awareness.

There's also the long term encoding in the entorhinal cortex (3 layers transitions from the 5 of cortex to hippocampus "simplicity") and hippocampus which itself is a multiple component system encoding different properties of the new experience relative to existing memory and relations. There is "pattern separation" about encoding distinct new properties of some experience and "pattern completion" which encodes in terms of the past to extract meaning in terms of known relations. And both of these are referenced through two spatial coordinate systems (especially in CA3). The meaning is all in terms of place.

Distinguishing between things (pattern separation) and seeing how things are the same (pattern completion).

During sleep the spatial coordinate system "paths" of the day are revisited in activation backwards in time and the specific episodic and spatially referential memories of the hippocampal formation are generalized in reference to thalamo-cortical loops.

Recall of memory later depends on self-reinforcement of thalamo-cortical loops populations. Over time memories which a person holds as truths can actually shift based on their own biases and other associations which help form/hold that memory.

Consciousness is the turbulence of prediction that tries to minimize itself.

[comment on this post] Append "/@say/your message here" to the URL in the location bar and hit enter.

[webmention/pingback] Did you respond to this post? What's the URL?


Solder wick that doesn't suck: soak it in flux

on blog at
<superkuh> I've never had solder wick that wasn't shitty.
<superkuh> Does such a thing exist?
<OdinYggd> Flux core.
<OdinYggd> aka make the entire flux dish hot, put the braid in the liquid flux, then let it cool
<OdinYggd> ONce you pull it out the entire braid will have flux throughout, and will actually wick up properly

[comment on this post] Append "/@say/your message here" to the URL in the location bar and hit enter.

[webmention/pingback] Did you respond to this post? What's the URL?


Computation not construction: reconstructing images of rotating exoplanets from light intensity over time: 3 novel techniques to build cheaper big telescopes [youtube IAC talk]

on blog at

This "Large Instruments For Exoplanet Direct Imaging Studies beyond TMT/EELT/GMT" talk by Prof. J. R. Kuhn (IfA, Hawaii) is very cool but it reminds me a lot of Robert Charles Wilson's print scifi story, "Blind Lake". In it the near future telescopes don't really even perceive the sky anymore. The sky is the start but in terms of computation triggering but it's almost the least of the input compared to the the models and priors and arcane unknowable quantum-woo-woo which synthesize the detail of the resulting images. Not to imply there's any quantum woo-woo here. This is really cool science.

In this talk Kuhn makes the call for building a large multi-mirror optical interferometer to capture enough photons to do model-based time-series reconstruction of the surface features from light reflected off exoplanets. The proposed optical telescope is an interferometer, a donut of moderate size circular apertures, that are combined to form a speckle interference pattern. Each circular mirror in the donut has adaptive optics who's arbitrary phase shift can be found with neural networks then changed arbitrarily to create nulls in the combined UV coverage directly as a function of diffraction to act as a super low noise coronagraph.

Optical interfometry is tough and phase error kills. Normally to be big things have to be made super stiff. He argues that the telescope structure doesn't have to be built any more rigid than the amount of atmospheric turbulence they already correct. From this premise he suggests a bicycle wheel like tension and compression design to minimize weight when flex can just be adapted.

But even moderate size mirrors cost a lot and so do adaptive optics. To make this cheaper he shows a small scale implementation of a mirror made out of an extremely thin bit of non-ground, perfectly smooth glass. To create the phase needed locally to cancel out the local surface error + atmospheric surface error + wobbling error he shows an electroactive polymer that can be 3D printed onto the thin glass itself and under an applied electrical field (as a dieletric in a capacitor) it can pull on the local glass surface. Without a need to grind the mirror it can be extremely smooth and relatively cheap.

All together it seems like a powerful system for making a cheap big light bucket. But what strikes me most about it is that the information needed for the coronograph nulling is being derived from a seemingly nonsensical speckle pattern with lots of unknowns. They just throw a neural network at it and tell it to create some inversion function(s?) that takes incoherent speckle pattern information and somehow comes up with the mechanical phase error.

[comment on this post] Append "/@say/your message here" to the URL in the location bar and hit enter.

[webmention/pingback] Did you respond to this post? What's the URL?


Absolute positioning systems for autonomous land vehicles cannot work in cold climate winters.

on blog at

In cold climates in winter human drivers don't follow the official lane markings because they can't be seen. They follow the paths in the snow everyone else has packed down. These paths often diverge from the road markings. Any attempt to create an absolute positioning rather than vision based system like humans use is doomed to failure. No amount of technology injected into roads rather than cars will help because that's not how humans drive and humans are the priority users of the road transport system.

This doesn't just happen during and after snowfall. It's a permanent feature of side streets for months. It's not a transient effect. Regulation of autonomous land vehicles in cold climates will have to be different from temperate ones.

[comment on this post] Append "/@say/your message here" to the URL in the location bar and hit enter.

[webmention/pingback] Did you respond to this post? What's the URL?


Soldering a 2x2mm QFN as my first attempt at hot air. re: digitally tunable radio filter

on blog at

This is me finally picking back up a 2018 project to design flexible and cheap RF frontend filter for rtl-sdr dongles. I've had the parts laying around for years but never actually tried for fear of breaking the ICs. I only have 10. 9 now.

I put down the tac'y flux, then I put tiny bits of old temp solder using a tiny conical tube on each exposed pad. Some was overlapping but I cleaned it up with tweezer tips. Then I did hot air just above the melt temp till it resettled. At first the nozzle was too close and I blew away some solder but I think enough was left. Unfortunately, as you can see, I don't think the bottom pin flowed properly. It might be time to get a cheap hotplate or something so I can reflow things evenly without burning the ICs.

[comment on this post] Append "/@say/your message here" to the URL in the location bar and hit enter.

[webmention/pingback] Did you respond to this post? What's the URL?


A static, manual system for *receiving* webmentions (and pingback) with nginx

~Log HTTP POST data~

on blog at

I don't want to have any "moving parts" in my static website. I also don't want to have to rely on any third party services. To support webmentions (and pingback) all you really have to do is log HTTP POST request body. To do this with nginx you proxy it to itself so it thinks it's passing to a cgi script and define a custom log format to handle POSTs for the wemention endpoint location.

# /etc/nginx/nginx.conf for debian-style
http {
	# just the request body, hopefully source=...&target=...
	#log_format postdata $request_body;

	# extra info in csv
	log_format postdata '$time_local,$remote_addr,"$http_user_agent",$request_body';

The log output looks like whatever someone submits. But assuming it's webmentions with two variables it might be something like this,

10/Jan/2020:15:24:06 -0600,216.189.159.184,"Mozilla/5.0 (X11; Linux x86_64; rv:68.9) Gecko/20100101 Goanna/4.4 Firefox/68.9 PaleMoon/28.8.0",source=http%3A%2F%2Fadfadfafsdwut.html&target=http%3A%2F%2Fsuperkuh.com%2Fblog%2F2019-12-11-3.html
10/Jan/2020:22:35:37 -0600,192.168.1.1,"curl/7.19.7 (x86_64-pc-linux-gnu) libcurl/7.19.7 OpenSSL/0.9.8k zlib/1.2.3.3 libidn/1.15",source=http://somedomain.net/iscommenting.html&target=http://superkuh.com/blog/2019gfdgdsgfdgsffd
10/Jan/2020:22:35:56 -0600,216.189.159.184,"Mozilla/5.0 (X11; Linux x86_64; rv:68.9) Gecko/20100101 Goanna/4.4 Firefox/68.9 PaleMoon/28.8.0",source=http%3A%2F%2Fwutwut.com%2Finthebutt&target=http%3A%2F%2Fsuperkuh.com%2Fblog%2F2020-01-10-1.html
# /etc/nginx/sites-enabled/default.conf for debian-style
# use $server_name instead of $binary_remote_addr IP match so the pool is for the whole server
limit_req_zone  $server_name  zone=webmention:1m   rate=2r/s;
...
server {
	...
	# use proxying to self to get the HTTP post variables.
	# https://stackoverflow.com/questions/4939382/logging-post-data-from-request-body
	location = /webmention {
		limit_req zone=webmention;
		client_max_body_size 7k;
		if ($request_method = POST) {
			access_log /var/log/nginx/postdata.log postdata;
			proxy_pass $scheme://127.0.0.1/logsink;
			break;
		}   
		return 204 $scheme://$host/serviceup.html;
	}
	location /logsink {
		#return 200;
		# use 204 instead of 200 so no 0 byte file is sent to browsers from HTTP forms.
		return 204;
	}

Then you can look at the log with your eyes at a later time and respond if you want to. Manually (using curl). Any including of their response in your page will just be from going there in a browser and copy/pasting or whatever. You could script that too but it seems like a hassle and open to abuse.

curl https://webmention.io/indiewebcamp/webmention -d "source=http://superkuh.com/blog/2020-01-10-1.html" -d "target=https://indieweb.org/static_site"

Or to me,

curl http://superkuh.com/webmention -d "source=http://yourdomain.net/wrote/a/response" -d "target=http://superkuh.com/blog/2020-01-10-1.html"

To make it easier to others I put an HTTP POST html form at the bottom of posts that points to my /webmention endpoint like shown below. The way I do this in nginx with HTTP 204 return code means, well, there's no response. It just happens silently. That's fine with me even if it confuses people. Feel free to play with this one and submit whatever strings you want. Webmentions, pingback xml, a perl script, ascii art, whatever.

As far as my tests go and using other's online testing tools my implemention and endpoint seems to be detected and I get the data in my logs. I'm redundantly putting the <link ... > webmention tags in all posts, at the top of the main indexes, and in my HTTP headers.

Since nginx is the only thing exposed and all it's doing is logging to disk and there's no increased dangers of exploits or abuse. The only real danger is someone trying to fill up the disk with lots of POSTs. But the log file size can be easily managed with system tools like logrotate and by limiting connections per second and max body size. At max it should be about ~900 MB of logs per day which triggers logrotate at the start of the next day and clears them.

[comment on this post] Append "/@say/your message here" to the URL in the location bar and hit enter.

[webmention/pingback] Did you respond to this post? What's the URL?


I am now a Disney princess.

on blog at 2020-01-04-1

Today while on a walk with a friend in the cold winter woods a cockatiel parrot flew down and landed on my head. It eventually moved down to my shoulder and stayed there seemingly content. It was obviously someone's distressed pet. It flew off on the walk back to find a temporary place for it and I assumed it would die of the cold later that night. So... I went back an hour later and managed to whistle, gesture, and coax it down on to my shoulder where it had no problem sitting for 15 minutes while I asked people in the area if they were missing a parrot (really). None were, of course, but one helpful group in a parking lot took a photo for me and posted it with my phone number on a local-centric 'lost items' forum. Meanwhile, I gave up and the parrot had no problem coming home with me on my shoulder in my car.

About an hour later, after I'd resigned myself to having to buy parrot food and start putting down newspaper, I received a call from the owners of the parrot. They'd seen the post and after giving them my address they said they'd be over in 30 minutes. A woman and her son arrived and confirmed it was their parrot. They'd lost it the day before, so it had managed to survive a night. It was a pretty happy reunion scene and I'm glad I took the time to save the bird.

The bird was super cute but given birds' pooping habits I think I was almost as relieved as they were it was going home.

[comment on this post] Append "/@say/your message here" to the URL in the location bar and hit enter.

[webmention/pingback] Did you respond to this post? What's the URL?