<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="assets/xml/rss.xsl" media="all"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Ralsina.Me</title><link>https://ralsina.me/</link><description>It's a whole thing.</description><atom:link href="https://ralsina.me/rss.xml" rel="self" type="application/rss+xml"></atom:link><language>en</language><lastBuildDate>Mon, 08 Jun 2026 12:22:12 GMT</lastBuildDate><generator>Nikola (getnikola.com)</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><item><title>ESP-Osito News for June 6, 2026</title><link>https://ralsina.me/weblog/posts/esp-osito-news-for-june-6-2026.html</link><dc:creator>Roberto Alsina</dc:creator><description>&lt;a name="OTA-Updates-in-the-Settings-App"&gt;&lt;/a&gt;
&lt;h2&gt;OTA Updates in the Settings App&lt;/h2&gt;

&lt;p&gt;The Set­tings app now in­cludes a  &lt;strong&gt;Sys­tem&lt;/strong&gt;  sec­tion with:&lt;/p&gt; 
 &lt;ul&gt;
&lt;li&gt;Cur­rent firmware ver­sion dis­play&lt;/li&gt;  &lt;li&gt;Up­date check ac­tion&lt;/li&gt;  &lt;li&gt;Firmware up­date ac­tion&lt;/li&gt;  &lt;/ul&gt;


&lt;p&gt;This will down­load the lat­est firmware and in­stall it. Al­ter­na­tive­ly you
can down­load a firmware to /sys­tem/­firmware.bin in the SD card and re­boot.&lt;/p&gt; 
 &lt;a name="App-Management"&gt;&lt;/a&gt;
&lt;h2&gt;App Management&lt;/h2&gt;

&lt;p&gt;Al­so, there is now a "App­s" tag in the set­tings ap­p. Cur­rent­ly you can on­ly use it to unin­stall app­s, but more is planned.&lt;/p&gt; 
 &lt;a name="Reader-App"&gt;&lt;/a&gt;
&lt;h2&gt;Reader App&lt;/h2&gt;

&lt;p&gt;Bet­ter progress saves! More re­li­able and con­sis­ten­t.&lt;/p&gt;</description><category>esp32</category><category>esposito</category><category>programming</category><guid>https://ralsina.me/weblog/posts/esp-osito-news-for-june-6-2026.html</guid><pubDate>Sat, 06 Jun 2026 15:00:00 GMT</pubDate></item><item><title>ESP-Osito News for June 4, 2026</title><link>https://ralsina.me/weblog/posts/esp-osito-news-for-june-4-2026.html</link><dc:creator>Roberto Alsina</dc:creator><description>&lt;a name="Shell-App:-A-Command-Line-for-Esposito"&gt;&lt;/a&gt;
&lt;h2&gt;Shell App: A Command Line for Esposito&lt;/h2&gt;

&lt;p&gt;The latest addition to the app roster is a shell — a simple command-line
environment running in text mode on the 320x240 display. It supports &lt;code&gt;ls&lt;/code&gt;,
&lt;code&gt;cd&lt;/code&gt;, &lt;code&gt;cp&lt;/code&gt;, and &lt;code&gt;mv&lt;/code&gt; as builtins, and any two-token command that isn't a
builtin is treated as &lt;code&gt;&amp;lt;app&amp;gt; &amp;lt;file&amp;gt;&lt;/code&gt;, launching Esposito apps directly
from the command line.&lt;/p&gt;

&lt;p&gt;It fea­tures in­line line edit­ing with cur­sor move­ment (Fn+A/D), his­to­ry
nav­i­ga­tion (Fn+W/S), Ctr­l+U to clear the line, and Ctr­l+L to clear the
screen. The cur­rent work­ing di­rec­to­ry is dis­played in a sta­tus bar and
per­sist­ed across ses­sions through the con­fig API, along with up to 20
his­to­ry en­tries.&lt;/p&gt; 
 &lt;p&gt;The shell is de­lib­er­ate­ly bare­bones — no pipeli­nes, no redi­rec­tion, no
tab com­ple­tion, no vari­able ex­pan­sion. What it does pro­vide is the right
foun­da­tion to add those things lat­er.&lt;/p&gt;</description><category>esp32</category><category>esposito</category><category>programming</category><guid>https://ralsina.me/weblog/posts/esp-osito-news-for-june-4-2026.html</guid><pubDate>Thu, 04 Jun 2026 15:00:00 GMT</pubDate></item><item><title>Wireless Keyboards For All Your Projects</title><link>https://ralsina.me/weblog/posts/wireless-keyboards-for-all-your-projects.html</link><dc:creator>Roberto Alsina</dc:creator><description>&lt;p&gt;When you are start­ing a new elec­tron­ics pro­jec­t, you of­ten need a bunch of con­trols to trig­ger things. Like, you want to have 4 or 6 or 10 but­tons to do  &lt;em&gt;things&lt;/em&gt;.&lt;/p&gt; 
 &lt;p&gt;This puts you in a com­pli­cat­ed po­si­tion be­cause it means you need to build
a thing be­fore you know if the thing is worth build­ing. Wiring 10 but­tons is &lt;strong&gt;a lot of work!&lt;/strong&gt;  so let's not do that.&lt;/p&gt; 
 &lt;p&gt;Us­ing  &lt;a href="https://github.com/ralsina/bt2i2c"&gt;bt2i2c&lt;/a&gt;  then any­thing that can talk I2C (and that is a very low bar!) can use a full wire­less key­board, as long as you
con­nect three pin­s!&lt;/p&gt; 
 &lt;p&gt;&lt;img src="https://ralsina.me/images/stand.jpg" alt="stand"&gt;&lt;/p&gt; 
 &lt;p&gt;The ba­sic con­cept is:&lt;/p&gt; 
 &lt;ul&gt;
&lt;li&gt;Get a Pi­co W&lt;/li&gt;  &lt;li&gt;Get a Screen (op­tion­al, but use­ful)&lt;/li&gt;  &lt;li&gt;Get a cheap BT key­board (clas­sic or BLE, both work)&lt;/li&gt;  &lt;li&gt;Get the bt2i2c firmware on­to the Pi­co W&lt;/li&gt;  &lt;li&gt;Con­nect your project to the Pi­co W via I2C&lt;/li&gt;  &lt;/ul&gt;

&lt;p&gt;Then, on your project side, use the client for the BBQ20 or BBQ10 key­boards
from sol­der par­ty.This is (sup­posed to be) 100% com­pat­i­ble!&lt;/p&gt; 
 &lt;p&gt;And that's it, you get keys via I2C, and can con­trol your new project at will.&lt;/p&gt; 
 &lt;p&gt;The screen will show you when it's scan­ning, or con­nect­ed, or if you need to type a PIN. If you don't have a screen, use the pi­co's USB se­ri­al port.&lt;/p&gt;</description><category>electronics</category><category>keyboard</category><guid>https://ralsina.me/weblog/posts/wireless-keyboards-for-all-your-projects.html</guid><pubDate>Thu, 04 Jun 2026 14:55:38 GMT</pubDate></item><item><title>Dead World (Convergence Book 6)</title><link>https://ralsina.me/weblog/posts/dead-world-convergence-book-6.html</link><dc:creator>Roberto Alsina</dc:creator><description>&lt;div&gt;
&lt;table&gt;
&lt;tr&gt;
&lt;td valign="top"&gt;
&lt;img class="img-thumbnail" style="width:10vw;" src="https://i.gr-assets.com/images/S/compressed.photo.goodreads.com/books/1777902438l/251801868._SX318_.jpg" width="10vw" alt="Cover for Dead World (Convergence Book 6)"&gt;
&lt;/td&gt;
&lt;td valign="top"&gt;
&lt;div class="panel"&gt;
&lt;ul class="list-group"&gt;
&lt;li class="list-group-item"&gt;  &lt;b&gt;Au­thor:&lt;/b&gt;  Craig Alan­son &lt;/li&gt;&lt;li class="list-group-item"&gt;  &lt;b&gt;Rat­ing:&lt;/b&gt; 
★
★
★ &lt;/li&gt;&lt;li class="list-group-item"&gt;  &lt;a href="https://www.goodreads.com/review/show/8631212740?utm_medium=api&amp;amp;utm_source=rss"&gt;See in goodreads&lt;/a&gt;  &lt;/li&gt;&lt;/ul&gt;
&lt;h3&gt;Review:&lt;/h3&gt;
&lt;p&gt;I can't get over how Alan­son is rewrit­ing his skip­py books as fan­ta­sy.&lt;/p&gt;  &lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;</description><category>books</category><category>goodreads</category><guid>https://ralsina.me/weblog/posts/dead-world-convergence-book-6.html</guid><pubDate>Thu, 04 Jun 2026 00:00:00 GMT</pubDate></item><item><title>ESP-Osito News for May 31, 2026</title><link>https://ralsina.me/weblog/posts/esp-osito-news-for-may-31-2026.html</link><dc:creator>Roberto Alsina</dc:creator><description>&lt;a name="Peanut-2d-GB:-Game-Boy-Emulation-on-ESP32"&gt;&lt;/a&gt;
&lt;h2&gt;Peanut-GB: Game Boy Emulation on ESP32&lt;/h2&gt;

