superkuh's blog

A web log about sci-fi, tech, and photos of random things

The filesystem is the best CMS. Append "/@say/This is a comment." to any URL to comment.


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.

  • more adaptive optics instead of expensive stiff structures
  • don't grind glass, actively bend 2mm thin glass and retain a smooth surface
  • incoherence happens, let the neural networks sort it out

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. It's not a simple deconvolution from a point spread function and the coverage of the UV plane. They just throw a neural network at it and tell it to create some inversion function(s?) that takes a speckle pattern information and somehow comes up with both the mechanical phase error and an image.

[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?


Indieweb, microformats markup, and a minimum webmention implemention

on blog at 2019-12-11-3

The whole indieweb microformats movement seems good to me. It encourages hosting your own and the mark-up is just repurposing the flexible html class attribute tag. I only had to change my post format and perl regex a tiny bit in order to accommodate h-entry style mark-up. Validate me.

Webmentions is a well intentioned track-back like feature for systematized auto notification of responses to posts marked up with the microformat2 h-entry stuff. It requires an endpoint defined in the page that can receive url-form encoded strings that then goes out and actively GETs the other endpoint servers to do things. Without DoS mitigation somehow(?) this doesn't seem wise. There's even a guide to do it manually with curl so I'm going to see if I can whip up a perl script to tail the logs and perform this function without the webserver being involved. But that's for a future post. For now I have to write something to automate converting my old format html format to h-entry tagged.

Update: wrong again, webmentions suck.

It seems like every blog post I've written this year has later turned out to be wrong. Indieweb is not useful, the webmentions aspect of it requires receiving x-www-form-urlencoded data. Why they chose this convoluted and complexity increasing way is beyond me. Embeding (or encoding) it in the URL string itself would've been infinitely easier for everyone with no downsides. But no, with x-www-form-urlencoded variables you need to actually be doing some dynamic scripting to handle it. If not actually some script listening for that location/endpoint then at least a series of complex nginx directives and modules to get x-www-form-urlencoded logged with all the rest of the request. This additional complexity makes running a static website that supports indieweb standards like a tail wagging the dog in terms of the webmentions receiver's relation to the static http site.

microformats2 h-entry markup for web content is still cool though. I'm going to keep doing that.

Update 2: the workaround

Time has passed and it's a new decade now (2020-01-08) but I kept banging away at the problem of form encoded POST data and how to get it into the logs. The trick turned out to be proxying nginx to itself so it'd think it might be passing to a cgi script and have the request body data left in. A big thanks to aaronpk of the freenode #indieweb-dev channel for putting up with my complaints and tipping me off about the nginx proxying to itself path.

# /etc/nginx/nginx.conf
http{
	log_format postdata $request_body;
}
# /etc/nginx/sites-enabled/default.conf
	# use proxying to self to get the HTTP post variables.
	# https://stackoverflow.com/questions/4939382/logging-post-data-from-request-body
	location = /webmention {
		client_max_body_size 10k;
		if ($request_method = POST) {
			access_log /var/log/nginx/postdata.log postdata;
			proxy_pass $scheme://127.0.0.1/logsink;
			break;
		}   
		return 200 $scheme://$host/serviceup.html;
	}
	location /logsink {
		return 200;
	}

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


CSS in HTTP Headers

on blog at 2019-12-11-2
css, css everywhere!

I found out you can put links to CSS in webserver HTTP header responses. I've got /header.css linked in this servers HTTP headers now. All it's doing is resizing images but it's kind of handy for the blog pages where embeding css in each would be a hassle. For nginx this is easy to do in your .conf,

add_header Link "<//superkuh.com/header.css>; REL=stylesheet";

The // instead of a full or specific URL is for portability re: HTTP and HTTPS. Do a,

$ curl -I superkuh.com

to see. Most browsers don't support header linked CSS but most browsers suck shit and people shouldn't use them. I'm looking at you Chrome. This does work in standards based browsers like Firefox and it's forks.


Steven Erikson's "Rejoice, A Knife to the Heart" is like if "Watchmen" was written by a bitter education worker.

2019-12-11-1
sci-fi author writes story about sci-fi author

Steven Erikson's "Rejoice, A Knife to the Heart" is like if "Watchmen" was written by a bitter education worker. They'll save Earth from $disaster by force! It is a pure wish fullfillment story about a godlike intelligence suddenly coming to earth and forcing everyone to play nice, even, especially, with other animals. It plays on the common trope of scifi authors that is having the main character be a scifi author. This leads to no end of not so subtle 4th wall references that break suspension of disbelief. It explicitly says it's not hard scifi through one of these 4th wall nested comments about the outer reading frame. And this is very, very true. Throughout the book the times when it even tangentially approaches physics it uses the terms in ways that are not even wrong. But that lampshade was well hung so lets move beyond that. The actual story is pretty catchy and the particular blend of authoritarians nanny state paradise isn't by itself attractive. But it is a fun and interesting what-if story about ripping out the basic precepts of human interactions and trying to start anew. And plenty of what it criticises about the current economics of humanity is spot on.

I'm still only about a third in so much could change but it's a fun book. He spends a good chunk of the first part of the book justifying picking a scifi author and his previous effort in scifi "Willful Child" was not so much as story as a roast of common scifi tropes wrapped around educational system criticism. So he's surely aware of the tight rope he's walking here using and mocking the same tropes. It mostly works. If you haven't already read Cory Doctorow's "Walkaway" maybe read that first. But if you have and you're looking for more like it then "Rejoice, A Knife to the Heart" is a good pick.


Thoughts on Solus linux, systemd timers vs cron, and the state of TTS on linux.

2019-12-07-1

I've been trying Solus linux, a rolling distro that tries to stay very modern, out as a potential replacement for Ubuntu. It has first class MATE support and a modern 5.x kernel. It seems very nice visually. But, and I know it's not it's fault, as my first hard intro to systemd all the things I dislike about it are making me dislike Solus. Instead of just one line and done with cron with systemd timers you create two ~15 line config files and then it's not even auto-detected you have to run another long system command to reload config. This was an unpleasant discovery and hopefully not a harbinger of things to come. But just in case I've set up a Devuan VM too to set up the same software flows as I implement them on systemd. I'll have to learn all this systemd stuff sometime anyway.

One of the first and most important things I need set up on daily driver OS is proper text to speech. In the old days this meant Festival 1.96 with CMU Arctic dataset HTS voices. This produces a monotone but clearly understood voice rapidly. Unfortunately Festival 2.0 does not support the Nitech CMU Arctic HTS voices so distros that only had it (building festival from source is a nightmare) were always ruled out. But today while playing around in solus I learned about mimic. It's apparently a festival lite fork but it supports all the CMU HTS voices I've come to know and love over the last decade while improving many other features. Now with mimic you can set speech speed and pitch on the fly now instead of having to config it to export every utterance to aplay binary call for manual speeding and pitch shift. Bye-bye,

(Parameter.set 'Audio_Command "aplay -q -c 1 -t raw -f s16 -r $(($SR*105/100)) $FILE")

Hello,

--setf duration_stretch=0.8 --setf int_f0_target_mean=145
...or something like that.

While talking about mimic on IRC another guy recommended I check out RHVoice which apparently has a US English voice included but no online voice samples. I'll try compiling that later. In the far future there's also all those machine learning based "tacotron" text to speech methods which apparently will be the core of mimic2 and Mozilla's text to speech core.

Edit: Nope.

I was wrong. It turns out mimic doesn't have flitevox compatible voices for the nitech_us_slt_arctic_hts. It has a HTS voice from the same CMU arctic dataset but by people at CMU. This voice is not equal in quality to the Nitech one. Mimic 1 is not a replacement for festival 1.96.

But!

It turns out that debian did fix the syntax of the nitech voices for festival 2.0 compatibility and put some of them in the default repos! So debian 10 does have some of the nitech voices but not cmu *slt* dataset. But on the debian bug management list there is a guide on how to do it yourself. Thanks Debian! It's worth noting that Devuan, which I was also investigating, doesn't even have the CMU HTS voices at all in it's repos for festival. So both Solus and Devuan are out of the running. Debian 10 it is.


Photos of unpleasant alleys at night in winter

2019-11-30-1 #2


Linux software stack future shock

2019-11-30-1 #1

In the old days I'd build a new computer because the old one's hardware wasn't fast enough to run new software. Now hardware from 2013 is plenty capable of running whatever you throw at it but if the software stack is a similar age don't expect to be able to run any new software or even decode video media. The rate of change in technological progress on the software side has only continued to increase, unlike hardware.

Because of rapid development of the previously somewhat bi-decadal-stable programming libraries (and codecs) everyone uses (C++'s C++11, C++14, C++17, C++20, changes to glibc adding new functionality, etc) it's almost to the point where you can't compile something written today on a software stack more than 5 years old. The proliferation of all the containerized solutions (docker, flatpak, snap, appimage, etc) is the immune response to this inflammation but it just makes it worse. Progress is great but the rapidity of obsolescence is getting intolerable.

Yeah, I could throw away my old software version workflows and update to lastest $OS but I think it's a lot easier to just build a new machine to add to the span.


Microwave ferrites: can they be made DIY? No. But I learned I was asking the wrong question.

2019-11-07-1 #1

Most of the cost of a magnetron reflection amplifier is in the circulator. High power circulators are weird and expensive but you can't build a reflection amplifier without them. Even just ordering special microwave ferrite material is almost as expensive as the finished circulator (if they'll sell to you at all). So naturally I wondered if I could make a ferrite disk, and from it a circulator, cheaply at home. Nickle ferrites are the most applicable because they can be worked in air. The two feasible options seem to be water chemistry nanoparticles, pressing, then sintering or low temp curing pourable magnetic composites made of expensive monomers, permalloy powder, and powdered oriented-strand 3M magnetic sheet.

But in the process I learned there's nothing special about garnet or other microwave ferrites. They just have a small resonance line width leading to low loss. The same non-reciprocal ferrimagnetic resonance happens even mass produced cheap iron ferrite rods and might work for an extremely lossy demo. Or at at high power but low duty cycle when you don't care about energy efficiency...like if you had a injection locked magnetron and bursty power to spare.

tldr: Home manufacture of microwave ferrites might be cheaply feasible *but* reuse of common cheap ferrites as lossy circulator elements certainly is and it's immediately accessible.


Circulator theory

A circulator uses some non-reciprocal material that allow transmissions lines to work differently depending on which direction the RF is traveling. In electromagnetics non-reciprocity is almost exclusively obtained through Zeeman splitting in (ferrite) ferromagnetic materials using a static magnetic bias that splits degenerate atomic states with opposite spin. These opposite spins have slightly different energy and so different frequency. In the plot on the right below this frequency difference is represent as advance or retreat of phase.

For circulators made of ferrites there are two ways main ways to use this. 1, magic-tee waveguides connected by two paths where one path is loaded with ferrite that causes faraday rotation of polarization (equiv to 180 deg phase shift) causing two-path interference in one direction but not the other (youtube link).

And 2, Y-junction transmission lines with ferrite resonators disks that have standing waves with nulls that can be rotated by an external magnetic field to so that the voltages at different angles around the perimeter of the resonator can be maximized and minimized.


The standing wave is actually two counter-rotating wave patterns. When there's no external magnetic field they rotate at the same frequency. When an external magnetic field is introduced the frequency of one is shifted and the resulting interference pattern is rotated. Despite the complexity of the physics in terms of mechanical construction a round ferrite waveguide based Y-junction circulator is by far the easiest design to make. And it's the easiest with which to connect a low power magnetron. The most straightfoward approach is the traditional 80*40mm TE_01 waveguide dimensions for the three arms.

Ferrite chemistry and mechanical production

The actual ferrimagnetic resonance is a frequency where the circulators *don't* work and they have to be designed with the target frequency either above the resonance in frequency or below it. Above or below resonance operation, depending on if the precession frequency is higher or lower than the RF frequency. The size of the the resonance in frequency span is called the line width and it determines the loss of the material. Expensive, densely pressed garnet ferrites have very low line widths and work over a broader range at lower loss.

But this doesn't neccessarily mean that homemade nickel ferrite would have no use in a circulator. It'd only be lossy. So what I'm thinking about here is using simple water based chemistry with ferrite chloride and nickel chloride chelated to co-precipitate a nickle ferrite and attempt to manufacture the a homemade waveguide y-junction circulator.

Nickel Ferrites may be the least complicated ferrite from the processing point of view. The nickel remains essentially in the Ni++ state so that air is almost always used as the firing atmosphere.

For co-precipitated "ready" powders, like the above example, sintering temperatures can be as low as 900 C. That's plausible to do with a cheap induction heater like I have. The press could probably be a simple hydraulic press. Papers quote pressures around 100 MPa, so for a 3cm diameter disk and a 2 metric ton press thats: (2 tonne)⋅(9.8m/s^2)⋅10/(pi⋅1.5cm^2) = ~200 MPa. Plenty of margin. A $20 hydraulic bottle jack for trucks does about 6 ton. Though I imagine the limiting factor would be the threaded rod and nuts used to make the press frame. But it'd probably still have voids without proper compaction machines and the effective line width would be higher. So much higher that an improperly home-pressed nickle ferrite would probably be no less lossy than an industrial pressed iron ferrite availably commonly for cheap prices.

Pourable ferrite composites with no press and low temperature curing

But even a cheap press is an expense and a somewhat bulky and dangerous thing. And sintering at 900 C is hard in implementation. There are some papers about pourable low-temperature cured pourable magnetic composites. But most of these have terrible specs. Except one 2019 paper, A (Permalloy + NiZn Ferrite) Moldable Magnetic Composite for Heterogeneous Integration of Power Electronics that has both decent performance *and* it's easily manufactured DIY. It's a mix of expensive (but feasible) permalloy magnetic powder with NiZn ferrite from crushed up 3M Flux Field Directional sheet and expensive and infeasible to get trimethylolpropane triacrylate (TMPTA) monomer. If a source of that last one that sells to individuals could be found it might just work.


opml to html, or, I know you're not supposed to use regexes but fuck it

2019-11-06-1 #1

I tried to do it the right way. I tried all the xml manipulation libraries. But they all failed. Or I failed them. Either way it was just faster and far easier to do it with regex than attempt to learn some new xml module. So here is the dirty result that makes /feeds.html on my site from the opml that QuiteRSS spits out.

#!/usr/bin/perl -w
# Usage: regexopmltohtml.pl foo.opml > bar.html
use strict;
my $opmlfiletoparse = shift;
open( THEFILE, "<$opmlfiletoparse") or die "Can't open file $opmlfiletoparse $!";
while(<THEFILE>) {
	if ( m{<outline text=\"(.+)\">\n}sg) {
		my $name = $1;
		print qq[<hr />];
		print qq[<h3>$name</h3>];
	} elsif ( m{<outline text=\"(.+)\" type=\".+?\" htmlUrl=\"(.+)?\" xmlUrl=\"(.+)\"/>}sg) {
		#print "1: $1, 2: $2, 3: $3\n" if $1;
		my($name,$htmlurl,$xmlurl) = ($1,$2,$3);
		print qq[<p>];
		print qq[<a href="$xmlurl"><img src="/rss.png" border="0" /></a>\n];
		print qq[<a href="$htmlurl">$name</a></p>];
	}	
}

Mesh networks require height. Height is expensive. What are some alternate ways to get height and what are their DIY enabling technologies?

2019-11-05 #1

Mesh networks between people are an alternative to the internet are hard. Height above terrain is everything in the VHF and up range if you're not in a giant city of skyscrapers or coastal town with giant mountains overlooking everything. It's just not possible to put together networks if there are many hills or valleys obstructing line of sight. The only reason cell networks work is that they buy space on towers, buildings, and the like high above the ground. That's too expensive for individuals or community groups. There are some non-traditional ways to get height and power up to that height, cheaply.

Surface wave transmission lines going up to antennas in trees

The first I've tried was making a light weight transmission line to connect a ground level transceiver with the antenna hanging up in a tree. RF power can be carried on a single thin bare (28awg) wire in much the same way that it travels inside a waveguide but inverted (TEM). This surface wave transmission line (SWTL) just requires a couple complex metal tapers making up horns at both ends. These can be 3D as in the designs from Glenn Elmore in QEX I implemented or 2D as shown in some of Glen Elmore's more recent youtube demostrations of high power (50w) tranmission at high effiencies. Though it's complex to make the 3D version like mine the 2D design made of metallized paper that Elmore demostrates could easily be DIY'd. Rain, snow, and ice are problems but sometimes working is better than not at all. Loss is low and they aren't an eyesore to the neighbors. For higher frequency band (ie, 2.4 GHz and up the launchers can be very small. The 2 launchers I made shown below are designed for a ~400 MHz lower cut-off and so quite large.

Magnetrons as reflection amplifiers

The second, one I'm only exploring in theory right now, is using very high power by operation of cheap oven magnetrons as reflection amplifiers. When an external signal up to ~30 dB below the cavity's operating level is introduced the cavity behaves like a diode with negative resistance and will lock on to the introduced signal and amplify it significantly. Normally over magnetrons are fairly noisy outside of the carrier because of electrons that make it more than one loop around the cavity. This can be stopped by making the magnetic field asymmetrical vertically by adding a handful of extra neodynium magnets to bias one of the poles. Additional reduction in noise can can be had by minimizing cathode heating current if not turning it off entirely. Magnetrons in ovens operate at a power level well above what they can sustain in steady state. To reduce the power level to something that can be dissipated the input capacitor on the voltage doubler needs to be reduced to one about 1/50th of it's capacity of a similar or higher voltage rating. This results in output power levels in the 10s of watts with very low noise and a decent modulation depth.

Magnetrons' innate frequency of oscillation can be effected by many things during operation. Increased anode current "pushes up" the frequency at about 0.1 MHz/mA while the frequency is "pulled down" the lower the impedance of the output. By using a slightly shorter than 1/4 wavelength monopole the frequency can be shifted some tens of MHz down to well within the safe amateur radio operating band. External coils wound around the poles of the magnetron can be used to change the magnetic field intensity and so decrease the amount of electrons that make it from the cathode to anode at a given voltage decreasing the power.

The one problem with magnetrons as reflection amplifiers is that the magnetron is only one part of the amplifier. The other is the circulator. Circulators are not cheap. And circulators cannot be home made because of the sintering and pressing requirements even if the chemistry of nickel ferrites is easy to do. So they must be bought ($50-100 for 50w). Ferrimagnetic resonance stripline circulators tend to be the cheapest at these powers.

In terms of practical assembly, the microwave is left mostly assembled. The output of the TE_10 waveguide is closed off with a copper plate and another magnetron cap "probe" antenna is put into the sealed waveguide ~1/4 wave away from the newly shorted end of the waveguide. The output of the monopole is connected directly to the circulator tab despite the weird impedance probably presented. The input from the signal to be transmitted and the antenna (or SWTL launcher) are on the other two pins of the circulator.

Combining it all together

10-20w of power on 2.4 GHz that's transmitted as 5-10w from the antenna at the top end of a surface wave transmission line lofted in a tree at 70ft would enable whole town and true community mesh networks. The injection locking effect only works over a ~5 MHz range though. Any modulation scheme has to stay within those bounds but things like amplitude shift keying are bad choices because of the frequency pushing effect. The best modulations are FSK or MSK but BPSK does work at a slightly higher error rate. A handful of megabits per second is possible.


If garbage mining happens in the future they will know everything about you

2019-10-30 #1

When you bag your trash and bring it out to the curb for pick-up eternal storage in a landfill somewhere you normally think it's just that: eternal. But there's no reason to think that the landfills of today will be inviolate in the future. They're absolutely jam packed full of useful rare metals and materials. I think eventually garbage mining will be a common practice.

In Vernor Vinge's "Rainbow's End" they have this book scanning machine that just shreds the books then scans all the sheds super fast as they fly by and reassembled computationally the documents (like how DNA is read). Sometimes I worry about a future where this is possible with garbage and garbage mining is happening. Not only would a garbage mining company be able to sell the materials but the vast amounts of detailed very personal information stored discretely in each person or family's bag would also be invaluable. There would be economic motives to automate information retrevial from landfill garbage mining.

Depending on how far in the future this happens it could either be a privacy nightmare or a cultural treasure.


Short review: Linda Nagata's "Memory" and "Edges" print scifi

2019-10-28 #1

I'm almost finished with Linda Nagata's two books extending the "Deception Well" / "nanotech succession" series. "Memory" and "Edges". Both are far future books where humanity is mostly either evolved into not humanity or dead and hiding like mice from the rest of the galaxy. The characters are mostly contemporary humans. The tech is never explained in any detail but it's consistent. In fact for not having any tech detail, ever, these books have interesting tech driven plots. It's magic nanotech goo everywhere but the magic goo is still constrained by physics somewhat. 8/10. Worth reading if you read the deception well series but if you haven't yet the tech will seem even more hand-wavey and unsupported.


Why do microwave magnetron outputs have holes if they're not waveguides?

2019-10-26 #1

I've been looking at a lot of microwave oven magnetrons lately. One thing that vexed me was why they all seem to have a hole in the cap on their output. Initially this predisposes you to think that it's an aperture of a waveguide. But the wavelength of of 2.4 GHz in air is way to large for the size of the 'waveguide'. For a 'waveguide' that small it'd only support about 15 GHz wavelength as the lowest frequency and support up to some ~20 GHz before high end cut-off.

It's actually a monopole antenna with a dielectric standoff. The fatter the monopole the greater the bandwidth generally, and the larger the better heat tolerance, and the lower the e-field gradients. So it makes sense to use a fat cylinder for the monopole. But what doesn't make sense is that there's a hole in the end of it. In all of them.

After reading a few patents I think I know why. Originally the vacuum evacuation tube comes out of the top of the magnetron. It's normally closed off but it's still under the antenna cap. If the antenna has a hole in it then the magnetron can be tested somewhat normally while still being hooked up to the vacuum pump. That's my guess. I can't think of any other reason for it beyond letting hot air out of the cavity beneath the antenna.

I ended up emailing a number of people who seemed to be authorities or at least very knowledgable on commercial oven magnetron operation. The consensus of *all* of them was that the hole in the cap really didn't matter and it was just there to cover the sharp edges of the sealed evacuation tube. But few really seemed to know why they all have little holes on the end. Until today (a week since I started digging) when two people confirmed that the holes *are* just for mechanical assembly.

There is no electrical reason for the hole: the antenna with such a hole behaves exactly the same way as without a hole. The cap serves for defining/unifying the magnetron radiating structure shape and protection from the sharp edges of the sealed evacuation tube end.

I am not a magnetron technology specialist but the hole must have some prosaic technological reason, such as air vent when the cap is pressed onto the magnetron. In mass production, this may be a very snappy operation.

Magnetrons are certainly not tested in any electric way while being hooked up to the vacuum pump. A "magnetron" is then just a bare bulb without electric connections, without magnets, without the cap alone.

- Vladimir Bilik

<_abc_> The hole in the top of tha probe on an oven magnetron serves as assembly help. There's an equivalent hole on almost all anode contact caps on tubes, sometimes it is smaller and soldered closed. http://danyk.cz/gu81_en.html Different style, same idea, the little tab is spot welded to the wire coming out of the glas


An easy modification to suppress noise from a household magnetron

And how magnetrons can be used as reflection amplifiers

2019-10-24 #2
Low-noise microwave magnetrons by azimuthally varying axial magnetic field_ V B Neculaes_ R M Gilgenbach_ Y Y Lau_ 2003

This paper documents how sticking (literally) some extra magnets on the top magnet of a microwave magnetron gets rid of most of the noise around the carrier. Unlike other methods of running a magnetron in a low noise mode this way requires no invasive modifications and you can still run the cathode heater to get full power output. This is at all relevant because there exists a way to use a household magnetron as an amplifier (ref pdf).

Reference material /library/Electromagnetics/Magnetron

There are two ways in the literature to use a microwaven oven magnetron as a reflection amplifier (w/circulator). Both of them modulate the anode current, which is to say, the rate at which electrons travel from the cathode to the node in the coaxial cavity surrounded by resonating cells.

The first and easiest way to do this is to change the magnetic field projecting down vertically through the cavities. An additional electromagnet coil is added to contribute (or subtract) from the the permanent magnets. The current in this coil is controlled by a phase locked loop. But the current through the coil can't be changed rapidly so this kind of amplifier can't be used with phase modulation schemes.

The second and most expensive is to change the actual HV bias current directly by using a switched IGBT HV supply with complex control circuitry. It also uses a PLL but allows for much faster phase modulation.

Both types of set are pretty high noise when there's a lot of cathode heater current supplied (ie, high power). But if the magnetron is started with just a bit of heater power then the heater is turned off the magnetron continues to operate at a much lower noise level and with much less random phase jitter. But this can now be solved by having extra bias field on the top magnet.

Both types require extensive filtering of the AC-DC conversion power supply.

Later...

Characterization and Optimization of the Magnetron Directional Amplifier_ Thesis_ Mike Hatfield_ 1999 - this is by far the best and most authoritive document on using magnetrons as reflection amplifiers.


mkp224o: CPU vanity address generator for tor onion v3 (ed25519) hidden services

2019-10-24 #1

I've recently been trying to upgrade my tor setup and that means version 3 addresses using curve25519 56 char hashes. As of right now there are no GPU implementations for mining. That means CPU mining and it's really slow. Maxing out an i5 3570k it would take about 2 weeks (on average) to brute force a superkuh* prefix. But I don't want to only do that for two weeks so I'm throwing it on my fanless 5w Celeron N3150 which I *can* let run for as long as I want quitely. With it's hash rate it should take about 2 months. But it's random and could take much more or less.

There are some alternative cryptocoins out there that use the same curve25519 algorithm which have opencl GPU implementations but who knows (not me) how one would adapt the opencl bits for tor v3 addresses. https://github.com/PlasmaPower/nano-vanity. The real vanity here is thinking I can poke at this crap and get it to work. I can't. I'll just have to wait the 2+ months.

Update! It only took 5 days. Lucky me. superkuhf6grlngvhaelkgaem6i4phmzd7rekeguphwbplhk3fanpjqd.onion here I come.


A Thornless Honey Locust Tree

2019-10-18-1

These trees are pretty fucking neato. The helical seed pods are more than a foot long and an inch or two wide. They're big, fleshy things in the summer and in the winter they dry out into excellent little noisemakers when shaken. These are domesticated, thornless varieties of course. The wild honey locust is literally a threat to man and his machines. The giant spikes it grows can puncture tractor tires. Some scientists think they evolved the giant deadly-to-humans spikes to keep mammoths from damaging the tree trunk as the seed pods were a favorite food source. That's metal. Here's some random google images photo of one from someone that isn't me,


This was a lake once but they tore down the dam.

2019-10-17 #1


The fall collection of nuts and seeds to germinate next year.

2019-10-16 #1


There were dozens of these brown (?) snakes all along the road.

2019-10-09 #2


This coppiced catalpa tree grew back like this in a single season.

2019-10-09 #1


Cup plants and frost grape vine

2019-09-09 #2


Grape beetles (grape pelidnota) on my frost grape vines

2019-07-25-1 #1


Consciousness is a epiphenomenon, it runs on entirely classical hardware, and free will is just a relative value between actors.

on blog at

Knock knock.

Who's there?

Nobody. Self is an illusory epiphenomenon emerging from the binding in time of separate neuronal populations via loops of neurons from cortical representations (sensation, motor action planning, etc) to the brain's switching center, the thalamus, and back operating at 40 times per second. This is necessary if not sufficient for what an average observer would call being conscious.

The epiphenomenon of consciousness is a prediction engine and it runs on entirely deterministic, entirely classically predictable hardware. No quantum woo-woo is needed or likely given the dense wet environment. The decoherence timescale for a plasuible small molecule is 10 orders of magnitude shorter than the timescale of neuronal and astrocyte activity.

Free will is a relative quantity expressed in terms of the ratio of computational power available for each actor. We can have free will relative to something or some system but there's no absolute meaning of free will. Animals as we know them with nervous systems are predictable objects just like anything else.

I'm not saying it makes sense from the perspective of introspection. It seems absurd and obviously false.

I'm saying that's what the scientific evidence indicates it. One argument against it is that well before you are consciously aware of making a decision there are many neurological indicators (EEG P300 signals, fast near IR changes in scattering, and slow fMRI blood oxygenation, etc) that use the activity of sub-populations of neurons to correctly predict, for example, a motor behavior like choosing one of two buttons to press. This disconnect also exists in terms of conscious sensory perception of being pinched when external brain stimulation like rTMS can be used to inhibit perception. Or more dramatically when TMS is used in the pre-motor and motor cortices to initiate a preference for action, say, in a choice to twitch your right hand finger or your left. The brain confabulates an intention post-hoc to agree with the stimulation choice.

[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?