Writing on the iPad

October 21, 2018 • #

I posted a couple weeks ago about moving much of my computing activity to the iPad full time. Part of what I had to crack to make that possible was a writing workflow that supported using the tools I prefer, and a method for publishing and previewing with Jekyll.

I’ve been using Jekyll and GitHub Pages for this site for 5+ years. Other CMS systems are interesting and getting better, but there’s something about the total control and simplicity of static sites that keeps me here. This workflow is great with a full Mac setup, but on iPad or mobile, there isn’t a straightforward way to write and publish new content. Most writers wouldn’t want to bother with this and would move to a CMS to clear the hurdles. Given that Jekyll today still requires a working knowledge of git and a command line interface, I recognize that this is highly personal to me, so I wouldn’t really recommend this setup to people focused on writing. But I sort of get a kick out of getting this stuff working and use it as a learning experience.

The main sticking point I needed to solve was previewing content. Jekyll has a built-in web server you can run locally (what happens when you run jekyll serve) on the terminal that generates and serves the site at localhost where you can preview before you publish. On the Mac this is simple: checkout repository, run command to generate site, browse to URL in browser. The first two hurdles aren’t trivial on the iPad. There’s no native unix-like shell on iOS, only terminal apps. This means you need to have a server to connect to to do anything.

My solution starts with running a micro EC2 instance on AWS. For about $10/month I have a full Ubuntu server running, on which I can install whatever I want1. Getting the site checked out and running locally on the server is fairly straightforward if you’ve got a working knowledge of Linux and comfort on the shell2. Next I had to figure out what software on the iPad I could use to combine the writing, versioning, and pushing up to the server for preview or testing purposes. Digging around on this topic I discovered a solution that’s working well so far: a combination of Working Copy and Textastic. The first is a full-featured git client you can use to clone repositories and manage versioning. The second is a rich code editor for iOS that is very impressive in its depth. Inside of Textastic you can add a Working Copy repo as a working directory, meaning your edits happen directly in the repo. With my iPad Pro, I put the Working Copy app in the right side multitask panel so I can manage branching, commits, and pushes while I’ve also got the editor open. In order to access the server and run the site in dev mode, Textastic also has a built-in SSH terminal.

Working Copy and Textastic

Getting through this initial setup was a bit cumbersome — getting the SSH keys sorted out between my main machine, GitHub permissions, and iOS was a bit of a runaround — but I’ve got it all working smoothly now. One other aspect is that I still do most draft writing and idea-keeping in Ulysses, which is my app of choice for any writing on iOS or macOS. So there’s a step to get the content moved over when ready to a real post in git. I’m good with this, though. I treat Ulysses sheets like idea scratchpads; so I’ll have dozens of partially-written post ideas collected there and little by little turn some into completed articles. Managing this collection of randomness makes for kind of a mess in a git repository, so it’s nice to have it organized elsewhere.

Overall this workflow allows me to stick with the tech stack I’ve gotten used to while affording the flexibility to write on the iPad or my phone. From a writing perspective I find the constraints a helpful aid in focusing on the writing and not getting distracted to mess with other things. I have a couple of other helper tricks I’ll write about later that make working with Jekyll easier. As I work with this flow some more, I’ll make sure to note any other tricks once the comfort of habit sets in.

  1. I also use this instance to try out other server tools I want to play around with — a Linux sandbox. 

  2. A good topic for a future post on common tools and techniques all computer users should know… 

Weekend Reading: Terminals, Cryptography, and Products as Functions

October 20, 2018 • #

💻 Learning from Terminals to Design Future User Interfaces

Pieces like this often come off like geeks calling for a return to how it “used to be” — “HyperCard was the peak of dev tools”. But this author makes some excellent points about performance, responsiveness, and control. As a frequent terminal user, there’s a tactility to it that comes from its fast response to input, but it is true that consoles have lagged behind in other ways like media richness and user interface display.

🔐 Quantum Computers and Cryptography

Bruce Schneier:

Quantum computers promise to upend a lot of this. Because of the way they work, they excel at the sorts of computations necessary to reverse these one-way functions. For symmetric cryptography, this isn’t too bad. Grover’s algorithm shows that a quantum computer speeds up these attacks to effectively halve the key length. This would mean that a 256-bit key is as strong against a quantum computer as a 128-bit key is against a conventional computer; both are secure for the foreseeable future.