&lt;p&gt;Yes, re­al­ly. The ES­P32 CYD is now a Game Boy. Peanut-GB is a DMG em­u­la­tor run­ning
as an Es­pos­i­to ap­p, achiev­ing 40-60 FPS at 240MHz with no PSRAM.&lt;/p&gt; 
 &lt;p&gt;ROMs are load­ed from the SD card in­to flash mem­o­ry and mem­o­ry-mapped for fast
ac­cess. The 160x144 Game Boy dis­play is cen­tered on the 320x240 screen with black
bor­der­s, just like the re­al thing. &lt;/p&gt;&lt;figure class="lightbox"&gt;
&lt;a href="https://github.com/ralsina/esposito/tree/main/apps/peanut_gb"&gt;&lt;img alt="Game Boy emulation on a $5 microcontroller" src="https://esposito.ralsina.me/posts/peanut_gb.png"&gt;&lt;/a&gt;
&lt;figcaption&gt;Game Boy emulation on a $5 microcontroller&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;a name="Controls"&gt;&lt;/a&gt;
&lt;h3&gt;Controls&lt;/h3&gt;

&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt; Action       &lt;/th&gt;
&lt;th&gt; Key &lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt; D-Pad       &lt;/td&gt;
&lt;td&gt; W/A/S/D &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt; A Button    &lt;/td&gt;
&lt;td&gt; L   &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt; B Button    &lt;/td&gt;
&lt;td&gt; M   &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt; Select      &lt;/td&gt;
&lt;td&gt; O   &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt; Start       &lt;/td&gt;
&lt;td&gt; P   &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt; Save State  &lt;/td&gt;
&lt;td&gt; K   &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt; Load State  &lt;/td&gt;
&lt;td&gt; J   &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt; Exit        &lt;/td&gt;
&lt;td&gt; ESC &lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;


&lt;p&gt;ROMs go in &lt;code&gt;/sdcard/roms/&lt;/code&gt; on the SD card. For legal homebrew Game Boy games, check out &lt;a href="https://hh.gbdev.io/"&gt;Homebrew Hub&lt;/a&gt;.&lt;/p&gt;

&lt;a name="Sprite-API-and-Flash-ROM-Loading"&gt;&lt;/a&gt;
&lt;h2&gt;Sprite API and Flash ROM Loading&lt;/h2&gt;

&lt;p&gt;To make the em­u­la­tor pos­si­ble, the firmware gained two new sys­tem­s:&lt;/p&gt; 
 &lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Sprite API&lt;/strong&gt;: Palet­ted sprites for ef­fi­cient pix­el-lev­el ren­der­ing. The Game Boy
dis­play us­es a 2bpp sprite (5.7KB on sys­tem heap in­stead of a 23KB RG­B565 buffer­),
with one  &lt;code&gt;sprite_write_row&lt;/code&gt;  call per scan­line.&lt;/p&gt;&lt;/li&gt;  &lt;li&gt;&lt;p&gt;&lt;strong&gt;Flash ROM load­­ing&lt;/strong&gt;: ROMs are copied from SD card in­­­to the ap­p_­­code flash par­ti­­tion
and mem­o­ry-mapped. This gives ze­ro-over­­head point­er dere­f­er­ence in­­stead of slow SD
card I/O dur­ing em­u­la­­tion.&lt;/p&gt;&lt;/li&gt;  &lt;/ul&gt;


