GoodReads for games

I love GoodReads. It’s terrific having a giant list of books I’ve read and my thoughts about them. Also it’s got a nice community, a low key social network. There’s a lot of reasons to complain post-Amazon-acquisition, particularly about how little development the site gets, but it’s still good.

I’ve never managed to get into Letterboxd, the equivalent popular site for movies. I’ve started using it again recently and am doing a little better but I sure wish I had notes on the 500+ movies I’ve watched in my life, particularly back when I was watching 3 movies a week.

So what about video games? I went looking and found various options. See also this list. “Reviews” refers to folks who at least entered a rating for the game. I’m using three games to compare user populations: Ratchet & Clank Rift Apart (2021), No Man’s Sky (2016), and Majora’s Mask (2000).

Grouvee

No Man’s Sky: 3005 users, 1026 reviews
Rift Apart: 274 users, 116 reviews.
Majora’s Mask: 5404 users, 2754 reviews

Steam import implemented
Export implemented

GG

No Man’s Sky: 350 users, 44 reviews.
Rift Apart: 337 users, 129 reviews
Majora’s Mask: 60 users, 51 reviews

Steam import on roadmap
Export not mentioned?

Backloggd (numbers approximate)

No Man’s Sky: 1500 users, 900 reviews.
Rift Apart: 446 users, 380 reviews
Majora’s Mask: 4200 users, 2500 reviews

Steam import on roadmap
Export on roadmap

HowLongToBeat (backlogs + beat)

No Man’s Sky: 2700 users, 256 reviews
Rift Apart: 1000 users, 285 reviews
Majora’s Mask: 2500 users, 516 reviews

Steam import implemented
Export implemented

Main conclusion from that is GG is a much smaller userbase. Anecdotally, Backloggd shows up in recent discussions on ResetEra, etc. Grouvee and HowLongToBeat have been around longer. I also think it looks like Backloggd is as popular as Grouvee now but missed out a few years ago when No Man’s Sky came out. I like how many folks on these platforms rate Majora’s Mask, that’s a classic and sophisticated game for folks to know.

I like that Grouvee and HowLongToBeat already has the import and export features I want.

Sleep position tracking and OSCAR

I’m interested in tracking the position my body is in when I sleep: on my side or back. mostly. I’ve found a good solution for that for Android, the app Torena. You strap your phone to your chest with a runner’s belt, run the tracking app all night (30% of battery), and it produces nice little reports. It’s a good app, well designed, and worth the $10 if you need this kind of tracking. Somnopose is a similar app for iOS.

http://www.apneaboard.com/forums/attachment.php?aid=33968

Pretty straightforward. But to make this really useful I want to pull the data in to OSCAR, the CPAP / sleep apnea tracking app that’s also recording all sorts of information about my breathing patterns, my blood oxygen, etc. I want to answer questions like “does sleeping on my back cause breathing problems?” and “do apnea events cause me to turn over, or does turning over cause apnea events?”. I succeeded! Code is in this gist.

oscar-screenshot.png

I made the import via OSCAR’s Somnopose CSV support. The code linked above converts Torena’s JSON export to a format enough like Somnopose data that OSCAR would import it. It’s a bit of an impedence mismatch. Somnopose basically just records the phone’s rotational position in two axes, so it’s a data stream like “-89 -93 -92 -73 -23 4 2 1” with timestamps (that’d be rolling over from one side to stomach). Torena classifies the raw numeric data and exports categorized data, like “Left… Back… Right” with timestamps. So I just converted that back to numbers, albeit coarse ones. One extra trick is I had to add some extra CSV rows to mark the end of old positions so that OSCAR would draw square waves, not sawtooths.

Next steps

I did this convertor as a one-off just to see if it’d work. It does! To make this useful there’s three options:

  1. Turn my convertor into a nice reusable program
  2. Get the Torena devs to output Somnopose CSV natively
  3. Design a new input format for OSCAR along with the Torena dev

Option 2 is probably easiest, if the Torena dev is amenable. Option 3 would probably be better but requires some product design effort with the OSCAR team.

FWIW I think having the raw numeric data is probably more useful. You can measure partial positions that way. Also maybe infer movement activity from the magnitude of changes. But really the data display needs to be rethought: coding position as an angle from -180 to 180 is not intuitive. The classifying Torena does in-app makes sense here, but maybe it could be done in OSCAR instead.

