License: Creative Commons by-sa v3
A Tclish Espresso Machine:
Project update (after 7 years)
A programmer talks about espresso.
John Buckman in Vienna, Austria (July 2023)
http://decentespresso.com/doc/
In 2019
I presented here,
and 13,000 people
watched!
https://www.youtube.com/watch?v=Ey30Cg1fM0Q
What is this?
an espresso machine built from scratch
Why?
- because espresso was pre-scientific
- espresso machines were hard wired
for one approach only
So? What to do?
https://www.youtube.com/watch?v=AS6FGEWScmU
sensors were needed to
capture real data
An app was needed to display data neutrally and truthfully
https://www.youtube.com/watch?v=zfJ-dNjHdFE&t=3s
Programming espresso shots
a visual espresso-programming tool to encourage experimentation
Communicating
sharing of learning, best practices, integration of research results
https://www.youtube.com/watch?v=3Ib63xBNrzw
https://visualizer.coee/
https://www.youtube.com/watch?v=VEzH1JBA3k8
Simplifying & Sharing
Distribution of what was learnt to non-experts
Tolerance for imperfection
a UI was needed to display that data neutrally and truthfully
DUI widgets library
https://github.com/decentespresso/de1app/blob/main/documentation/decent_user_interface.md
by Enrique Bengoechea
Native-looking widgets
App Extensions
App Extension Example
Easily make new UIs
skin development via a language-within-a-language approach
Sample Skin
Skin writing extensions
Screen Variables are Tk text widgets that refresh
add_de1_variable "steam_1" 537 1250 -text "" -font Helv_10_bold -fill
$tappable_text_color -anchor "center" -textvariable {[seconds_text
$::settings(steam_timeout)]}
Mechanism for any Tk widget
# 3 equal sized charts
add_de1_widget "off espresso espresso_1 espresso_2 espresso_3" graph 20 267 {
bind $widget [platform_button_press] {
say [translate {zoom}] $::settings(sound_button_in);
An Over-the-air update mechanism
and global challenges with making that actually work
Challenges
shipping the same app on Android, Windows, OSX and Linux#
converting the Tcl app into a WebApp using mp4 streaming#
what kind of people embraced Tcl and why#
what kind of people hated Tcl, why, and what happened then#
the move from open-source-but-one-programmer to a full open source multi-
programmer participation via Github and relinquishing control#
challenges of supporting many dierent resolutions, tablets and Android
versions#
Right-to-left languages
Future
Surprising findings how Tcl outperforms competing other programs (in other
languages) trying to do similar things#
What hasn't turned out well, and what we’re trying to do about it. Bluetooth is
our main problem.#
The future of Tcl for us, as Python, Javascript, as others launch competing apps#
Cloud integration#
Two apps at once: point-of-sale and order queue management. Mobile-
ordering app. iOS via webapp/mp4.
Other Decent Uses of Tcl & Naviserver
Customer admin Espresso machine customization
Customer support
Quickbooks API Integration
Real-time inventory shopping cart
Espresso machine shopping
Internal sta metrics
Real UPS/Fedex monitoring via APIs
Boxing & Shipping via APIs