2018

Saturday, March 31, 2018

Weekend alone begins at Flywheel. Ran into Justin Stahl whom I hadn’t seen in years ☕️💻

Playing around with data portability. I’ve given up trying to use iCloud Drive, it works but introduces a host of concerns I don’t want to deal with for these little tools. Instead I’m making it easy to import / export data. Fun side effect is it makes peer-to-peer sharing really easy.

It’s a shame you can’t post files on Facebook or Twitter. Seems like an odd limitation. Dropbox has no doubt benefited from this.

Interval is packed to the gills with laptops today ☕️

Watchin some hoops with some Kansans 🏀


Wednesday, March 28, 2018

Ran this morning, felt like a slog but I got through it. Sat for 15. Worked in a very calm Sightglass on Divis until the Yoga wives took over. 🏃🧘‍♂️☕️

Spent most of the day trying to improve my understanding of file management. I’ve worked with some of these APIs but never felt like I had a complete picture of what was going on. The File Coordinator and File Presenter stuff is interesting but watching some of the talks and reading documentation makes me worry this is Apple’s B team. 💻

Spending time with Jess before she goes to Taipei 🇹🇼

Watching Roseanne, feels like a time-warp, oddly just as relatable now as it was twenty years ago. 📺


Monday, March 26, 2018

☕️ Linea Cafe reading an essay by Boris Groys about the rise of "self-design" in response to the secularization of society. He argues people once behaved to please God rather than society itself, "where religion once was, design emerged." Then he takes a weird transhumanism / fate of the solar system turn.

💻 Improving our logging around push notifications and adding some cleanup methods to discard bad tokens. Development tokens now use the correct APNS endpoint. Also shaved 30 seconds off our build time by building our analytics dashboard and API server in parallel 🤠


Sunday, March 25, 2018

📒 Bought a collection of design essays at City Lights. Not sure it’s any good yet, Benjamin Bratton has a piece in it.

🍽 Zoetrope was perfect, kinda empty and full of old character. Walked around Jackson Square shops afterwards.

🏀 Kansas to the Final Four!

🌳 Walking through Buena Vista listening to Jason Kottke and Gruber talk about the old days of blogging.


Saturday, March 24, 2018

☕️ Sightglass on Divis — reading Pinker dissect language.

🥖 BiRite before it turns into a zoo. Jane banquets are pretty good. Manresa are still #1.

🏃 Kezar three and stairs.

🇺🇸 Marching — It was really somethin’ seeing all those families and their children walk down Market Street today.

🥃 Vesuvio — wrote a bit then wandered up to Fort Mason.

🚌 Taking the 43 home listening to Bruce Sterling’s SXSW 2018 closing remarks.


Friday, March 23, 2018

Wrapped up plugging in data for our analytics dashboard.


Thursday, March 22, 2018

Built some data endpoints to power our little dashboard to report system health. Tried to avoid the news because it’s mostly garbage. Grateful for today’s bit of sunshine, and the chicken sandwich at lunch 😋


Wednesday, March 21, 2018

🍜 Namu with Aaron, then ☕️ Sightglass on Divis to clean up project folder so it works better with multiple daemons. Mapped out a dashboard to track system health.

🕹 Free Gold Watch to reset, then 🌳 park walk thinking about friending models.

Just passed Danny Glover walking out of Whole Foods 😳 He was talking on his bluetooth headset lookin too old for this shit.


Tuesday, March 20, 2018

Haven’t been sleeping well. Woke up at 4AM and watched this Swift talk by the guy who created Charles.

Read a lot of documentation today 🧐 View controllers have a lot of state[2].


Monday, March 19, 2018

Sweating the small stuff today. Getting close to making another release today. Still dealing with some really annoying UIKit behavior.

Reading up on the changes to Swift in 4.1 and 4.2. Synthesized Equatable and Hashable conformance is 👌 They also fixed a bug where you could encode an Array of non-conforming objects.


Sunday, March 18, 2018

👨‍💻 Worked a little this morning on Precap and some personal tools. Made a batch of granola between breaks.

🏃 Eight to the Cliff House and back. Close to my limit before I’m reminded who I inherited my knees from. Ran into Ella, such a wee city.


Saturday, March 17, 2018


Friday, March 16, 2018

Saving colors instead of distinct themes. Need to read more about color spaces in iOS, encountered some issues with our Color class couldn’t determine HSB values correctly without explicitly being set to the Extended RGB space.


Thursday, March 15, 2018

Stories shouldn’t appear as unread in the UI when white-space changes occur. Added some documentation around how our more complicated State methods work so future explorers will spend less time understanding what’s going on. Fixed some other small things in the UI.

Made vegan queso with my Vitamix out of pure curiosity — mostly cashews and almonds. Surprisingly good at first then the heaviness of so many nuts kicks in.

Discovered Sketch has a command line tool and started adapting someone’s export script to build a Sketch slices to Xcode Assets.xcassets. Works pretty well so far, need to figure out how to handle the app icon.


Wednesday, March 14, 2018

Knocking off todos for Precap. So ready to ship this puppy, mostly because I wanna see how more of my friends spend their time.


Tuesday, March 13, 2018

Cleaning up our constants for managing colors, fonts and images. Adding a cleaner way to experiment with different color hues. Realizing it’s a bit tricky to arrive at a purely programmatic solution without offering some finer grained adjustments to saturation and brightness in some cases.

Odd thought: I wonder if a public figure has ever prematurely announced their death to glimpse the outpouring. Kinda seems like a waste not to.


Monday, March 12, 2018

Refined the popovers so the spacing isn’t crazy and they adjust in size. UIPopoverPresentationController is my new friend.

Playing around with color themes this afternoon. I think we’re gonna want to subtly change the chrome on the main screen to play nicely with each theme. Having a slight gradient is kinda nice as it makes the text a little more readable towards the top.


Sunday, March 11, 2018

☕️ Sightglass on Divis reading Pinker and resurrecting my little note to self app.

🚶‍♂️ Walked home thinking how crazy good nature is at message passing. We’re basically just a bunch of decoders/encoders.

🚶‍♂️ Long walk through GG Park catching up with my mom over the phone. I wanted her to try Instagram so she would see my photos but she was so against it because she didn’t want to share stuff. Got me thinking about designing for consumers, making them feel comfortable just consuming and alleviating the pressure to share.

🎙 Listening to the TED Radio Hour — apparently we’re not so good at decoding emotions. MTT’s talk was a good one in full.


Saturday, March 10, 2018


Friday, March 9, 2018

Started working on this new transition stuff then got sidetracked reading more about UIPresentationController. Popover Presentation Controller is pretty nice, didn't realize it worked on iPhone.

Song Exploder episode on The Daily theme was fun. I like how unashamed audio engineers are about their influences.


Thursday, March 8, 2018

Learned more about property animators and how they don’t work well with the current presentation controller API. The best solution to animate a dimming view alongside a view transition is to thread the animator down to the presentation controller and add an animation block. Works but feels broken, I’m hoping they’ll address this at WWDC.

Also got scroll views working alongside the pan gesture that powers the transition.

Nice thing about all this is I’m left with a nice separation of concerns: 1) a Transitioning Delegate managing the ceremony of adhering to all the protocols and delegates which is largely reusable and 2) a Transition Driver where the animations and gestures are take place.

This trend of daily wrap-up podcasts is pretty good. I’ve been religiously listening to NYT’s Daily and the new Techmeme Ride Home. It’s only a matter of time before someone does a Talk Soup podcast about podcasts.


Wednesday, March 7, 2018

Changed our Launch Screen to show some placeholder UI to make it seem like the app is loading quicker. Kinda surprised by what you can’t do in this file.

Went pretty deep into UIViewPropertyAnimator today. Took me a while but after picking apart this example and watching a WWDC talk, I think I understand what’s going on.


Tuesday, March 6, 2018

Fixing small Precap bugs with server-side sync and filtering out empty stories from the feed. Our unseen stories notification should be working again.

🌵 Distracted by the world of Yuto Yamasaki after visiting Playmountain during lunch.

I think I fixed our image caching, forgot to set Cache-Control max-age on our HTTP responses. Alternatively we could use URLCache directly and ignore headers.


Monday, March 5, 2018


Sunday, March 4, 2018

Got my little podcasts app to a point where it’s actually useful. Using a concurrent map from the latest Swift Talk to speed up RSS parsing and cribbing a lot of UI from Things.

🏃 Park four listening to the latest TED Radio Hour

🍿 Oscar party at Aaron’s. Just now realizing Aaron made chili and cornbread and I didn’t try any!!!


Saturday, March 3, 2018

A bit of cleaning at home and watched the fried chicken episode of Ugly Delicious.


Friday, March 2, 2018

Working at Aaron’s to get out a new build of Precap.

New build is out and you won’t see this unless you’ve upgraded because we made a bunch of backwards incompatible changes to the API 😜


Thursday, March 1, 2018

Going to write a blog post on this percent driven interactive transition stuff because it’s so unclear how to use it alongside custom view transitions. The sticky bit is knowing when you’re in an interactive transition and adjusting the animation curves so everything movies in sync with your finger.


Wednesday, February 28, 2018

Merging in timezone stuff this morning. Then I’m going to fix the weird transition that happens when you swipe the story feed away. Itching to make a new build so we can invite another small batch of people. I’ve always found that’s a good way to inject some excitement 💉


Tuesday, February 27, 2018

Almost finished this timezone stuff. Need to write some tests to build up the confidence to merge in the changes.

Someone should do a documentary on indie app developers similar to the one about game developers. It’s always been a lifestyle that’s intrigued me. We don’t seem to celebrate the Basecamps and Pinboards as much.


Monday, February 26, 2018

🏃 Park four 🚎 33 to the office reading Pinker ☕️ Linea

Adding timezone support to Precap so the 4AM cutoff works at the appropriate local time for people.

🥪 Rhea’s Deli — finally met Rhea, talked about his aioli recipe. First thing his neighbor chef taught him before opening the deli.


Sunday, February 25, 2018

☕️ Sightglass on Divis fiddling with Swift stuff.

Took the car out to Palo Alto to visit Don and Zach at Zombierunner. Miss those guys. Bought a new pair of running shoes and some laces that won’t come untied.

Did some research on blenders and bought a Vitamix. Haven’t been much of a blender type but I wanna give it a try. Need more fresh fruits and veggies in my diet.

Drove home listening to TED Radio Hour episode on Confronting Stigma.

Wandered around some Outer Sunset shops looking for interesting bowls. Didn’t find any 😕

Made an ice cream-like substance with frozen banana, blueberries and mango. Currently it’s the most expensive ice cream I’ve ever made 🤑


Saturday, February 24, 2018

☕️ Sightglass on Divis working on a little SQLite store for Swift. Walked home listening to a More Perfect episode where they dissected the 2nd amendment and the history of the NRA.

🕹 Zelda while Jess worked.

🚶‍♂️ Did another Detour about Haight-Ashbury. Peter Coyote continues to be one of my favorite narrators. Didn’t realize he went deep into Zen.

🥠 Peoples was really good, best homestyle Chinese I’ve had here.

🥒🥕🌶🍄 Spent the rest of the evening pickling and listening to Selected Shorts on KQED.


Thursday, February 22, 2018

At the office. Pushed some server changes to consolidate our push/pull endpoints into one sync endpoint for Precap.


Wednesday, February 21, 2018


Tuesday, February 20, 2018

Fixed a bunch of landscape mode issues in Precap. viewWillTransition is pretty nice, wonder how that’s gonna work when you can run iPhone apps on the desktop. Does it just get called repeatedly or are their specific sizes or is there a ghosted view while resizing like iPad?


Monday, February 19, 2018


Sunday, February 18, 2018

Built a Tinder-like swiper for my flash card tool. Easier than I thought.

Found a used copy of Language Instinct at Readers Bookstore — love encountering other people’s markings and highlights in books.


Saturday, February 17, 2018

Made a cool little demo of a Go framework running inside a Swift app handling RSS parsing for my little podcast app. Works in the simulator but won’t compile to a device because gobind doesn’t generate bitcode 🤦‍♂️


Friday, February 16, 2018

Helping the Relay guys with desktop designs. Really preferring Github Issues over talking in person in this case. Being forced to type out a proposal and see its flaws before sending is nice.

Aesop hand soap is such a bathroom game changer.


Thursday, February 15, 2018

In the office today working on some Relay desktop tasks.

Merged in a basic reactions implementation for Preacp. Lots of room for polish and improvement but nice to have something working for now.


Wednesday, February 14, 2018

Precap: Almost ready to merge in a basic reactions implementation. Also close to finishing reminders. GitHub’s Pull Request / Issue workflow has never made sense to me.


Tuesday, February 13, 2018

Going deep on the UserNotifications framework. We should be able to use local push for scheduling reminders and notifying about unseen content.


Monday, February 12, 2018


Sunday, February 11, 2018

Got the basic interactions working for my flash card app. Algorithm is in place, just need to make a custom collection view layout and it should be at a point where I can begin using it.

It’s usable, need to sort by calculated scores, allow editing and make a set of text sizes.

I wonder if commercial architects are facing the question, “is this interior ’gramable?” 🤔


Saturday, February 10, 2018

📓 Researching spaced repetition algorithms. Looks like SM-2 is what most flash card apps tend to use.

Made progress on my little flash card app. Supporting the full range of SM-2 responses makes it difficult to keep the UI simple, gonna try to narrow it down to four with an emphasis on two. Borrowing heavily from Tinder because it feels like an appropriate interaction.

Kinda want to make a website just for bathroom codes.


Friday, February 9, 2018

Finished converting our custom menu popover to use the view controller transitioning delegate stuff. I think I finally understand this API, still seems like a lot of pieces to make a custom transition but they all make sense.

Going to work on a few small things then try to tackle custom text styles for Precap to see where things could go.

Wrestled with a table view scroll position jumping around after pushing another view controller. Seems like the best solution is to cache estimated heights?

Adding reminder notifications along with a way to adjust their time or turn them off. Wish there was an easier way to construct tables with static cells that may hide/show or change size.


Wednesday, February 7, 2018

Finally had a chance to pick Andy Matuschak’s brain about how he and Michael Nielsen use flash cards for memory recall. Need to read more about spaced repetition and SuperMemo.

Pair programming session with Aaron to work through his “outbox” idea of keeping drafts in sync for Precap.


Tuesday, February 6, 2018

🏃 Park four with Alessandra Celletti playing Metamorphosis. ☕️ Stumptown shot at home. Gonna finish this custom menu controller for Precap today. Makers Club tonight.

🥋 Had an “I know kung fu” moment this evening while researching view controller transitioning delegates.


Monday, February 5, 2018

Rolling a new release of Precap this morning. Preparing for more users this week!

Catching up with Matt Brown to see how my registration flow is fitting into his marketing stuff for Relay.

Working on a light-weight popover for seeing who’s viewed your story. Kinda tricky to show while keyboard is up but it looks like there’s a hack to present from the top-most window without dismissing the keyboard. The App Store gods may not take kindly to this 🤔

Tried to listen to a Sam Harris episode with Eliezer Yudkowsky on the walk home and got bored with the pessimism and absurd thought experiments. Playing with animations now 🤹‍♂️


Sunday, February 4, 2018


Saturday, February 3, 2018


Thursday, February 1, 2018

🏃 Park four with Shostakovich’s Piano Trio #2. Taking the 33 to work reading an article by Stewart Brand.

Hopefully designing the last signup flow for Relay. They leaned in a little too heavily on phone numbers with the last iteration. Going to borrow heavily from Instagram since it’s a good example that supports Facebook, email and phone on both desktop and mobile.

Critiqued some web marketing materials Matt Brown put together for Relay team.

Talked through some problems Raphael was facing using Kubernetes CronJobs. Sounds like there might an issue with cloudsqlproxy not running in time for your program to execute, thus failing when it can’t connect.


Wednesday, January 31, 2018

Made some improvements to the Precap onboarding experience. A little behind on some design work I owe the Relay team so going to give them attention tomorrow.

Feeling better, went for a run. Now waiting for the magic that is Amazon Fresh 🧞‍♂️


Tuesday, January 30, 2018

🏃 Park four with Bach’s violin sonata #1, no better way to start the morning.

☕️ Sightglass on Divis with Minsky’s Society of Mind.

Precap: Spending some time testing our minimal new user experience, iPad experience and seeing how things behave on a simulated slow connection.

🥗 Souvla watching this really interesting talk on Xi by Ralph Levien. Makes me more interested in the idea of Go (or Rust in his case) cores that use JSON as a transport between the core and native language.

🤧 Retreating home to sneeze in peace


Monday, January 29, 2018

Precap: Adding a way for people to send us feedback. Easiest approach is email but that’s boring and no one will check it so I’m going to make a Slack webhook and send feedback to our channel.

Binge-watching the remaining episodes of Mr Robot season 3. It took an unexpectedly uplifting turn.


Sunday, January 28, 2018


Saturday, January 27, 2018

Messing around with gomobile (again) instead of trying to wrap a C library in Swift. It still doesn’t support all types but if you think of the framework like a web service (bytes in / bytes out) it kinda works.


Thursday, January 25, 2018

Late run, not feeling great. I think whatever bug is going around is slowly trying to takeover.

Learned a bit about how to work with C libraries in Swift.

Precap: Attempting to incorporate Google’s UUID package so we’re generating v4 UUIDs and not relying on MySQL to generate them. Also hoping to finish an improvement to the push token store so development builds receive pushes.


Wednesday, January 24, 2018

Park run this morning, already at 75 miles for the year 💪

Relay: Made good progress on a basic design for the web version yesterday. Landon and Levi are excited. Still a few interactions to iron out.

Precap: Today I need to alter the API a bit so clients can update past stories using Aaron’s client-side merging. I’d also like to get a few tests written to ensure the story endpoints are behaving as expected. Tests are kinda like the unpaid intern of software development.


Tuesday, January 23, 2018

Early run through the Park before heading into the office.

Mocking up a basic desktop version of Relay so the guys have something to work from. Missing UIKit already 😩


Monday, January 22, 2018

Coffee with Aaron at Sightglass this morning. Looking forward to more people on Precap.

Late run through the Park before totally dominating an ant infestation 🐜🤺 Kinda fun watching them try to regroup as I disrupted their pheromone trails. Now I’m fascinated by ant behavior 🔍

Charles C. Mann talk tonight at SF Jazz.


Sunday, January 21, 2018

Lazy morning trying to find the best Bach Partitas recording.


Saturday, January 20, 2018


Friday, January 19, 2018

Felt so good to run this morning. Worked out of the office on some new server endpoints for Precap so we can manage diffing and merging on the clients.

Anxious to finish listening to this interview with Kevin Kelly tonight.


Thursday, January 18, 2018

Working from home finishing up some force-upgrade stuff I started last night. Cranky because I couldn’t run this morning, hopefully the skies will clear a bit this afternoon. Headed to Stanza to work more on Precap ☕️👨‍💻


Wednesday, January 17, 2018

Foggy park run before hopping on the 33 to Linea. Working out of the office today on Precap. Meeting with Manik later to prioritize design needs.

Long walk from Mission to Hayes. Caught the 7 home, felt like a sardine.


Tuesday, January 16, 2018

Fixed issue with Precap registration. Replaced Universal Links callback with custom schema and using the new SFAuthenticationSession.

Made a big list of todos to burn down before giving Precap to more people.


Monday, January 15, 2018

Being a tourist in Fisherman’s Warf before walking to Fort Mason with Jess.


Friday, January 12, 2018

Burning down Precap tasks wishing Things was multiplayer.


Thursday, January 11, 2018

Caught up on some writing at home. Planned a better approach to using K8s CronJob. Gonna use busybox to ping a URL on the main process. Simplifies the build process and config.


Wednesday, January 10, 2018

Goal today is to have notifications for unseen content working. Need to research Go APNS packages to see if there’s anything new and setup a Kubernetes CronJob to execute the notif.

This episode on Kubernetes usability and the discussion about many small clusters vs one mega clusters is interesting. Sounds like Google is in favor of the former.


Tuesday, January 9, 2018

🏃 Park four

😐 Getting back in the habit of using Things for task management. So far I forgot to pay my license registration on-time because I forgot to add it to Things

🤹‍♂️ In the office today working on Precap this morning and talking with Manik this afternoon to get a sense for what Relay needs from me. Meeting David Kjelkerud for coffee at Sightglass.


Monday, January 8, 2018

🏃 Rainy park four

Gonna help Relay team with some design needs today. First day back in the office


Sunday, January 7, 2018

Snowbird with Jess this morning. Reading Bookchin wax about unmediated forms of social relations.

Wrestled with Kubernetes to gain a better understanding of Ingress and NodePorts. Posted a complete setup on Github which is what I use to manage my personal podcast aggregator.


Saturday, January 6, 2018

Stocked the kitchen this morning and spent a good part of the day watching Adam Savage’s YouTube channel, Tested. His “one day builds” are so fun, never thought building a tape dispenser could be so enthralling.

Ran four miles encircling four parks.

Reading about an attempt to bring American football to China.


Tuesday, January 2, 2018

Yesterday while wondering around downtown I stumbled on a Homegrown. One of my favorite Seattle lunch spots. Gonna go there for lunch.


Monday, January 1, 2018

Reading David Halberstam’s biography of Bill Belichick.