14 June 2020
I used to find writing for a public audience to be a taxing process. I wasn't sure why, but I thought it might be because my workflow was bad. To tackle that, I built a small project. I hoped it'd be an end to my writing troubles.
This post goes over how I built that project (it is kind of a cool project). But it also goes over why it was the wrong solution.
To decide what I "needed" to build, I started by comparing workflows: I looked at the way I wanted to write, and contrasted it to the way I did write.
My previous workflow had me spend a lot of time in my text editor. Which I thought was bad for writing, because when I'd start writing, I'd try live previewing my blog, and only an hour later realize I was knee deep in minor CSS changes.
So I thought it was the text editor that made it easy to get off-track. I wanted a simpler workflow. And I was actually so fed up with my previous workflow, I wanted to cut my laptop out entirely. I wanted to write and publish posts just using my phone.
So, much like I'd procrastinate large projects in college, I wound up procrastinating writing by cleaning up my blog's styling.
On my laptop, after I wrote a post in Markdown, I would:
git push
changes to Githubdocs
folder via Github PagesI decided that to deploy from mobile, I would make a Lambda that did the same thing as my laptop. Meaning that after I wrote the post on my phone, I would:
git clone
my blog repogit push
changes to Githubdocs
folder via Github PagesThis meant that the Lambda would need to run Hugo and Git. Naturally, instead of adding a small amount of vendor lock-in with AWS Lambda Layers to manage binary dependencies, I opted for a mostly-academic seeming library to run Docker in a Lambda. I'm ashamed of how long it took me to get all this working.
(Note: There's also AWS's img2lambda, to convert Docker images to Lambda layers, but it didn't work in this case)
I don't think this is a bad behavior, actually, because it lets me try out more risky decisions in a safe environment. But it does mean that I shouldn't expect the same results.
So the architecture I built had three parts:
And this is what my new workflow looked like, from start to finish. I could write a post, export it to the shortcut, which would send it to the Lambda function, which would publish it.
The full publishing workflow, with the Lambda doing a cold start
But while it looked nice, it didn't address my problems. Months went by before I felt I could publish this very post. When I finally edited it, I realized why it took so long to publish. And so I changed this post from a longer technical overview, to a shorter commentary on where I went wrong.
I still have a mobile post pipeline, but it doesn't look like this. It's just git app for iOS, and a Github action. I didn't write anything more complicated than a config file to use it.
But more importantly, I pushed myself to address the issues. I didn't like how my blog looked—-so I made it look clean and scale well on mobile. I was worried about presenting my opinion—-so I took time writing my opinions before subjecting them to judgement. I didn't have enough time to write—-so I set aside a full day for a post, instead of a couple hours.
So that's a start. Now, I'll have to keep writing to turn these behaviors into habits.