OF COURSE HANDSTANDS HAD TO HAPPEN!
nostr:nprofile1qqswkhs47p9unc7lsmqsqv9kvh07sf2pq9gurcan4r8r7s524ap0jfclt62u8
https://v.nostr.build/pa6Y6puPk9RdFr22.mp4
#handstand
Its index is so f'n fragile. If it gets corrupted by a power outage, you have to do the long reindexing from scratch.
Absolutely need a UPS for whatever machine it's on and automated nightly backups.
All I know is: builders love builders.
Awesome to meet and get to spend some time with nostr:nprofile1qqst2yn6pr8nxctzwjqq5su83qdflx8qfwwrwytwjt09y5zfsc6uggspypmhxue69uhhyetvv9ujumn0v3jhyatwdejhyuewdejhgam0wf4j7qgmwaehxw309ahx7um5wgh8xct5dphkzunyv4ezucm0d5hszymhwden5te0danxvcmgv95kutnsw43z7f2mgdy down here in El Salvador!

TFW nostr:nprofile1qyfhwumn8ghj7ur4wfcxcetsv9njuetn9uq32amnwvaz7tmnw3exvune9e5hy6tn9e6x7tcpzdmhxue69uhhwmm59e6hg7r09ehkuef0qyt8wumn8ghj7un9d3shjtnwdaehgu3wdejhgtcppemhxue69uhkummn9ekx7mp0qqstwd7k7hyv5nf94v9zchtcwe6gyak529j0ah7tgjueudwrryj2d6c8uxxk5 is no longer content to just sit next to me in her "copilot's" seat.
First the loving headlock to stop her from standing on the table.

Then the struggle to escape...

Seizing the high ground...

UNLEASH THE CHAOS!!

#dogs #dogstr
Yes, though you can tag nostr:nprofile1qyt8wumn8ghj7etyv4hzumn0wd68ytnvv9hxgtcpz4mhxue69uhhyetvv9ujuerpd46hxtnfduhszythwden5te0dehhxarj9emkjmn99uqsuamnwvaz7tmwdaejumr0dshsz9thwden5te0dehhxarj9ehhsarj9ejx2a30qqs09jtvjlmyrxjn37zv70a89csegcz7rpyqjmnw29cveedhv7vagqq7jnjty on questions here or on twitter.
🔥 nostr:nprofile1qyt8wumn8ghj7etyv4hzumn0wd68ytnvv9hxgtcpz4mhxue69uhhyetvv9ujuerpd46hxtnfduhszythwden5te0dehhxarj9emkjmn99uq3xamnwvaz7tm0venxx6rpd9hzuur4vghsz8rhwden5te0dehhxarj95ezu7n9vfjkget99e3kcmm4vshsqg8je9kf0ajpnffclpx087njugv5vp0psjqfdeh9zuxvukmk0xw5qqhd64j0 en español GETTING CLOSER!!! 🔥
It seems so simple, but it took me all day to add the logic to make our titles able to scroll.
https://v.nostr.build/TyiTrRjxLAdrW6rD.mp4
Certain phrases in other languages just aren't going to fit on our tiny screen so this was always a must-have part of this multilanguage effort.
But all of our UI components are custom built -- can't just whip out some css or JS -- so any new behavior takes some work to add in.
Tomorrow: Do the same thing for button text (looking at you, "Herramientas"!).
I thought I could implement a pretty important new nostr:nprofile1qyv8wumn8ghj7un9d3shjtnrw4e8yetwwshxv7tf9uq32amnwvaz7tmjv4kxz7fwv3sk6atn9e5k7tcpz9mhxue69uhkummnw3ezuamfdejj7qgwwaehxw309ahx7uewd3hkctcpz4mhxue69uhkummnw3ezummcw3ezuer9wchsqg8je9kf0ajpnffclpx087njugv5vp0psjqfdeh9zuxvukmk0xw5qqrehznc feature in the uninterrupted 2-3hr block I had earlier today.
Narrator: He didn't even come close. Like not even a little. Like, wow, he's really terrible at time estimates.
Me now:

---
(ya, I'll be fine. Just astonishing and hilarious to be so wrong!)
This is super nerdy, but I've spent most of today so far working on (er, struggling with*) the nostr:nprofile1qyghwumn8ghj7mn0wd68ytnhd9hx2tcpzemhxue69uhk2er9dchxummnw3ezumrpdejz7qg4waehxw309aex2mrp0yhxgctdw4eju6t09uq3xamnwvaz7tm0venxx6rpd9hzuur4vghsz8rhwden5te0dehhxarj95ezu7n9vfjkget99e3kcmm4vshsqg8je9kf0ajpnffclpx087njugv5vp0psjqfdeh9zuxvukmk0xw5qqu9r45v CI test runner (automated process that sanity checks code updates).
We have a typical test suite for it to run, but our screenshot generator is, in its own way, another set of tests that help reveal unexpected bugs.
It's stupidly simple, but it took HOURS to figure out how to get the CI to merge those two sets of test results into one final "coverage" report (how much of the code is actually tested).
Happy to report: success!
https://v.nostr.build/e8X46WSlMuA2AFCE.mp4
With "Coverage report" cleanly in its own section of the CI checks, we'll be able to easily see if any proposed new code additions are missing appropriate tests. In general, coverage should be ngu only. If coverage decreases, your work on those proposed changes is not yet done.
This is building off of amazing work by dbast (https://github.com/dbast) to get these CI checks integrated in our repo in the first place!
---
*sometimes building in public means also exposing just how bad you are at some things. Oof, the guess-and-check struggle!!

Lots of really interesting insights and observations landing hard for me (in a good way) in this podcast ep.
Really strongly recommend giving it a listen.
https://hiddenbrain.org/podcast/the-benefits-of-mixed-emotions/
It's amazing that nostr:nprofile1qyt8wumn8ghj7etyv4hzumn0wd68ytnvv9hxgtcpz9mhxue69uhkummnw3ezuamfdejj7qgcwaehxw309anxjmr5v4ezumn0wd68ytnhd9hx2tcprpmhxue69uhkxetvd3shytnwdaehgu3wwa5kuef0qy88wumn8ghj7mn0wvhxcmmv9uqzqxj6lwv69s9n5z9y52h0c9r2ec8fuak2pe9nuarj6dy3eqp4hta3ks7myh and "DT" and others were able to create a custom Linux OS for us (with reproducible builds!!! 🤯) that gets SeedSigner booted up and running in ~12secs.
BUT, yes, a full linux OS is a ton of overhead. Running bare metal on a microcontroller with basically instant-on and hopefully good enough performance (Pi Zero cpu is a BEAST compared to any microcontroller) will be amazing.
Yikes. Always gotta do BIFO: bitcoin in, fiat out.
Whoa! Checking now... currently only accepts credit card, PayPal, Shop Pay, G Pay.
Boo.
I think this is my first time ordering from them. Usually I stick to the US options. Adafruit generally has everything I need.
But this pimoroni board uses the RP2350 "B" variant (note the bigger physical package (um, heh)) which, crucially, offers more gpio pins than the "A" variant on the sparkfun board.
Smells nice and soudough-y. Flavor is a work in progress. Definitely not sour enough. Need to work on how I'm maintaining my starter and/or fermentation time when making the dough to bring out more flavor.
But the crust IS awesome!
Thanks! This microcontroller side is pretty far beyond my area of expertise so I'm really just fumbling about and googling everything I can.
But the core @SeedSigner code is just plain python right now and is, I think, very easy to work with and should be quite beginner-friendly.
Combo of:
* Python is the easiest coding language to learn and read.
* We put in a lot of effort to make the code organized, simple, and with lots of explanatory code comments.
Bit of nerd pedantry: Pico is Raspi's dev board for their RP2040 and RP2350 (Pico 2). Pico / Pico 2 run on RP2040 / RP2350 microcontrollers. But RP2040 / RP2350 shouldn't be referred to as Picos.
And these two RP2350 dev boards in the pics above have an optional feature that the Pico 2 does not: additional PSRAM. The RP2040 had limited RAM (264kB) that could NOT be expanded, making it a less enticing option at the time. The RP2350 doubles the onboard RAM to 500kB but adds support for PSRAM expansion. So these third-party dev boards have 8MB on board!
So: RP2350, yes! Pico / Pico 2, no thanks!
As to your first question: sorta. Porting to MicroPython on ANY platform definitely makes it easier to support other microcontrollers. But a big problem with the esp32 ecosystem was its compiler. We got our work-in-progress port compiling for esp32-S2 (after much suffering) but never got esp32-S3 to compile. And even the S2 "success" was just too hacky to feel comfortable with trying to make that a viable path.
However, the future of esp32 is all RISC-V. I would hope that would make the compiler issues simpler (but really have no idea).
AND the RP2350 has two RISC-V cores onboard.
So what works for one RISC-V should ideally be easy to make work on another RISC-V (reality is never so kind, tho).
However... my initial RP2350 work will most likely focus instead on its two ARM cores (tho we'll see).
So... yeah, the answer is: sorta.
Your second question: The Pico 2 and these dev boards have NO wifi / bluetooth on board. There is a Pico W and expectation is that there'll be a Pico 2W soon. But obviously that doesn't interest us (and again, Pico 2 doesn't have the expanded RAM).
Sprinting to prep the multilanguage nostr:nprofile1qyghwumn8ghj7mn0wd68ytnhd9hx2tcpzemhxue69uhk2er9dchxummnw3ezumrpdejz7qg4waehxw309aex2mrp0yhxgctdw4eju6t09uq3xamnwvaz7tm0venxx6rpd9hzuur4vghsz8rhwden5te0dehhxarj95ezu7n9vfjkget99e3kcmm4vshsqg8je9kf0ajpnffclpx087njugv5vp0psjqfdeh9zuxvukmk0xw5qqu9r45v release in time* for nostr:nprofile1qys8wumn8ghj7un9d3shjtnndpshwmnev4skwetj9e3k7mf0vd5xzaqprpmhxue69uhkxetvd3shytnwdaehgu3wwa5kuef0qyfhwumn8ghj7am0wsh82arcduhx7mn99uq35amnwvaz7tmnv4hxg6t59ehx7umxd3shyefwvdhk6tcpzemhxue69uhkzat5dqhxummnw3erztnrdakj7qpqad0ptuzte83alpkpqqctvewlaqj5zq23c83m82xw8apg4t6zlynsc0nfk4 but in the meantime I'm SO EXCITED to get these RP2350 dev boards in to play with as soon as I'm back from El Salvador!

The hope is that the RP2350 microcontroller will be an easier platform on which to port SeedSigner to MicroPython. Getting us onto a microcontroller (while still fully supporting the original Pi Zero hardware/codebase, of course!) will open up some huge new possibilities.

---
*("in time" actually means "have a preview release to demo" 'cause there's no way we could get a full final release adequately tested in time)
That's a beautiful sentiment! And true.
Bread is almost scary up close -- those strands of gluten forming a web, its sinewy dry-yet-gooey-ness -- and then the crust side is all blistered and miserable.
And yet both add to the feeling that this was a very successful loaf!

The friend who gave me my starter said that I need to giver "her" (the starter) a name. I'm happy that my yeast and bacteria colony seems to be doing well, but just isn't something I can see developing an anthropomorphic relationship with.

YOWZA! My best sourdough result yet! 40% wheat, 60% bread flour. 75% hydration.

The raised ridge is called the "ear" and is an aesthetic thing that home breadmakers kind of obsess over. First time I've gotten one to pop up like this!
And it's hard to tell from the photo, but the oven spring (how puffy it gets when baked) is huge!
Back side of the ear has some beautiful caramelization.

Eager to cut into it but have to let it cool for a while.
GETTING CLOSER!!!
Not done yet, but able to at least move the nostr:nprofile1qyw8wumn8ghj7mn0wd68ytfj9eax2cn9v3jk2tnrd3hh2ep0qyfhwumn8ghj7mn0wd68ytnkxpkzu6t09uq3zamnwvaz7tmwdaehgu3wwa5kuef0qythwumn8ghj7un9d3shjtnnw3hkuetj9e3k7mf0qyt8wumn8ghj7etyv4hzumn0wd68ytnvv9hxgtcqyrevjmyh7eqe55u0sn8nlfewyx2xqhscfqykumj3wrxwtdm8n82qqetufzw multilanguage code into a DRAFT PR state.
It's a MONSTER. Huge PRs are NOT a best practice, but this one touches everywhere and required some deep refactoring.

Started this work in APRIL 2022!!!

I put it on the shelf ~Oct '22 but THANKFULLY nostr:nprofile1qyg8wumn8ghj7um0d3hkxmewdekz7qg3waehxw309ahx7um5wgh8w6twv5hsz9mhwden5te0wfjkccte9ehx7um5wghxyctwvshsz9nhwden5te0v4jx2m3wdehhxarj9ekxzmny9uq3samnwvaz7tmwdaehgu3wvekhgtnhd9azucnf0ghsqg8hsjwxeyxyll3maqzehkyempwnl5uvpwmewj0eu7t98qsr2xkclq0haft7 carried it forward and kept it alive for the next ~18 months.
Not sure I would've made it this far without his efforts!
(that "We're running out of time before nostr:nprofile1qy2hwumn8ghj7mn0wd68ytn00p68ytnyv4mz7qghwaehxw309ashgmrpwvhxummnw3ezumrpdejz7qguwaehxw309a5x7ervvfhkgtnrdaexzcmvv5h8gmm0d3ej7qghwaehxw309aek2ctjvd5zumn0wvh8gmmyv9uj7qgewaehxw309aex2mrp0yh8xmn0wf6zuum0vd5kzmp0qqswkhs47p9unc7lsmqsqv9kvh07sf2pq9gurcan4r8r7s524ap0jfc630yuq pressure is REAL, Y'ALL!!!!!)
GETTING CLOSER!!!
Not done yet, but able to at least move the nostr:nprofile1qyw8wumn8ghj7mn0wd68ytfj9eax2cn9v3jk2tnrd3hh2ep0qyfhwumn8ghj7mn0wd68ytnkxpkzu6t09uq3zamnwvaz7tmwdaehgu3wwa5kuef0qythwumn8ghj7un9d3shjtnnw3hkuetj9e3k7mf0qyt8wumn8ghj7etyv4hzumn0wd68ytnvv9hxgtcqyrevjmyh7eqe55u0sn8nlfewyx2xqhscfqykumj3wrxwtdm8n82qqetufzw multilanguage code into a DRAFT PR state.
It's a MONSTER. Huge PRs are NOT a best practice, but this one touches everywhere and required some deep refactoring.

Started this work in APRIL 2022!!!

I put it on the shelf ~Oct '22 but THANKFULLY nostr:nprofile1qyg8wumn8ghj7um0d3hkxmewdekz7qg3waehxw309ahx7um5wgh8w6twv5hsz9mhwden5te0wfjkccte9ehx7um5wghxyctwvshsz9nhwden5te0v4jx2m3wdehhxarj9ekxzmny9uq3samnwvaz7tmwdaehgu3wvekhgtnhd9azucnf0ghsqg8hsjwxeyxyll3maqzehkyempwnl5uvpwmewj0eu7t98qsr2xkclq0haft7 carried it forward and kept it alive for the next ~18 months.
Not sure I would've made it this far without his efforts!
Spicy take! That being said, I haven't tried Coracle but happy to take a look.
Hogging bandwidth is one thing, but HOLDING ON to all of that data in memory is a separate matter.
Which browser tab is eating up 5 GB of RAM?!!!
nostr:npub12vkcxr0luzwp8e673v29eqjhrr7p9vqq8asav85swaepclllj09sylpugg. Basically every other day or so I kill the tab to free up the memory.
Can y'all limit your caching? I know nothing about browser-side caching, memory management, etc. But this is pretty ridiculous.
It turns out that "Nothing stops this train" is, in fact, a true statement about more than one train.
cc: nostr:npub1a2cww4kn9wqte4ry70vyfwqyqvpswksna27rtxd8vty6c74era8sdcw83a
