The End of Hack Week

Well, hack week [1] is over. I only got in writeups Monday and Tuesday; it's useful to consider what my goals were, what happened, what worked and didn't work, and what I ended up with.

I had two projects:

  1. GraphBook
  2. LoRa modems

I tried to do as much as I could with the pi-top, which was more than I thought but not as much as I wanted.

How did these two projects pan out?

Well, GraphBook has a sort-of TUI. It's sort of in that it displays a list of nodes, lets you select the node, and shows the node and any nodes it's linked to. I have a small HTTP API that doesn't support writing or updating nodes; it quickly became apparent that a web interface was not something I'd want to use at all. A GUI could be useful, but what I really want is that TUI. So I have something of a start, but I need to spend more time learning Urwid to get familiar with it. I'm running into a bug now that I'm sure is just me not understanding the lifecycle of the system. Not understanding how the system works caused a lot of friction in the debug cycles, but it wasn't too bad getting to where I am.

The other project was the LoRa modem. I had originally hoped to use an Adafruit Feather M4 with an RFM95 Featherwing to get the EEPROM support from the M4, but my hardware wasn't cooperating and I had to use the EEPROM-less M0 that I had. I ran into a lot of hardware issues, including not being able to get any of the boards to show up with the pi-top and the M4 only working with CircuitPython. I ended up using CircuitPython to quickly write beacon transmission and reception functions that mimicked a sender and receiver, respectively, enough to facilitate testing.

I didn't get a UI for the modem, though. I started looking at Tkinter, but didn't get it quite into a place where the UI is anything I'd share or recommend anyone use. Again, it came down to a lack of understanding of how things are done in this world and a limited amount of time. This meant that during the demo, Terin had to use the direct serial interface to send and receive messages, which isn't a bad thing, but I'd rather make something a little more user friendly. Either way, we were able to send messages between Brannan and Townsend street, even though my node had a paperclip for antenna... I had dropped off the node with the wire antenna to Terin, figuring I could scavenge a replacement antenna.

A persistent problem that I had during this week was a lack of sleep due to some life events, which certainly made it remarkably difficult to learn new things. I remarked on this with my girlfriend with the comment, "makes me wonder how university ever worked." I've been working to ensure that I get at least six hours of sleep, but that's not enough to be higher-level functioning (and stimulants don't help, they just keep me from falling below a certain baseline). The other challenge was the pi-top; it's not a great machine for doing hardware work (which is disappointing because the lora-modem project was intended for use with the pi-top). That being said, I'm not sure if it was just the Cortex M4 that was having troubles and I never ended up trying with the M0 node, so maybe that works.

So I've got a working LoRa node that has a few issues that need addressing to make it more useful, but it's pretty useful as it is now. And it works, though like any other radio it'd benefit from a better antenna.

GraphBook's core data model seems to work, but the presentation is severely lacking. I've decided that I'm going to make it my business to hack on it and the lora-modem exclusively over the next few months to focus on actually getting it done. The first thing I need to do is sit down and read the Urwid overview, but that's scheduled and in my Bullet Journal already.

I think in September, I'm going to find another team to be a part of. It was fun to build the things I wanted, but I think I'd like to branch out more next time.

[1]Dropbox has two hack weeks every year; the first one is limited to the engineering, product, and design teams and later in the year we have one for the entire company. You have a week to hack on whatever you want, no questions asked.