Programmer's Overview of Decent


First page of John's presentation


In 2019

I presented here and 13,000 people watched!


Youtube video


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 DE1appView 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 JohnPage of the Quickstart guideAnother page of the Quickstart guide


    Tolerance for imperfection

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


    a UI was needed to display the data neutrally and truthfully

    The download page on the Decent websiteDifferent profiles


    DUI widgets library

    by Enrique Bengoechea

    Enrique's DUI widgets library


    Native-looking widgets

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


    App Extensions

    14th page of John's presentation


    App Extensions Example

    App extensions example


    Easily make new UIs

    Example UIStreamline SkinDamian'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 buttonUpdate button with update in progressApp versions buttonThe 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 updated 2023/07/10