Over the last few weeks, I have integrated the Body Computing System more and more deeply in to my workflow and moving more and more systems out of my smartphone and shitty decentralized systems.
The core development that unlocked this for daily usage was giving up on building my own jacket system and instead opting to shell out for a fairly expensive ScottEVest System, which features wiring networks and some fairly huge pockets, allowing me to evenly distribute the weight of two Raspberry Pis and a 1000mAh battery pack. This gives me a full day's power1 and is all-weather: the vest works great even when it is warm out, and as the temperature drops, I can add the sleeves on, and then the windbreaker/rain shell, which all together is probably enough to be comfortable in a Phoenix winter, though probably little more.
You'll notice above, I mentioned running two pis as part of the core jacket system. The reason behind that is that I have used the Pi, a reliable long-term battery,and the Matrix.org data-fabric which my devices communicate over, to build a lifestreaming system that can capture and offload a photo from the surprisingly good raspberry pi CSI camera every $ARBITRARY_AMOUNT_OF_TIME. The benefits that come from having a log of my day in photo form are numerous, and the system is small enough to not be noticeable or create a "glasshole" effect. It gives me, a person with very visual memory, a way to look back at the day and remember where I have been as a way to jog what I have done. The fact that these images just get pushed in to a Matrix room that is non-federated to other servers means that a process running on my compute server could do facial detection and, for example, tag those photos in my BBDB contact database. It is also a trivial step to allow the Matrix pusher to also be able to take commands and, for example, begin recording video for later examination in an emergency situation.
BCS Lifestream images look sort of like this, I need to put the camera in a place that doesn't focus up because of how I wear my vest.
I am still an incredibly visual person when it comes to how I learn and work; an audio-centric workflow is not impossible to use, but it is certainly not yet the most efficient way to do things for me yet. I can write prose in this style -- and indeed I am now -- but I couldn't imagine coding with it, for example, especially in lisp-likes like I have been doing in my free time. Imagine trying to track parentheses, as audio. I have no idea how, for example, T.V. Raman does it when building Emacspeak, it is super impressive.
To unlock my ability to use this system for simple programming tasks, I went down a nice route,
inspired by Max Ogden's wireless Kindleberry Pi
Hack2. This required me to go down the route of
doing a serial jailbreak of my Kindle, which was surprising -- there is currently no software
jailbreak for the current Kindle Paperwhite firmwares. It was not difficult to do, but I pulled one
of the pads off when trying to hide the breakout cables, which means if I ever lose my root, I will
have a hell of a time regaining it. This gave me a screen, via a small terminal that someone wrote
called KTerm, I set up the BCS core system to boot to a TTY isntead of X11, and start emacs in a
tmux session that multiple clients could attach to. After that, it is a simple matter of attaching a
USB keyboard to the Pi, SSHing in on the kindle and running
tmux a to get in to the active
session. All of this, paired with a cute little weighted stand for the kindle means that I have a
small "tabletop" that fits in a daybag. I even got a small "40%" mechanical keyboard called the
Planck3 that fits in the same bag without taking up all
the table space that the Ergodox does.
I have successfully built the hardware for a Minimum Viable body compute system, but the software still needs a fair amount of work to be useful. Using Matrix for the data fabric is looking to be smarter and smarter, as the community, spec, and tooling, grows. People are starting to build cool shit on top of it, and it is looking like I can move more and more systems to self-hosted Matrix "apps"; during Thanksgiving I will probably try to build a Twilio appservice so that I can migrate my phone number off of Google Voice. If I can get Twilio SIP to play nicely with Matrix WebRTC, I could even take phone calls over Matrix. Incredibly cool systems can be built with the API and ecosystem that is developing around Matrix.
The data fabric is not the whole story of course. There needs to be things pushing interesting and useful information across the fabric to me. I need to be able to push information in to systems. These are where things are sort of lacking still, and where I am going to begin focusing.
What I really want is a personal assistant bot that can capture notes, todos and calendar events to my Org-mode system, push those events back to me as event notifications and agendas.
What I really want is a system that consumes twitter and pushes them in to Matrix if it thinks I care about them. Brian Shaler worked on this problem in the past as Saturn.io but that project needs to be expanded upon quite a bit to fit my need. In reality, what probably happens is that I build something on top of the Gnus scoring system -- simple "header"-alike matching and applying scores to the headers and the message as a whole. It works great for my email, and could probably work pretty nicely for generic feed-like things like twitter too, if I could get my twitter in to Gnus reliably.
After that, all I need is a way to selectively push message subjects and URLs in to Matrix. Org and Gnus provide a way to open arbitrary messages, and since they would all have unique IDs, it would be trivial to pass the IDs over the wire and have a system in the mobile hun to raise the messages. Wire a fetcher and parser to a timer, and let it run.
I think that the software things I need to be able to fully move off of my smartphone as a daily computing device are:
Hell, once all of these are in place, most of my needs can be handled over any Matrix.org client, which is interesting on its own.