2019-05-09

On nomad

I took somewhat of a break from doing this. Mostly because I've been busy with work and nomad. I wrote up a quick journal entry on the MVP previously, and I'm happy to report that after a week, it's still working. Mostly. I moved it over to Heroku, Postgres, and DigitalOcean Spaces and that's let Wally start contributing.

Again, I come to thinking about tradeoffs.

I don't feel bad about Heroku. It's relatively straightforward to stand up an instance on my own hosting, but I really like the autodeployments, and I don't have a good way to do this myself. So it costs extra per month, but it's quite manageable. I could definitely run this all (or at least site + db) off one machine.

What I do feel a bit iffy on is Spaces. I like that it's an easy place to shove images. What I'm not a big fan of is that it's now virtually impossible to develop offline. I'd have to run minio on my machine, populate it with some images, and make sure that those images match whatever my test database has. Granted, right now I have all of maybe five megs of data in S3, and it's something I could reuse for other projects, it still makes offline development difficult. That was something I really appreciated about SQLite: I could scp the latest snapshot off the server or work with an outdated copy to test things. If I kept the images in the database, that would also make life easier. But, then I have to implement an endpoint for fetching (and cacheing!) images from the database. Spaces comes with a CDN URL, and that's pretty helpful. It's a tradeoff that works for now. I might end up revisiting it. There's also the case that now my data isn't stored on my systems. I'm not sure that's a huge concern to me right now, but it is something to keep in mind.

I'm also keeping in mind where we are right now: I don't really have plans to make this a public offering in the near term, so it's important to me to have something working that I can use as oft as I please while keeping it easy to iterate on. I suppose not being able to work on it offline should increase my propensity for writing test. It hasn't. So I need to figure that out. The code is structured poorly for this right now, and now that it's working mostly as intended, it's a good low-priority thing to do, especially considering I won't have time to work on it much in the near future.

Part of the messiness of the code is that I know just enough Flask to be dangerous, and there's a lot of stuff I'm missing. I don't know when the site goes down, the logs are iffy, etc. I'd also like to be able to capture raw incoming messages for debugging - they're supposed to end up in the database anyhow. I need to think about this, do some more reading, and gently get the codebase into a better state.

Which isn't to say it's bad - I got it working in about a night of thinking (and several days writing out what I wanted to build in the form of a functional spec with usage sketches), it works, and I have a development workflow that lets me at least test a bunch of those workflows to find problems. For a few nights worth of work, it's not bad. I just think it could be better, and easier to have confidence to make low-speed changes to it where I spend a few days working on a smaller feature due to time constraints.

On computing platforms

After reading We Need to Save What Made Linux and FOSS Possible, I'm back to feeling the tension between open and convenient systems.

For example, my macbook air is 11", which is a great travel size, and it works well as a portable homebase - suspend and resume work well, bluetooth works well, and is still a Unix system. There are a lot of apps that are quite nice, and it plays well with my phone and iPad. Yes, those apps are closed source; they work pretty well, though, and I'm happy to pay the developers to work on them.

The N22 was great, even if the eMMC drive struggled and was quite slow. I couldn't use my Bluetooth headphones with it, which isn't a deal breaker.

The Pixelbook is pretty decent, too, but I found myself not entirely comfortable using a system where my login and data was reliant on an ad company and based around a browser that's doing a lot to strongarm it's own (ad- and profit-driven) wants. I have a lot of qualms about the company, especially its cultural value of "collect everyone's data, but it's okay because we're making their lives better." I guess I'd rather not play into the surveillance capitalism game. At the end of the day, I'm just not comfortable on that platform. It's shiny, and it has a lot of attractive features, but for my own personal use, I decided against it.

At some point, I'll probably look into a Purism machine - I've already preordered the Purism phone - I guess we'll see. I've signed up for the librem.one service, because I'm interested in supporting these kinds of services. I'm rather not thrilled with mastodon and matrix; mastodon mostly because of the people who I've seen on it, and matrix was a pain to setup.

Maybe it's useful to think about what the apps that I like on macOS do, and maybe try to find alternatives.


Tags: