A reminder of what I’m working towards: I want an easily-installable version of the Memex so I can start the virtuous cycle that comes from users and feedback. The quickest path to that is 1) running the API in Docker and 2) an OSX app that will provide the interface, orchestrate the Docker scripts, and control the importers. I worked on the latter this week.
Electron is a framework for building desktop apps using html/css/js. It easily wraps an existing single page app and gives you additional APIs for interacting with the operating system using Node.
rm -rf node_modules and reinstalling everything and things would mysteriously work the third or fourth time around. There’s no satisfaction when you get something to work but don’t understand why.
And over and over and over again:
By the end of the week though, I feel I’m now at a point where I have a pretty good handle on Electron and have that invincible feeling of knowing exactly how to build what I want to build. The highs and lows of programming!
What I got done this week:
- a lot of research on how Electron works, which addon packages are available, etc
- built the skeleton Electron app that wraps the Memex frontend
- a tab system so I can have multiple instances of the frontend running through tabs and handle things like middle-button clicks, etc. The Electron app is running a new Ember app that controls the frame and tabs which run the existing frontend Ember app inside. It uses the new
<webview>tag which is an exciting improvement on
- Did some tests with using Electron to spawn and monitor processes which I’ll use to control Docker and the importers.
What I have to do next:
- a screen for when the app first launches; users can choose to set up a new API instance via Docker or add connection info to a self-hosted instance
- a preference pain for reconfiguring this stuff
- a screen for configuring and monitoring importers
The Memex Book Club
I didn’t read much about the Memex this week but I finished this book about racial housing segregation and it was incredible.