Programmer's Overview of Decent

First page of John's presentation


In 2019

I presented here and 13,000 people watched!


What is this?

an espresso machine built from scratch

Espresso machines


Why?

  • because espresso was pre-scientific
  • espresso machines were hard wired for one approach only

  • Espresso machine


    So? What to do?

    Sensors were needed to capture real data

    Inner parts of an espresso machine


    An app was needed to display data neutrally and truthfully

    The DE1app


    Programming espresso shots

    a visual espresso-programming tool to encourage experimentation

    View on the DE1app
    View on extended parameters of the DE1app


    Communicating

    sharing of learning, best practices, integration of search results

    8th page of John's presentation


    Simplifying & Sharing

    Distribution of what was learnt to non-experts

    Blog post by John
    Page of the Quickstart guide
    Another page of the Quickstart guide


    Tolerance for imperfection

    View of a profile in the DE1app
    View of a profile in the DE1app
    View of a profile in the DE1app


    a UI was needed to display the data neutrally and truthfully

    The download page on the Decent website
    Different profiles


    DUI widgets library

    by Enrique Bengoechea

    Enrique's DUI widgets library


    Native-looking widgets

    Native-looking widget, light mode
    Native-looking widget, dark mode


    App Extensions

    14th page of John's presentation


    App Extensions Example

    App extensions example


    Easily make new UIs

    Example UI
    Streamline Skin
    Damian's DSX skin


    Sample Skin

    An example 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

    Update button
    Update button with update in progress
    App versions button
    The app directory


    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 different 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

    22nd page of John's presentation

    #presentation #app #programming #John




    john created 2023/07/10, john updated 2026/10/20