Tweets
Replying to @josecastillo
ugh, it’s close but it’s off by a fraction of a percent. Probably because my orrery display truncates to two digits of precision. The watch won’t have this problem since it’s using doubles internally; but for my napkin math, I’ll need more precision.
(original)
Replying to @josecastillo
right ok so I guess first I need the distance from the sun, which l guess makes sense now is just the Pythagorean theorem, but in three dimensions instead of two? let’s do Jupiter (seen here from above and from edge-on)
(original)
Replying to @josecastillo
this is actually better than graph paper: MacOS comes with the Grapher app, which lets me plot the Z coordinate as well. so I have Mercury, Venus, Earth, Mars and Jupiter. I have X, Y and Z coordinates for each one. but I need to convert that to spherical coordinates? (I think?)
(original)
Replying to @wtnb29
I’ll take it!
(original)
Replying to @josecastillo
(the display is in hundredths of an astronomical unit, so a display of -145 is -1.45 AU. It makes sense from a UX perspective because those last two digits are small; we don’t have a decimal segment to work with, so the small numbers represent the places after the decimal point.)
(original)
Replying to @josecastillo
first I guess I should recreate my graph paper thing. If you’re playing along at home, here’s the orrery (WIP)! Press “Alarm” to cycle through planets; long press it to calculate; press again to cycle X/Y/Z coords. Long press to return to planet selection. https://joeycastillo.sdf.org/orrery-v1/watch.html
(original)
Replying to @josecastillo
this is actually good! I’m going to maybe understand some of these principles by the end of this, instead of just plugging numbers into code that I don’t fully grok. still I wish I hadn’t thrown away my graph paper solar system; it would have come in v handy right now…
(original)
Replying to @josecastillo
And I can compare the results of my calculations to well-known correct answers, so I’ll at least know how poorly I’m doing in real-time. Also, side note: this website is hosted by Casio? Casio is gonna help me hack planetary coordinates into a Casio watch? https://keisan.casio.com/exec/system/1224748262
(original)
Replying to @josecastillo
on the plus side, every programmer’s favorite website also has pointers for my astronomy questions: https://astronomy.stackexchange.com/questions/21764/how-to-convert-vsops-xyz-coordinates-to-heliocentric-spherical-lbr-coordinates
(original)
brain hurty. I’m going to have to learn some astronomy tomorrow. I could try to port over the things that I need from an (admittedly excellent) javascript library, but that would involve me, y’know, reading javascript…
(original)
Replying to @josecastillo
realized belatedly that I broke the thread; it continues here: https://twitter.com/josecastillo/status/1493236354377035782
(original)
Replying to @josecastillo
That code is here. And it’s very cool: it’s six different versions of the equations that provide solutions in slightly different forms, AND ten different truncations of them that trade accuracy for size and speed. This is how I got it to fit on the watch! https://github.com/gmiller123456/vsop87-multilang
(original)
Replying to @josecastillo
the orrery watch face! of course it doesn’t actually clock in at a cool 231 lines of code; all the interesting math is courtesy of Greg A. Miller’s excellent VSOP87 library, which does all of the heavy math involved in calculating the planets’ positions. https://github.com/joeycastillo/Sensor-Watch/blob/orrery/movement/watch_faces/complication/orrery_face.c
(original)
Replying to @josecastillo
For a first attempt, I think it’s pretty good! https://www.theplanetstoday.com/index.html
Of course the next step is converting these into right ascension and declination (for finding them in the sky) as well as rise and set (so you know when to look for them).(original)
Replying to @josecastillo
I admit this isn’t the most interesting party trick, but so far with this watch face I can draw the solar system on graph paper using nothing but a Casio wristwatch. You’ll note that I mixed up my X & Y axes when pointing to Neptune; there’s still no accounting for human error (:
(original)
HOLY SHIT Y’ALL we’re in the space business now! This is the Sensor Watch board computing the position of Jupiter in the solar system, compared to reference data from NASA’s Horizons system in yellow. Still some work to turn that into positions in the sky, but: we have an orrery!
(original)
Replying to @WarblerGrey
great minds think alike! I’m getting back on the orrery work this afternoon :)
(original)
Replying to @MrZANE42
on a stock F-91W, that digit will only display 0-6, so the designers tied the top and bottom segments together (since all of those have both segments on). Just means we have to get creative to display characters that use just one or the other, like U or 7. https://joeycastillo.github.io/Sensor-Watch-Documentation/wig/display.html#limitations-of-the-clock-digits
(original)
good and normal things to find when you git branch -v
(original)
Replying to @WarblerGrey
that is a fantastic idea, I love it!
(original)
Replying to @josecastillo
8-segment moon phase animation. The folks who designed this display in 1989 had no idea.
(original)
Replying to @josecastillo
And my code for the moon phase watch face. I’m admittedly not proud of the monster list of watch_set_pixel calls in that giant switch statement, but it was useful while playing with the animation and it works for now. https://github.com/joeycastillo/Sensor-Watch/commit/0fcc60e3889ed0e2b044acba9f5dcec7df299587
(original)
Replying to @josecastillo
They’re also inviting their community to build and share their own apps for Tidbyt, which is right up my alley in terms of empowering folks to take control of their tech. Apps are written in Starlark, a dialect of Python; here’s moon phase by @alanfleming. https://github.com/tidbyt/community/blob/main/apps/phaseofmoon/phase_of_moon.star
(original)
Replying to @josecastillo
This code is actually a fairly direct port of a community-contributed moon phase app for @HelloTidbyt! (They sit near my workbench @the_prepared.) It feels like we’re chasing similar windmills in terms of trying to imagine quieter, more humane technology. https://tidbyt.com
(original)
Replying to @josecastillo
Demo! You can click on the bottom right button to advance through the days of the month and on into the future. The number at the top right indicates the currently displayed day (which naturally starts at today). http://joeycastillo.sdf.org/moon-phase/watch.html
(original)
Replying to @f4grx
I hear that! the thing is I want the seconds area in sleep mode for the sleep mode indicator, which will shorten the text: Neu, Cres, 1st, Gib, FUL, 3rd. “Fir” and “Thi” could work too, but this feels more self-contained.
(original)
Replying to @f4grx
also 1st and 3rd quarter; the bottom row feels so much more spacious now!
(original)
Replying to @f4grx
brilliant!
(original)
Replying to @josecastillo
I’ve decided I love it! A couple of subtle changes: “neUJ” is now just “Neu”; it gets the point across and feels more centered. Also split the crescent moon into two visuals: halfway through each crescent period it gains one extra segment as it waxes, and loses one as it wanes.
(original)
After sleeping on it I had a new idea for moon phase, but no sense whether it’s awesome or inscrutable: using the 8-segment digit on the top as a visual representation of the moon! One missing thing is “waxing / waning”, but the visual does _technically_ convey that info. 🤔
(original)
Replying to @pauls_3d_things, @gabrielcsapo, @reinhard_at and @sqfmi
it is an adventure!
(original)
Replying to @hpredko and @MitchWagner
What a time to be alive!
(original)
Replying to @josecastillo
This one tho. Wordle 240 5/6*
⬛⬛🟨⬛⬛
⬛🟨🟩⬛⬛
⬛⬛🟩⬛🟨
⬛⬛🟩🟩🟩
🟩🟩🟩🟩🟩(original)
Replying to @josecastillo
anyway, it’s late; I should play with this tomorrow. meantime: if you were looking at a moon phase watch face, what would be the most important piece of data to see at a glance?
(original)
Replying to @josecastillo
ofc then I end up with two problems: F doesn’t fit in the 1st or 3rd spot, and U looks odd there. But whatever, it mostly works. the bigger one is the lack of a W, which means I have to fake “new” as “neLU” or “neUJ”. UJ probably works best; no one expects those letters together.
(original)
Replying to @josecastillo
but hmm. it does invert the information hierarchy. What’s the thing you care about the most: how bright the moon is tonight, or which direction it’s trending? It feels like one of those things matters more, and that one should live on the big line…
(original)
Replying to @josecastillo
oh! that’s actually much nicer
(original)
Replying to @josecastillo
Man, I’m really fighting the display limitations on this one. Waning crescent abbreviates ok, but the X for Waxing will never not look weird. I can only eke out 4 letters of the word “Quarter”, and don’t get me started on “NU mOOn.” Still, at least it gets the information across?
(original)
python watch_face.py complication moon_phase
(original)
Replying to @matterpoetry
YESSSS!!!
(original)
Replying to @josecastillo
like no place yet someplace familiar
(original)
Replying to @AbolTaabol
It’s all on the Internet Archive these days! And QEMU can emulate anything. Bit rot hasn’t taken everything from us yet!
(original)
Replying to @josecastillo
I had installed Bryce to make some gaudy 90s-era monstrosity of a raytraced beach or a fractal mountain for one of these. still might! it’s a delicate line to walk.
(original)
Replying to @creelman_a
every time someone says Ozymandias, I can’t pass up the opportunity to share one of the greatest threads ever to be posted: https://mobile.twitter.com/pateraquetzai/status/1156300892733243392
(original)
Played with some new treatments for the Sensor Watch overlay stickers. Tough to say how well any of them will read half-toned on actual vinyl; I know for a fact our laser printer here at the shop isn’t quite up to the task…
(original)
Replying to @the_perigoso
but the 2.2 volt warning isn’t embedded that deep in the system; it’s just a feature of one of the watch faces in Movement, and it uses the ADC to check the battery voltage once a day. https://github.com/joeycastillo/Sensor-Watch/blob/b91f025542b4be42182de218630ea442eb119ddc/movement/watch_faces/clock/simple_clock_face.c#L71
(original)
Replying to @the_perigoso
Ideally I’d like to configure the BOD for the 1.62 volt event (power critical), but that’s an exercise for another day. For now I’ve discovered that my once a minute wakeup does in fact trigger the check, so I can turn it back off in sleep mode!
(original)
Replying to @the_perigoso
I actually misspoke, the minimum polling rate is once every 64 seconds (max is 512 times a second). The brownout detector is clocked from a 1024 Hz clock, prescaled by a factor from 2 to 65536. I do wonder though if my momentary re-enabling when I wake up will trigger the check…
(original)
Replying to @josecastillo
oh wait once a minute (every 64 seconds). look at me getting my units mixed up. Still, not bad. the power trace suggests it’s a negligible impact.
(original)
Replying to @josecastillo
okay: brownout detector disabled: 5.96 µA. And enabled… 5.96 µA. The reading is a little noisy to be sure, but there’s no appreciable difference, which makes sense: it’s not actually _doing_ anything but once every 64 minutes. But hey, now we know!
(original)