&lt;a name="Improved-Event-Handling"&gt;&lt;/a&gt;
&lt;h2&gt;Improved Event Handling&lt;/h2&gt;

&lt;p&gt;The OS event loop now drains all pend­ing events in­stead of pro­cess­ing one per
it­er­a­tion. This elim­i­nates the in­put lag that was es­pe­cial­ly no­tice­able in
fast-­paced apps like the em­u­la­tor. The event queue was al­so dou­bled from 32 to
64 slot­s.&lt;/p&gt; 
 &lt;a name="CPU-at-240MHz"&gt;&lt;/a&gt;
&lt;h2&gt;CPU at 240MHz&lt;/h2&gt;

&lt;p&gt;The CPU fre­quen­cy was bumped from 160MHz to 240MHz, which — com­bined with
com­pil­er op­ti­miza­tions and bank 0 RAM caching — is what makes Game Boy em­u­la­tion
vi­able on this hard­ware.&lt;/p&gt; 
 &lt;a name="Credits"&gt;&lt;/a&gt;
&lt;h2&gt;Credits&lt;/h2&gt;

&lt;p&gt;The em­u­la­tor core is  &lt;a href="https://github.com/deltabeard/Peanut-GB"&gt;Peanut-GB&lt;/a&gt;  by
Mah­yar Koshk­ouei, a re­mark­ably fast sin­gle-­head­er C99 Game Boy DMG em­u­la­tor
li­brary. Li­censed un­der the MIT Li­cense.&lt;/p&gt;</description><category>esp32</category><category>esposito</category><category>programming</category><guid>https://ralsina.me/weblog/posts/esp-osito-news-for-may-31-2026.html</guid><pubDate>Sun, 31 May 2026 15:00:00 GMT</pubDate></item><item><title>ESP-Osito News for May 30, 2026</title><link>https://ralsina.me/weblog/posts/esp-osito-news-for-may-30-2026.html</link><dc:creator>Roberto Alsina</dc:creator><description>&lt;a name="Color-Palettes-21-"&gt;&lt;/a&gt;
&lt;h2&gt;Color Palettes!&lt;/h2&gt;

&lt;p&gt;Set­tings now has a Pal­ette op­tion that lets you cy­cle through four col­or themes:
CGA (clas­sic), CGA Light, So­lar­ized Dark, and So­lar­ized Light. The choice is
saved and ap­plied at boot, so your pre­ferred look per­sists across restart­s.&lt;/p&gt; 
 &lt;p&gt;Al­so, all but­ton la­bels are now bold bright white for bet­ter read­abil­i­ty.&lt;/p&gt; 
 &lt;a name="Portrait-Mode-Fixes"&gt;&lt;/a&gt;
&lt;h2&gt;Portrait Mode Fixes&lt;/h2&gt;

&lt;p&gt;The paint app and the Ar­duboy com­pat­i­bil­i­ty lay­er (used by the Num­bers game)
were both bro­ken in por­trait ori­en­ta­tion. The graph­ics buf­fer was us­ing the
phys­i­cal screen di­men­sions (320x240) in­stead of the ro­tat­ed di­men­sions
(240x320), caus­ing gar­bled draw­ing, in­vis­i­ble palettes, and of­f-­cen­ter
ren­der­ing. All fixed now — ev­ery­thing works cor­rect­ly in both land­scape and
por­trait.&lt;/p&gt; 
 &lt;a name="Screenshots-of-Graphics-Apps"&gt;&lt;/a&gt;
&lt;h2&gt;Screenshots of Graphics Apps&lt;/h2&gt;