Another specific problem to solve is time synchronization; Torena has its own clock independent of the CPAP machine and O2 sensor that OSCAR is getting data from. OSCAR doesn’t seem to have a good solution for that although you can at least input a manual offset for some things. It’s important to get it at least to the right minute, if not second.

See also the discussion on Apnea Board.

ez Share hacking notes (WiFi SD cards)

tl;dr: I found a way to download arbitrary files off an ez Share, but no way to list the files. Also ez Share only runs as an access point with a DHCP server which makes it super awkward.

I’m trying to get a working WiFi SD card. This is a thing that acts like a normal SD card, typically for a camera, but also has an embedded system so you can download files from it over WiFi with the card sitting in your camera. I want to use this to get data off a device that writes to an SD card and has no network interface.

Eye-Fi pioneered this tech way back in 2005. They’re gone now. Transcend made a line of WiFi SD cards for awhile. So did Toshiba with their FlashAir. They’re all off the market or only buyable for ridiculous prices. The only thing left on the market is a Chinese product called ez Share.

Long story short, ez Share is not suitable for general file usage. It’s got a very restricted design that makes it only good for photos and only in an awkward WiFi way. I’ve got some detailed notes below on my hacking attempts. Meanwhile I fond a FlashAir I could get from Germany (via eBay) for $50 so I’ve ordered that, it should be more amenable.

ez Share limitations

The WiFi only runs as an access point. You can’t make the card act like a client on your existing WiFi network. That means you have to swap your WiFi adapter to its network to download from it.

The other big problem is the card only presents a Web UI. And that web server seems hellbent on making sure you only download images from specific directories. It only wants to serve files in directories named DCIM/100CANON or DCIM/EOSMISC. And those files need to have image or video extensions. See below for a partial workaround to download arbitrary files. But I can’t get a file listing.

I couldn’t find any sign of a firmware update capability. Too bad, that might be a way to hack the thing to be more useful. Update: Biorn says there’s a way to update firmware via USB and some details here.

ez Share resources

These ez Share cards have been around for 8 years or so, but surprisingly there’s precious little information in English from folks trying to hack them. Either because they weren’t sold in to the US/Europe or because they’re so inflexible. Here’s some links I did find:

  • A download script in bash. Seems to be written for a different firmware than I have, the methods don’t work.
  • GitHub repo for that download script.
  • A clever hack to use the card with a microscope that writes to another directory. He corrupts a FAT32 filesystem to create the equivalent of a hardlinked directory.
  • Hardware notes on using the card without a camera. Doesn’t address software problems.
  • Game console hackers at GBA Temp have tried using it to run games without much success I could find.
  • An official manual.
  • The default root password is “admin”.
  • The ez Share creates a WiFi access point with SSID “ez Share”, password “88888888”.
  • My card is version 4.4.0. In detail:
    LZ1001EDPG:4.4.0:2014-07-28:62 LZ1001EDRS:4.4.0:2014-07-28:62 SPEED:-H:SPEED

Download files

I poked around at the web server trying to coerce it to give out more info than it wanted to. The big success is I was able to download arbitrary files with URLs like this:

http://ezshare.card/download?fname=2071A5~1.EDF&fdir=..\DATALOG\20210719

Note the ..\ in the path name, to get out of DCIM. The filename has to be the 8 character version; it’s a FAT32 filesystem but the firmware doesn’t seem to know it. Also there’s no ftype specified; that’s needed to avoid the “file extension must be a .jpg or other image/movie format” code.

Unfortunately trying similar tricks to get a listing of files via the web interface at /photo did not work. Neither did trying to download a whole folder; you can do that with images in the DCIM directory but apparently not with arbitrary files.

Below are some very detailed notes on exactly what I tried / learned

ez Share file and directory URLs

List photos
http://ezshare.card/photo?
http://ezshare.card/photo?vtype=0&fdir=100CANON&ftype=0&devw=320&devh=356&folderFlag=0

List videos
http://ezshare.card/photo?vtype=0&fdir=100CANON&ftype=1&devw=320&devh=356&folderFlag=0

Alternate file list? From another firmware:
http://192.168.4.1/dir?dir=A:

