Welcome to Pragmatic.
Pragmatic is a weekly discussion show contemplating the practical application of technology.
Exploring the real-world trade-offs, we look at how great ideas are transformed into products and services that can change our lives.
Nothing is as simple as it seems.
This episode is sponsored by Mandrel.
Mandrill is a transactional email service that easily ties into your
website and apps when you need to send one-off emails like responses, passwords,
resets, acknowledgments and so on. Visit mandrill.com and sign up today.
Why not? It's free. Use the promo code "Pragmatic" to get 50,000, yeah that's right,
50,000 free email transactions per month for the first six months. Normally that's
only $12,000 a month. That's four times the normal amount so get in there and sign up.
Now, integrate, deliver, track, analyze using email infrastructure from Mandrill. This episode
is also sponsored by Sapient Pair and their iOS app, Shopee. Shopee is a collaborative
shopping list app that's simple and easy to use with great features like pocket lock,
smart ordering and real-time collaborative updating. The shopping list is a special to-do
list and Shopee addresses that use case very well. It's free on the iOS App Store so check it out
at sapient that's s-a-p-i-e-n-t dash pair as in two dot com slash pragmatic for more. We'll talk
about them more during the show. Now I'm your host John Chidjie and I'm joined as always by my co-host
Vic Hudson. How you doing Vic? I'm good how are you John? Doing very well. So as is the way every show
starts these days. By popular request I have now added separate RSS feeds for the show
that are just episode only as well as follow up only in both MP3 and AAC formats so you
can choose which one you want to subscribe to. Existing feeds are unchanged, they can
all be found in our nice table at techdistortion.com/podcasts/pragmatic.
Now regarding follow up, you may have seen some follow up for episode 13 in the feed
this week just passed. Now expect to see a lot more of that. I've got a backlog I need to clear,
including some shortly about coffee. So look for that coming out shortly.
Now, once again, we're live streaming the show. Go to techdistortion.com/live. You can access the
stream in the chat room there. There's a show bot running in the chat room for our live listeners
that want to participate in the show. It accepts exclamation mark Q for Q&A questions held after
the show! And !s for title suggestions. The show is being recorded at the same time every
week from this point forward and the schedule is up at technistortion.com/podcasts.
Recording times will be 1pm EST in the US, 10am US Pacific, 6pm GMT, 3am AEST or 4am
Australian Eastern Daylight Time if you're an Aussie insomniac.
Also a quick shout out to CW User and Bolrius from the USA for quite frankly the nicest
reviews the show has ever had in iTunes.
It's feedback like that makes me want to keep making the show so honestly it's always appreciated
and if you're enjoying the show and you haven't yet reviewed it or rated the show on iTunes
please feel free to do so at your convenience.
Today, what are we going to talk about today? Well, we've had a couple of techy episodes
in a row, so I thought it might be a good idea to do a non-techy episode. This is the
moment where you say, "Are you insane?" or what?
Are you insane?
I don't think so but then I'm the wrong person to answer that question. There you go.
I want to do a show about productivity and I'm not going to talk about, I don't want
to talk about tools, I don't want to talk about, this is not an episode of Back to Work
and honestly, yeah, you want to go listen to that, go listen to that. It's a good show.
I was gonna say I think I'm probably Merlin man's worst nightmare. Why? I need
lots of productivity help. But you're a little bit in my situation and I
think a lot of people are and this is what I want to talk about is if you've
got all the time in the world how do you how you structure what you do is
different from how people structure their time when they have very little
time at least I think it is I mean okay the truth is that when you've got a lot
more time what you tend to do is you'll follow the same process I'm going to go
through or you if you don't you should it's just because the time scales are
longer you feel less of that effect and less of that frustration so yeah I'm
getting ahead of myself that may not make any sense yet so I need to start
the beginning. In episode 20, the critical path, I talked about project management. So
this is kind of an extension of that in terms of productivity. And although I don't know,
it's all about being interrupted. So I sort of kicked this around when I tweeted about
it yesterday, the idea of productivitas interruptus. And that's not Latin. I know it's not Latin,
but still, I think it sounds cool.
The idea is how do you remain productive
when you're being constantly interrupted?
And I don't think the two are mutually exclusive.
So specifically, let's look at strategies
for getting a project done
when you either don't have much spare time
or whatever time you do have
is full of a lot of interruptions.
Okay, so I've been, and Vic, you know all of this
'cause you're helping me to test it,
but I've been working on some features
for the website, for this show actually,
specifically for this show as well,
on Tech Distortion for nearly two months,
and that's in my spare time,
and this precious little spare time that I have.
I'm not announcing them all right now,
but the announcements will be coming out shortly.
And anyway, essentially, the first piece,
the only piece I'm gonna talk about today
is I'm adding memberships to the site.
Now, this might not sound like a big deal.
Maybe it does, maybe it doesn't.
But the idea is that for me,
it's something I've never done before.
And I'm using Statomic as my CMS for the site.
And there are lots of restrictions over how you do that.
So anyway, I wanna focus on my experiences with that.
So how does that sound?
It sounds good. You should probably clarify that you're not going to be sending anyone Jelly of the Month though.
Jelly of the Month? Why?
Membership.
Oh, alright. No, okay, no. So anyway, alright.
The thing is when you start a project you decide I'm going to do something I would like
to do something I want to build something I want to make a podcast I want to write a
blog I want to build a car a kit car a kit home a shed you know whatever it is you want
to do.
Make some apps.
Make some apps yeah because there's a lot of people on listening to this show that develop
software so and that's why I'm focusing on a software development thing but the truth
is that every step that you take on that journey from inception to completion, every journey
of a thousand miles begins with a single step. Lao Tzu said that actually about 600 BC, Chinese
philosopher. I guess the point is that where do you begin? Well, you take a step. And how
How do you know where to step?
Well, you start by breaking it down into pieces
and how do you do that?
The thing that I think people get wrong
is that they will look at a project
and they will start at that point
as opposed to starting at how much spare time
do I actually have to do this?
Because I think a lot of people don't think about the time
until they dive in.
And I think that's wrong.
I think that you need to start with a time budget.
- Yeah.
So let's start there.
Start by figuring out realistically
just how much time you can spare.
And I mean daily, right?
So times of day, whole days, if you're lucky,
on average each week.
And once you sort of do that,
then you have an idea of how much budget you've got,
time budget.
Then it's okay to start defining your end goal.
And honestly, chances are it's probably way too lofty.
you're probably going for something that's over the top.
You know, like I wanna be,
I wanna have the best, you know,
gosh, I know he listens,
the best podcast player,
in the podcatcher in the world, let's say.
Let's say that's your end goal.
Okay, you're not gonna get that in the first attempt.
Yeah, you're gonna break that down
and say what's realistic.
I have to have some realistic intermediate steps here
I'm not gonna just jump from start right to the end.
So the first thing is to acknowledge
you're probably not gonna get to that goal
on your first attempt, and that's okay.
It's not a failure if you don't,
it's just an acknowledgement of the fact
that your end in mind, your end goal
is always going to be way beyond your current capacity.
And that's okay and that's good,
just remember that end goal is not your initial goal,
it can't be.
you have to break it down to the essence or the core
of what you are trying to do.
So, figure out what features or aspects
that you and/or your end customer or audience
could live without.
Now, this is very broad and generic.
I'm not just talking about developing a product
for a customer or developing a product for an audience.
Right?
That's not what I'm talking about necessarily.
It could be just building a shed in the backyard,
in which case your audience could be you,
your family, whatever, using it as a storage space.
You know, it doesn't have to be this.
But if I talk in terms of software,
it's just an example I'm using.
So anyway, now I hate to say this word,
but I'm gonna say this expression, I'm gonna say it.
I know what underscore David Smith thinks
about minimum viable products, but here you go.
That is your minimum viable product right there.
Is you strip out everything else
that people can live without.
What is it exactly that you're gonna deliver?
this is the core of it, the nut of it.
This is what I'm gonna produce.
That's your actual goal.
And I know it's a venture capitalist term,
but it makes a good point.
And that's what you have to deliver or create
in order for what you to create to have been usable,
interesting and worthwhile.
Once you deliver that, you can iterate
and you can add features and make it better
and more useful, more useful, more whatever.
But you gotta start there.
'Cause of course, if you do spend all this time
you create this and you've cut out all these extra features that's okay because
after that if it if it fails then you've saved all that extra time you would
have otherwise wasted. Yeah it's tricky though. Oh I know it's tricky. If you
follow the the minimum viable product approach you should you've got
definitely got to make sure that your minimum viable product is excellent at
the minimum viable product that you decide you're gonna leave it with because
if you fall short on that first launch. Oh sure yeah I mean quality of
product notwithstanding and that's part of this discussion I'm not gonna get
really go into much on this episode because it's about productivity not
about the quality of what you do but yeah but you're absolutely right and and
you need if you're going to market with something like this I'm not going to
market with my shed. If I'm going to market with a product, first impressions
are the most important and getting that launch hype and getting that launch
momentum is critical to building an audience for whatever it is you've
created. You know and yes there can be a sale, yes there can be you know what's
the word advertising or there can be you know free paid or unpaid you know there
can be you know spikes in popularity not caused by the launch absolutely but
having a good launch is critical and having a solid product at launch is
critical to set expectations and set perceptions and people's
perceptions once they're formed are difficult to change.
Yeah and that's a very real thing and you've got to be mindful of that so I
totally agree with you Vic it's just yeah. Yeah and I'm not anti minimum
viable product. When you're stripping things out and you decide what you're going to keep
in there, make sure that you really excel with what you do keep in there.
Yeah, exactly. So you're not an MVP, you're not an AMVP, you're MVP-ish.
Yeah.
Sorry.
I've actually got one project right now that I'm working on that's kind of an MVP, but
it's going to be a really good MVP. It's a brand new one, I've started another app.
And you haven't told me about it, have you?
No, I just started it two days ago. I was going to tell you about it after the show.
Good, thank you. I like being in the Vic club.
I have video demos.
Are you serious? You've been working on something for two days and you've got video demos already?
Break down the problem. So, now we've got our minimum viable product.
We've got to break it down further.
Okay.
Now, in my particular case, I'm doing a membership thing for the site, right?
Okay, so that's all well and lovely. Where do you begin? Because it's not native functionality,
Statomic has this thing they call add-ons and add-ons have four flavors. They have tasks,
hooks, modifiers and plugins. So first of all, I had to learn what all they were. Then I had to learn
how to write a plugin. So create a very basic plugin that just passes data back and forth
between the client and server and back again.
So once I got that working,
then I need to learn the API to interact
with the member files specifically in Statomic,
'cause that's a different API.
So extend the plugin that I just created
and start by reading the member files
using the API function calls.
Now, once I can read the files,
I then have to figure out how to write to the files.
And I check directly that the writing is working
by directly inspecting the file contents.
And that specifically is important.
I mean, there's no point checking that I've written to it
using the API because the API is part of what I'm debugging.
I need to use some kind of independent method of checking.
Okay, and all these things write to a file.
It's not in a database.
So it's a flat file CMS.
So once you've got the write working independently,
reliably, then you integrate the two.
Read the member data, modify it, write it back,
and then reread it and redisplay it.
Boom, now you have the ability to modify member data
through your own plugin.
Now, the problem with those APIs
is that they use an entire post call.
So, you have a post send on your form,
on your HTML form,
and that post data,
that's all well and good if I'm filling in a complete form,
but I just wanna do individually, entry by entry.
Okay, so in order to make that work,
the way I wanna make it work,
I need to do some JavaScript.
So I already knew some JavaScript,
but I had to learn some more.
Now I learned more about showing
and hiding specifically table cells
and then allowing to allow individual cell editing.
Then I had to create a hook,
which I've done a plugin now to create a hook
and that use some of the same code
that I already created for the plugin.
Testing individual writing and now basically
it's now triggered by a JavaScript hook function call
and confirm that that writes to the actual member file
and then read it back again.
So why the hell did I tell you all of that?
The reason that I told you all that
is that that's how I broke down the problem.
And some people will do it consciously,
some people do it subconsciously, maybe a bit of both.
Why it's important is because that whole process
that I just described, that took two weeks
to get from, I want to be able to do this
to actually being able to modify it and edit it through,
you know, by using a combination of JavaScript,
plugins, PHP, you know.
That was two weeks of my time.
And I don't mean to-- - That's an investment.
- Yeah, I'm not,
I'm not talking about two weeks of effort
as in like two solid weeks of effort
of 40 hours a day, five days a week.
I'm not talking about 80 hours worth of effort.
No, no, no, no, definitely not.
No, I'm talking about two weeks of real time.
Yeah. Now, why on earth it took that long? There's a few things. I'm going to start with
some excuses. I mean, before you start screaming, that's terrible. Don't quit your day job.
Oh, I have to beep that out. I'm still learning PHP and JavaScript and Statamic. Statamic
is essentially, it's a great CMS from the point of view that they have a series of APIs
I mean, not all CMSs have well-documented APIs.
The APIs at StataMaker have got reasonably well-documented.
Yeah, but honestly, it still,
it leans a lot on the fact that you need knowledge of PHP
to make it work.
Yeah, and that's probably fair enough.
You know, if you want to make an add-on,
you need that PHP.
So that's probably not an unrealistic expectation,
but if you're sticking within the boundaries,
little sand pit, that sandbox, sorry, I should say,
North American parlance.
If you're staying in the sandbox at Statomic Create
for you, you still have to learn their API,
it's another language.
Anyway, I'm not complaining, it's just a fact, okay?
It's just that those are the three things
that I had to get my head around, more so.
Now I played a little bit with PHP.
I played a lot more with JavaScript, but still,
and you know, Statomic is, you know,
I'm learning more features every day.
It's actually quite a lot more to it than you think.
So, more importantly than the learning curve,
it's the time.
That's the whole point of this discussion.
And I honestly believe that anyone can learn anything
given enough time and enough personal motivation
to learn it.
But time is what I'm short on.
Okay.
So before I talk about time and how time poor I am,
I say time poor,
I'd like to talk about our first sponsor,
and that's Mandrill.
Mandrill is a scalable, reliable,
and secure email infrastructure service
trusted by more than 300,000 customers worldwide.
I've been asked, what is Mandrill?
Because most people understand email newsletters
showing up in their inbox,
and a lot of them come from MailChimp,
except they're a big name in newsletters.
So what's Mandrill?
Well, Mandrill, it's essentially the foundation
that MailChimp is built on,
but it's been broken out into its own service
for discrete emails rather than one big mailing list.
Think of them like email transactions,
the idea of transactional email.
And that's exactly how it started though.
You see two years ago,
well, sorry, in the two years leading up to 2012,
I should say, Mandrill,
they borrowed a bunch of MailChimp's best engineers.
Yeah, they'll give them back, maybe.
And working in isolation,
the Skunkworks project turned into Mandrill,
which is now the largest email as a service platform
the market with more than 300,000 active customers of which I'm one. Now let's say
you run a website like Tech Distortion for example and you need to send
feedback form confirmation emails or I don't know let's say as part of a
membership thing that you're working on, Mandrill can do that.
Tech Distortion uses Statamix as a CMS as I've been talking
about in the episode and it runs Raven Forms as a plug-in and all you need to
do is add your API key for Mandrill and that's it. It just works right away. Now
There's a bunch of new features on the site that I'll be announcing shortly. I keep saying that
Anyway, and they're gonna they're also going to use mandrel
More about that in the next few weeks now. I've been using standard php mailer, but and since I switched to mandrel
It's been much easier to track what's going on and debug it and frankly it performs better anyway
Now you can use mandrel to send automated one-to-one emails like password resets welcome messages
confirmations and even customized newsletters if you want to
You manage all your lists yourselves.
Now, Mandrill is quick and easy to set up.
It's easy to use and it's very stable.
It's been made for developers by developers
with extensive documentation,
lots of different integration possibilities
through their excellent API,
and the service has very high delivery rates,
web hooks and analytics.
Mandrill's website is well-organized.
It has flexible template options,
custom tagging, advanced tracking and reports.
It's also the only email infrastructure service
with a mobile app that lets you monitor,
delivery and troubleshoot from wherever you might be
when you're out and about.
Mandrill is also really fast with servers
like had all around the world
that can deliver your email in milliseconds.
While I've timed on tech distortion
after a form submission,
the email shows up within a second,
less than a second of submitting, it's quick.
Now detailed delivery reports, advanced analytics
and a friendly interface mean
that if you're in a larger organization,
the entire team from development to marketing
can monitor and evaluate your email performance easily
without having to hassle you, the developer.
And that's a big deal, believe me.
Visit mandril.com and sign up today.
I mean, you should, because it's free.
No credit card, no commitment, just sign up.
Now use the promo code pragmatic
to get 50,000 free email transactions per month
for the first six months.
That's four times what you normally get.
Integrate, deliver, track, and analyze
with email infrastructure from Mandrel.
Thank you to Mandrill for sponsoring Pragmatic.
Talking about time and how much time I have.
So on the train, I have a long commute,
as I've spoken about before.
On the train, I have a 50 minute window in the morning
and a 50 minute window in the afternoon.
When I get home from work,
that's from opening the lid of the laptop
to closing it again.
When I get home from work,
some nights I'll get up to two hours,
other nights, if I'm lucky,
I'll get two minutes, if anything at all.
- Yep.
- Now on weekends, I have an agreement with my wife
that once all the kids are up,
that's about 6 a.m. normally,
and I say all the kids,
sometimes it's seven, depends on them,
summer or winter, some of them get up earlier.
When the kids are up, no programming,
no show prep, nothing.
Weekend time is family time.
Now, between sports, like kids sports
and house and yard work,
there's really not much time anyway
until the kids are asleep at nine o'clock at night.
Now, in short, I get more time on weekdays
than I get on weekends.
That's the truth, which sounds crazy, but it's true.
So what that adds up to for anyone who's tallying,
average weekday, between 100 to 220 minutes
of non-work, non-family time.
That's worst to best.
Average weekend, maybe 120 minutes of non-family time,
so two hours.
So on a bad week, all up, that's about 12 hours.
On a good week, that's about 22 hours.
Average prep time for an episode of Pragmatic varies,
obviously based on the topic and how much background I've got and how deep I want to
go. I like to spend at least 6 hours, usually 10 on bigger topics like the smart watches,
like Faraday's cage, battery problem, the RF bubble and so on. It was between 20-30
hours of prep. And that prep alone can take multiple weeks based on those figures now,
hopefully that makes sense as to why it takes multiple weeks.
Now when I left Fiat Lux I took on the task of editing, publishing and maintaining and
improving the website. That's about three or four hours a week. I want to add new
new site features? Well that's on top of both of those things and now you start
to see the problem. Now before anyone says well you know boo-hoo World's
Smallest Violin playing just for John and and that's fine. Look I asked for
this. I don't have to add new features. I don't have to extend the site. I don't
have to have sponsors. I don't have to do this podcast at all. All of these things
of first world problems, more importantly, all of these things are my choice. I don't
have to do any of them. It's a choice. I think the point of this is that a lot of people
get very frustrated and wound up and angry about the fact that they want to do something
and they think, "I don't have enough time." Look at what I've got on my plate that I have
chosen to put on my plate. I could cut back on prep. I could cut back on a lot of things.
things and save time. I don't want to, but I'm not going to let it frustrate me if things
get in the way because life happens. But how can you still deliver something? And I guess
that's the whole point of this. So if you're going to create something and your livelihood,
your income, your health, whatever, isn't dependent upon it, then the message is this.
First of all, break it down into small achievable components and have a little mini party, even
if it's just a happy dance around the room when you knock one of them over. Why not,
right? Secondly, don't stress out if you get distracted. Life is a series of never-ending
distractions. Accept that you're going to get distracted all of the time and run with
that. Don't stress out about it. You're going to get distracted. Accept it.
Now, the next thing to keep in mind is lack of progress or the weight of what's left to
to do doesn't mean you should quit.
It just means you need to break down the problem further
or get help from someone to get past the thing
that's stumping you at the moment.
And you know how it goes, right?
It goes in surges.
So you'll, everything will fall into place for a while
and then you'll hit a stumbling block, a roadblock,
whatever, something will stump you.
And then you'll sit there spinning your wheels
for minutes, hours, days, weeks, okay?
You have to get good at learning when you're stumped
and accepting that you're stumped, you know?
And it may sound crazy or simplistic to some people,
but I've known people that have just,
and honestly, I say I've known people,
I've been there, I've done this, I've made this mistake,
which is I sit there and I think, you know what?
I'll just spend a few more minutes on it, I'll crack it.
Few more minutes, I'll crack it.
Two weeks pass.
No, I don't think I'm going to crack it.
I need to get some help.
I need a fresh set of eyes.
I need help.
Don't be too proud, right?
Ask for help if you need it,
because frankly, that's just causing you stress.
Chances are, you aren't the first person in the world
to stumble across a problem.
Sometimes you will be, but that's pretty rare.
- So oftentimes you just need some distance too.
- Yeah, absolutely.
- And then you can look at it with your own fresh eyes.
Very, very true, very true.
So don't be too proud to ask for help if you need it.
Okay, the next thing to keep in mind is
that can tend to eat into your work and family time.
And if it is eating into your work family time,
then it's probably consuming you.
As in your project is starting to consume
the rest of your life.
And that's probably not a good thing,
I'd say on balance, generally.
Stick to whatever line in the sand you drew when you started.
Be honest with yourself, your family and your friends.
Is a side project really worth losing your job over or your family or your friends?
That may sound dramatic but I've seen it happen.
And honestly, I don't think it's worth it.
So what's the point?
Why am I telling you all this?
about my time, my lifestyle constraints, why do you care, why does anyone care, right?
And I honestly don't think that you should care about my personal circumstances. Don't.
That's not the point. The point is, you need to figure out what yours are. Where you draw
the line, where you choose to accept and say, "Right, honestly, I have a budget of this
many hours a week and that's it." Accept it, right? Draw that line and say, "If I go beyond
this, I'm neglecting the other aspects of my life." Of course, all this assumes you
have other aspects in your life. But no matter how hard I thought about it, there are so
few people and situations I can think of where this wouldn't apply. I think it applies to
the vast majority of people. Everyone has commitments of some kind. Everyone does, whether
you're consciously aware of it or not. Okay, so draw the line. Be honest, be fair.
And when I say be honest and be fair, I mean, don't lie to yourself, right? If you say,
"Oh, I'm gonna get in four hours a night."
Okay, if you get home from work, you have dinner,
you know, read the kids a bedtime story if you have kids
or watch TV if you're kicking back to unwind
for just half an hour, whatever.
It then, the clock then hits seven, eight o'clock at night.
You are realistically,
are you gonna stay up until midnight?
And if you do, are you gonna do your best work
between 11 p.m. and 12 a.m.?
I'm gonna guess probably not,
because you're not, you're exhausted.
If you gotta get up at six o'clock the next morning
to go to work the next day,
Hey, you're not gonna do your best work at that hour.
You're just not.
So be honest and be fair.
Don't make up the numbers so that you're,
I'm justifying this to myself.
I'm gonna sell this to myself.
I've got all the time in the world.
I can do this project.
Be honest, can you?
Okay.
Now I've made all of these arrangements
with my family, the weekend thing,
no development on the weekend thing.
That's family time.
I made those arrangements with my family
based on iterations.
I've had all sorts of projects since I've been married
and I've been married now close to 13 years.
And you've reached this point where you've negotiated away
and you've reached a balance.
And you're like, okay, this is how far I can push this.
This is how far I should push this.
And therefore I'm now, I've reached an equilibrium
and I've reached that point now.
Yeah, then there'll be a life-changing event like,
how I say life-changing event,
there'll be events like the kids start doing,
weekend sports was the last big one.
And suddenly I did have time to work on the weekends,
but now it's like, well, now I don't anymore.
And that's okay, because, you know,
I go and watch the kids play sport
and that's a lot more fun anyway, to be honest,
participating in them growing up.
Anyway, all right, so why does it matter?
Okay, obviously, I guess the reason I bring all that up
is because your mileage will vary
because you are you and I'm me and you are Vic
and the people in the chat room
are the people in the chat room.
The point is that everyone is different.
Everyone's mileage will vary.
Everyone's line in the sand will be different.
Yeah, I may have between 10 and 22 hours,
12 and 22 hours a week of spare time
that I can pour into whatever I choose to.
Truth is though, your numbers will be different
and they should be different.
Maybe coincidentally, they'll be the same,
but I don't think so.
Okay, so the question is,
I could have two hours of spare time a week
and I could still get the project done.
It'll just take longer.
And you may say,
"Oh, but it's not a continuous block of time, right?"
That's the whole point of this discussion
is by breaking it down into smaller pieces,
each smaller piece becomes more achievable
in the small windows of time that are available to you.
So it's not about how much total time you have in aggregate,
it's how you use the time you've got.
If you can't knock them over in small time windows,
that's fine, because some tasks are easier
to put down and pick up again later than others.
So it's a matter of learning what tasks
that you specifically, that you are good
at putting down and coming back to.
You know how some people can read a book,
get up to page 100, put it down
and come back to it a week later,
and do another two pages and then put it down
and come back another week later?
Some people can do that.
I hate doing that.
When I'm reading a book, I like to start to finish
in a space of a few days.
You know, I don't like putting it down
and picking it back up again.
'Cause I forget, right?
- I'm the same way.
- Yeah, you know, it's like, I need to get it finished.
Once you start, well, if it's a good book.
I mean, if the book's rubbish, whatever.
But you know, seriously, you do wanna finish it.
I wanna finish it.
Okay, so, you know, accept the fact
that there will be tasks that you are going to be better
at putting down and coming back to.
You save those, those are the tasks that you should save
for the time windows that are the shortest,
where interruptions are highly likely.
And if you do that, it'll reduce that frustration
of not finishing what you started, right?
So you say, I'm gonna sit down for the next two hours,
I'm gonna knock over this one feature
or this one thing I've got to do.
Well, you know what? - Yeah.
- Make it a task.
If you know you're gonna get a lot of interruptions,
or you say, or maybe it's only an hour's window
or half an hour's window,
pick something appropriate for that window.
And where people get this wrong is they say,
"I'm going to do the feature that I'm most excited about.
"I'm gonna do the thing I'm most excited about."
Yeah, but that is the wrong way of doing it.
Because if you do that,
what if that turns out to be the thing that you need,
you know, two hours solid working on
and you've only got half an hour?
You're gonna get to the end of that and say,
"Well, I didn't quite get there.
"I'm gonna have to come back to it
net tomorrow. And it's like, okay, but now what you've done is you're now frustrated
because it's like, well, I didn't get it finished. You know, so this is about managing your frustration.
You know, choose wisely which of those little tasks you've broken down to do when. Don't
get carried away with, I'm working on this feature just because it's got the cool factor.
You know, I'll put that to one side. Maybe there's a bunch of smaller features that you
can push you that you can do now and knock over and that way you're moving
forward. So my example is that of show prep right now I already talked about
that I do a lot of time doing prep okay we know already I start with the topic
headings I flesh them out section by section it's easy for me to do a section
or part of a section put it down come back in 20 minutes or the next day if I
need to hopefully not the next week since it's a weekly show but that's
something that I can pick up and put down easily right and that's a my to-do
list that's in my 12 to 22 hour but weekly budget is doing that so if I've
got a 20 minute window or I think I'm gonna be interrupted a lot perfect time
to do show prep and that's what I do is I slot it in amongst everything else
because it can I can be interrupted and I can come back to it and it takes a
minute to read through what I've done maybe a couple of minutes depending on
how many pages and and say right this is where I got to this is where I need to
flesh this out, I haven't started this subsection yet, and so on. So keep the
tasks that you know you need solid hours at them, keep them for those times when
you know that you're going to have several hours of time uninterrupted.
Tackle the problem methodically, systematically, chip away at it piece by
piece, you know, be smart about how you sequence your tasks so that you have
some feeling of forward movement, momentum, you know, like I'm moving forward. You hear
that? I like that expression. Okay. It's management BS bingo, right? We are being proactive. We
are moving forward. Right? And I say that sort of facetiously a little bit, but honestly,
I actually like the idea of moving forward as an expression. And the reason I like it
is because if you feel like you're moving forward, you don't feel like you're spinning
your wheels and you don't get frustrated. And honestly frustration is when the wheels
fall off. You spin your wheels on something hard for a long time, that just leads to people
quitting and we're trying to avoid that. So I think that people sometimes just sit there
and they look too far ahead. You know, once you've got your plan, just look at the immediate
tasks. Don't look at the rest of the plan. All you're going to feel is this huge weight
on your shoulders of everything that's still left to be done.
And that's when you give up.
So I'm suggesting don't do that, don't give up.
Anyway, so what I do is to prevent myself from doing that
is I actually take a complete list of all the tasks
I've got to do on the project
and I'll separate out that list
and I'll separate out the ones that are far down
and put them on a separate list that I don't look at.
So in the back of my mind, I know they're there,
but I don't look at them, right?
I only look at the most immediate tasks in the list and the Rev 2.0 tasks, Rev 3.0, whatever you want to call it, doesn't matter.
So you're treating it kind of like a stack? Push and then pop?
Kind of like that, yeah. But the idea is that the only part of the stack that's visible is the one that's directly in front of me for the most immediate tasks.
Yeah.
the rest of it has been planned for, has been thought of, but I'm not going to look at it
because if I look at it I start thinking, "Oh man, once I get this membership done I've got this,
this, this, this, this other feature to do." And I do, but I'm just, you know, like, I'm not going
to think about that right now. That's just going to frustrate me because I'm going to look at it,
I'm going to say, "Geez, I've got so much else to do. Ho hum, right? I'm not making progress. This
is all hopeless. Why am I bothering? Blah, blah, blah, blah, blah." You know, and you start and you
you throw your hands up in the air,
I've been off more than I can chew.
So the key to doing it is breaking it down.
It's understanding what you can pick up
and put down easily, understand your time constraints,
and of course, systematically chipping away
at it piece by piece.
And the funny thing is after two, three, four, five,
six months, you'll look back and you'll say,
oh my God, wow, how did I get here?
And you look at this product that you've just built
and it's just like, it is amazing that you think,
oh, I had time to do that, when did I have time to do that?
Okay, so before I go on any further,
I just wanna talk about our second sponsor
and that is Sapient Pear.
Now, Sapient Pear have decided after years of being annoyed
with the existing to-do apps in the,
and there's plenty of those in the app store,
out and about when they're shopping.
They're gonna create an iOS app for the iPhone
that's, it's called Shopee.
Now, as I said, there's a ton of to-do list apps out there
and I've used lots of them over the years.
But going shopping is a very specific use case for a list.
Now, if you're shopping for more than just yourself,
then Shopee really can be, really begins to shine.
The best way to describe Shopee
is a fully collaborative shopping list app
that's simple and easy to use.
I picked it up and figured out how to use it immediately.
It's not cluttered with options.
It doesn't presume you live in a specific country
or present you with hundreds of options
for butter or milk, different brands and so on.
You just type in what you wanna remember to buy in the list.
Enter the amount if you want, that's optional.
And there's your list.
It remembers what you entered for future
and even the order in which you bought them
and which you marked them off
as you're walking through the supermarket
and orders them that way for next time.
So it's like, that's cool enough,
but then you can share your list by email,
by message and so on to your spouse, partner, kids.
Hopefully the kids don't just add chocolate
and ice cream to the list,
but you know, then you can add them, mark off,
reorder items in the list, you know, as you need to.
Actually on second thoughts, don't share it with the kids.
Anyway, I've tried this in real time between two iPhones
and a sync happened in less than three seconds
and that was over 3G.
Another feature I love is pocket lock.
Now, if you're security conscious,
you've got a passcode set.
There's nothing more annoying than having to lock your phone, slip it in your pocket,
then get it back out again at the end of the aisle just to unlock it again to look at your
list.
Even with Touch ID on 5S, 6 and 6 Plus, it's just another step you've got to take, you
know?
And that adds time.
Yeah.
Pocket lock just disables the screen when it detects it's in your pocket.
And it re-enables the screen as soon as it's removed.
No passcodes, no Touch ID, no fuss.
It works just great.
Now- That's pretty clever.
It is clever.
It works really well too.
skeptical at first, but then I tried it and I'm like, "Hey, this actually works really
well. I love it." My wife and I have used it now several times because they sponsored
the show previously. Honestly, it's so much better. We used to use notes and things like
reminders and to-do apps, even paper. But now, when either of us goes shopping, we use
Shopee. So we open Shopee to indicate, let's say I'm going shopping to indicate
that I'm about to start shopping. The geolocation detects the store that I'm
shopping at and on the shared shopping list the other person will get a
notification telling them I'm about to start shopping. Then if they remember they
need to grab something, so they need me to grab something for them, they
tap the notification, jump to the shared list and they add it real quick. It shows
it instantly on my list or practically instantly on my list and I can grab it
while I'm there.
That's brilliant.
Right?
Those last minute,
is there anything else you need?
Phone calls?
You just don't need that anymore.
Now it's free to try for the first month with no ads,
after which it becomes ad supported.
No risk, no loss of functionality, that's it.
But if you want to help out the developer,
there's an in-app purchase
for a three or 12 month ad removal
for $1.99 or $4.99 US respectively.
Now there's currently an update in the works
to fully support iOS 8 and most importantly,
the iPhone 6 and 6 Plus.
That's been submitted to the App Store,
should be up by the time you hear this.
So go grab it now.
Visit this URL, sapient, that's S-A-P-I-E-N-T
dash pair as in two, .com/pragmatic
and follow the links to the App Store from there
and that will help out the show.
You can search for the app in the store
but if you use that URL in your browser of choice,
it will help out the show.
Thank you once again to Sapient Pairs, Shopee app for sponsoring Pragmatic.
So, Vic, I focused a lot on me so far, and honestly, this is something that I know that you deal with as well.
This is not just- - We're going to discuss my bad habits.
Well, you know, you just, you prefaced them then by using the bad as an adjective.
You know, honestly, are they?
I'm not asking you to...
I would think...
I know I definitely have lots of areas for improvement in the way of productivity.
And I don't know if I'd go so far as to literally call them bad habits, but...
I'm sure that a lot of the way I go about doing things is pretty inefficient.
I do know that I suffer from a project ADHD,
and I kind of hop around from project to project,
and I don't tend to focus as well on one as I should before I move on to the next.
Yeah. And much like yourself, I really struggle with fitting in the time to work on them. Like,
I don't have the weekend situation where I can't work on anything like you do,
but it's primarily because my wife and I have different work schedules, and so we spend our
weekends apart because they're just at different times of the week. My weekend's actually in the
middle of the week. During my work week I can usually get maybe an hour or two
between working on it on my breaks at work and maybe an hour in the evening
and then I try and get in several hours of productive time each each day of
my weekend. Okay. But again like I said I still
suffer from the lack of focus I think. Fair enough. I've currently got I've got
Two projects that are like, if I'd get myself in order and really focus on them,
I could probably submit them to the App Store like within a few weeks more work
on each of them. And another one that would probably take maybe a month to
finish up. And then like I said I just started another new project two days ago.
Yeah, that's right. I'm itching to find out about that, but I guess we'll talk more about that.
But, all right. Well, honestly, the next thing I want to talk about really is just another example of that.
And I sort of, I knew this was going to be a short show and that's okay. It's nice to have a short show every now and then.
But everything that I've described, I've had a lot of people come back and say they like the way I structure the show, as in the show.
And the same method that I described for breaking down tasks, organizing things, ordering them, all of that, that's a skill that you can learn.
It's not something that some people have just got. You're not just born with the ability to organize. It's something that you can learn how to do.
do. And I've learned how to do it by necessity, like most people, you learn by necessity.
You know, I have a limited amount of time.
I want to create the things that I want to create.
How do I make this work?
And that's how that how that has worked for me.
And what I've observed is that people that are good at organizing their time are the ones that are the most productive.
You know, and honestly, I could do better, I guess.
I mean, I could, but it's a matter of, you know, I'm still learning.
everyone is still learning every single day.
Yeah, we're still learning or rather we should be.
So if you can learn to organize and practice
and by breaking tasks down, it'll help you not just in your own projects,
but in work stuff as well, like, like,
God, here we go again, JOB job kind of things.
So,
you know, one of the,
you know, one of the issues that I, that I faced in the last five years
at work is we had a massive project, the Northern Pipeline Interconnector,
which I talk about sometimes.
And the Northern Pipeline Interconnector had 43 PLCs in it,
of which there were, I think 16 of them were existing.
But there was a problem.
The code itself had been written in a very, very different way
to the way in which we needed to write the code to make it work
and meet the customer requirements.
Because we essentially were taking over from another company who had done a, perhaps not such a good job.
It's always fun to clean up somebody else's mess.
Yeah, but it was worse than that. So it was developing our own standards, developing the new code, as well as transitioning from the old code to the new code.
And that's the part of the transition that I just want to quickly touch on, in where this breaking down the problem was useful.
So when you're doing that, when I was coming up with a way of how to
actually do this is the simplest and most obvious choice is
wipe the memory, download the new code and away you go.
And then when you want to test your new code, wipe it out, download the new code
and start testing. And then when you're done, wipe that out and download the old code and go
back to the way it was. Right.
No differently if you're on a desktop platform and you've got two versions of your software running, you know, like the one you're currently that's that's non beta and then you've got your beta version
Or beta if you pronounce it in the North American way. Either way, you have two versions, one you're working on one and one that's solid and you would fire up one. Yes, that's all good. Now I'm going to fire up the experimental version and test some of the new features.
And that's just how you do it.
Problem is time. So we had test windows and the test window we had was usually six to eight hours.
You know normal business day because they had more staff on if something went wrong,
they had more staff to address that issue, you know they could have staff on site to assist us
if there was an issue. Sometimes there was, most of the time there wasn't, but those were the rules.
So you had a six to eight hour window and the time is what killed us because it took about half an
hour to do the whole process and yes it's tragically slow but these are PLCs
yeah this is over 10 100 Ethernet it's not that's not the problem is there's
buses on the inside of these things these things are running like these
particular PLCs are running an 8386 CPU at their core with custom firmware of
course but the point is that it has a whole bunch of bottlenecks and that
makes it slow and the memory in it is like what you need a git branch for a
PLC. Not a bad idea but you know the issue was that switching between them
through the download method was part of it, the time was the killer
and it wasn't just that, variable memory as well, you wipe it out all your
variables are in different spots in the memory so what you had to do is you had
to download the code and the memory variables so this whole process
also rendered it inoperable during that period so you couldn't do anything it
It was dead to the world.
So you wanted to open and close that valve in that half an hour, you're out of luck.
You got to go and crank the handle.
And some of these valves are huge, as tall as you and I are.
So that's not really much of an option, especially if you've got 16 of these things spread over
an area that's around about, oh, I don't know, probably about 12 to 15 miles end to end at
about five, six different sites.
Actually no, it was more than that.
It's like 60 miles end to end, come to think of it.
So you've got a huge area, you've got a limited number of staff, you've got a limited amount
of time, you're going to piss away an hour of it doing this change out.
It was never going to work.
Couldn't work.
So how do you break the problem down?
And the solution that I came up with was running concurrent code and running concurrent memory
areas.
So what we did is we essentially had a flip bit and that bit would say,
use the code in this segment of the memory here,
execute that and then turn off the code in the other memory area.
When I flipped the bit the other way around.
So we ended up with two completely different code and memory spaces,
and we just had a single bit that would flip between them.
Now that was a pain in the neck to program originally because we ported,
we took the old code and left it essentially untouched,
put in a bunch of conditional statements,
then put the new code in with a different naming convention
so that we kept the two separate.
Anyway, apart from the implementation details.
That then put us in a situation
where we could flip between the code.
So we could say, I'm now gonna flip my bit on
in all these PLCs.
We set up one button in the SCADA that ran a script,
click the button, it pushes the value out to all the PLCs,
all the PLCs report back
that they're now using the old code.
The whole exercise of switching between the code
took approximately half a second.
That's a lot quicker than an hour,
like half an hour up, half an hour back.
That took extra time, that cost extra money,
that made some people,
but mainly my project manager, upset.
But the point was, it worked.
And it started to save us money after a period of time.
But how I attack that problem is you break the problem down
into small pieces.
So we started out saying, okay, well, first of all,
can we do this?
So can we have concurrent code running
in different memory areas?
So I created a set of blocks and a set of memory areas
and I tested it and yes, it worked.
Then I tested with multiple.
So I said, okay, can I write out to multiple PLCs
which get their responses back all at the same time?
Yes, I can.
And then I started to build that up
with a single functioning site to prove,
as like a proof of concept.
Does this work?
Yes, it does.
Great, now I can roll it out on the other sites.
Or rather I can tell the other guys working for me
to roll it out to the other sites,
then they can complain endlessly
that they have to do this at all
and say that I'm an idiot and blah, blah, blah, blah, blah.
And then like two years later,
they come back and say,
"Geez, I'm so glad you let us do that."
I'm like, "Yeah, I know, thanks."
(laughs)
People hate you and then they thank you.
Isn't that funny how that works?
Anyway, all right.
Maybe that wasn't the best example, but still.
So do you have any other examples
that you want to quickly talk about of this
before we wrap it up?
- No, I think I've covered pretty much
all my productivity issues.
- All right, fair enough then.
- I think the biggest would be
complete lack of productivity.
- Okay, that's something we're not trying to promote.
All right, I think we'll leave it there.
So if you want to talk more about this,
you can reach me on Twitter @johnchidjie
and check out my writing at techdistortion.com.
If you'd like to get in touch with Vic,
he can be reached on Twitter @vichudson1.
If you'd like to send me feedback,
please use the feedback form on the website
and that's where you'll also find show notes
for this episode under podcasts pragmatic.
You can follow Pragmatic Show on Twitter
to see show announcements and other related materials
like when we're broadcasting live,
if you wanna join us and we certainly hope you do.
I'd also like to say a final thank you to our two sponsors.
First of all, I'd like to personally thank Mandrill
for sponsoring Pragmatic.
If you're looking to improve your site or app
and you need transactional email that's reliable,
integrates easily, and provides easy tracking and analysis,
then Mandrill can help.
Visit mandrill.com and sign up today.
You should because it's free.
No credit card, no commitment, just sign up.
And use the promo code pragmatic
to get 50,000 free email transactions per month
for the first six months.
That's four times the normal amount.
Integrate, deliver, track, and analyze
with email infrastructure from Mandrill.
I'd also like to thank Sapient Pair and their iOS app,
Shopee, for sponsoring Pragmatic.
If you're going shopping and want a great,
collaborative shopping list app,
then Shopee can help you out.
It's ad-free for the first month,
so why not check it out at sapient,
that's S-A-P-I-E-N-T, dash pair,
as in two, dot com slash Pragmatic.
Thanks as always, Vic,
and thank you everyone for listening.
(upbeat music)
[Music]
(upbeat music)
[Music]
[BLANK_AUDIO]