Sign in

Larry the optimizer

@fast-code-r-us.bsky.social
243 followers 222 following 338 posts

I optimize code for a living. I'm also good with bits, bytes and pixels. I have been in this digital world since before the days of 8-bit home computers. See my FOSS projects on github.com/bitbank2

PostsRepliesMedia
Larry the optimizer @fast-code-r-us.bsky.social · 30/05/2026
github.com/bitbank2/Fas... New - I shared a low power eink clock project that updates every minute (no flickering). It pulls the correct time/date from NTP every day and a half and uses the ESP32's RTC to keep the time. It can last for months on a small battery using ESP32's deep sleep.
Photo of a 5.2" 1280x720 parallel eink panel showing the current date and time in an attractive, bold font.
092
Larry the optimizer @fast-code-r-us.bsky.social · 29/05/2026
And... it's working from FastEPD. Will release the code shortly...
000
Larry the optimizer @fast-code-r-us.bsky.social · 28/05/2026
In today's mail - A fragile piece of glass masquerading as a retail product. The Waveshare 7.8" parallel Eink panel with IT8951 RPI HAT. Soon to be supported by my FastEPD library (on Linux, Arduino and esp-idf).
150
Larry the optimizer @fast-code-r-us.bsky.social · 16/05/2026
Some new devices landed on my desk over the past few days. Waveshare AMOLED 2.16 ESP32-S3 (480x480), M5 Paper Color (ESP32-S3 w/ 4" Spectra6), NM-CYD-C5 (not shown) and the GKD Pixel2 (nostalgia machine). Each quite impressive in their own way. I added them to my display libraries (not the GKDP2😜)
040
Larry the optimizer @fast-code-r-us.bsky.social · 08/05/2026
I forgot that digitalWrite() in Arduino is very slow. I changed them to gpis_set_level and now it runs at 208 fps :)
010
Larry the optimizer @fast-code-r-us.bsky.social · 05/05/2026
I did some experiments to increase the performance. The per pixel calculations are less important than managing the data sent to SPI. I found a good balance of minimal RAM use plus simple code to get reliable 42fps. It uses a 16-entry lookup table to help rearrange the bits.
110
Larry the optimizer @fast-code-r-us.bsky.social · 04/05/2026
I've got the same board. That Sitronix LCD can take 1-2mA in "high power mode" and < 50uA in low power. I don't have an easy way to measure the current on this board. Why did you put the gfx buffer in SPIRAM, it's only 15K? What kind of speed are you seeing?
100
Larry the optimizer @fast-code-r-us.bsky.social · 02/03/2026
@fasani.bsky.social created something unexpected - a parallel Eink PCB (Sensoria) based on the ESP32-C5. This chip is faster than the ESP32-S3 and has 5GHz WiFi. Now added to my FastEPD library.
142
Larry the optimizer @fast-code-r-us.bsky.social · 30/01/2026
New product taking shape - a #RaspberryPi AMOLED display HAT. It works on RPI Zero/1/2/3/4. Hi-res, super saturated colors and wide viewing angles. This one is 460x460 with capacitive touch. Excellent for gaming too (it's fast). Who's interested?
041
Larry the optimizer @fast-code-r-us.bsky.social · 18/01/2026
Palette settings are just coming online now. I'm implementing 3/4/6-color support too. All will work correctly soon...
022
Larry the optimizer @fast-code-r-us.bsky.social · 07/01/2026
New KiCad project shared to Github - my RPI to UNO LCD shield HAT. Allows use of high speed parallel (and cheap) LCDs. github.com/bitbank2/RPI...
010
Larry the optimizer @fast-code-r-us.bsky.social · 20/12/2025
That's easy for the compiler when the loop count is a constant. A trick to make it work on variable length arrays is to make an inner loop of a constant size:
010
Larry the optimizer @fast-code-r-us.bsky.social · 12/12/2025
Hey @pimoroni.com - your Inky Impression 7.3" just learned a new trick - it can run TRMNL 😜 The new Spectra6 panel is a nice improvement - faster and better contrast.
Photo of a Pimoroni Inky Impression 7.3" 800x480 panel showing a TRMNL weather display.
1101
Larry the optimizer @fast-code-r-us.bsky.social · 08/12/2025
Parallel GPIO on the original RPI 1 and ZeroW can do interesting things too (e.g. drive QSPI displays), but the single core Armv6 CPU is too slow for modern projects of any type. RPI Z2W is the minimum useful board. This GIF player runs at 50fps (360x360 pixels) on the Z2W - much slower on the ZW.
Photo of RPI Zero with a custom perfboard PCB holding a round 1.53" ST77916 QSPI LCD on top. A frame from a Homer Simpson GIF is displayed.
020
Larry the optimizer @fast-code-r-us.bsky.social · 18/11/2025
New toy - Waveshare 1.54" ESP32-S3 e-paper thing. I added support for it to bb_epaper as a named device (1 line init). Good power circuitry, sensors, good price.
060
Larry the optimizer @fast-code-r-us.bsky.social · 14/11/2025
I just added support for the LilyGo T-Deck Pro to bb_epaper (github.com/bitbank2/bb_...). It's a named device, so the GPIO connections and panel type are under a single name (EPD_LILYGO_T_DECK_PRO). N.B. Don't use DEEP_SLEEP because the reset line is NOT connected to an ESP32 GPIO.
Photo of the LilyGo T-Deck Pro showing bold black text on a white background.
130
Larry the optimizer @fast-code-r-us.bsky.social · 02/10/2025
Finally got some copper heat sinks to test the Radxa Cubie A7z. It still runs too hot, but is relatively stable now. It's basically a RPI0 sized RPI5. It runs code 2-3x faster than an RPI4. Too small an area to dissipate that much heat. Need to find a way to lower the CPU clock speed.
130
Larry the optimizer @fast-code-r-us.bsky.social · 21/09/2025
A proud moment for power efficiency yesterday. I was able to get my nRF52840 ePaper badge to run well just using light sleep. It displays a clock on a 2.9" 296x128 EPD which updates every 10 seconds. With an average of 200uA current draw, it will run for several months on a coin cell.
Screenshot from Nordic Semi's Power Profiler showing a 10 second capture with a small spike in the middle when the display update occurs.
191
Larry the optimizer @fast-code-r-us.bsky.social · 15/09/2025
Bigger what - offering 2 different upgrades at the same time: I think I'll wait on both/neither.
130
Larry the optimizer @fast-code-r-us.bsky.social · 25/08/2025
I've had this idea for a while - support for 3 and 4-color EPD images (compressed as G5 in 2 bit planes). Still in development, but you can try it (bb_epaper, dev branch). The tool converts PNG to G5 with color matching. Result - 8:1 lossless compression and easy to use the results.
Photo of a 4-color and 3-color epaper display panel showing smiley face images.
130
Larry the optimizer @fast-code-r-us.bsky.social · 29/05/2025
I created breakout boards to easily connect the inexpensive OLEDs and 'blue' ST7789 PCBs to Xiao, Nano & Feather. Inexpensive and easy to use. I also like the ESP32 boards with built in displays.
110
Larry the optimizer @fast-code-r-us.bsky.social · 03/04/2025
I updated the blog post with example (Arduino) code to see the speed increase for yourself. Spoiler (see screenshot below from running it on an ESP32-S3)
020
Larry the optimizer @fast-code-r-us.bsky.social · 09/03/2025
#Embedded and #Arduino developers - what if you could run/debug/profile your project from the comfort of your PC (Xcode on Mac in this case)? youtu.be/j1ryXNiYefc Most Arduino libraries should work unmodified. This is my AnimatedGIF demo (library+sketch unchanged) running on an iPhone.
140
Larry the optimizer @fast-code-r-us.bsky.social · 06/03/2025
Throwback Thursday - one of my more useful projects (family approved 😀). A low cost ESP32 weather / clock. Source code is here: github.com/bitbank2/CYD... It's been happily running in our kitchen for the last 8 months. The code supports multiple models of the "CYD".
Photo of the JC4827W543 ESP32-S3 plus 480x270 QSPI LCD showing the weather info, current time and a calendar indicating the current day.
1111
Larry the optimizer @fast-code-r-us.bsky.social · 05/03/2025
A new side project on my long list of side projects...Image Slinger. An iOS/MacOS tool to prepare and transmit images for eink displays. The screenshot is it running on my MacBook Air as a pseudo-iPad app. Image compression options will be added next.
050
Larry the optimizer @fast-code-r-us.bsky.social · 25/02/2025
I just added a new example to my bb_lvgl project. This one is in the class of "Cheap Yellow Displays" from Guition. The JC4827W543 is an ESP32-S3 PCB with a QSPI 480x272 LCD. To use a different CYD, just change the display type parameter in lcd.begin().
041
Larry the optimizer @fast-code-r-us.bsky.social · 24/02/2025
Here's the code to do it (I enhanced the demo a little): github.com/bitbank2/bb_... Soon will be joined by code for my eink libraries.
000
Larry the optimizer @fast-code-r-us.bsky.social · 23/02/2025
The @pimoroni.com Tutfy2040 (native code, of course) can also use my bb_spi_lcd library to work with LVGL
230
Larry the optimizer @fast-code-r-us.bsky.social · 23/02/2025
The premise for the software optimization book/course I'm creating. Does it resonate with you?
A screenshot of a large paragraph of text which won't fit here. It describes in great detail the justification for learning how to optimize software.
020
Larry the optimizer @fast-code-r-us.bsky.social · 18/02/2025
"Zero cost" antialiasing of fonts now in FastEPD. A 2x sized version is drawn and 2x2 pixels are converted to a gray level (very efficiently, of course). Roboto_Black 40pt on top and 80pt with AA applied on the bottom. The complete 80pt bitmap font (G5 compressed) is only 9K of FLASH.
160
Larry the optimizer @fast-code-r-us.bsky.social · 07/02/2025
I'm adding functional+fuzz tests and new examples to my JPEGDEC library. Here is a DMA best practices Arduino sketch with a detailed explanation of the how's and why's of DMA: github.com/bitbank2/JPE...
070
Larry the optimizer @fast-code-r-us.bsky.social · 12/01/2025
I added a new Arduino example to my bb_rtc library which allows you to set all of the fields of the RTC using 2 buttons and an OLED display. github.com/bitbank2/bb_...
Photo of a small green PCB with a blue/black SSD1306 128x64 OLED attached. The OLED is showing the current time and date.
020
Larry the optimizer @fast-code-r-us.bsky.social · 01/01/2025
Another parallel eink product is now supported by my library - the Inkplate5 Gen 2 (1280x720).
122
Larry the optimizer @fast-code-r-us.bsky.social · 30/12/2024
The grayscale is looking nearly perfect too.
010
Larry the optimizer @fast-code-r-us.bsky.social · 29/12/2024
The latest parallel eink code is coming along well. Getting 16 good gray levels from black and white panels is challenging because you have to make them dance between black and white many times. The API I created makes it very easy to use (M5 PaperS3 pictured w/Arduino JPEG example)
2111