Category Archives: Habits

Running Through the New Year

One lesson I learned from Ramit Sethi was to just start your New Years resolutions in December. That way you get a jump start. You get to start the new year with having already made some progress.

I do themes, not resolutions, but the same concept applies. My theme last year was to Make Art with Friends and that went pretty well. I set out to collaborate with others and try to meet more likeminded people who liked to make things. As 2023 is coming to a close, I think I can maintain my gains here without it being my main focus.

This year, I am going to refocus on my fitness, specifically strength training. As I age, I am more concerned with muscle and bone health and I’m convinced that lifting heavy things is the way to go. I’m not waiting until January 1st—I started yesterday.

With that goal and my other plans, I decided to make 2024 The Year of Heavy Lifting. It’s a year where I plan to do some hard things that I’ve been putting off.

If you usually do something for the new year (a resolution, a theme, whatever) don’t wait—start now.

Observing Experts

I started running in 2005 and did a marathon in 2009, but I ran sporadically for a few years after that. I had always done it pretty much on my own, and that limited my progress and sometimes led to injuries.

I started running seriously again in November 2018. The big change I made was getting a coach. I had just read Peak by Anders Ericsson, and learned that one way to become an expert was by watching experts. It wasn’t so much what the expert taught—Ericsson thinks that experts don’t always know why or how they do things. What seemed to be useful was just observing experts. (Incidentally, Ericsson is also the source of the 10,000 hours idea popularized by Malcolm Gladwell. Peak corrects a lot of the misconceptions about that).

My running coach, Holly, has run her whole life. She’s done 25+ marathons and several triathlons and also uses coaches herself. She often expresses her lessons as her observations of the elites she was run with (so I am observing an observer). Two years into it, I have gotten everything I wanted out of it and more.

So, I am trying to apply the success I have had by running with an expert to other aspects of my life.

I want to write a lot more, so I joined the Blogging for Devs pro community where I am surrounded by devs of all success levels that I can observe. Last year, I did the Akimbo Podcast Workshop which similarly exposes you to a cohort of podcasters—a mix of experts and other learners. I am learning a lot just by watching and emulating their behaviors.

The recurring behavior I observed from the successful bloggers and podcasters in these communities is to just publish. Almost everything else there is to learn only makes sense in the context published work.

So, my advice is to seek out experts doing the thing you want to be an expert in. And when you find one, I’d ask just to watch them work and then emulate their behaviors without necessarily understanding why at first. The book, Peak, has a lot to say about this, and if you are skeptical, watch this video about learning tennis by observing.

Habits 3.0.1

Just in time for the New Year, I released a new version of Habits

  • Habit names are multi-line on the home page (finally)
  • Notifications on iOS 10 include your motivating photo
  • There are more controls for when to show the photo on the home page
  • Lots of little bugs have been fixed

Enjoy!

Developer Notes:

Habits most interesting to me as a hobby project — if you are interested,  you can also see my notes from 3.0 where I showed a screenshot of 1.0 — Habits was started almost as soon as the iOS SDK was officially released.

For this version, here are a couple of behind the scenes tidbits:

  • I ran the wonderful Synx on my project to finally align the folder and group structure.
  • I also introduced tailor into my commit procedure to enforce some Swift style.
  • I found my old svn repository for the beginnings of Habits — I am working on restoring that so that it looks like the pre-2.x history for what I have in git now.
  • I used to host my own git server repo, but that was mostly for backup. I decided to change my origin to bitbucket. I am thinking of one day open-sourcing Habits, but for now it’s private.

Habits 3.0

Back in 2008, I learned Objective-C to make my first “iPhone OS” app, Habits. When it was released, Habits looked like this:

habits-screen

This weekend I finally finished v3.0 and made it free.

As this is a developer site, the more interesting thing to note is that Habits was originally made in the first iPhone supporting version of Xcode (with external Interface Builder) and I have been migrating the project file from version to version since then (using 7.3.1 to make the current build).

Some things that were introduced into Habits for this version:

  1. Swift – all new classes were made in Swift and many existing ones were refactored into Swift
  2. Accessibility – Since NSSpain 2015, I’ve been running my iPhone with triple-Home to get into VoiceOver (suggested by Hermes Pique in this talk). Doing that made me realize (1) what it was like to use Habits without looking at it (2) how easy it was to make it work properly.
  3. fastlane – specifically “deliver” to manage the iTunes record and “frameit” for fancy screenshots
  4. Carthage – there had never been 3rd party libraries in Habits, but I decided that one was worth it this time.
  5. TOCropViewController – A simple framework that does one thing very well – provide a View Controller for cropping images. I use this instead of the built-in iOS one because it supports locked aspect-ratios.

Enjoy!

Test First as a Habit

I am not a TDD zealot (or even really a practitioner), but on The App Guy podcast, Paul Kemp asked me if I had any habits to share as an app developer.  I said:

My app developing habit … is get a new passing unit test every day.  […] that new green dot is my indication that I’ve at least added a little bit to the application.

