Developing Perspective

#8 - Living the ‘Lifestyle’


00:00:00   Hello, and welcome to Developing Perspective.

00:00:03   Developing Perspective is a near-daily podcast discussing the news of note in iOS, Apple,

00:00:07   and the like.

00:00:08   I'm your host, David Smith.

00:00:09   I'm an independent iOS developer based in Herndon, Virginia, and this is show number

00:00:13   eight.

00:00:14   And today is Monday, August 8th, 2011.

00:00:18   The format of Developing Perspective is basically that I'll walk through some links and articles,

00:00:21   things that I found interesting, and then move on over to a more general discussion

00:00:25   towards the end.

00:00:26   Don't worry, the show will never be longer than 15 minutes.

00:00:29   And without further ado, let's get to it.

00:00:32   Only a couple of links today, as is often

00:00:34   the case on a Monday show, as not much happens

00:00:36   over the weekend.

00:00:37   But a couple of goodies.

00:00:38   First is an article talking about how

00:00:41   to show to-dos and fix-mes as warnings in Xcode 4.

00:00:46   And this is something that I actually now do in all

00:00:48   of my projects, which for a long time,

00:00:51   you always, when you're creating comments in your code,

00:00:54   will often have a little slash slash to-do, slash slash fix-me,

00:00:57   and just sort of annotate your code that way

00:01:00   as a way to kind of put reminders in, things

00:01:02   to help direct you as it's something

00:01:04   that you need to come back to.

00:01:07   Or somewhere that you're cutting a corner

00:01:09   and need to replace it later, you

00:01:10   know, you still throw in a fix me there.

00:01:12   And this is a great little tool.

00:01:13   It's basically you add a build phase to your project

00:01:18   so that it runs a little bash script

00:01:19   to find all of your to dos and fix me's

00:01:22   and flags them as warnings in your main compilation results

00:01:29   window.

00:01:29   And the advantage of that is you're not

00:01:31   going to forget one as easily.

00:01:32   If you're like me, you try and never ship anything

00:01:35   that has a warning in it, because almost always,

00:01:37   especially with the new LLVM tools and things,

00:01:39   warnings are typically an example

00:01:41   where I've done something wrong.

00:01:43   And at the very least, if it's a warning, what I tend to do

00:01:46   is you find the way to get around it.

00:01:48   Even if you're sure you've convinced yourself,

00:01:50   no, this is actually correct.

00:01:51   this is what I want to do, you do the appropriate thing

00:01:55   to make the warning go away.

00:01:56   So as an example, for some crazy reason,

00:01:59   doing an assignment in an if statement,

00:02:01   you need to add two sets of parentheses around it

00:02:04   to make sure to convince the compiler that no, that's

00:02:06   really what I wanted to do.

00:02:07   And I didn't mean equals equals there.

00:02:10   So that's just a great little tool.

00:02:12   This is over on the Deallocated Objects blog by Jake Marsh.

00:02:15   It's just a great little thing.

00:02:16   Definitely recommend giving that a try in your projects

00:02:20   if you're the kind of person who does to-dos and fixies like me.

00:02:24   Next, there's something that you may have heard of before,

00:02:28   but it's a really great little tool that's shipped

00:02:30   with developer tools in Lion.

00:02:35   And basically, it's called the Network Link Conditioner.

00:02:38   And the application, the link that I have

00:02:40   is a walkthrough done by Matt Gemmell.

00:02:43   But basically, it's a way that you

00:02:45   can change your computer's network connection

00:02:49   to simulate a bad or a different network conditions.

00:02:54   So for example, while you're working on your iOS app,

00:02:57   in the simulator, you can have it, for example,

00:02:59   simulate a 3G connection on a lossy network

00:03:03   and see how your app responds to that.

00:03:06   This is a much more convenient way

00:03:08   than a lot of other things that I've seen,

00:03:11   where I've seen people who create proxies and firewall

00:03:16   rules and things that he redirects with package loss

00:03:19   and all kinds of things.

00:03:20   This is a built by Apple tool that just shows up

00:03:23   in your network preferences and lets you play

00:03:26   with those types of things.

00:03:27   And you can vary huge numbers of operations.

00:03:30   You can change the bandwidth, downlink packets

00:03:33   drop percentage, downlink delay, uplink bandwidth packets drop

00:03:37   delay, DNS delay, all of those kinds of operations

00:03:41   that you may want to play with.

00:03:43   And this is especially important for iOS developers.

00:03:45   We're often-- it's difficult to test your iPhone application

00:03:51   on tricky networks.

00:03:52   If you live in a place where you have a good 3G network,

00:03:55   then that's great.

00:03:56   And you want to make sure that it works there.

00:03:58   But also, you want to make sure it works on a lossy network.

00:04:01   So you can try that now on the simulator

00:04:03   and have that work just fine there as well.

