Added push notifications to the new iPhone app. Still kind of feels like magic when all of that works.

→ 2015/08/29 5:45 pm

We’re nearing episode 200… New episode of Core Intuition out this week, talking about Twitter, the open web, and Apple’s new ATS requirements for SSL on iOS 9 and Mac OS X 10.11. coreint.org/195

→ 2015/08/29 10:05 am

Startup life and Medium

Pretty hilarious guide to San Francisco startup life from Padlet on Medium. Here’s just one small part:

“Markets are chockablock with these desk+gym hybrids — standing desks, treadmill desks, cycling desks. This is why I feel bullish about my swimming desk idea — a big water tank with an infinity pool and a computer bolted on one side. Noise cancelling scuba masks, snorkels, and fins come as standard equipment.”

I’ve been fascinated with Medium lately, and have cross-posted a couple recent posts over there to better understand it. Is it a blogging tool? Sort of. Is it a social network? Not exactly.

While you can follow other users there, I find that even with the 100+ people I’m following, the posts I see on Medium are almost exclusively popular essays written by people I don’t know. They’re recommended enough that they show up in Medium’s daily emails, or on the home page, or linked from other blogs I read. But it’s like if you signed in to Twitter and only saw retweets.

This may explain Medium’s design changes to encourage quick, microblog-like posts, in addition to full essays. Longer blog posts just aren’t written often enough to make for a meaningful social network.

Rediscovered using the Safari web inspector to debug a UIWebView running in an iPhone app. So helpful.

→ 2015/08/25 8:45 am

NSDrinking is on for this Thursday 8pm, back indoors for the summer at the Ginger Man. Hope to see y’all there!

→ 2015/08/24 3:40 pm

Really wish I could use TestFlight for Xcode 7 / iOS 9 builds. I like having Fabric around for daily builds, but I want to send this new app to a wider audience.

→ 2015/08/21 5:36 pm

Marketing, mission, movement

As I was writing some documentation this week, I kept thinking about what makes great marketing copy. 37signals used to say that copywriting is a form of user interface design. That’s true but I think there’s more to it.

The best products don’t just have marketing copy; they have a mission statement. They don’t just sell a tool; they sell a movement.

When I stare at my product wondering if it’s too confusing — if it’s too different, and tries to do too many things, to be immediately understood by new users — I try to remind myself that it’s an opportunity. Instead of simply explaining what I’m doing, how can I pitch it in a way that strengthens a community around the idea. Because dozens of bloggers can spread the idea more quickly and in a more meaningful way than I can by myself.

And unlike a one-way press release, a community is inherently two-way. Every mention of the idea is both marketing and feedback. Someone blogs about how they’re excited for the product, but also how they wish it had a certain missing feature. Someone in the press writes a review, but also with a pros and cons list.

This cycle means the product gets better. And if we’re thoughtful in that first approach to marketing copy, then every blog post, review, and tweet that follows is laced with a little part of our mission statement.

Acorn 5

Flying Meat’s Acorn 5 is out. I’ve been using the beta for a while and it’s a great release. Read Gus Mueller’s blog post for some of the features, including neat tricks you can do with the new Shape Processor.

I also love this section about focusing on bug fixes:

“So we fixed pretty much all of those. It took months and months of work, it was super boring and mind numbing and it was really hard to justify, and it made Acorn 5 super late. But we did it anyway, because something in us felt that software quality has been going downhill in general, and we sure as heck weren’t going to let that happen to Acorn.”

Congrats to Gus on another big release. You should check it out here.

Built a documentation site for my new project this morning, powered by Jekyll. I’m either close to shipping the actual app, or I’m procrastinating.

→ 2015/08/19 2:53 pm

Relay FM’s first year

Casey Liss summarizes the excellent first year of new podcast network Relay FM:

“Last year, I was deeply honored to be invited to be part of the launch shows on Relay. This year, I’m deeply honored to be a part of a network that not only airs some of the best spoken word programming on the internet, but also cares so deeply about being more inclusive.”

Congratulations to all the podcast hosts, and of course to Relay founders Myke Hurley and Stephen Hackett. Stephen posted about how his time as an indie is going:

“The hours break down about how I felt they would break down, with Relay FM taking up about half my time and everything else going down from there. I suspect that consulting number will shrink as I wrap up some stuff for my former employer, but for now, I think this balance works. It’s a decent reflection of where my income is, which is encouraging.”

Rewinding a few weeks, this is what he had to say about the shift to indie work:

“It’s profoundly surreal, but incredibly freeing, to be focused on my writing and podcasting full-time. There’s still lots to work out with budgets and time management and extra things I could take on, but it’s all under the category of my work. That’s what makes it so much fun, despite the unknowns.”

It’s fun to watch the rise of podcast networks. It has now been a little over 5 years since I first wrote about the 5by5 launch. Daniel and I will probably keep Core Intuition independent forever, but I hope that the continued success of larger networks means that the overall podcast market is still growing.

Once again struggled for hours getting something very simple to work in Ember.js. Finally solved it, but not entirely sure why the first 10 slightly different attempts didn’t work.

→ 2015/08/17 11:04 pm

Remember when I said yesterday that I had adopted some Swift shared code to use in my app and it was working well? Forgot it required Xcode 7 to compile, and this app needs to ship before 7 will be GM. Reverted to Obj-C version.

→ 2015/08/17 1:42 pm

Future-safe weblogs

It’s a common theme for Dave Winer to write about preserving our writing on the web. Today he outlines some criteria for judging whether a web host will last:

“The concern is that the record we’re creating is fragile and ephemeral, so that to historians of the future, the period of innovation where we moved our intellectual presence from physical to electronic media will be a blank spot, with almost none of it persisting.”

I think about this in 2 parts. The first is publishing your weblog to your own domain name. This ensures that your writing doesn’t go away and links don’t break when your web host goes out of business, because you can copy your content somewhere else and map your domain to that new location.

The second is some kind of host that will last forever. This is an unsolved problem. Hosting fees need to be paid, domain name registrations need to be renewed. It may be too big a leap to ever get there, but we could settle instead for better mirroring of content. I’d like to have my content mirrored automatically to GitHub Pages, for example, and maybe even Medium.

Imagine the life of a printed book from the early 20th century that has now survived generations. How was this possible? Many copies must have been printed, because some will inevitably be lost or destroyed. And when a library or bookstore is closed, copies of the book must be transferred to a new location.

This all follows naturally with a printed book, but to adopt the same pattern for digital works, we must go out of our way to create a system of mirroring and long-term storage that tries to match what happens in the real world automatically. It’s a great challenge.

Unfortunately very little has changed on this topic since I wrote about permanence 3 years ago. But we can change that. Open formats and auto-mirroring will be a key part of my new microblogging platform.

I still don’t think Swift is for me, but I integrated some open source Swift code into the app I’m working on this week. Went smoothly, requiring just a couple tweaks for properties that weren’t exposed to Objective-C.

→ 2015/08/16 8:49 am

I will return to Twitter when…

As I’m catching up on some news, two posts today about Twitter caught me eye. First, very big news via Federico Viticci, that full tweet search is available even to third-party apps. Twitter’s limited search was the main reason I originally built Tweet Library. It’s fantastic that this data is now more easily available.

But it was this opening paragraph from Jason Snell’s article on Macworld about Twitter neglecting the Mac version that got me thinking:

“Three years ago this month Twitter broke its covenant with the third-party developers who helped fuel its initial growth and create some of its most innovative features. The message was clear: Twitter was in charge of its own platform, and while other Twitter apps would be tolerated, it would only be in limited fashion and for a limited time.”

It was around this time, nearly 3 years ago, that I posted my last tweet. My bet with Daniel is over whether I will return to Twitter within 5 years. People ask if I’ll come back sooner, and if I did, what it would take. I’ve often struggled to articulate those conditions, because I think we are seeing slow but consistent progress to unwind the developer-hostile decisions made a few years ago. It may be that in a couple years the environment will be much improved, but there won’t be any single decision that “fixed” it, or it may be that Twitter is doomed to have changing leadership and there will never be any guarantees.

There is one thing, though. There is one change that was made while rolling out the version 1.1 Twitter API: they removed support for unauthenticated RSS feeds of user tweets or timelines. If they reversed that one decision, the next day I would be back on Twitter.

I can pick out a single feature like this, among every other improvement that third-party developers would love to see, because the combination of removing RSS and at the same time locking down the API — those changes together best represent the move away from the open web. Any other incremental improvement short of unauthenticated RSS, no matter how welcome, isn’t enough.

Back from Europe

After blogging every day for a couple weeks at the end of July, I decided to take a break while my family and I took a vacation to London and Paris over the last 10 days. Instead we kept a private-ish travel blog of the trip. It’s similar to what I might post in a private journal (handwritten or Day One), but accessible to family in a richer “own your own content” way than just Facebook photos.

I also posted 7 photos throughout the trip to my Instagram account. I like to use Instagram to capture just the very best photo from something, so the timeline never feels overloaded. Of course we took hundreds of photos overall. Some went to the trip blog, some went to Instagram and Facebook, some went to Snapchat (teenagers!), and the rest we’ll sort through as we have time. We had wi-fi in the apartments and so I made sure everything was synced up to Dropbox at least once a day.

I worked a little while traveling, but could only be so productive without getting in the way of enjoying the vacation. I’m catching up on some email and client work this morning. Feeling fairly rested despite a very long travel day coming back home.

Maybe when most American families visit France, they don’t spend the first full day at Disneyland Paris. But that’s how we roll.

→ 2015/08/10 4:48 pm

Riposte push server crowdfunding

Back in April, the App.net app Riposte was removed from sale. Riposte wasn’t just the best client for App.net; I think it held its own against even the best Twitter apps, too. The push notification server for Riposte (and its messaging app complement, Whisper) was to keep running for some months and then shut down this summer.

Even if App.net is slowly fading away, like many users I still have Riposte on my home screen. I cross-post all my microblog posts from this blog to App.net. When I get replies and mentions on App.net, I like to see them as push notifications in Riposte. I can reply in the app easily, or skim through the timeline to see what else is going on.

Now the developers have launched a crowdfunding campaign to keep the Riposte server running. Their goal is a modest $500 per year to cover AWS hosting and time to keep everything running smoothly. Even if you’re not very active on App.net anymore, consider donating as a thank-you for everything Riposte did for App.net, and for what it did to advance the state of UI design in social networking apps.

Starting over

“Am I always starting over
In a brand new story?
Am I always back at one
After all I’ve done?”
— Always Starting Over, from the broadway show If/Then

Daniel said on the latest Core Intuition that it’s important to celebrate major work milestones, like shipping a new app or quitting a job. I didn’t think I’d be celebrating right away, but as it turned out, my wife met me for lunch on Friday and we had a beer to mark the occasion. She snapped this photo:

Some things just work out. I couldn’t have picked a better t-shirt to wear if I had planned it.

When 5pm came around I made a final comment on Confluence, replied to a couple emails, and then signed out of HipChat. But I didn’t have time for much reflection. My son and I were busy packing up to head to a campout with Boy Scouts. Then as soon as we arrived back the next day, I turned around again to take my daughter to see Idina Menzel.

The concert was incredible, somehow including both Wicked’s “Defying Gratify” and Radiohead’s “Creep” — and yes, of course Frozen — to make a show with both the occasional explicit lyric and little kids pulled up from the audience to sing. It was only while driving home from the concert that I had a moment to think what I need to do next. Idina’s lines from If/Then at the beginning of this post kept coming back to me.

I’ve worked a long time on a few things, and they were pretty good, but now it’s time to start over. I turn 40 in a few months. It’s time to figure out what the next 10 years of my life should be about.