PodSearch

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.