Rafi Khan

Senior Software Engineer | Ottawa, Canada

Supporting society through innovation

PCJ – Friday May 31 2024

Friday 31 May 2024

PCJ – Personal computing journal

  • Alan Kay is famous for saying the personal computing Revolution hasn’t happened yet
  • He is a famous computer scientist who talks about many important issues in computing
  • I am specifically interested in his talks on Smalltalk, personal computing, Dynabook and how to build software
  • He believes we haven’t yet figured out how to build software, and one of the reasons is that we don’t appreciate the need for architecture when building large things
  • To start with I want to make a few claims
    • We don’t know how to write software
    • We don’t write good software
    • We have to figure this out because it has significant implications for augmenting the human condition
  • Why don’t we know how to write good software?
    • I think the main reason is because we don’t care
    • Most software these days are written by businesses who want to make money, or individuals hacking on projects in their free time
    • The business doesn’t care about the software because very rarely are they in the business of selling software. Instead, they are selling solutions to a customer, which happen to be implemented in software
      • For a business, a software problem is always solvable by throwing more money at the problem
      • If the database is slow, add more cores, or hire someone to re-design the architecture
      • It sounds like they want to have good software, but they don’t. They only need good software in so far as it solves their problem.
      • This causes them to fall for the trap of thinking in terms of better
    • An individual working on a project in their free time might be one step further in that they care somewhat about the quality of their system
      • They don’t have the luxury of throwing money at the problem to make it someone else’s problem – such as an employee
      • But the individual suffers from a lack of bandwidth
      • They only have so much knowledge, experience, time and energy.
      • They may have great ideas, but can’t implement all of them
      • They may implement many of them, but cant review, test and deliver them to end users
      • They may build the best software, but who is going to market it, write documentation, audit for security vulnerabilities?
  • We don’t write good software because those that don’t care outnumber those of us who do care.
  • Now what do I want to do about this?
    • I know that small talk exists: Squeak, Pharo
    • I ignore any proprietary implementations as they cannot be used to further the goal of personal computing. These proprietary tools are useful only for industrial software construction.
    • We need a platform for creative computing
    • Somewhere we can do science and art in a new medium (software) in an unlimited fashion (computers)
    • For the time being, we are going to ignore constraints such as funding. Assume that I have $100M and can spend it however I would like.
      • Let’s come back to this later.
    • One thing I believe is that phones and laptops are the devices of the past and present, a tablet with a stylus is the device of the future
    • a tablet with a tool is the only real augmented reality device we have now.
    • in vr/ar headsets you can consume, but not interact, manipulate or create
      • you sort of can with your hands and the controllers
      • the hands are too limited, we need a tool
      • the controllers are along the right lines, but I haven’t found them to be as intuitive as a pen
      • for example, I can give someone a Samsung tablet with onenote open and an s-pen. They will figure out the rest
      • if I wanted to do the same with a meta quest 3 id have to explain many new things to them in regards to how to use the interface
    • having said this, I want to build Alan Kay’s dynabook
    • I don’t know how to do this, I don’t have a plan
    • that’s okay.
    • I want a seed that I can grow into the system I want
    • to that end I want to start with a smalltalk programming environment that runs on a tablet
    • I will then modify this over time to grow it into the dynabook, or something better than that.
  • First goal: have a running smalltalk environment that is usable from a tablet + stylus
  • I have Samsung tablets and phones with pen support.
    • but running smalltalk on android is not something already supported… I think
      • actually, let me pause and spend a few minutes researching this
      • the smalltalks I am aware of are squeak, pharo and cuis. There’s also squeakjs, but let’s leave that one out for now
      • https://lunduke.substack.com/p/a-smalltalk-smartphone-the-squeakphone
      • U8 smalltalk tools android app https://play.google.com/store/apps/details?id=net.smalltalking.s8.jx8&hl=en_CA&gl=US&pli=1
      • https://caffeine.js.org/
      • https://github.com/ErikOnBike/CodeParadise
      • https://eighty-twenty.org/2020/10/07/developing-with-squeak-on-a-cellphone
      • okay, so there has been some work for getting squeak onto an android
      • but i am not seeing anything that is easily usable today
      • except squeakjs and the u8 smalltalk tools
      • ive explored squeakjs and caffeine js before. caffeine and the other work done by Craig latta is very much in line with what I want to build
      • but squeakjs’ ui is really slow, it has these spinners that come up
      • caffeine seemed to work a bit better, though it was also using squeakjs
      • i also know work is being done to use webassembly to make the squeakjs VM run faster

  • Why is it okay to ignore the reality of not having funding to do this work?