00:04:07   Another way that place that this comes into play is it also

00:04:10   is you can also, I believe, share your network connection

00:04:13   with other devices.

00:04:14   And so you could also do things like testing how a Wi-Fi iPad,

00:04:22   for example, would work when connected

00:04:23   to something like a MiFi.

00:04:25   Or one of those portable 3G devices

00:04:28   is you set up the network link conditioner

00:04:31   to be running on your Mac, share the network connection

00:04:35   through that through your Mac, and then you

00:04:38   can have your iPad connect to that network.

00:04:40   And that way you're going through the conditioner

00:04:43   and you can get a sense of how that works.

00:04:45   I've often had problems with that in the past

00:04:47   because you can make it-- in general, on the iPhone,

00:04:50   you can make decisions based on am I on a 3G network,

00:04:54   am I on a Wi-Fi network.

00:04:56   You don't necessarily want to make too many decisions

00:04:58   about that, but there's some things

00:05:00   that you want to change accordingly.

00:05:02   And so it's interesting to be able to simulate

00:05:04   that environment and have it-- still report it's on Wi-Fi,

00:05:07   but act as though it's on 3G.

00:05:10   All right.

00:05:11   Next, there's just an interesting thing

00:05:13   over on the pragmatic programmers.

00:05:15   And it's they have a post about what they call code katas.

00:05:20   And if you're familiar with these,

00:05:22   they're kind of an interesting approach.

00:05:24   And it's something that I've been thinking more and more

00:05:26   about getting into.

00:05:28   And it's basically an approach of trying

00:05:32   to get better at programming in the way

00:05:35   that you would get better at almost anything else, where

00:05:38   essentially it becomes practice.

00:05:40   And the goal is that you're going to be able to do things over and over again in a way

00:05:44   that will make you better and better at doing it.

00:05:46   And this is a question of building muscle memory.

00:05:49   It's a question of getting your mind working in the right way.

00:05:52   And so essentially what he has here is he's created a set of, let's see, it's 21 different

00:05:57   sort of problems.

00:05:59   And the premise is that you would sit down.

00:06:01   They don't take too long.

00:06:02   It's perhaps maybe half an hour or so.

00:06:04   And you just sit down and you just try and do whatever the problem is.

00:06:08   So for example, say one of his is implement a simple hash

00:06:13   based lookup mechanism and explore its characteristics,

00:06:16   is the name of the problem that he sets.

00:06:20   And basically, he then has a more deep walk through,

00:06:24   and you kind of walk through it.

00:06:26   But the interesting thing about it

00:06:27   is the goal is that you would actually

00:06:29   do that a couple of times.

00:06:31   So you'd sit down and say on a Monday morning,

00:06:33   you're kind of woozy from the weekend.

00:06:35   You're not entirely sure exactly.

00:06:37   it's kind of hard to get into your coding,

00:06:39   rather than trying to dive into a project

00:06:41   where that code is going to ship.

00:06:42   And so you want to make sure you're on your A game.

00:06:44   The theory is that you'd sit down and play with this

00:06:47   to try and get the juices going.

00:06:50   It's something that's familiar.

00:06:51   It's a hard problem, but it's not an impossible problem.

00:06:53   It's a very well-defined problem that has a very clear solution.

00:06:56   So in that sense, it is beneficial.

00:06:58   So just something to check out there.

00:07:01   All right, I'm going to move over to our more general

00:07:02   discussion now.

00:07:04   And essentially, the general discussion

00:07:06   I'm going to talk about today is about the term "lifestyle business."

00:07:12   This was recently reminded me in last week's Build and Analyze episode where he linked

00:07:15   to a discussion from Matt Heuley.

00:07:18   I'm not sure how you pronounce his name.

00:07:21   The guy who founded MetaFilter.

00:07:23   And essentially what he was talking about there, the whole article is fairly interesting,

00:07:28   but the most interesting part, which I will quote, is talking about where he sees his

00:07:35   business in the landscape of startups and developers, where he says, "Oh, people often

00:07:46   dismiss what he does as a lifestyle business and not a startup."

00:07:50   And so here I am quoting Matt, "I'm okay with this lifestyle business.

00:07:57   It's put down for a lot of people, especially in Silicon Valley.

00:07:59   I think it's the best thing in the world.

00:08:01   You don't have to kill yourself.

00:08:03   I've been at startups where I've worked 16 hours a day and didn't get anything out of

00:08:06   it.

00:08:07   It's stupid.

00:08:08   Geeks who know how to program and make things should be able to make a small thing that

00:08:11   runs forever and makes $100,000 a year and live off that.

00:08:14   I mean, what's wrong with that?

00:08:16   It's an awesome goal."

00:08:18   And so that's the end of the quote.

00:08:20   And I just couldn't agree more.

