#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: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
◼
►
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: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: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.