Tweets
RT @HillaryClinton: A great use of your next hour:
Double-check your voter registration and ask two friends to do the same.
(original)
playing the tape ahead; realizing my fall is going to be largely about convincing people to #voteforthedemocrat. I almost hope it is Bernie, so I don’t have to convince his supporters. Maybe a Bernie/Yang ticket so they’re all on board and I can phone-bank swing states in peace.
(original)
the trump campaign is gleeful at the situation in iowa tonight. they’re hoping people mistrust the results, tweet “rigged” and thrust acrimony to the fore.
please don’t do this.
keep calm. take a deep breath. vote for the democrat in november.
it is literally that simple.
(original)
Replying to @josecastillo
So the Open Book is going to try to support your language. To be clear, my humble project probably isn’t going to take over the world of electronic reading. Still, I think that the things that we make are statements about the kind of world we want to see; this is mine. </thread>
(original)
Replying to @josecastillo
I think it’s rad to say that this device — which has limited power and capacity — chooses to spend it on supporting the cultural works of your language. Not “you can make it do Farsi by loading some extra fonts,” but rather treating all languages as equally worthy of inclusion.
(original)
Replying to @josecastillo
This is just one example of many; whether we’re talking about internationalization or accessibility, privacy, freedom or human rights, too often we build technology with a blind eye to how the thing we have built will affect people and shape the world once it’s out in the wild.
(original)
Replying to @josecastillo
Text early on was written in ASCII; the only letters available were those used in English. This may have been a valid engineering tradeoff at the time, and yet, if your culture’s works were written in Cherokee, that engineering choice diminished your ability to participate fully.
(original)
Replying to @josecastillo
How does this relate to the book (and my weekend working on Perso-Arabic scripts)? As technologists and engineers, we build objects that shape the world. None of it is value-neutral; through ignorance or carelessness, we can build technology that diminishes and disempowers.
(original)
Replying to @josecastillo
Later, @IlanStavans talked about Yiddish; how one might not expect a language with no flag or capital city to survive in an era of endangered languages, yet it seems to be thriving — in no small part because of its rich theatrical and literary tradition.
(original)
Replying to @josecastillo
At one talk, @rebeccanagle spoke about the link between language and sovereignty, the idea of language and especially tribal language as a crucial element of a shared history and world view. “What does it mean to be sovereign if we lose our way of life?”
(original)
<thread> At last night’s #nightofphilosophy at the @BKLYNlibrary, I saw a couple of talks that touched on language, and the discussions clarified something about the Open Book that I’ve never quite articulated beyond that phrase in the readme (“all the languages of the world”).
(original)
Replying to @ryan_w
I’m hoping to put together some notes and smaller projects that will help with this! To be honest, I didn’t have much in the way of soldering skills this time last year, but I’ve learned that they’re not hard to learn :)
(original)
I love Unicode for its endless nooks and crannies. Take code point U+FDFD: ﷽. That’s one character, a ligature for the Basmala; translates to “In the name of God, the Most Gracious, the Most Merciful.” GNU Unifont manages to fit it into one 16x16-pixel glyph:
(original)
Replying to @josecastillo
(oh and I suppose the technical answer to my Big O question: yes, my O(n) function is, in theory, equivalent to O(n•log(m)), given a constant m; O(n) and O(2n) are both linear time. But in practice, I’m waiting around twice as long on the second one, because the line is steeper)
(original)
Big O questions answered: the lookup table is worth it. Implemented the algorithm both ways, and before optimizing anything else, it’s a 2-3x speedup. So, on-device Arabic shaping! Mostly. Still some work to do on bidirectional mirroring )hence the weird parentheses(
(original)
Replying to @cogliano
About what I expected. Don’t get me wrong, I develop software for a living, I know that this kind of “analytics” is just The Way Things Are Done™, but I do think it’s worth us questioning those ways from time to time :)
(original)
Replying to @abhifxtech
Thanks!!
(original)
Replying to @joncruz
Yea the more I think about it, the more I think I should just implement both and see if there’s a real-world difference. Certainly more productive than an afternoon of thinking about it, which is what I did today 😬
(original)
Replying to @DavidCasselTNS
Thank you!!
(original)
Replying to @josecastillo
(2/2) The catch: if I know m is constant (there are only 49 code points to consider), they’re both linear time, right? Can A still be more efficient? Efficient enough that I should waste an extra 926 bytes of disk space on a very sparse LUT? (on a device with ~4MB of disk space)
(original)
(1/2) wow my big O is rusty. Implementing a string operation that requires one lookup per character. Option A is a lookup table, O(n); complexity grows with the string’s length. Option B is a binary search, O(n•log(m)); complexity grows with both string and search space size.
(original)
“You know, I honked.” Unbelievable. I mean, totally believable in this city, but unconscionable. https://twitter.com/bigjoshlevine/status/1223121127473418240
(original)
Replying to @josecastillo
the post on Hackaday; should have put it here to begin with: https://hackaday.io/project/168761-the-open-book-feather/log/173457-on-how-to-get-there-from-here
(original)
Replying to @DavidCasselTNS
I saw that, I’m sorry, I don’t have much to report about timelines (this all happened literally a week ago!) but I shared some thoughts about the bigger picture here: https://twitter.com/josecastillo/status/1222958293674528769
(original)
Replying to @josecastillo
the TL;DR line: “If I’m being honest with myself, there was a time when I could not have built the Open Book, and if I’m going to say ‘You can build it,’ maybe I need to take you along on the journey.”
(original)
Replying to @cogliano
I was talking to a colleague, thinking it could be interesting to have an edition of the book that’s say $10 more, but you use that $ to commission a series of CC short stories to come with it. Pay writers, do good work, expand the commons; no supermassive data collection needed.
(original)
Wow. It’s funny that today I’m trying to solve the problem of saving a user’s current page in a book; my solution was going to be a table with a column for “book”, and a column for “current page”. Why on earth would you need a UTC timestamp of every page tap going back two years? https://twitter.com/adrjeffries/status/1222277544730337280
(original)
Replying to @bigjoshlevine
most of the boards I make are small, like $9 for 3, and free shipping keeps it there. Also find their customer service stellar. It is more for larger boards, but I get to use the same design rules and I know what to expect. Plus supporting a business that supports open source HW.
(original)
(mostly i’m sharing this because i’m not sure if it’s the ideal solution; working with the babel stuff, I used lookup tables for everything and it served me well, but now I’m worried that I may have “everything-looks-like-a-nail”-itis 😬)
(original)
Replying to @emilesnyder
Definitely the former; the use case is to be able to store and restore a user’s position quickly.
(original)
Replying to @djfiander
Yep, and it would have to take into account screen size and margins and whatnot. Maybe needs to include some kind of hash of the settings that went into the calculation.
(original)
Trying to solve a random access problem for book: need to match a page (say, 100) to a byte offset, ideally without word wrapping pages 1-99 each time. The idea: paginate once; store a lookup table with the location and length of each page in the header. I think this makes sense?
(original)
Replying to @tannewt
Heh, that reminds me of this old photo, Bill Gates showing off the storage capacity of a CD-ROM.
(original)
Replying to @bigjoshlevine
Marking that goal down!
(original)
Heh, testing some more, with a deeper sleep mode, I can actually get this down to 2~4 mW, but then I have to wake the book up with the reset button instead of the lock button. The engineer in me is stoked; the UX designer is screaming.
(original)
Replying to @mntmn
Measured at the battery but that sounds about right, the battery output does go through a 3.3V regulator so there’s likely some loss there. And the microcontroller is still awake enough to handle interrupts, so it’s not totally powered down.
(original)
Honest question, I don’t know this far yet: what’s considered good power consumption for a mobile device? The Open Book seems to consume 100 mW when on, 110 mW to update the screen and 12mW in deep sleep. 1.9Wh battery ≈ 18 hours active use, 6 days standby? Is that how it works?
(original)
Replying to @scribblesonnapk
yep, masking out a part I wasn’t able to find in time for the build
(original)
Replying to @EnthusiastAtari, @oshpark and @ohsummit
oops meant to @ you in this reply https://twitter.com/josecastillo/status/1222233954771775492
(original)
Replying to @domugraphic, @pimoroni and @ohsummit
+@siliconchris At some point in the future you’ll be able to buy one at @digikey; @adafruit is going to manufacture some! https://blog.adafruit.com/2020/01/24/winners-of-the-take-flight-with-feather-contest-hackaday-hackadayio-supplyframe-adafruit-digikey/
(original)
Replying to @SanbornVR
Atmel / Microchip SAMD51, the J variant for Open Book and the G variant for Tiny Book (fewer pins, tinier). I learned a lot working with the Feather M0 and M4, and I feel like those + the Arduino Zero really created a vibrant ecosystem of code and community around the SAMD chips.
(original)
Replying to @moddedLimes and @ohsummit
176x264, so, pretty small! The bigger Open Book board has a more reasonable 300x400 screen; this little guy is more of a curiosity :)
(original)
Replying to @jeffeb3, @pimoroni and @ohsummit
I don’t have a domain name for the project; as of now, all the resources are on its GitHub page: https://github.com/joeycastillo/The-Open-Book
(original)
Replying to @josecastillo
Don’t get me wrong, I still love C++ and getting my hands dirty with low level arcana, but CircuitPython makes making a joy. I was up til 2:30 just playing with the new board, I was having so much fun! So thank you to everyone. I’m stoked to contribute more in the future. /thread
(original)
Replying to @josecastillo
Over the weekend I wanted to port some of my font work to CircuitPython, which involved interfacing with an SPI Flash chip. Ladyada pointed me to a driver for a similar chip to the one I was using, and wow is it simple. spi.write(cmd) / spi.readinto(response). Actual code! 4/?
(original)
Replying to @josecastillo
…iterate fast on the init sequence, then bake it into the board def so that all my old code “just worked” with the new screen. Not sure who all to thank for touchio, but after ages staring at disassembled proprietary touch libraries, this libre cap touch method is magical. 3/?
(original)
Replying to @josecastillo
This is a new piece of hardware: new chip, new screen, new input method, and within hours I had the screen displaying text and headphones playing sounds when I tapped the slider. @tannewt: displayio is awesome! E-paper displays are notoriously finicky, but I was able to… 2/?
(original)
thread: a hug report to the #CircuitPython team. I’m not sure I’ve shouted this out enough: CircuitPython is a revolution. Last night I more or less wrote a board definition for Tiny Book while it was in the oven, and had it working by dinner. (this, for the record, is wild) 1/?
(original)
Replying to @blasse2 and @ohsummit
You know it! (Use OSO-TIBO-A1-02; I’ll add a note, but A1-03 is a WIP and has two unrouted signals) https://github.com/joeycastillo/The-Open-Book/tree/master/Tiny%20Book
(original)
Out of the oven tonight: The Tiny Book. An attempt to squish as much of the Open Book’s functionality as possible into a teeny tiny package. Mostly for fun, tbh, and to play with new ideas and form factors. Maybe a badge to bring to the @ohsummit :)
(original)