- 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
- as the first item, I need to get a development environment with squeakjs and cuis running in the browser
- squeakjs home page: https://squeak.js.org/
- a link for using squeakjs with cuis 6.2: https://squeak.js.org/run/#highdpi&url=https://cdn.jsdelivr.net/gh/Cuis-Smalltalk/Cuis6-2@6f984e8c/CuisImage&files=[32BitImages/Cuis6.2-32.image,32BitImages/Cuis6.2-32.changes,Cuis6.2.sources]
- there’s quite a bit of lag when interacting with cuis
- I made a recording https://youtu.be/r1tNnRWvpC0
- there are a number of issues
- normal interactions are slow, it takes time for a menu to open
- initial load time is slow
- everyone once in a while you get this spinner in the middle of the screen, maybe its garbage collecting?
- 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/
- smalltalk zoo https://smalltalkzoo.thechm.org/
- to be continued
- caffeinejs
- squeaknews ezine
- croquet
- plopp
- code paradise
- sugarizer
- scratch archive
- petit petri
- there is also some recent activity on the squeaks js github
- https://github.com/codefrau/SqueakJS/issues/121 – high performance jit
- the minimal demo – https://squeak.js.org/demo/simple.html performs really well