Download an image
http://ezshare.card/download?fname=MESQUA~1.JPG&fdir=EOSMISC&ftype=0&time=1391742389

Hack to download any file:
http://ezshare.card/download?fname=2071A5~1.EDF&fdir=..\DATALOG\20210719

Download selected photos:
http://ezshare.card/download?num=2&fdir=EOSMISC&folderFlag=0&fn1=MESQUA%7E1.JPG&fn2=202107%7E1.JPG

Download folder:
http://ezshare.card/download?fdir=EOSMISC&ftype=0&num=2&folderFlag=0

Doesn’t work but looks like it should: hack to download any folder
http://ezshare.card/download?fdir=..\DATALOG&ftype=0&num=2&folderFlag=0
http://ezshare.card/download?fdir=..\DATALOG\20210719&ftype=0&num=2&folderFlag=0

other ez Share URLs

First page:
http://ezshare.card/publicdir/welcome.htm?

Redirects to /publicdir/sendir
Redirects to
http://ezshare.card/photo

Change config screen (password)
http://ezshare.card/publicdir/index.htm

Admin page:
http://ezshare.card/config?vtype=0

Cloud Lab advertisement
http://ezshare.card/i-share/res/clab_en.htm

Version request (reported)
http://192.168.4.1/client?command=version
LZ1001EDPG:4.4.0:2014-07-28:62 LZ1001EDRS:4.4.0:2014-07-28:62 SPEED:-H:SPEED

Starlink improvements

I’ve been running the TIG stack monitoring my Starlink connection for about 3 months now. I made a couple of posts to Reddit recently about the results of that. Bottom line: both latency and packet loss have improved significantly. Latency to 8.8.8.8 dropped from 44ms to 37ms average around July 15. And in the last month or so packet loss dropped from 2.1% to 0.6%.

Here’s a copy of the two reddit posts.

Latency improvement around July 15: 44ms to 37ms.

Noticed something interesting in my automated monitoring; my latency has improved. I’m measuring with pings to 8.8.8.8 every few seconds using Telegraf. The average has been about 44ms for a long time, dropped to about 42ms starting July 9, and starting July 15 dropped to 37ms.

It’s hard to accurately measure performance with a connection as variable as Starlink, but I have enough consistent data I think this is a real trend. Graph is here: https://i.imgur.com/fwuG2Yc.png

https://i.imgur.com/fwuG2Yc.png

I don’t know where latency improved. The changes in the graph don’t seem correlated to firmware updates. There’s no obvious change in bandwidth, although measuring that accurately is really hard. The latency improvement could well be in the terrestrial links between Starlink ground stations and Google DNS; that’s not very interesting. Or maybe it’s in the satellite network itself. No way of really figuring it out from here I think. But FWIW I’ll append a current MTR.

 Host                   Loss%   Snt   Last   Avg  Best  Wrst StDev 
 1. 192.168.3.233        0.0%   189    0.5   0.4   0.2   0.6   0.1 
 2. 136.22.110.161       0.0%   188   35.9  31.1  21.2  55.4   6.6 
 3. 142.250.163.162      0.5%   188   33.2  30.8  19.5 141.2  10.5 
 4. 108.170.242.225      0.0%   188   33.5  30.3  19.8  50.4   6.2 
 5. 108.170.236.61       0.0%   188   34.5  31.4  21.5  59.8   7.7 
 6. 8.8.8.8              0.0%   188   35.1  30.6  19.2  56.8   7.4

Packet loss improvement: 2.1% to 0.6% over three months

My packet loss has improved over the last three months: from about 2% to 0.6% by my measurement. Don’t get hung up on the absolute number but I think the improvement trend is real. See below for more numbers and the graph here: https://i.imgur.com/RCqI6mp.png

https://i.imgur.com/RCqI6mp.png

Nothing significant has changed at my site. What I’m seeing is consistent with what Starlink has been telling us: reliability should be improving as they fill out the constellation. My antenna is mounted on a roof in Grass Valley, CA with some minor tree obstructions. I’ve been hoping with more satellites that Starlink could work around the obstructions; there was a promise a few months ago of a firmware update to do that.

https://i.imgur.com/ju86o54.png