&lt;p&gt;Press­ing Fn+ESC to take a screen­shot now works for graph­ic­s-­mode apps (paint,
Ar­duboy games). Pre­vi­ous­ly on­ly tex­t-­mode screen­shots were cap­tured, and
graph­ics apps would pro­duce al­l-black im­ages. &lt;/p&gt;&lt;figure class="lightbox"&gt;
&lt;a href="https://github.com/ralsina/esposito/tree/main/apps/paint"&gt;&lt;img alt="Paint app screenshot — yes, that's a real screenshot from the device!" src="https://esposito.ralsina.me/paint.png"&gt;&lt;/a&gt;
&lt;figcaption&gt;Paint app screenshot — yes, that's a real screenshot from the device!&lt;/figcaption&gt;
&lt;/figure&gt;</description><category>esp32</category><category>esposito</category><category>programming</category><guid>https://ralsina.me/weblog/posts/esp-osito-news-for-may-30-2026.html</guid><pubDate>Sat, 30 May 2026 15:00:00 GMT</pubDate></item><item><title>ESP-Osito News for May 29, 2026</title><link>https://ralsina.me/weblog/posts/esp-osito-news-for-may-29-2026.html</link><dc:creator>Roberto Alsina</dc:creator><description>&lt;a name="Got-published-on-Hackster-and-Hackaday-21-"&gt;&lt;/a&gt;
&lt;h2&gt;Got published on Hackster and Hackaday!&lt;/h2&gt;

&lt;p&gt;Thanks to both sites for the nice word­s:&lt;/p&gt; 
 &lt;ul&gt;
&lt;li&gt;&lt;a href="https://hackaday.com/2026/05/29/esp-osito-eschews-retrocomputing-for-modern-code-on-modern-equivalent-hardware/"&gt;Hack­a­day&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;&lt;a href="https://www.hackster.io/news/the-cyd-gets-an-operating-system-a77bf82a4862.amp"&gt;Hack­ster&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;I ad­mit I post­ed this  &lt;a href="https://www.reddit.com/r/esp32/comments/1to40ky/esposito_a_os_for_esp32_that_treats_it_like_a/"&gt;on red­dit too&lt;/a&gt;&lt;/li&gt;  &lt;/ul&gt;


&lt;a name="Dynamic-Fonts-21-"&gt;&lt;/a&gt;
&lt;h2&gt;Dynamic Fonts!&lt;/h2&gt;

&lt;p&gt;Fonts are tricky in em­bed­ded plat­form­s. There are many for­mat­s, some are
monochrome, oth­ers are "s­mooth" be­cause they sup­port trans­paren­cy, and you
have to choose what char­ac­ters the font in­cludes.&lt;/p&gt; 
 &lt;p&gt;You can em­bed the font in your bi­na­ry, which is slight­ly an­noy­ing and means
the font us­es space in flash, which is lim­it­ed.&lt;/p&gt; 
 &lt;p&gt;Or you can ship mul­ti­ple fonts and load them from some­where, be it flash or the SD
card. But nor­mal­ly that means you load it in­to RAM, which is even  &lt;em&gt;more&lt;/em&gt;  lim­it­ed!&lt;/p&gt; 
 &lt;p&gt;Usu­al­ly this means you ship  &lt;em&gt;one&lt;/em&gt;  font.&lt;/p&gt; 
 &lt;p&gt;Well, no. I want ES­P-Os­i­to to be  &lt;em&gt;good&lt;/em&gt;  and  &lt;em&gt;user-friend­ly&lt;/em&gt;. It's al­ready bad enough
that we on­ly sup­port monospaced fonts!&lt;/p&gt; 
 &lt;p&gt;So, I im­ple­ment­ed a way to load sets of fonts called packs (for ex­am­ple: reg­u­lar, bold, ital­ic, bold-i­tal­ic Hack 9p­t) from the SD card, which is es­sen­tial­ly in­finite,  &lt;em&gt;to&lt;/em&gt;  flash.&lt;/p&gt; 
 &lt;p&gt;This us­es a fixed amount of flash (larg­er than your larg­er font, maybe 400K­B) but
you can have  &lt;strong&gt;as many fonts as you want&lt;/strong&gt;   as long as you  on­ly use one pack at a time!&lt;/p&gt; 
 &lt;p&gt;So now ES­P-Os­i­to ships with:&lt;/p&gt; 
 &lt;ul&gt;
&lt;li&gt;Hack&lt;/li&gt;  &lt;li&gt;IBM Plex Mono&lt;/li&gt;  &lt;li&gt;In­con­so­la­ta&lt;/li&gt;  &lt;li&gt;Ioske­ley&lt;/li&gt;  &lt;li&gt;Kode Mono&lt;/li&gt;  &lt;li&gt;No­va&lt;/li&gt;  &lt;/ul&gt;


