Monthly Archives: July 2015

Two weeks notice: unfinished work

Three weeks ago I had about a dozen open Jira tickets. Today, my last day with the company, most of those are still open. I was able to update some documentation and do minor maintenance work, but a bigger change I had hoped to deploy turned out to be impossible because of a missing internal API.

It’s unsatisfying to leave unfinished work. There’s only so much that can be done in a limited time, though, and as we all know software (especially a web app) is rarely ever completely finished.

Bittersweet, moving on after so many years. The folks I’ve worked with have been really great. I’m going to enjoy keeping an eye on what they ship long after my GitHub access has been revoked.

This morning, my (now) former boss and good friend Willie Abrams linked in the company chat room to some of the photos that he had taken over the last 14 years. Brought back a lot of good memories, from brainstorming app features in a conference room to wandering around San Francisco before WWDC.

I think I’m going to let this be the final post to wrap up the “two weeks notice” series. I’ve accomplished a lot but there is still plenty left, especially shipping new products. It’s been good to force myself to write every day, so I’ll keep that going with the usual full posts and microblog posts.

You can find all 14 posts under the tag “2weeks”. Thanks for reading.

Two weeks notice: Core Int 192

Continuing from last week’s Core Intuition, today Daniel and I talk more about how things are going with the final days of my job winding down. We then take the second half of the show to catch up on recent news around Twitter’s leadership.

From the show notes:

“Daniel and Manton acknowledge celebration as a survival tactic, discuss the urgency of making ends meet as an indie, and examine changes underway at Twitter with interim CEO Jack Dorsey.”

You can listen or subscribe at the Core Intuition web site. Special thanks to returning sponsor CocoaConf. They’ve got conferences coming up in Boston and San Jose, and then Yosemite National Park next year.

Terrible wi-fi again. I don’t usually notice, but then try to upload a 20 MB file and it wants to take 15 minutes. Switch to phone tethering, takes a couple minutes even with only 3 bars on AT&T.

→ 2015/07/31 11:57 am

Two weeks notice: health insurance

I mentioned in my first post in this series that I need to figure out healthcare for my family now that we’ll no longer be covered under the company’s plan. We spent some time digging into this recently, and basically came away with these points:

  • We are going to be paying significantly more per month than we used to. That is obvious and expected.
  • Buying through the health insurance marketplace is not much different than buying direct through BlueCross BlueShield. Comparing a few plans, the prices seem about the same. Hopefully we’ll get a tax credit discount based on our family size and the fact that I’ll probably be making less money this year.
  • We will need to stay in a PPO to keep the same doctors. This is non-negotiable for me, even though it will mean higher premiums.
  • Deductibles will be much higher than what we’ve had so far. The budget will be tight and we can’t justify the crazy-high premium that would be required to lower the deductible and out-of-pocket max. We’re leaning toward some medium-level plan.
  • It’s too expensive to continue my existing health coverage through COBRA for very long. Switching to a new policy soon makes the most sense. It should be fine to do COBRA for a month or so since we’ve already met our deductible and have a couple doctor visits coming up.
  • One of the main differences between some of the plans is whether there’s a copay for doctor visits. We are going to prefer plans with a copay and flat prescription drug charge.

We’re still learning details about this process every day, so some of the above may not end up representing our best options. Just yesterday we realized that there’s some flexibility in what we continue with under COBRA. For example, sticking with existing dental and vision but choosing something else for primary healthcare.

Since it’s already nearly August, I’m trying not to worry too much about these decisions. If we choose poorly, we’ll be stuck with mediocre insurance for a couple months (until my wife starts a new job in the fall and we can consider her group options) or until the end of the year (when the enrollment period for the Affordable Care Act resets).

Related, from 2009: Matt Haughey on the entrepreneurial case for national healthcare. And, more recently: Paul Krugman on the triumph of Obamacare. With everything else to worry about as an indie, at least it appears I won’t have to watch the progress we’ve made on healthcare start to unravel.