Anecdotally I’ve been using Starlink exclusively on my desktop computer for about 8 weeks now. It used to be annoying about 10 times a day to have to wait for 5-10 seconds for the network to respond again. Now it feels like 2 times a day. But that’s just perception, the numbers in my report say more.

Unfortunately I’m having a hard time getting a great graph of the trend but it should be visible in the graph linked above. I’m also seeing a similar trend in Dishy’s own reported drop rate. Here’s the average packet loss percentage from my pings along with Dishy’s average drop rate over 7 day periods starting at various times:

  • Week starting 5/1: 2.1% / 0.024
  • Week starting 6/1: 2.0% / 0.027
  • Week starting 7/1: 1.0% / 0.008
  • Week starting 7/13: 0.6% / 0.006

FWIW the same ping tests with my old fixed wireless WISP was about 1% packet loss. But those were just one-off lost packets. Starlink’s multi-second outages have been annoying. They’re getting better!

Appendix: my ping data comes from Telegraf’s ping plugin. I’ve got it configured to send 5 pings at a time, every second. As always, when measuring with ICMP ping all sorts of other things could explain changes in behavior. But in this case the ping data confirms my general perception and also Dishy’s own reported drop rate.

Obstruction updates

(not a Reddit post, just some more graphs I just pulled.)

https://i.imgur.com/ygfFagX.png

Nicer text with an AxiDraw pen plotter

(Expert readers; skip down to “The Good Stuff”).

I’m looking for some tools / inspiration for creating text with my pen plotter. The issue here is that most of desktop typography doesn’t apply to plotters because it all relies on filled fonts, effectively bitmaps. Pen plotters draw single lines. You can try drawing and filling the outline of a traditional TrueType font but that seldom looks good. OTOH there’s a whole art form of handwriting text with pens, so maybe some ideas from artists that can be borrowed?

Unfortunately traditional calligraphy is out because most calligraphy requires varying pen pressure to change line width and that’s something an AxiDraw and most other plotters simply can’t do. You can get somewhere using an italic nib (basically a pen tip that’s a wide line, not a point) but it’s pretty tricky. And it still relies on you having a font to draw the shapes.

The other quick solution is what’s called “Hershey Fonts” (after a Dr. Hershey!). AxiDraw has support for them as does this third party product but the actual classic Hershey fonts are, let’s just say, unaesthetic. The image below was plotted poorly with a bleeding pen on cheap paper, so ignore the dots and bleed, but nothing’s gonna fix these tragic shapes.

Update: when writing this up I neglected to talk about the EMS fonts, a series of free SVG fonts included for use with the HersheyText 3.0 plugin and SVG font format

The Good Stuff

So I asked on the drawingbots Discord for inspiration and got a couple of good suggestions.

A simple option is to just use better fonts. Single Line Fonts sells a handful of nice looking fonts for very modest prices, $20 or less. (And try the coupon TAKE25OFF). A bit heavy towards cursive scripts (but not true cursive, since the letters don’t actually connect.) There’s a very limited set of SVG fonts but a larger number of TTF fonts. I think those can be used with an AxiDraw OK, they mention that each line is drawn twice because of technical requirements.

A more sophisticated (and expensive) option is Quantum Enterprise’s single line fonts. There’s 59 fonts in a variety of styles. At $130 a font these aren’t cheap! But they’re nicely designed and have a lot of technical details on how to best use them with AxiDraw. Also these aren’t simple fonts; they have variant characters so that you can draw text without every single instance of a letter looking identical. They have a software tool (“Scriptalizer”) that will render variable text for you, demo it here. They also offer a service that will generate a custom font from a handwriting sample for $350.

Inspirations

One interesting point someone made is that a lot of what’s driving handwriting with plotters is marketing. Folks trying to mass-print mailers that look like they were hand written so you don’t just throw their junk mail immediately in the trash. I wonder if that’s part of AxiDraw’s business; you’d want a faster machine for mailing thousands of pages but it’s suitable for small runs of envelopes, etc. Anyway, sleaziness aside I’m glad to lift any approached they’ve developed. One interesting merchant in this area is Handwrytten, they sell robot-hand-written cards as a service ($3.25 a card!).

But what I really want to see is experimental / artistic plotter typography. Something like the explosion of interesting art folks were doing in the early 90s as desktop publishing technology made it so easy for artists to manipulate text. Stuff like this or this, only plotter-focussed. Someone must be doing this kind of work out there but I haven’t found it yet.