&lt;a name="Toolbar-Widget"&gt;&lt;/a&gt;
&lt;h2&gt;Toolbar Widget&lt;/h2&gt;

&lt;p&gt;I added a tool­bar wid­get to the ui li­brary. It au­to­mat­i­cal­ly and taste­ful­ly ar­ranges but­tons in a row. Then I went to town with it, and used it  &lt;em&gt;ev­ery­where&lt;/em&gt;.
The on-screen-key­board? Tool­bars. The Cal­cu­la­tor? Tool­bars. Most screens in most app­s? be­lieve it or not, al­so tool­bar!&lt;/p&gt; 
 &lt;p&gt;This made apps sim­pler, more pow­er­ful, and more con­sis­tent&lt;/p&gt; 
 &lt;a name="App-Fix-and-Improvements"&gt;&lt;/a&gt;
&lt;h2&gt;App Fix and Improvements&lt;/h2&gt;

&lt;p&gt;Too many to coun­t, file man­ag­er is now touch friend­ly, all screens that would not
run prop­er­ly with­out a key­board now should work fine with touch on­ly.&lt;/p&gt; 
 &lt;a name="Got-a-new-3d-Printer-21-"&gt;&lt;/a&gt;
&lt;h2&gt;Got a new 3d Printer!&lt;/h2&gt;

&lt;p&gt;So I am mak­ing im­proved ver­sions of the cas­es. I will prob­a­bly pub­lish them on print­a­bles soon. &lt;/p&gt;&lt;figure class="lightbox"&gt;
&lt;a href="https://cdn.bsky.app/img/feed_thumbnail/plain/did:plc:735jqbf5vjpoc5a6w6kqkp2d/bafkreidk3pcazxse3hau5gaxquttobovdf6b2b4u3gncq44tgr4qryz4l4"&gt;&lt;img alt="This is a handsome device!" src="https://cdn.bsky.app/img/feed_thumbnail/plain/did:plc:735jqbf5vjpoc5a6w6kqkp2d/bafkreidk3pcazxse3hau5gaxquttobovdf6b2b4u3gncq44tgr4qryz4l4"&gt;&lt;/a&gt;
&lt;figcaption&gt;This is a handsome device!&lt;/figcaption&gt;
&lt;/figure&gt;</description><category>esp32</category><category>esposito</category><category>programming</category><guid>https://ralsina.me/weblog/posts/esp-osito-news-for-may-29-2026.html</guid><pubDate>Sat, 30 May 2026 02:29:42 GMT</pubDate></item><item><title>ESP-Osito News for May 27, 2026</title><link>https://ralsina.me/weblog/posts/esp-osito-news-for-may-27-2026.html</link><dc:creator>Roberto Alsina</dc:creator><description>&lt;a name="The-ebook-reader-now-has-a-bookstore"&gt;&lt;/a&gt;
&lt;h2&gt;The ebook reader now has a bookstore&lt;/h2&gt;

&lt;p&gt;You can go to  &lt;a href="https://esposito.ralsina.me/books.html"&gt;http­s://e­s­pos­i­to.ralsi­na.me/­book­s.html&lt;/a&gt;  and pick any of 100
book­s. Plug your de­vice via US­B, open the ebook read­er, click "get" in the book
list, then click the down­load icon on the book. The book au­to­mat­i­cal­ly down­loads to the de­vice!&lt;/p&gt; 
 &lt;p&gt;This is most­ly in­tend­ed as a test­bed for de­liv­er­ing "stuff" to the de­vices, like an app store
or any­thing else. But in the mean­time, hey, books to read!&lt;/p&gt; 
 &lt;div class="grid"&gt;

&lt;div class="card"&gt;
&lt;figure class="lightbox"&gt;
&lt;a href="https://github.com/ralsina/esposito/tree/main/apps/reader"&gt;&lt;img alt="Downloading from the bookshop!" src="https://esposito.ralsina.me/reader-download.png"&gt;&lt;/a&gt;
&lt;figcaption&gt;Downloading from the bookshop!&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;


