App Store Reviews in Manuscript

I’ve got some iOS apps as side projects (they’re in dire need of updates, but that’s neither here nor there). To keep things organized, I use a Manuscript (née FogBugz) account that I opened six years ago for planning work and, more relevant to this post, to capture (almost) all customer feedback. There’s a custom mailbox set up with an email address in my business domain, to which customers can send questions and comments about the apps. These emails generate cases that I use for correspondence, and I can then open feature requests, bug reports, and known issues as linked cases in the relevant project.

I say “almost” all customer feedback, though, because not everything gets captured in Manuscript.

What’s missing? You don’t get notification emails from Apple for new App Store reviews, so I can’t pipe these into Manuscript. Wouldn’t that be nice? Instead, you have to check for new reviews manually, across App Stores in all countries where your app is sold, or rely on yet another service. I don’t know about you, but I’ve got enough inboxes to deal with.

Enter Manuscript integrations, powered by Glitch. At their core, integrations let you create microservices in Glitch that communicate between Manuscript and some external service.

And thus came the idea for this project: since every app on the App Store (and Mac App Store) has an RSS feed of its reviews, I could create an integration that checks your app’s feed and, if there’s something new, pull it into a new case in Manuscript.

I’ll be working on this in Glitch, and tracking it in GitHub. As of the time of this writing, the Glitch project is just a remix of the sample Manuscript integration, but the work has been planned out; I’ve set a release date of March 25th for v1.0 of the integration, giving me two weeks to build and test the thing. While I’m not especially concerned about the ship date slipping, not having any ship date at all usually means that a project doesn’t get any priority on my calendar.

Last week was all about defining the project itself and the work to be undertaken, and this week is about getting started on the actual code. If you’re interested, you can read over the draft functional spec and technical spec. It’s open sourced under the MIT license. I’ll be working on this in the open, which I have feelings about (read: anxiety and trepidation), and I’ve also set up a development journal in Day One, where I add short weekly retrospectives on wins and losses for the week.

More to come as I make progress against the milestone!

Remote Work: Year One

A couple of weeks ago, Julia Evans wrote a retrospective on what it’s been like working remotely that resonated with me, given that today is my one-year anniversary since taking a remote position. Since this is my first fully-remote job, taking some time to reflect on how things have gone seems like a good idea.

Julia answered some great questions about working remotely, so I’ll do the same here.

What’s scary about working remote?

Honestly, not very much, though that certainly depends on who you’re working for and your own comfort levels with all kinds of things. I’d worked from home a fair bit prior to going fully remote, so I knew I wouldn’t have issues with productivity. I thought there might be difficulty in bonding with colleagues, or missing out on the hallway and/or watercooler talk, but that hasn’t been a thing (more on that later).

If there’s a downside, it’s that it’s really easy (for me, anyway) to slip into a place where I don’t leave the house and don’t get in any social interaction or physical activity. I have to force myself to be deliberate about those things now.

What’s good about working remote?

The number one benefit of working remotely is having the ability to focus. Oh, wow, is it ever awesome to be able to set yourself up with the perfect work environment, and know that you (for the most part) don’t have to worry about being an hour deep into researching or working on something only to get tapped on the shoulder or interrupted by noisy coworkers. We’ve reconfigured our second bedroom to be my private office.

The commute isn’t bad, either. During my engineering degree, I had to turn down an internship at the Canadian Space Agency because I just couldn’t afford to buy a car to commute back and forth (or move closer to their location, either). That sucked, and it made me realize just how messed up it is that working can cost you money.

Let’s talk about career development.

This is a bit hard to address, as I’ve spent most of my first year just trying to learn the ropes and become a productive member of the team. I haven’t taken advantage of things like our conference and education budget, so I’m aiming to be better at this in year two.

How do you learn from your colleagues remotely?

I mean, picking someone’s brain is never more than a Slack conversation away, but we recently trialed a new mentorship program. I got to learn a lot about working on web applications/in JavaScript under the tutelage of a really smart and experienced developer.

We also use Manuscript as a store of knowledge, so learning from colleagues is never more than a few searches away — detailed notes in cases can serve up a whole lot of learnin’.

How do you stay plugged into spontaneous conversations around the office?

With something like two-thirds of the company remote, most conversations happen in Slack. Tuning in to the right channels (and getting your notifications right so that you’re not interrupted when you’re heads down) makes it easy enough to understand what’s going on, but it did take a while to get that right.

How do you have idle/watercooler discussions?

One of our developers created a “coffee time” app that connects you with another colleague every Saturday via email, just so that you can catch up with them over a warm beverage. We also have a Friday Zoom meetup where we wind down ahead of the weekend. We’re trialing Donut for more of a group coffee-time thing, and that’s been fun.