I published the 1000th post to my blog this morning. After 13 years, seems like there should be more, but posts weren’t as frequent in the earlier years. With microblogging, I expect to hit the 2000th much more quickly.

→ 2015/07/30 10:22 am

Floyd Norman’s sketch of Steve Jobs

Disney Legend Floyd Norman has an excellent blog, usually recollecting on the early days of the Walt Disney studio, or more recent animation ventures. This week he wrote about Steve Jobs:

“An animated motion picture goes through many iterations while in production and screenings were held on a regular basis. I honestly doubt Steve was trying to curry favor with Disney. Being a shrewd negotiator Jobs didn’t need any extra help to get his way. I think he brought Apple gifts purely as a gesture of friendliness. After all, shouldn’t everybody have a Mac Laptop?”

The post includes a fantastic sketch of Steve. My only regret from WWDC this year is that I didn’t have a ticket to see Floyd speak at the conference. Although Apple doesn’t usually release the video of lunchtime sessions, I very much hope it was filmed and will show up on YouTube or Vimeo one day.

NeXTEVNT and Song of the Sea

WWDC 2015 now feels like it took place in the distant past, not a month ago. For the last few years I’ve attended the NeXT-themed fundraiser for the Cartoon Art Museum, and this year there’s video from the event. Check it out for a view into the museum and some of the talks.

It’s always a highlight of the week for me to visit both the Cartoon Art Museum and the Walt Disney Family Museum. This year Cartoon Art had pre-production drawings and paintings from the hand-drawn film Song of the Sea, one of my favorite films of the year. Really beautiful stuff.

Two weeks notice: accounting

Bookkeepers, accountants, lawyers… I should get one of those at some point. Instead I seem to waste time moving from one accounting app to another — Xero, QuickBooks Online, Less Accounting — hoping that the next one will solve everything. Then I go back to tweaking monthly revenue summaries in Numbers because it turns out that spreadsheets are still pretty useful for this sort of thing.

This year I did sign up for what has turned out to be a game-changing app for my business: Baremetrics. I dragged my feet subscribing because it starts at $79/month, but it’s worth it. The way it breaks down which of your web subscriptions — in my case Searchpath, Watermark, and Tweet Marker — is the most profitable or has the highest customer churn or best average lifetime value… It was just eye-opening to me and led to finally taking some action to invest in the products that are doing well.

I still have a lot to figure out with this. The one thing I am doing right, on the advice of several folks over the years, is paying myself the same amount once a month from my business checking account, as if it was a normal salary. This helps in forecasting how much income I need in the near-term to keep enough padding in the bank to cover the slow months. It also makes sure I don’t spend everything too quickly.

We haven’t traditionally had the most strict budget. It’s easy to get lazy with finances at a regular job where you seemingly have a never-ending paycheck supply. The freelance or indie software world is quite different. I’m learning quickly.

Two weeks notice: press reviews

I need to set aside some time to contact folks in the press about my new project. I can tell just explaining the app to my friends that it’s confusing to understand on first glance. It’s different enough from existing social networks that it requires a high-level explanation for why I designed the architecture this way.

The short answer is that I wanted to build something open and extensible. Something that embraced the open web. By necessity that makes the concept a little more geeky than what has come before it. Having reviews of the product out in the wild even before the app is fully released may help get people thinking about what to expect.

After installing the latest El Capitan beta, went a few hours this morning without realizing that Mail.app wasn’t running. Nice way to accidentally focus on writing code.

→ 2015/07/28 12:34 pm

It’s so tempting when learning a new framework to give up and do things the wrong way, just to solve a problem. Spent hours struggling with something in Ember.js and finally got it.

→ 2015/07/27 9:08 pm

I get so used to fast, reliable wi-fi that when everything breaks down it’s much more frustrating than it should be. Lost an hour as both wi-fi here and tethering to my phone were unusable.

→ 2015/07/27 1:42 pm

Two weeks notice: final pull request

