Rafi Khan

Senior Software Engineer | Ottawa, Canada

Supporting society through innovation

PCJ – Tuesday June 04 2024

  • previous entry: https://rafikhan.io/pcj-friday-may-31-2024
  • Briefly, making it open source is a risk but probably the right decision
    • we need more people working on this problem
    • we need to be able to share ideas
    • we need to be able to look on failed/abandoned/completed projects and learn from them
  • mit vs gpl is something that still has to be figured out.
  • copyright assignment is probably needed in order to make changes to the license if necessary, to protect the vision
    • laws, licenses change
    • sometimes we need to make changes to adapt to the environment
    • we should not abuse this power
  • to briefly comment on an item from the earlier entry: Why is it okay to ignore the reality of not having funding to do this work?
    • we can ignore the funding problem because the work needs to be done
    • we cannot stop progress because we haven’t managed to convince the people with money that we are working on the right problems
    • hopefully, we can find an answer to the funding problem soon
    • this is a gamble, but I believe it has better odds than figuring out a business model before running out of vc funding, or waiting to start the project until we have funding
  • next, I want to choose a problem to work on
    • it has to be small enough so we can finish it
    • it has to be different enough that we can learn some new things
    • it has to be a real problem that I have, so that I am interested in the problem as well as the solution
    • Let’s build an alarm clock app that syncs across devices

Alarm clock app

  • sync across my laptops, phones, tablets
  • I use alarms to set reminders for meetings and events
  • Calendar apps give you notifications, but I wanted something that prompts the user and requires an action to dismiss

Things I want to learn from this project

  • how to deploy an app on squeakjs using cuis
    • I am choosing to build on top of cuis because we have shared values around keeping complexity low, and viewing the computer as a means to augment the human intellect
  • how well an app deployed on cuis, squeakjs, browser performs on different devices
  • how to build a UI using cuis
  • hands on experience on the software development process and developer experience in building cuis apps, using git for vcs
  • if the cuis graphics system works on squeakjs, and what its limitations may be
    • this is important to help determine how usable the cuis graphics system is compared to HTML, dom, CSS

Getting started on the work

  • I created a github repo for the main project https://github.com/z3t0/synced-alarms
  • needed to update the SSL on my internal hosted git forge
    • I don’t want to be dependent on github
    • I like hosting my own services, it gives me more opportunities to learn about parts of the stack that I would normally avoid

  • to me, this is too slow to be usable
  • for reference, take a look at this video which shows the performance when running cuis directly on linux
  • okay, so now we can see what the current performance is, and at the same time we can get an idea of what performance is possible
  • now I know that Craig Latta has also done work using a similar stack – https://caffeine.js.org/
    • I think he got quite a bit further with this approach, which suggests that he’s had better performance
  • Now, of course this work can spiral out into many different areas of experimentation,
    • I want to put a hard cap on it because the objective isn’t so much to build the app, but to find some new answers and new questions
    • the objective is to learn so that in six weeks I am better positioned to solve this problem
    • so to that end lets give this a deadline
    • the deadline is 20th july 2024 – roughly six weeks
  • okay so back to evaluating squeakjs
    • squeakjs is also used for an early version of croquet – https://github.com/codefrau/jasmine
    • this one seems to run a lot faster
    • dragging around a window doesn’t take so long
    • https://youtu.be/PYtAxaCGNlo
    • it does slow down pretty quickly
    • when dragging around the little widget/sprite – it did not feel smooth
    • a number of things have been built using squeakjs, how did they manage with a laggy UI?
    • from the squeakjs home page:
      • smalltalk zoo https://smalltalkzoo.thechm.org/
        • the UI is performing really well here
        • seems to be using lively, not squeakjs
        • it is using morphic dom? I’m not sure how the UI is built
        • I think it may be using both squeakjs and lively
        • going to take a pause here and spend some time learning
          • read the squeakjs paper
          • also joined the squeak slack so I can ask more questions there
      • caffeine js – https://caffeine.js.org/
  • to be continued
    • caffeinejs
    • squeaknews ezine
    • croquet
    • plopp
    • code paradise
    • sugarizer
    • scratch archive
    • petit petri