This is a habit I started in earnest when I took B. J. Fogg’s Tiny Habits course. My tiny habit was to just run the simulator, and the best way I found of doing that was to run the tests through it. Then, writing a new test for whatever functionality I was planning next just seemed to be the perfect way to extend it.

Once I write that first test, I don’t TDD the rest of the way, but I’ve found that first test to be a good way to warm up.

Habits 2.01 – Start Small

When I announced Habits 2.0, a fellow Western MA Hackathoner, Molly McLeod, reminded me of BJ Fogg and his Tiny Habits method.

Only three things will change behavior in the long term.

Option A. Have an epiphany
Option B. Change your environment (what surrounds you)
Option C. Take baby steps

I had first learned of BJ from Ramit Sethi’s interview with him. The moment I remember most clearly was his method to start to floss. He suggested that you only commit to flossing one tooth each day — if you did that to start and internalized that that was success, you’d start flossing more eventually. I started doing this, and while I’m not a perfect flosser, I do floss most of the time. That convinced me that baby steps were a real thing. If you have any interest in this, sign up for a (free) week-long tiny habits session with BJ.

So, with Habits 2.0 out the door, I am going to plan 2.01, a baby step improvement of 2.0 by just doing a very small amount of work each day on it.  I joined BJ’s tiny habits for this week and he recommends adding a 30-second behavior triggered by something you will definitely do each day. I decided that once I put my dinner plate in the dishwasher, I will sit at my desk and run the Simulator. Then, I will celebrate that as a success (and mark it done in Habits, of course).

I have been doing that for about 6 days, and each day when I run the simulator, I usually test Habits out a little, and write up a Trello card or write a small test.  BJ’s advice is to keep it completely pain-free and small and to not worry about building on the tiny behavior. Still, in this time I have managed to make a bunch of small improvements to Habits, which I look forward to sharing soon.

Habits 2.0

Back in 2008, I made a simple iPhone app called Habits to help me remember to do some recurring tasks that were not a regular schedule. I made a few updates early on, but it basically did what I needed it to do, so it’s been a while since I have looked at it.

Habits App IconA couple of weeks ago, I decided to refresh its look in anticipation of iOS 7. Unfortunately, an app compiled with iOS 6 doesn’t automatically pick up the new look — at the very least, you need to recompile. Instead, I decided to design something custom that would look good now and feel at home on iOS 7. While I was at it, I updated the icon using the iOS 7 app icon grid.

You can see some screen shots on the Habits documentation page, and if you want to buy it, Habits is 99 cents on the App Store.

Here’s a full list of everything that I had to do for 2.0 in case you’re a developer with an older app and want to see what you might be in for.

  • Converted to an ARC app
  • Moved lots of properties to auto-synthesize
  • Updated deprecated APIs to iOS 6.0 versions
  • Skinned the tables, mostly with custom cells
  • Added a pan gesture to the front-page cells (try moving them to the left for a short-cut)
  • Supported local notifications and badges (requiring a new settings page)
  • Made a new icon
  • Updated my Google Toolkit unit testing to Xcode built-in unit testing (which was gratefully, very easy) — the main issue is dealing with unit-testing’s idea of the document folder
  • Updated all button and default images
  • Updated in-app help
  • Converted my svn repository to git
  • Added database migration to support the settings (this app uses sqlite API directly)
  • Refactored a lot of code, mostly in the database, view controllers and custom cells, to share more code.
  • Fixed a bug in the calendar to support iPhone 5 size better.
  • Updated App Store listing, web page, made this post, etc.

Start Habits not Resolutions

I saw this list of New Year’s Resolutions on the Did I Get Things Done blog (originally from Amazon)

  • Lose Weight
  • Get Your Finances in Order
  • Go Greener
  • Curb Your Vices
  • Get in Shape
  • Relax More
  • Pursue a New Career
  • Upgrade Your Technology
  • Organize and Optimize
  • Start a New Hobby


The main reason that I have had a problem with a resolution is that I don’t really think about them much a week or so after New Year’s. A few years ago, I created a small web app for myself to log how well I was doing at keeping to resolutions I was making. A few months ago, I ported it to the iPhone as
Habits.

Instead of making resolutions this year, I created a few habits instead. I want to lose some weight this year (the #1 resolution), so I added a habit to run every 2-3 days, to do bicep/chest and shoulder/tricep weight training once a week. I want to keep my house in better order, so I added a habit to clean up and to process my mail pile more regularly.

A lot of these resolutions should just be a recurring task that you try to do as often as possible.

Habits on Sale for $0.99 until the end of January

Habits is the perfect application to make sure that you stick to your New Year’s resolutions, so from now until the end of January, I am putting Habits on sale for $0.99.

I am working on version 1.1, and I will post it at the end of January and return it to its old price. Until then, here’s hoping that you’re able to turn your resolutions into habits.

(The AppStore takes time to fully update — please make sure it says that the price is $0.99 before you buy)

Buy Habits on the App Store