With just 5 days left at my regular job, it’s time to get serious about wrapping up my work. I have a small change mostly ready and tested locally, but need to push it up to GitHub and finish testing on the dev server. I have a couple open Jira tickets to look at after that.

Over the weekend I spent a lot of time with the Stripe API, trying to improve how I manage user subscriptions. Stripe has some new features since I first started using it. For example, options for sales tax and a quantity field. The latter is convenient if you have something like the ability to pay for multiple hosted web sites in a subscription, rather than deal with adding custom line items on an invoice.

Deadlines are an excellent way to push yourself to actually finish something. So this deadline of Friday is good, in a way, but unlike most of my other deadlines, I can’t miss it and keep working for another week. That finality is a little daunting right now, as I look at the week ahead and everything I want to get done.

Two weeks notice: moving too fast

For the first time in weeks, we had nothing going on this morning and could sleep in. After a late breakfast I worked on implementing a better trial for my new product, letting the business model advice I mentioned yesterday sink in.

Ryan Irelan, who founded Mijingo to create books and video courses for developers, wrote today:

“One of my biggest mistakes in my first several months of running Mijingo full-time is that I was going too fast.”

I probably needed to hear that. I’m increasingly worried about launching this new project either half-baked or too late, so I’ve been trying to ramp up the hours I dedicate to it each week. But I’m scrambling to quickly change fairly major aspects of it. It may be better to slow down to make sure I still have the bigger picture correct.

We’ll be traveling some in August, so that rules out releasing anything brand new before the trip. I’m thinking my focus leading up to that is to send this to the subscribers of my beta announce list first. Both the free parts and paid plans will be open as if it was a finished product, but it will just be limited to an invite-only group. Based on that feedback I’ll know how close it really is to shipping for everyone.

Two weeks notice: Core Int 191

We just published Core Intuition 191, the first episode recorded since I resigned from my regular job. In a way, it feels like this episode was 7 years in the making. Although I clearly wasn’t about to go indie that long ago, the topics that we’ve chosen to discuss on the podcast over the years have always followed that basic narrative: what can we do to improve our apps and business.

And as I hinted about earlier this week, this episode also features the return of our sponsor Twitter to promote their Fabric suite of tools for developers, including Crashlytics and Answers. Great to have them back.

From the show notes:

“Manton and Daniel discuss Manton’s big decision to quit his job and go full-time indie. They also discuss the challenges of freeing up one’s mind to focus on work, the freedom of indie development, and the psychological benefits of a dedicated workplace.”

This is a milestone episode for me. I hope you enjoy it.

Two weeks notice: your business model is wrong

How is it Friday already? I have just one week left at my regular job. In addition to looking at documentation, I talked on a video call with the lead engineer who will take over a couple of my projects. We went over my current bug list (exactly 13 lucky tickets in Jira) and reviewed a few of the trickier outstanding issues.

Nothing like walking through old code, even at a high level, to discover so much outdated cruft that could be redesigned or cleared out. There’s always a little bit of regret: if only I had fixed this one last problem before leaving, or smoothed over this one confusing part of the web UI. But that’s a slippery slope that could go on indefinitely. Web software in particular is evolving and never fully complete.

Meanwhile, I continue to get great feedback on my new Riverfold project from the very early beta testers. Bug reports, new ideas, and sometimes a series of questions that basically ends up as: you’re charging the wrong users, what if you tried this completely different way to make money instead?

While I don’t think there’s any direct competition for what I’m building, there are a lot of related services. I’d count even parts of Tumblr and WordPress among the services that are both complementary and in a similar theme to what I want to do. Tumblr makes money primarily through ads. WordPress has ads but (I expect) makes more money through their upgrades: paid custom domains, VaultPress backup, and premium themes.

When choosing a business model for my app, I’ve also been inspired by GitHub’s simplicity. Free for open source projects, which allows you to get a feel for how the entire system works as long as you don’t need private repositories. Paid for organizations, scaling up based on how many projects you have. The success of my project will hang on whether I can mix some of all these models without confusing potential new customers.