For public-key cryptography, the results are more dire. Shor’s algorithm can easily break all of the commonly used public-key algorithms based on both factoring and the discrete logarithm problem. Doubling the key length increases the difficulty to break by a factor of eight. That’s not enough of a sustainable edge.

🚦 Products Are Functions

Ryan Singer on the concept of products behaving like mathematical functions; they sit between an input and output, processing one into the other. Having known input and known desired output serves as a mental aid to “solve for” f(x) in the middle.

Angel Dust

October 18, 2018 • #

Gil Scott-Heron is high on the list of live acts I wish I was around for in his prime.

The Map Collection

October 17, 2018 • #

I’ve been collecting paper maps for years. It’s one of the few collection habits I’ve allowed myself to keep (well, including books). Some time back I wanted to inventory all of them. So I built an app in Fulcrum to log the title, source, publishing date, and photos of each.

Map Collection

My collection’s up to 210 now. I’m working on a way to publish this. The other similar app I built a while back is a “map of maps”, basically a similar structure to my collection, but actually geotagging out in the world where I run across maps — park signage, street areas, outdoor mall floor plans, transit maps, and the like. I should set up a Fulcrum Community project to share out for folks to help build the ultimate map of public maps.

Map of Maps

2018 Reading List

October 16, 2018 • #

I’m on pace this year to read 40 books this year. Here’s a quick snapshot of the list so far, in rough order from beginning to end of year. I’m looking forward to writing up a week’s worth of posts this year on my favorites by genre.

Gary Neville on Mourinho

October 15, 2018 • #

Gary Neville’s thoughts on the rumors of a Jose Mourinho firing:

The Premier League’s fickleness with management is astonishing. It would be unbelievable to see the same level of volatility and shortsightedness in other professional sports that you have in European football clubs. A United legend calling out the leadership of the club directly is incredible, but unfortunately it probably won’t change anything. I’m not a United fan, but I would love to see the club stick it out with Mourinho and to stop perpetuating the impatient lack of logic that exists in the League.

All Hands 2018

October 14, 2018 • #

Spatial Networks is past 50 employees now, with a sizable remote group scattered all over the country. Even though we’ve grown substantially in 2018, we’ve been able to scale our processes, tools, and org chart to maintain pretty effective team dynamics and productivity. When we first started hiring remote folks back in 2010, we had nowhere near the foundation in place to have an effective distributed team.

This week is our 2nd “All Hands” of the year, where our entire remote team comes to St. Petersburg HQ for a week of teamwork, group projects, and fun camaraderie. A total of 18 people representing 11 states will be in town. These weeks are at once energizing, exciting, and exhausting — but also always a positive exercise. I’m glad to work at a place where we’ve consistently valued this investment and made the effort to keep it going as we’ve scaled.

Weekend Reading: Geocomputation, Customers, and Linear Growth

October 13, 2018 • #

🎛 Geocomputation with R

I’ve had R on my list for a long time to dig deeper with. A while back I set myself up with RStudio and went through some DataCamp stuff. This online book seems like excellent material in how to apply R to geostatistics.

☎️ Listening to Customers At Scale

Given where we are with Fulcrum in the product lifecycle, this rang very familiar on the struggles with how to listen to customers effectively, who to listen to, and how to absorb or deflect ideas. Once you get past product-market fit, the same tight connection between your customers and product team becomes impossible. Glad to hear we aren’t alone in our struggles here.

📈 Linear Growth Companies

This piece from David Heinemeier Hansson is a good reminder that steady, linear growth is still great performance for a business. Every business puts itself in a different situation, and certainly many are in debt or investment positions that linear growth isn’t good enough for. Even so, consistent growth in the positive direction should always be commended.

Technique Critique

October 12, 2018 • #

This series with dialect coach Erik Singer is great, I could watch dozens of these. He critiques renditions of different accents, some of them specific regional dialects:

Maybe it’s related to my interest in geography, but I’m always curious to learn how to differentiate accents from different countries and localities.