I’m also wondering what the state of the art is for true cursive script being generated in software. Something similar is essential for Arabic typesetting and is more-or-less a solved problem, so it seems likely that English cursive script could be doable?

Youtube TV and ads

I’m finally trying to go full cord-cutter and use Youtube TV instead of DirecTV and/or Comcast cable with a TiVo or other DVR. So far so good, sorta, the ads suck.

Youtube TV is a great product. $65 in the US gets you access to about 100 channels, mostly high quality content. Also you get local TV although you do have to prove to Youtube where you live (via browser geolocation, lol.) You can watch 3 streams at once. If you pay extra you can get premium channels, 4K streaming, offline viewing, more than 3 streams at once. The only real drawback I’ve seen so far is that it’s stereo audio only although they’re promising to finally add 5.1 eventually. (Youtube itself has this same problem; wtf, folks?) There’s one minor problem which is Roku officially doesn’t support Youtube TV anymore (they’re having a contract dispute), but Google solved that problem by shoving Youtube TV into the main Youtube app for now.

The bad thing is the ads. Youtube TV is full of ads. I watched a 48 minute episode of Top Chef last night and was forced to watch 10 minutes of ads, mostly in 2 minute blocks. Unskippable. The ads themselves weren’t too bad (and I have ad personalization turned off). But the volume was at least 10dB higher than the show content. And did I mention the ads were unskippable? Just awful. A way worse experience than pirating the show or watching on a traditional DVR where you can fast forward over the ads.

And that’s the confusion. If you watch Youtube TV shows via Video-on-Demand (VOD), the ads are unskippable. And placed later as separate content from the show. If you watch a show via DVR (a recording) you record the ads as the show is broadcast. But you can fast forward over them.

Youtube TV is making a distinction between “a show you have recorded” vs “a show we pulled from a library for you”. I’m sure this makes perfect sense contractually. Technically it’s nonsense. At least, I hope YouTube isn’t making a specific digital recording of a show just for me when I told it to record it. Surely they’re making one recording and sharing it to everyone? Maybe not; Sling’s exemption from copyright licensing relies entirely on getting a separate copy of the stream for every viewer, I don’t know how they record them. Anyway that’s all legal trickery garbage.

The real confusion is a UI problem. All the Youtube TV UI gives you is “add to library”. That both puts any VODs the show has in a special Library view for you (for convenience) and also starts DVR recording any new episodes that are broadcast. So when you first add Top Chef it looks like you already have all the episodes! But only VOD versions; you have to wait until something is broadcast to get the DVR version, the one you can skip ads in. Shows end up being twice in your Library, one VOD and one DVR, and you can choose which version you want. It’s pretty clumsy. Also there’s rumors that some shows / channels force you to watch the VOD version with its ads but I haven’t’ experienced that yet.

It’s all so dumb. The VOD experience is better in absolutely every way. Except for the ads, which Youtube and the content providers have chosen to be super aggressive about. (Apparently this varies show by show). I sort of accept that I should be somehow paying “extra” for VOD access, it is pretty valuable to have 10 years of a show all available to you at once to stream. OTOH I’m already paying $65/mo for access to this product and the VOD playback is consuming no resources, so why do I get punished by being forced to see ads? Mostly I’m irritated by the overlap with the DVR model.

I wonder how long this DVR exception will last. It’s clearly in both the content provider’s interest and Youtube’s interest to force me in to the VOD ad model instead. For that matter I should feel lucky the mute button still works in VOD ads.

Here’s what really worries me; the VOD ads are way more valuable. They can be updated any time. They are personalized to me via my YouTube login. And they are unskippable. I suspect these ads are worth 10x the value to the advertiser that a normal broadcast ad is worth. Expect this kind of ad to be the future, particularly as more people get rid of personal DVRs and cable subscriptions in favor of the clearly superior streaming on demand.

BTW I tried a little technical wizardry to block the Youtube TV VODs. In particular switching to AdGuard DNS. Didn’t work; I suspect Youtube serves all the video streams from the same DNS name. A filtering proxy or an aggressive firewall could probably block the VOD ads with packet inspection although SSL makes that harder. But even so there’s no reason the app would let you get away with it; it seems quite likely the Youtube TV app would just refuse to let you watch anything if it can’t force the ads into your eyeballs.

A little birdie tells me another way to skip Youtube TV ads is to stream on a computer with ad blockers installed. The fancier ones can block the VOD ads while still showing the show. The problem then is you need to get the video to your TV screen. Chromecast won’t work for that, because it just sends the URLs over to be played so you aren’t watching your computer’s ad-free stream. HDMI or video mirroring will work. But this all requires you have a PC in the loop. My goal here is to get the TCL Roku TV to do everything, no PCs involved. The downside is Roku isn’t about to let you install an ad blocker.

Starlink Dishy: getting some deeper status

This blog post contains details on some hidden status method from Starlink’s user terminal, including what satellite it’s currently talking to.

I’ve been hacking around a bit with Dishy, the Starlink user satellite terminal. They provide some nice consumer tools for basic status: am I connected, what kind of bandwidth am I getting, a basic graph of history of outages. And a new feature, a fancy 2d map of where it thinks obstructions are (ie: the trees around you).

Behind the scenes Dishy implements a gRPC server with lots and lots of data. And happily the server supports reflection, so you can interrogate it for features. They keep adding new features! Mostly I’ve interacted with this using the starlink-grpc-tools package; it hides all the gRPC and just provides some command line programs for dumping data to CSV, InfluxDB, whatever. It’s quite nice! But it’s limited in that it only supports some of Dishy’s methods. There are others!

gRPC software

Ironically I have no experience working with gRPC. The hacking tool of choice seems to be grpcurl which lets you invoke methods via the command line. That’s a little low level so I am using grpcui which gives a simple web UI to gRPC servers that support reflection. There’s lots of other options for a tool like that btw.

So, what other gRPC methods are hiding in there?

dish_get_context

First try is a jackpot; dishGetContext. It mostly returns some stuff in other methods; device_info, obstructions, etc.

Update: lol that didn’t last long. Now when I call the method I get “PermissionDenied”, I think because of a firmware update. It was working on firmware a4908729. It’s now failing on firmware 4990ce8d.

But it also returns a bunch of information that looks to be about which satellite Dishy is currently talking to! It will tell me my cell ID (shouldn’t change?), a satellite ID, a gateway ID, and a “seconds to slot end”. It looks like Dishy swaps satellites every 15 seconds. The satellite IDs correlate pretty well with what a satellite tracker says. There’s also a “backup beam” that turns on sometimes after packet loss. It’s all super cool!

device_info	
id	ut01000000-00000000-000XXXXX
hardware_version	rev1_pre_production
software_version	990b956d-a7fc-4c9b-a3ab-c09a309ac425.uterm.release
country_code	US
utc_offset_s	-28799
obstruction_fraction	0.0064355433
obstruction_valid_s	178496
cell_id	1142511
pop_rack_id	38
seconds_to_slot_end	3.531043
device_state	
uptime_s	178780
initial_satellite_id	1186
initial_gateway_id	544
on_backup_beam	true

Here’s a quick little shell script to monitor cell, satellite, gateway, and also a ping to 8.8.8.8 once a second.

while :; do
  grpcurl -plaintext -d '{ "dishGetContext": {} }' 192.168.100.1:9200 SpaceX.API.Device.Device/Handle | 
    jq  '.dishGetContext|.cellId,.initialSatelliteId,.initialGatewayId,.onBackupBeam,.secondsToSlotEnd' | tr '\n' ' '; 
  ping -c 1 -W 1 8.8.8.8 | awk -F/ '/^rtt/ { print $5 }' ; 
  sleep 1;
done   

Unimplemented methods

I went through all the other methods in the gRPC stuff. I skipped the ones that starlink-grpc-tools already supports like “status”, etc. Sorry to anyone else but for me I already knew what those did.

Unfortunately all the other interesting looking methods I could find returned errors suggesting they aren’t implemented. get_next_id, get_location, a bunch of wifi_ methods I suspect are in the router (not Dishy).

dish_emc: Fast Switching

One last method looked interesting, dish_emc. That API call seems mostly to be about RF radio state; channels, modulation details, etc. But there’s a fast_switching flag. Maybe fast switching is a frequency thing. But my hope is that it’s related to a promised feature where Dishy predicts obstructions and switches to new satellites to avoid them. My real hope is that this feature isn’t yet turned on and turning it on will magically make my Internet better.