These meetups are always optional, so if you’ve got a heavy week, no one will make you feel bad about skipping them.

What happens if you spend a week stuck on a problem?

It’s rare that this will happen. We’ve got proceses in place for escalating issues that we’re especially stuck on that ropes in members of the development team, but before it even gets to that, we usually invoke one of our team values: support engineers help one another.

What’s the setup like for meetings with people in the office, does it work well?

My first-day experience while being onboarded Fog Creek’s headquarters in NYC was a monthly Town Hall meeting. I remember feeling that it was pretty odd that everyone in the office was sitting at their own desk, in front of their own computer, headsets on, and interacting in the meeting via group videoconferencing. On the other hand, this makes it pretty inclusive for us remote folks — there’s not much in the way of sideband conversations going on when you’re all on your own webcam. So that’s pretty cool, and in practice it works well.

How do you stay productive and also separate work/life at home?

Productivity gets easier when you’re not exhausted by commuting, and you’ve got a dedicated area that’s set up to meet your own ideals for a productive workspace. Like Julia, I’ve found it more distracting working out of an office than working from home. I do keep a pretty clear start and end to my workday, though, and generally only set foot in the home office to do work.

The Junk Drawer

I’ve slowly been moving over to Things 3 for task management, but more than that, I’ve been re-thinking just how my system needs to be fleshed out so that it works best for me.

As part of that move, I’ve been re-evaluating the way I think about capture. Typically, you’ve got an inbox, where you log all the incoming stuff in your life, and which you process periodically. That’s fine for the usual do-delegate-delete-defer type tasks, but if I want to use Things (or whatever task management system) to capture everything, I’ve found that I need a place for things that live somewhere between the inbox and a project.

Which brings me to BINQ.

BINQ is a concept I heard Merlin Mann talk about on the Back To Work podcast, and is an acronym for Brainstorming, Ideas, Notes, Questions (or something like that).

Essentially, BINQ is a junk drawer for your thoughts. It’s a holding pen for half-baked, hare-brained ideas that need to time to fully form. Tasks in the BINQ project don’t quite yet deserve to become a project, but they really need to get out of the inbox.

Some folks use the concept of “Someday” for these things, but in practice I’ve found that “someday” makes more sense as a temporal definition (kind of like a “pending” or “waiting” context, but important enough to be a first-class entity in the task manager). This is how Things treats “someday”: you set this as part of the when for a task, not the where.

My BINQ project lives outside of any so-called “Areas” in things — in fact, it’s the only project that isn’t part of some area of my life. A few times a week, I’ll check in and add some notes to a task that lives in there, or maybe delete something because it doesn’t make any sense to pursue further for whatever reason. Ideas for posts go into BINQ too, before a draft gets written.

This is a good place for checklists within tasks, too. As you start to flesh out some of these ideas, it’s handy to add checklist items to them. It then becomes pretty trivial to bring these out of BINQ quarantine and into your life using Things’ convert-to-project feature.

For now, I’ve set up four headings for each of the letters in the acronym (Brainstorming, Ideas, Notes, and Questions), but I don’t love the idea of having to decide what heading a task would fall under—it injects friction into what should be a easy process. Trying to enforce too much organization on a junk drawer just means that your real junk drawer lives somewhere else.

Too much of the pseudo-productivity silliness tries to package your life up into neat little packages, which is fine for remembering to take out the garbage, or for organizing your kitchen renovations. But sometimes, for the messy, ethereal things that come into your life, a good ol’ messy junk drawer is the right place for them to live.

Spinning Plates

I mentioned the other day that I’m feeling a little bit discouraged with how January was going. While I started the year looking forward to taking on a list of goals, here we are, almost halfway into February, and I’m not really feeling like I’ve made real progress against any of them.

I took some time to think about why this is the case, and a couple of things stand out.

First, the reality is that January’s been a bit of a short month. I spent a good portion of it feeling under the weather, and there’s been a lot going on, so I really didn’t have much time and energy to put into anything beyond work.

The bigger issue, however, is that I’ve not felt quite sure where to focus my efforts. I’ve started on several projects, but there are only so many things that I can move forward at once, because it requires a lot of context-switching and results in a level of progress that’s nowhere near what focused attention would generate.

That’s in contrast to how I wrote my first iOS app. By working a little bit of overtime during the week, I was able to take Friday afternoons off over the summer, and I dedicated that time to learning and building HoneyJar. That’s all I did with those afternoons, too — get home, launch Xcode, and work on the app, without distraction. In the sum total of maybe five or six full workdays, I learned enough about Objective-C, Xcode, iOS, CocoaPods, and iTunes Connect to ship my first app.