Two weeks notice: it just works out

John Saddington, who develops the Mac blog editor Desk, pointed to one of my recent posts and wrote:

“It does make me ponder, once again, what I’m doing with my so-called ‘career’ and if it’s the ‘right’ one. Although, every single time I think about that I know that I won’t like the answer… yet it always just works. I can’t tell you why or how I found or discovered this cadence, but, to each his own.”

Which in turn makes me reflect on my own career. I’ve been extremely lucky. The right jobs just seemed to have presented themselves to me when I needed them. I hope that luck hasn’t led to overconfidence as I take these next steps to become more independent. It would be a glorious failure if my luck runs out just when I need it most.

So I’ll have to work harder. I’ll have to better manage my finances, better plan and execute on new products, and better support each app so they’ll form a sustainable business. As I type this, I’m actually a little nervous for the first time since I put in my notice. Lots to do.

Tonight’s challenge: finish integrating CodeMirror into my new app, to provide Markdown syntax highlighting. I had never heard of this JavaScript library before this week. It seems very capable — a big jump forward on a feature I didn’t even think I could provide for 1.0.

Two weeks notice: new products

Tonight I worked on some bug fixes to one of the new apps I hope to ship for Riverfold Software. I have just a handful of beta users, but got some good feedback and bug reports last week, things I want to address before opening it up to more users.

When I think of the in-progress apps that I can ship soon to help increase revenue, there are really only 2:

  • Clipstart 2.0, which will be renamed Sunlit for Mac, to complement the iPhone version.
  • Unannounced microblogging-related web app, which may also come with iPhone and Mac apps.

The problem with Sunlit for Mac is that I’m requiring 10.11 El Capitan. So no matter how much progress I make on it, I can’t ship it until Apple releases their next version of Mac OS X. I want to chip away at the new features, but I can’t spend all of my time on it yet. I need to focus attention on projects that have a chance of bringing in additional revenue in the very near future, not by the end of the year.

So the microblogging app — the one I worked on tonight — keeps coming to the front. Since it’s mostly a web app, it has the least number of external API and App Store dependencies that would hold it up. I can ship the core functionality whenever it’s ready. The sooner I get it out the door, the sooner I’ll know if it’s something I can count on as business income.

Two weeks notice: writing documentation

Boy Scouts have a saying: leave no trace. One of its basic principles is that when you pack up your camp site, make sure you clean up all the trash. The place should look even better than when you found it.

It’s not a bad principle to keep in mind when leaving a job, either. Projects should be in a good state. I’ve fallen short in one key aspect of this — a conspicuous lack of unit tests in my web apps — but I’ve been more successful in other areas, like up to date versions of Rails and pretty comprehensive documentation.

Documentation is also an easy thing to improve at the last minute. Today I’m reviewing some API docs from top to bottom again, making sure that the confusing edge cases for how an app works are well covered. For my job at VitalSource, this means editing in Confluence.

The apps in Atlassian’s main suite that I’m familiar with — Confluence, Jira, and HipChat — have improved in small increments over the years. I makes sense that they would move fairly slowly; the apps are heavily used in larger companies, so a major redesign or feature change would not be well-received by many of their customers. Of those 3 apps, HipChat seems easily the best designed, and I expect having Slack as a competitor will keep them focused and driven to improve the app.

This post isn’t meant as a rant against Confluence, but as I use it’s default markup language or WYSIWYG editor I’m reminded of just how much I enjoy writing in Markdown instead. For my own apps, I’ve experimented with writing documentation in Markdown hosted on GitHub, which gives me easy publishing and version history. Tweet Marker, for example, pulls a Markdown file from GitHub directly and formats it inside its own web interface for Twitter app developers.

As usual, open formats like simple text files are a great choice for any writing that you want to last. For my new microblogging project, I need to repurpose a lot of writing I’ve done on this blog and move it into more formal documentation. I’ll probably use Markdown and GitHub for that as well.