So I turned it on: "dish_emc":{"fast_switching": true}}. I did that today around 11am on 2021-06-27. It didn’t immediately break my Internet so.. good? I’ll check back in 24 hours to see if it had any change. It may amount to nothing though.

Update: after 24 hours I think making this API call did nothing. Either the API isn’t implemented at all, or fast_switching was already on, or it doesn’t make a difference whatever it does. My money is on the “not implemented at all”. Here’s a graph of drop rate; I made the change right about the middle of the time axis here.

dish_emc looks like it returns status data too. But calling it, all the results are 0 or false. Maybe it’s not implemented or has some lockout. Here’s the result from that set call:

is_test_device	false
uuid	
timestamp	0
state	
sky_search_state	
snr	0
seconds_until_schedule	0
snr_uptime	0
cplane_uptime	0
percent_scheduled	0
cplane_updates	0
downlink_throughput	0
uplink_throughput	0
connected	false
sys_uptime	0
gps_latitude	0
gps_longitude	0
gps_pdop	0
rf_mode	0
phi	0
theta	0
rx_channel	0
tx_channel	0
t_dbf_max	0
t_center	0
baseline_heating	0
additional_heating	0
total_heating	0
target_total_heating	0
auto_power_snow_melt_enabled	false
voltage	0
rx_beam_state	0
tx_beam_state	0
half_duplex_state	0
manual_tilt_enabled	false
tilt_angle	0
pll_tx_lock_detected	0
eirp_exceeded_threshold	false
eirp_scale_override	0
idle_override_enabled	false
theta_override_enabled	false
theta_override_value	0
phi_override_enabled	false
phi_override_value	0
rx_chan_override_value	0
tx_chan_override_value	0
sky_search_override_enabled	false
fast_switching_enabled	false
modulation_override_value	0
force_eirp_failure	false
force_pll_unlock	false
ut_ine_success	0
rf_ready	false

TPM 2.0 and Windows 11

Windows 11 news came out today with a big surprise: it’s going to require TPM 2.0 support in your system. What the heck is that? “Trusted Platform Module”, a bit of extra hardware that’s used to store secrets for security and encryption. And a lot of Windows PCs don’t have it. But it can be added.

The easiest way to see if your system will run Windows 11 is to run Microsoft’s health check app. It’ll give you a simple yes/no. If it says “no” it’s likely it’s because your system doesn’t have TPM 2.0. To test for TPM specifically try running “tpm.msc” from the start menu (Win-R): it will tell you the status of TPM on your system.

Neither of my desktop PCs have it, neither my fairly new and fancy Asus X570-Pro nor my older cheaper Asus Z270-P. It seems pretty random whether a desktop machine has it or not. Hopefully most newer laptops do? I don’t know, I think my 2017 Razer Blade does.

You can add TPM hardware to some motherboards. There’s a 14 pin header for that purpose if you’re lucky. My X570-Pro has one, the Z270-P does not. If you have the header can then buy a little motherboard specific add-on module like this Asus one for pretty cheap, $15 or $20. I bet those are about to get scarce!

Some motherboards also support something called “fTPM” or “firmware TPM” (AMD) or PTT (Intel). This implements TPM in other parts of the motherboard’s hardware rather than a specific dedicated TPM. Perhaps that’s less secure, I don’t know. My X570-Pro has that ability. I turned it on in the BIOS and now my system is cleared as ready to run Windows 11. Not sure about the older Z270-P system, the manual has no info on TPM in it.

I’m curious why Microsoft is requiring TPM; given it’s not universal or may only exist behind an obscure BIOS setting this choice has to cut deeply into their market. They use TPM for BitLocker, their hard drive encryption product. I’ve never seen the need to use that myself so never looked in to TPM before. I wonder if TPM is good for anything else in practice? Linux supports it and can use it for some things like generating ssh keys.

Plotter materials

One thing I like about pen plotting is how crunchy the materials are. I’m used to doing generative art and graphic design on screen where all the lines are pixel-perfect and if anything you try to hide the pixels, too. Ink and paper are much messier. Paper has texture and fiber. Ink bleeds and flows unevenly. There’s different kinds of pen inks, pigments that sit on top of the paper vs dyes that soak into it.