&lt;div class="card"&gt;
&lt;figure class="lightbox"&gt;
&lt;a href="https://github.com/ralsina/esposito/tree/main/apps/reader"&gt;&lt;img alt="DOZENS of books" src="https://cdn.bsky.app/img/feed_fullsize/plain/did:plc:735jqbf5vjpoc5a6w6kqkp2d/bafkreiczen3yg6rbb4u2szpkfha5xmgtge7zgykhnu53w7joe3fvafrc7e"&gt;&lt;/a&gt;
&lt;figcaption&gt;DOZENS of books&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;


&lt;a name="Better-Unicode-Support"&gt;&lt;/a&gt;
&lt;h2&gt;Better Unicode Support&lt;/h2&gt;

&lt;p&gt;Pre­vi­ous­ly most things were ASCII on­ly. Now full uni­code sup­port is there. The
lim­i­ta­tion is that a full uni­code font would not  &lt;em&gt;fit&lt;/em&gt;  so I added all the nor­mal
latin char­ac­ter­s, plus some sym­bols we can use for bet­ter UI, so we can show "▼"
rather than write "DOWN" in a but­ton.&lt;/p&gt; 
 &lt;p&gt;Al­so, of course, this makes the ebook read­er look a lot bet­ter with bet­ter quote
char­ac­ter­s, en or em-­dash, ac­cent­ed char­ac­ters and so on.&lt;/p&gt;</description><category>esp32</category><category>esposito</category><category>programming</category><guid>https://ralsina.me/weblog/posts/esp-osito-news-for-may-27-2026.html</guid><pubDate>Wed, 27 May 2026 20:01:15 GMT</pubDate></item><item><title>ESP-Osito: a useful operating system for the cheapest computer</title><link>https://ralsina.me/weblog/posts/esp-osito-a-useful-operating-system-for-the-cheapest-computer.html</link><dc:creator>Roberto Alsina</dc:creator><description>&lt;p&gt;Moore's law says for the same mon­ey you get twice the com­put­er ev­ery 18 month­s. 
That should al­so mean that you get the same com­put­er for half the mon­ey. Sad­ly
that is not true, and you need to wait around 40 month­s. But this means that at
some point the  &lt;em&gt;worst&lt;/em&gt;  com­put­er you can buy is go­ing to be fast.&lt;/p&gt; 
 &lt;p&gt;I think that time has come. The cheap­est com­put­er you can buy is a $10  &lt;a href="https://github.com/witnessmenow/ESP32-Cheap-Yellow-Display"&gt;Cheap Yel­low Dis­play&lt;/a&gt;  which
is about as pow­er­ful as a "good" com­put­er from 1992. And I de­cid­ed I was go­ing to treat it as a re­al com­put­er and not as a toy. So I wrote  &lt;a href="https://esposito.ralsina.me"&gt;ES­P-Os­i­to&lt;/a&gt;  which tries to be a  &lt;em&gt;re­al&lt;/em&gt;  op­er­at­ing sys­tem for it.&lt;/p&gt; 
 &lt;p&gt;You can learn more about it at  &lt;a href="https://esposito.ralsina.me"&gt;its own web­site&lt;/a&gt;  of course but here's some high­light­s.&lt;/p&gt; 
 &lt;p&gt;It has app­s. It has set­tings. It has net­work­ing. It has THE game (s­nake). It has a 
text ed­i­tor. It has an ebook read­er. You can in­stall app­s. You can  &lt;em&gt;do&lt;/em&gt;  things
with it, be­cause this is a  &lt;em&gt;re­al&lt;/em&gt;  com­put­er.&lt;/p&gt; 
 &lt;p&gt;&lt;img src="https://esposito.ralsina.me/reader2.png" alt="Ebook Reader"&gt;&lt;/p&gt; 
 &lt;p&gt;&lt;img src="https://esposito.ralsina.me/filemanager.png" alt="File Manager"&gt;&lt;/p&gt; 
 &lt;p&gt;&lt;img src="https://esposito.ralsina.me/lali.png" alt="AI chat????"&gt;&lt;/p&gt; 
 &lt;p&gt;It's al­so hun­dreds of times slow­er than your cell­phone, so it has lim­it­s, but if
we write soft­ware  &lt;em&gt;for the hard­ware we have&lt;/em&gt;  ... things hap­pen. Like:&lt;/p&gt; 
 &lt;ul&gt;