00:08:21   I was kind of struck by how clearly and cleverly he put that together, where it's a thought

00:08:26   that I've had many times, and it's something that, as a developer or especially as an independent,

00:08:31   It's a decision that you have to make.

00:08:33   It's something that you need to decide

00:08:36   what are you trying to do.

00:08:38   Are you trying to create something that is ultimately

00:08:41   going to be making you millions and millions of dollars,

00:08:44   and you're going to turn you into the next mogul?

00:08:46   Or are you just trying to live a nice, comfortable, upper

00:08:49   middle-class lifestyle, doing work

00:08:51   that you enjoy in a way that doesn't kill you?

00:08:54   And if the latter sounds at all good,

00:08:56   then you're in the midst of a lifestyle business

00:08:59   is what you're after.

00:09:00   So when I say a lifestyle business,

00:09:02   I think usually what it's trying--

00:09:03   the way I think that's easiest to kind of define

00:09:05   that is a business that does not use a lot of leverage.

00:09:10   So if you're familiar with sort of investing or stockbroking

00:09:13   or those types of things, you have

00:09:15   a concept of leverage, which is essentially borrowing.

00:09:18   It's where you borrow money and then invest that money

00:09:22   to sort of exaggerate your returns.

00:09:24   So rather than investing $100 and getting a 10% return,

00:09:28   you invest $100,000 and get your 10% return on that.

00:09:33   The thing that's interesting about leverage

00:09:35   is, of course, it's the only way that you can make

00:09:37   large sums of money in investing.

00:09:39   The average person in sort of a normal middle class life,

00:09:43   no matter how good their decisions are with investing--

00:09:46   say you bought Apple at $80 a share.

00:09:50   The thing is, OK, so at this point,

00:09:52   I think you would have quadrupled your money,

00:09:54   something like that.

00:09:55   But at this point, most middle class people

00:09:57   probably only would have invested $10,000, maybe $20,000.

00:10:02   And so you've gone from your $10,000 or $20,000 to $40,000 to $80,000, which is great.

00:10:09   That's a lot of money.

00:10:10   But it's not a transformative amount of money.

00:10:11   It's not like, "Oh, goodness, now I can retire to my island in Tahiti."

00:10:15   However, if I had taken out a second mortgage on my house and put all that in Apple stock,

00:10:21   I would have made some good money.

00:10:22   Of course, the thing is, if you think that through, the thing that you're really giving

00:10:26   up there is control, and you're increasing your risk dramatically.

00:10:32   And so that's where, as an independent, what I desire most is to have that independence,

00:10:37   to just make my good living.

00:10:39   I have kind of budget goals for my business, and I make that for my apps, and I enjoy what

00:10:43   I do as a result.

00:10:45   It's not something that I'm having to work 20-hour days and work seven days a week to

00:10:51   make happen.

00:10:52   It's relatively easy, with a big caveat.

00:10:56   It's relatively easy in the app store to make that kind of a living if you just kind of

00:11:02   stick at it for a little bit.

00:11:04   I've been doing this for almost three years, I think, now, and I'm finally in a place where

00:11:08   that's what happened.

00:11:09   But it's just something that you want to be mindful of and honest with yourself about

00:11:13   really what you're trying to do.

00:11:14   And if just having a nice, comfortable life, doing what you enjoy, sounds good to you,

00:11:18   if it's not all about the adrenaline junkie part of being in a startup, then be fine with

00:11:25   Own that. Be happy and encouraged that, "Yeah, that's what I want." And when you get there,

00:11:30   enjoy it. It's kind of a tricky thing when you get there. I've been working through that myself

00:11:34   recently. But it's definitely something that you want to be mindful of, that, "You know,

00:11:39   that's what I want. I want to have the easy life and enjoy what I do." So that's just kind of a

00:11:46   thought I had about that. It's something that I've been thinking a lot through recently,

00:11:51   just giving kind of, "Okay, where am I going next? What do I want to do?" And I think at

00:11:56   this point, what I really do want is a lifestyle business. I don't want employees. I don't

00:12:01   want all the things that go into those that I create that you need in order to grow for

00:12:06   whatever that means. I mean, if I'm going to grow, it's at a very sort of slow organic

00:12:11   pace and it's just improving an otherwise very comfortable life. So that sounds good

00:12:16   to me. All right, that's it for today's show. I hope that's interesting to you. As always,

00:12:21   If you have questions, comments, concerns, thoughts,

00:12:23   hit me up on Twitter.

00:12:24   I am @_davidsmith, underscore, D-A-V-I-D-S-M-I-T-H.

00:12:30   If you enjoy the show, please rate it in iTunes

00:12:32   or let your friends know.

00:12:34   Spread the word as we're getting started here.

00:12:35   And otherwise, hope you have a good day.

00:12:38   Happy coding, and I'll talk to you tomorrow.