But despite liking all that crunchiness I also want control. I am particularly frustrated with the dot you get when the pen is dropped on to a page as the ink blots into the paper. Different materials have different amounts of bleed, consistency, etc. Sometimes you want something that works pretty much like pixels on a screen.

For paper I like this Neenah Exact Vellum Bristol, 8.5″ x 11″, 67 lb/147 gsm. It’s good heavy card stock. Paper is nicely flat but has just a bit of texture so that a swift moving pen leaves a slight graininess. (It’s not polished paper). It’s pretty cheap too, about $0.04 a sheet, so I’m using this for sketches that I expect to throw away.

The other paper I’ve used is this generic 5×7 note card 80lb / 216 gsm. The paper is a bit more polished than the vellum. I haven’t looked at cards too closely, mostly I just liked it came with matching envelopes and in small quantities.

Pens are a much bigger fun topic. I’ve tried lots but my go-to for basic solid line work is the Sakura Pigma Micron 05. My favorite thing is the very clean line it makes. Seriously looks like magic coming out of the pen, a solid smooth line. Almost no pooling / dots at the start or end of a line. I’ve never seen it smear or soak through heavy paper. The pens work great in a vertical orientation and ink flows cleanly at 50% speed on an AxiDraw; 75% starts being a little too fast. They come in a reasonable variety of colors, 15 in all, although the palette is a little heavy on the dark colors. The ink is advertised as archival quality. The 0.45mm pen (size 05) has the most color options and the line genuinely seems about 0.45mm thick. Parallel lines spaced 0.4mm show just a bit of white paper through, 0.3mm parallel lines make for a nearly solid color.

(I should disclose I’m a noobie to the pen plotter world, only been playing around with it on the side for a few months. There’s lots more to learn about materials!)

Android Tablet: Samsung Galaxy Tab S7+

A little over a year ago I bought an Android tablet on a whim. I liked it so much I’ve already upgraded it, trading up from an Samsung Galaxy Tab S5e to an S7+. It’s kind of a dumb time to be buying this, Samsung is likely to announce the S8 line in a few weeks. But I got a good price on the 256GB storage model.

Really what I wanted was a bigger screen. The S5e has an excellent 11″ screen (245x160mm) but the S7+ has a 12.4″ screen (285x185mm). iPad Pro size, not iPad size. They’re both excellent AMOLED screens but the extra inch in each direction is great for media consumption. The real thing that put me over the top was reading comic books; juts a little small for old eyes on the 11″.

Other than that the S7+ is just an upgrade all around. More storage, more RAM (get the 256GB storage at least; the 128GB has less RAM), faster CPU (8 cores, good lord). Great battery; lasted 5 days with 8 hours of the screen being turned on. Fingerprint sensor hidden under the screen which is a nice improvement. Really it’s just a great piece of hardware. There’s a common meme that the Android tablet market is dead. It’s true there are fewer manufacturers than there used to be but Samsung is doing such a great job it’s fine.

Still reasonably happy with Samsung’s software, or rather the way it gets out of the way when you don’t use it. I switched to Nova Launcher again for the launcher and the rest of Samsung’s stuff mostly disappears. Except the parts I want, like the facial recognition unlocking. Samsung’s a little slow with Android releases, I think about 6 months behind? But they do get there and have a decent track record of support longevity.

And then there’s the S-Pen. I don’t know what to say about the S-Pen. This is Samsung’s big innovation, they’ve been at stylus support for a lot longer than Apple. It’s quite good at drawing, the pressure sensitivity is nice. Mostly it seems to serve to augment the UI, there’s all these gestures you can make with the pen both on screen and in the air to do magic things like take screenshots and scribble on them, zoom the camera, etc. I guess it’s kind of neat? But it requires you hold a pen in your hand; I’m perfectly happy with the touchscreen, thanks. And the pen gets in the way. It magnetically attaches nicely to the back of the screen but there it is sitting out. I have a case that holds the pen on the side and that’s OK too only the pen is thicker than the tablet, so everything’s unnecessarily bulky. I’ve already put the pen away permanently and now am looking for a case that doesn’t make any effort to leave room for it. Maybe if I were drawing art on my tablet I’d be excited to use it.