&lt;li&gt;Apps start in mil­lisec­onds&lt;/li&gt;  &lt;li&gt;The OS boots in un­der a sec­ond&lt;/li&gt;  &lt;li&gt;Things are pret­ty snap­py&lt;/li&gt;  &lt;li&gt;Apps re­mem­ber their state, so even with­out mul­ti­task­ing you just ... switch? And it work­s?&lt;/li&gt;  &lt;li&gt;Apps have a sim­ple API ex­posed to them, so they are not ter­ri­bly hard to write&lt;/li&gt;  &lt;li&gt;There are few re­sources but ... it's enough?&lt;/li&gt;  &lt;/ul&gt;

&lt;p&gt;It hon­est­ly feels kin­da retro, from a  &lt;em&gt;bet­ter, more fun&lt;/em&gt;  er­a. It is sort of
rem­i­nis­cent of palm pi­lot (no mul­ti­task­ing, app check­points, touch­screen) 
and of 80s home com­put­ers (text and graph­ics mod­es) and of unix/lin­ux 
(ter­mi­nal mod­e)&lt;/p&gt; 
 &lt;p&gt;And it's fun to think of hard­ware com­bi­na­tion­s. I can add a key­board. Or not. I can con­trol things via pins (this is a mi­cro­con­troller!) Or not. It's  &lt;strong&gt;cheap&lt;/strong&gt;, in the
way Rasp­ber­ry Pis are not any­more, now that they are sim­ply not-­great PCs with pin­s.&lt;/p&gt; 
 &lt;p&gt;Add a 3d print­er and ... hey, that looks black­ber­ry-ish!  &lt;/p&gt; 
 &lt;p&gt;&lt;img src="https://esposito.ralsina.me/bberry.png" alt="GreyBerry"&gt;&lt;/p&gt; 
 &lt;p&gt;Or like a Peb­ble!  &lt;/p&gt; 
 &lt;p&gt;&lt;img src="https://esposito.ralsina.me/esposito.jpg" alt="Pebble"&gt;&lt;/p&gt; 
 &lt;p&gt;Or ... some­thing!&lt;/p&gt; 
 &lt;p&gt;&lt;img src="https://esposito.ralsina.me/clamshell.png" alt="Something"&gt;&lt;/p&gt; 
 &lt;p&gt;What I need now is peo­ple try­ing it. Peo­ple mak­ing it work in oth­er hard­ware. Peo­ple writ­ing app­s. Peo­ple just check­ing it out.&lt;/p&gt; 
 &lt;p&gt;Hope I find some!&lt;/p&gt;</description><category>esposito</category><category>programming</category><guid>https://ralsina.me/weblog/posts/esp-osito-a-useful-operating-system-for-the-cheapest-computer.html</guid><pubDate>Mon, 25 May 2026 18:49:55 GMT</pubDate></item><item><title>The Lost Bookshop</title><link>https://ralsina.me/weblog/posts/the-lost-bookshop.html</link><dc:creator>Roberto Alsina</dc:creator><description>&lt;div&gt;
&lt;table&gt;
&lt;tr&gt;
&lt;td valign="top"&gt;
&lt;img class="img-thumbnail" style="width:10vw;" src="https://i.gr-assets.com/images/S/compressed.photo.goodreads.com/books/1721406796l/65137920._SY475_.jpg" width="10vw" alt="Cover for The Lost Bookshop"&gt;
&lt;/td&gt;
&lt;td valign="top"&gt;
&lt;div class="panel"&gt;
&lt;ul class="list-group"&gt;
&lt;li class="list-group-item"&gt;  &lt;b&gt;Au­thor:&lt;/b&gt;  Evie  Woods &lt;/li&gt;&lt;li class="list-group-item"&gt;  &lt;b&gt;Rat­ing:&lt;/b&gt; 
★
★
★
★ &lt;/li&gt;&lt;li class="list-group-item"&gt;  &lt;a href="https://www.goodreads.com/review/show/8608454645?utm_medium=api&amp;amp;utm_source=rss"&gt;See in goodreads&lt;/a&gt;  &lt;/li&gt;&lt;/ul&gt;
&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</description><category>books</category><category>goodreads</category><guid>https://ralsina.me/weblog/posts/the-lost-bookshop.html</guid><pubDate>Mon, 25 May 2026 00:00:00 GMT</pubDate></item></channel></rss>