#131: The Greatest Good for the Greatest Number.
00:00:00
◼
►
Hello and welcome to Developing Perspective.
00:00:03
◼
►
Developing Perspective is a podcast discussing news of note and iOS development to Apple
00:00:06
◼
►
and the like.
00:00:07
◼
►
I'm your host, David Smith.
00:00:08
◼
►
I'm an independent iOS Mac developer and I guess now webmaster based in Herne, Virginia.
00:00:13
◼
►
This is show number 131 and today is Friday, June 28th.
00:00:18
◼
►
Developing Perspective is never longer than 15 minutes, so let's get started.
00:00:21
◼
►
All right, so it's been I think almost two full weeks since I did my last show, the last
00:00:26
◼
►
And I believe I recorded while I was sitting in my hotel room at WWDC, just packing, getting
00:00:31
◼
►
ready to go.
00:00:32
◼
►
And so, yeah, very different time now.
00:00:35
◼
►
The next week after WWDC, I was actually away with family for pretty much the whole week.
00:00:40
◼
►
And so that's why I didn't do a show last week and honestly didn't do much work.
00:00:44
◼
►
And it would encourage anybody who can to try and just anytime you actually go away,
00:00:48
◼
►
to really go away.
00:00:49
◼
►
I tried very hard to just not check anything, not be constantly checking email or servers.
00:00:54
◼
►
I'd rather dig out of that later and really be able to enjoy some time with friends and
00:00:59
◼
►
But anyway, so I'm going to talk about a couple of things today.
00:01:03
◼
►
Obviously, if you're at all paying attention to at least what's going on in my world, the
00:01:08
◼
►
biggest thing going on today is that everyone is sort of—we're not really freaking out
00:01:14
◼
►
about the Google Reader apocalypse that's occurring, I guess.
00:01:18
◼
►
No one really knows.
00:01:19
◼
►
Either it's Sunday night or Monday morning or Monday evening.
00:01:23
◼
►
sometime very soon Google readable die.
00:01:25
◼
►
And so the service that I launched a couple months ago,
00:01:27
◼
►
feed wrangler, has been seeing quite a lot of traffic
00:01:32
◼
►
as a result. And it's been fairly well reviewed.
00:01:34
◼
►
And I really appreciate it with people
00:01:35
◼
►
who said kind things about it and stuck with it today itself.
00:01:39
◼
►
And so this week especially has been
00:01:41
◼
►
pretty rough in terms of server stuff,
00:01:44
◼
►
in terms of trying to keep up with things.
00:01:47
◼
►
It's kind of an interesting thing that you--
00:01:49
◼
►
I was reading a great post-- I'll have a link in the show
00:01:51
◼
►
by the guy who runs Pinboard.in.
00:01:56
◼
►
And he posted a fascinating chart
00:02:00
◼
►
where he looked at his number of new user signups by day over time.
00:02:04
◼
►
And it's fascinating because you'll see these massive spikes
00:02:10
◼
►
in users, in usership as he goes.
00:02:14
◼
►
And then things fall down very precipitously.
00:02:17
◼
►
And there's these very sharp ups and downs.
00:02:17
◼
►
And that makes sense.
00:02:19
◼
►
The things that are driving downloads
00:02:20
◼
►
are events, are news, are attention,
00:02:23
◼
►
are people paying attention for whatever reason.
00:02:25
◼
►
And then there's a certain background rate
00:02:27
◼
►
that just happens naturally, kind
00:02:29
◼
►
of an organic sort of growth rate, if you will.
00:02:33
◼
►
And the interesting thing about that, of course,
00:02:35
◼
►
is that today is that day for me.
00:02:37
◼
►
I've had as many sign-ups today as basically--
00:02:42
◼
►
at this point, it's roughly tied with the launch day,
00:02:45
◼
►
where it was featured on a lot of prominent blogs,
00:02:48
◼
►
and just in general, it was a brand new service.
00:02:51
◼
►
So it's been a pretty wild day.
00:02:53
◼
►
Things are mostly keeping up.
00:02:55
◼
►
Things aren't quite as fast or as fluid as I'd like.
00:02:58
◼
►
But that's kind of getting to the first topic
00:03:00
◼
►
that I was going to have.
00:03:01
◼
►
And it's one of the interesting difficulties
00:03:03
◼
►
about building something and scaling it,
00:03:08
◼
►
is that in general, it's only practical to a certain degree
00:03:16
◼
►
to work flawlessly at every level.
00:03:21
◼
►
And by that, I mean if I were to have architectured and built
00:03:25
◼
►
and paid for a system that would allow a feed wrangler to run
00:03:30
◼
►
such that it could handle with today's load, which is--
00:03:35
◼
►
I think today's new user signups is about 10 times normal load.
00:03:40
◼
►
Whatever it's been for the last month, average or so.
00:03:47
◼
►
If I had structured it so that it would handle that without sweat,
00:03:50
◼
►
I'm necessarily wasting a lot of energy and a lot of resources as a result.
00:03:54
◼
►
Because today is a unique thing.
00:04:01
◼
►
Today is something that's just probably not going to happen again.
00:04:02
◼
►
And if this becomes the new normal, then I guess at that point I'll put in that effort
00:04:07
◼
►
and roll it up.
00:04:08
◼
►
But especially because I know exactly why it's happening, this is just going to be a
00:04:12
◼
►
rough day and I'll do my best and hope people are accepting of that.
00:04:17
◼
►
But it's just something that you can do what you can, but there is no magic pixie to us
00:04:23
◼
►
that you can do to scale services.
00:04:24
◼
►
At the end of the day, what you end up doing when you try and scale something is you're
00:04:28
◼
►
just going to be moving from bottleneck to bottleneck.
00:04:30
◼
►
And at some point you find a bottleneck that you can't just trivially replace or expand
00:04:36
◼
►
or fix with logic or whatever.
00:04:38
◼
►
And I did a show about this a little while ago, talking about performance.
00:04:41
◼
►
But at the end of the day, what right now I'm running into, the bottleneck I have is
00:04:48
◼
►
write performance on my database master server.
00:04:51
◼
►
That's my specific bottleneck that I'm struggling with right now.
00:04:55
◼
►
There are just so many users adding themselves to the system,
00:05:00
◼
►
and signing up for new feeds,
00:05:05
◼
►
and adding, subscribing to other feeds,
00:05:07
◼
►
and it's just pushing so much data into the database
00:05:09
◼
►
that it's hard to keep up.
00:05:12
◼
►
And something that's in general is fine.
00:05:14
◼
►
The system can handle a lot of,
00:05:16
◼
►
I don't know, quite a lot of traffic,
00:05:19
◼
►
but just not all at once.
00:05:22
◼
►
And so it's a tough question,
00:05:23
◼
►
and what you do within these kinds of scenarios,
00:05:23
◼
►
or at least what I've been doing,
00:05:28
◼
►
is you just start scaling back on the things that you can do.
00:05:29
◼
►
And so I'm scraping feeds a little slower than I used to.
00:05:32
◼
►
Except for I'm scraping popular feeds more often
00:05:38
◼
►
than not as popular.
00:05:42
◼
►
I'm playing those kinds of games to try and maintain
00:05:43
◼
►
some level of performance, or at least some level
00:05:47
◼
►
of apparent performance, without impacting the user.
00:05:49
◼
►
But I think the lesson that I thought would be interesting to talk about is, it's important, I think, to understand that.
00:05:48
◼
►
But I think the lesson that I thought
00:05:50
◼
►
would be interesting to talk about
00:05:51
◼
►
is it's important, I think, to understand and have
00:05:56
◼
►
a good tolerance for that kind of thing.
00:05:58
◼
►
I think as an engineer, it is so easy to think
00:06:01
◼
►
that you want to build the perfect thing, that you want
00:06:05
◼
►
to build something that is that pristine, whatever,
00:06:09
◼
►
like the platonic ideal of a system that you can scale up
00:06:13
◼
►
or will just always work perfectly.
00:06:15
◼
►
But the reality is that in the real world,
00:06:17
◼
►
That's not really practical.
00:06:19
◼
►
And you can learn lessons from mistakes you've made,
00:06:22
◼
►
and you can improve things, and you can get better and better.
00:06:24
◼
►
But you're never really going to arrive.
00:06:27
◼
►
And understanding that, I think, can help you stress out
00:06:30
◼
►
a little less about it, or at least feel less bad about it,
00:06:33
◼
►
and understand that this is just the process.
00:06:35
◼
►
And I think about even large companies, things like--
00:06:41
◼
►
it's a bit of a whipping boy, certainly.
00:06:43
◼
►
But I think about something like iCloud, right?
00:06:45
◼
►
So one of the largest companies in the world with essentially infinite money was then unable
00:06:50
◼
►
to build a reliable service for a variety of purposes.
00:06:58
◼
►
And so, you know, cut yourself a little slack if you can't quite hit it too.
00:07:03
◼
►
And understand that, and this is the second point that I want to emphasize, is that you
00:07:07
◼
►
can't please everybody.
00:07:09
◼
►
And especially, this is something that I learned a lot actually from the App Store that I think
00:07:14
◼
►
that has actually been very helpful as I've been working on a web service, is that
00:07:19
◼
►
the people who are loudest, the people who are most
00:07:24
◼
►
in your face about whatever the problems you're having, whatever the issues you're running into,
00:07:29
◼
►
about wanting to make sure that you know that they don't like what you're doing, whatever it is,
00:07:34
◼
►
that negativity is going to be coming from people who are negative in a loudest way.
00:07:39
◼
►
Whereas the people who are enjoying and just using it exactly how you expected them to
00:07:44
◼
►
are unlikely to say so.
00:07:46
◼
►
And sometimes people will say nice things, and if they do, definitely encourage them
00:07:49
◼
►
and say thank you.
00:07:51
◼
►
But typically in my experience, what people do, you'll see the negativity and sort of
00:07:57
◼
►
whatever, your mentioned stream or whatever.
00:07:59
◼
►
People will be like, "Oh, gosh, it's so slow today," you know, blah, blah, blah, blah,
00:08:03
◼
►
blah, like kind of that kind of thing.
00:08:04
◼
►
And it's very easy, I think, to internalize that and to feel very negative about yourself.
00:08:09
◼
►
It reminds me a lot of App Store reviews.
00:08:14
◼
►
You'll see people who are happy will rarely write App Store reviews unless you pop up a panel that says, "Hey, please go write my app."
00:08:16
◼
►
Which has other problems, which I can talk about in another episode.
00:08:24
◼
►
But in general, people don't think to go write reviews if they're happy.
00:08:26
◼
►
People write reviews if they're mad.
00:08:31
◼
►
So reading reviews is a little complicated.
00:08:31
◼
►
And understanding that you can't please everybody, I think,
00:08:34
◼
►
is very freeing.
00:08:35
◼
►
And it lets you focus on things that you can change.
00:08:37
◼
►
Because that's really the practical part of this.
00:08:39
◼
►
The practical part is that as soon
00:08:43
◼
►
as you kind of internalize that, it really helps free you.
00:08:45
◼
►
I don't know if you're like me, but I get really tied up
00:08:48
◼
►
when I think about somebody who's
00:08:50
◼
►
having a particular problem that I could probably solve
00:08:53
◼
►
if I focused on it particularly.
00:08:54
◼
►
They have some feed that won't load,
00:08:56
◼
►
they have an open PML file that won't load,
00:08:57
◼
►
whatever it is in my case.
00:08:58
◼
►
Like, these are the kind of examples
00:09:00
◼
►
been running into a lot.
00:09:02
◼
►
The difficulty, though, is it takes a certain amount of time
00:09:05
◼
►
per user to investigate that, to find the problem.
00:09:09
◼
►
And hopefully I can have a general purpose solution.
00:09:11
◼
►
Hopefully I can find a bug or find an issue or find
00:09:14
◼
►
something that will make that go better.
00:09:15
◼
►
But generally speaking, the issue is always going to be
00:09:18
◼
►
that time is time that's focused on a single user.
00:09:22
◼
►
And I have no shortage of tasks that I can do on things
00:09:25
◼
►
that I'm working on that will hopefully improve the system
00:09:28
◼
►
for every user.
00:09:29
◼
►
And so balancing those two things is certainly attention,
00:09:34
◼
►
that you want to be doing things that,
00:09:37
◼
►
it's sort of like you have the greatest good
00:09:41
◼
►
for the greatest number,
00:09:42
◼
►
with also making sure that every customer has,
00:09:43
◼
►
at least not every customer,
00:09:45
◼
►
that you are treating your customers well,
00:09:47
◼
►
that you're treating them with respect,
00:09:49
◼
►
that you're understanding that they have a reasonable expectation
00:09:51
◼
►
on things working.
00:09:56
◼
►
And if they don't,
00:09:58
◼
►
they have a reasonable expectation on your attention.
00:09:56
◼
►
But don't get too carried away with that.
00:09:58
◼
►
Don't let people sort of control you in that way.
00:10:01
◼
►
Because every time I try and do that, every time I
00:10:04
◼
►
try and fix everybody's problems at whatever level, in whatever app,
00:10:08
◼
►
in whatever thing I've worked on, ultimately I
00:10:10
◼
►
think it makes my products worse.
00:10:13
◼
►
Because individual problems are going to slow down
00:10:18
◼
►
the overall pace at what I can do.
00:10:20
◼
►
And so focus on the things that you think
00:10:22
◼
►
will have the biggest impact to the most users.
00:10:25
◼
►
And understand that a lot of this--
00:10:27
◼
►
and this is where it gets a little funny--
00:10:29
◼
►
is a numbers game.
00:10:30
◼
►
Even at the small levels that I work, in terms of I'm not,
00:10:33
◼
►
whatever, Feedly or whatever, one of these larger, free,
00:10:38
◼
►
venture-supported things who's trying to get millions
00:10:40
◼
►
and millions of users.
00:10:41
◼
►
I'm not one of those kind of companies where I'm trying
00:10:44
◼
►
to have millions of people.
00:10:46
◼
►
I'm trying to have thousands of people use my service.
00:10:48
◼
►
And so it's a different-- even there, it's still a numbers
00:10:53
◼
►
game in that some percent of users
00:10:56
◼
►
are going to try what you build, not like it,
00:10:59
◼
►
and want their money back, or cancel,
00:11:01
◼
►
or whatever mechanism makes sense for you.
00:11:04
◼
►
And that percentage, you can maybe adjust slightly,
00:11:07
◼
►
but you can never really eliminate it.
00:11:09
◼
►
And so trying to, and trying too hard and focusing on it,
00:11:13
◼
►
is I think very problematic.
00:11:17
◼
►
I think what's far more important
00:11:19
◼
►
is focusing on making your product better and better
00:11:21
◼
►
to a broader and broader audience.
00:11:23
◼
►
And then, in general, that will help.
00:11:26
◼
►
It's kind of rough, though, when you experience people that you know--
00:11:31
◼
►
it's like you have this person.
00:11:33
◼
►
Bill has this problem.
00:11:35
◼
►
And you know you could probably fix Bill's problem,
00:11:37
◼
►
but it would probably take you a couple of hours.
00:11:39
◼
►
You have to look into all of his feeds and look into this thing
00:11:42
◼
►
and try to work out why this particular feed from this particular place
00:11:46
◼
►
isn't loading.
00:11:47
◼
►
I had this one interesting example where
00:11:49
◼
►
an RSS feed I had would only load if it was loaded from certain IP addresses.
00:11:55
◼
►
It was, I think, some kind of regional-based thing.
00:11:58
◼
►
And it's like, maybe there's a way that I could work around that.
00:12:01
◼
►
Maybe there's some way that I can proxy a request off to some European server
00:12:05
◼
►
to make sure that it would work for this particular RSS feed.
00:12:09
◼
►
But the reality is, I just can't make that work for that user.
00:12:13
◼
►
And understanding that that time is better spent making it better
00:12:16
◼
►
for the 99% of other users for whom I know I can make an impact.
00:12:21
◼
►
And this is, I guess, a lot about leverage.
00:12:23
◼
►
And especially as an independent, as this is--
00:12:25
◼
►
and this is-- I think most people who listen to this either
00:12:27
◼
►
are independents or in some ways would like to be.
00:12:30
◼
►
If you're an independent, you have to-- your only real constraint
00:12:35
◼
►
is your time.
00:12:37
◼
►
There are a few minor constraints that you'll have, obviously.
00:12:41
◼
►
Some things, obviously, in terms of resources and money
00:12:43
◼
►
and those types of things.
00:12:44
◼
►
There are ways to, at a certain level,
00:12:47
◼
►
those can become overcome.
00:12:49
◼
►
And your biggest concern at that point,
00:12:51
◼
►
if you've reached any amount of sustainable business model,
00:12:55
◼
►
is that it then becomes your time.
00:12:57
◼
►
You have to be very careful about it.
00:12:58
◼
►
And this is something that I keep
00:13:00
◼
►
having to work on for myself, is that as hard as it
00:13:04
◼
►
is to tell somebody, you know, I can't really fix that for you.
00:13:08
◼
►
It's sort of like, I remember Dan Benjamin at 5x5
00:13:11
◼
►
had a good line for that.
00:13:12
◼
►
He was like, I'm sorry to lose you as a listener.
00:13:14
◼
►
when someone complained about what he was doing on the show
00:13:16
◼
►
or something like that.
00:13:17
◼
►
It's like, as hard as it is to say,
00:13:19
◼
►
sorry, I can't fix that for you, you just kind of have to.
00:13:23
◼
►
And understand that that's ultimately probably
00:13:25
◼
►
going to be better for you as a service.
00:13:29
◼
►
So that's it.
00:13:30
◼
►
Now, how far do I-- things will hopefully
00:13:32
◼
►
be settling down next week.
00:13:33
◼
►
Hopefully next week after Google Reader's dead.
00:13:37
◼
►
And at least I won't have to manage Google Reader imports
00:13:40
◼
►
anymore, which is a huge thing on my side.
00:13:43
◼
►
But the advantage there, I'd hopefully be going back to that
00:13:46
◼
►
and be able to talk more about some of the normal things
00:13:49
◼
►
that I'll be doing.
00:13:49
◼
►
And some of the plans that I have,
00:13:51
◼
►
I think it's going to be a really interesting couple
00:13:53
◼
►
I think I had some time and some perspective after WWDC
00:13:58
◼
►
to think about iOS 7, to think about all the changes
00:14:01
◼
►
that Apple is doing.
00:14:02
◼
►
And I think it's going to be a really fascinating time.
00:14:04
◼
►
And I like that I have a lot of products and a lot of things
00:14:07
◼
►
that I can try ideas into and be working on.
00:14:10
◼
►
and I'll be sharing as much as I can on the show about that
00:14:13
◼
►
accordingly.
00:14:14
◼
►
All right, that's it for today's show.
00:14:15
◼
►
As always, if you have questions, comments, concerns,
00:14:17
◼
►
complaints, I'm on Twitter @_davidsmith.
00:14:21
◼
►
I'm on AppNet @davidsmith.
00:14:23
◼
►
David@developingperspective.com is my email for feedback
00:14:26
◼
►
for the show.
00:14:27
◼
►
And probably fair to say, if you're
00:14:29
◼
►
looking for an RSS platform, one with shaky performance today
00:14:33
◼
►
but excellent performance tomorrow,
00:14:35
◼
►
definitely check out Feed Wrangler.
00:14:36
◼
►
It's at feedwrangler.net.
00:14:38
◼
►
All right, thanks.