Maybe because I’m looking forward to diving into a bunch of these projects, I haven’t really been great about getting into that focused state of flow — my attention is pulled in several different directions. So, of course, as I try to move things forward, I’m only able to make very small pushes in the general direction of progress.

As it turns out, if you give somebody two things to work on, you should be grateful if they “starve” one task and only work on one, because they’re going to get more stuff done and finish the average task sooner. In fact, the real lesson from all this is that you should never let people work on more than one thing at once.

→ Joel On Software, “Human Task Switches Considered Harmful”

It’s like those circus acts where someone’s running from pole to pole, trying to keep the plates atop them spinning fast enough to maintain their balance, and that person unable to ever really focus on one thing because they’re too busy keeping things going in circles. I’m fighting the urge to tackle all of my projects at the same time, but apparently not well enough. So it’s time to define what specific projects to work on, and when they’re done, move on to the next. It’s a little bit hard for me to starve one project to feed another, but it’s something I can learn to be okay with.

And it’s still possible to work on a couple of (carefully-chosen) goals in parallel, so long as there’s a limited overlap of domain. Maybe I only want to take on one code project at a time, but that doesn’t mean I can’t tackle a fitness project simultaneously — these are mutually exclusive in terms of their demands on my time and focus, and are probably even symbiotic (healthy mind in a healthy body, and all that jazz).

More (but only a little bit more) to come.

Twelve for 2018

Okay, so I’m a bit late to the party, but: rather than try to create a bunch of resolutions, I’ve decided that I’d prefer to take on twelve projects this year. Why twelve? Well, largely because it breaks down to one project per month (not that I intend these to be month-long projects, it just works out that way).

In no particular order of importance, they are:

  1. Learn a new language: My wife and I have been talking about doing this together. We don’t expect to develop fluency in a language by year end, but at the very least some conversational level where, if we were in some country, we’d be able to chat with local folks in their own language. Right now, we’re trying to decide on the language.
  2. Ship Per 2.0: The last update to Per was in September of 2015. The app generally works fine, and we use it all the time when out shopping for groceries, but I have ideas for features (and am aware that the UI could really use an overhaul).
  3. Run five kilometres: In a row. In one session. I’ve never been an active person, and that’s going to bite me in my later years. So I’m going to tackle a couch-to-5k program and aim to be able to run a solid 5km by year end.
  4. Read one book a month: I really stink at getting through my reading list. I aim to read one book a month to try to ramp that back up (and take advantage of the cool Books on collection implementation to discuss them). 📚
  5. Build one Manuscript integration: Basing myself on this article, I’m going to build a (relatively simple) Manuscript integration that pulls App Store reviews into Manuscript.
  6. Build a sample app in Glitch: I think that there’s a lot of value in, but right now the barrier to entry (compared to signing up for a free Twitter account) is high enough that it won’t appeal beyond the folks who already blog (or who are able to pay US$5 per month for a hosted microblog) — a diminishingly small portion of the potential member base. Creating a free, remixable sample app in Glitch might help with accessibility.
  7. Pay off my credit card debt: I used to be really bad with my spending. I’m significantly better now, but I’ve got some lingering credit-card debt that really needs to go.
  8. De-clutter my belongings: I have a lot of stuff. A good chunk of that stuff is stuff that I don’t need and never use. It’s time to let go of a lot of that.
  9. Write more often: I mean, I can’t really do much worse than my one-post-per-year low from last year. Technically, this is my second post for 2018, so I’m already winning this one. I aim to write about my progress on this list of projects over the course of the year, so at least I already have some topics lined up.
  10. Rework my personal website and blogs: My stuff is scattered across this blog, the (new) microblog, my mostly-ignored Tumblr, and my personal site. Time to think about how to bring all that together.
  11. Back-squat 225 lbs: Similar to the 5K goal, I aim to focus on some strength training at the gym. I’d started on a 5×5 lifting program last year and, despite some fits and starts, went from squatting just the bar to 155lbs in six months — a 240% improvement. Those are the easy percents, though, and I’m hoping to be able to get up to two plates by the end of the year, despite starting from (nearly) scratch after a 6-month hiatus.
  12. Start playing piano again: I haven’t seriously played piano in over 20 years. I’ve set up a keyboard in my home office to inspire me to do that again, but I’ve yet to actually start tickling the ivories, as they say. But, I mean, I did make this web-audio synthesizer in Glitch to learn some JavaScript, so that kinda counts. Right?

So, here’s to 2018. I hope you make great progress on your projects and goals this year, too.