Bummer! This is just a preview. You need to be signed in with a Pro account to view the entire video.
Start a free Basic trial
to watch this video
I Can Smell Your CMS
41:42 with Phil HawksworthYou're in the business of making web sites. Clients want them to include all of the latest exciting "interface shizzle". You want them to render quickly and have a decent shelf-life. Clients want to be able to maintain the site themselves. They know about content management systems and are going to invest in an expensive one. You know that they'll be unleashing their 'creativity' and messing with your mojo. This talk will look at the damaging traces CMSs can leave behind in the front-end. We'll see ways to avoid the smell of your CMS wafting over to the browser and damaging the experience and the effectiveness of your sites. And we'll explore the good, the bad, and the fugly of rich interfaces, looking at ways to champion what matters for the good of your website.
-
0:00
[MUSIC]
-
0:08
>> Everyone hear me okay?
-
0:11
It's a quite cozy, intimate room so that
-
0:13
you don't have too much difficulty hearing me.
-
0:16
Okay.
-
0:16
So, so yeah.
-
0:17
As we, as you just heard, my name is Phil Hawksworth and
-
0:20
indeed I work at an agency called IGA based in, in London.
-
0:23
It's actually an American company.
-
0:24
Working for exactly those kinds you, you heard of.
-
0:27
I'm not quite sure how we're gonna run on time.
-
0:29
We've, we, we, a tiny bit late starting.
-
0:31
Should be absolutely fine, but it might be a squeeze for questions.
-
0:34
I'm gonna be around all day anyway.
-
0:36
So, if you have questions, come and grab me.
-
0:38
You can also just shed, shout at me on Twitter.
-
0:41
If you disagree with what I'm saying, if you got questions.
-
0:44
Feel free, you know, bundle into it on Twitter that's absolutely fine.
-
0:48
So the subjects that I have come to talk about is a bit delicate, you know and
-
0:53
you've, you've heard it already but the subject
-
0:56
is I can smell your CMS it reeks frankly.
-
0:59
And they do say that you shouldn't really start
-
1:02
a talk like this by admitting you are nervous.
-
1:06
And, so that makes this slide a little bit silly, but
-
1:08
there are reasons to be anxious about the subject and this presentation.
-
1:12
I've been to FOWA many times in the, in the, in the past.
-
1:16
And looking at the schedule for the next few days, you
-
1:18
know, there's reasons for me to be nervous because there's some great
-
1:20
speakers I really appreciate the fact that you've left Patrick in
-
1:24
the other room to do what I'm sure is a great talk.
-
1:27
But the doors are locked, so you can't get out now.
-
1:29
actually, you know, for fire reasons the doors aren't locked.
-
1:32
Before they bundle me off the stage.
-
1:34
secondly, this is the, the stage two.
-
1:36
This is kind of off in the business track.
-
1:39
Which is something I'm not really used to doing so there's a bit of in this,
-
1:44
in this which is about technical stuff, a bit for you know business reasons as well.
-
1:48
Slightly new ground for me.
-
1:50
But the third reason I'm anxious about this
-
1:51
is, you know, I'm talking about content management systems.
-
1:54
Which is not, necessarily, the most exciting
-
1:57
and exotic subject in the, in the world.
-
1:59
So I'm impressed that you've actually come here at all to hear about that.
-
2:03
Let's have a bit of context for what, exactly, we're gonna talk about.
-
2:06
As, as you heard already, I work at an agency in London.
-
2:09
And so that means working with clients, building things for clients.
-
2:13
And agencies have.
-
2:14
Something of a dilemma and anyone who builds web
-
2:17
products for clients have a bit of a dilemma.
-
2:20
And, you know, you could sometimes describe it as a bit of a problem.
-
2:23
And that problem can be the clients.
-
2:26
Now I should be careful about saying that, as well, because, you know, my
-
2:28
bosses will see that and then, you know, my career will be cut short.
-
2:31
But there's a reason I, I say that.
-
2:34
I was thinking about this a year or so ago.
-
2:37
And I was talking about it on Twitter.
-
2:39
And a friend of mine tweeted this, he said, Phil isn't the root
-
2:42
of the problem with agency work, the fact that it is happening in agencies?
-
2:45
Well, that stings a little bit, but I know what he's talking about.
-
2:48
You know, perhaps there's this This ambition to
-
2:50
build something quickly and then you move on quickly.
-
2:53
Which is obviously not the kind of thing we want to do.
-
2:55
We want to do something that fits really well.
-
2:56
So, you know, you could argue that there's a bit of an agency gap,
-
3:00
a bit of a tension, between what clients expect and what they end up getting.
-
3:04
My job at RGA is very much about trying to find a way to satisfy what a client wants.
-
3:10
But a client will figure out that they've got a
-
3:12
problem that they need solving and they'll come to you.
-
3:14
Often bringing a solution with them and say, we want one of these please.
-
3:18
And actually what you need to do is deliver them what they need, which
-
3:21
is not always the same thing as what they come for in the first place.
-
3:24
And so there's this kind of tension, sometimes, between
-
3:27
people building things for clients and, and the clients themselves.
-
3:31
Something that also, kind of, crops up is there are
-
3:33
a lot of trends that we're seeing at the moment.
-
3:35
There are a lot of, this is all fashion in web design.
-
3:38
And so we're seeing a lot of, a lot of
-
3:40
things kind of emerging, and kind of repeating over time.
-
3:44
It's nice to be able to work as I do, an agency that has a bit of a big platform.
-
3:48
You know, I, I'm lucky that I get to work for big brands.
-
3:51
Often it's kind of stuff that's launched on a big stage and a big audience, as a.
-
3:55
As result.
-
3:56
So I think that anyone working in an agency or
-
3:58
indeed anyone working with the clients that are putting things out
-
4:01
onto the web there's a certain responsibility to do, obviously to
-
4:04
do good work but to do it in a responsible way.
-
4:07
And so this is a tiny diversion but you
-
4:10
know it's,it's something that I care very much about, I'm
-
4:12
a little bit opinionated on some of the styles
-
4:15
and some of the trends that we see popping up.
-
4:16
Does anyone remember [UNKNOWN] site that came out a little while ago?
-
4:19
Couple of heads nodding.
-
4:21
So I tweeted this.
-
4:22
You know again, it was about a year ago now.
-
4:24
Dear web developers of the world, can
-
4:25
we stop this silliness before somebody gets hurt?
-
4:27
And it, I was, and it was a very flippant thing to say.
-
4:31
Especially about someone else's hard work.
-
4:32
But, you know, I was kind of referring to these kind of sites that.
-
4:36
Well, you can see, I, I know we've got fourteen minutes, but
-
4:39
maybe I will skip along to the end of the loading screen.
-
4:42
And it's one of these, you know, single pages, and
-
4:44
it's very typical of campaign work that you see at
-
4:46
the moment This, I think, I kind of refer to
-
4:49
it as scroll jacking, where the, the scrolling doesn't always do.
-
4:53
What you'd expect you know it's doing all kinds of bits and pieces.
-
4:56
I,I love the fact that on this, on this page,
-
4:59
you can see there's this like whites kind of blur
-
5:02
in the middle the kind of starburst there, that, that
-
5:05
white image itself um,that kind of gradient, half a megabyte.
-
5:09
So you know there's, there's lots of [COUGH] kind of inefficiencies and
-
5:11
things in here and I care very deeply about the way I've been
-
5:14
doing things that work well and there's a very good reason for that,
-
5:17
so this is typical of a particular kind of trend at the moment.
-
5:22
We won't spend too long on this.
-
5:23
But there's, there's another example from, you know, a few months ago.
-
5:27
Sadly, not around anymore.
-
5:28
Happily, not around anymore.
-
5:30
And it's never one of these, you scroll the page up and down.
-
5:32
And a tortilla flies around the page, and a
-
5:35
chicken wrap is kind of born before your eyes.
-
5:37
Now, a single page about a chicken wrap.
-
5:40
And, you know, 38 and a quarter megabytes.
-
5:43
405 HTTP requests.
-
5:45
So, for any developers who are in the room.
-
5:46
You know that there's a massive overhead
-
5:49
in performance with that number of HTTP requests.
-
5:52
1.1 minute for the onload event to fire.
-
5:55
So.
-
5:55
I mean, the, the onload isn't necessarily a
-
5:58
good indication of when it's ready to use.
-
5:59
But nonetheless, you know, it took a long time for that page to, to render.
-
6:04
And so this slight diversion ultimately is
-
6:07
my way of saying, you know, performance matters.
-
6:10
We know that performance really matters on the web at the moment.
-
6:14
You probably be familiar with this, this little quote so Greg
-
6:18
Lindon from Amazon, they did a, a bunch of tests, bunch of
-
6:21
experiments on the Amazon homepage adding different bits of latency to the
-
6:26
loading time and, and just kind of did some testing on that.
-
6:29
And they discovered that 100 milliseconds of extra load time.
-
6:32
Impacted their sales, sale, 1% drop in sales on Amazon.com.
-
6:36
That's huge for a tenth of a second.
-
6:37
So these things are really important.
-
6:40
You know, time is money, performance is money.
-
6:42
And so, this is all my kind of way of describing
-
6:45
the fact that front end development has become a serious business.
-
6:48
If we didn't realize that before.
-
6:50
Certainly, I think we all appreciate that now.
-
6:52
And I, I kind of like to think of it as front end engineering.
-
6:54
It's not that long ago that people didn't really about engineering on the front end.
-
6:58
But I'd, I'd suggest that the, the tide has turned.
-
7:00
You know, we, this is a big deal now.
-
7:03
my, my history is, as we heard earlier on, is, as a JavaScript developer.
-
7:08
And, you know back in the, you know late 90's I
-
7:12
used to have this kind of conversation with people in pubs.
-
7:15
I, I don't, that was my opening gambit but people ask what you do.
-
7:18
And you say, I'd say I'm a software engineer.
-
7:20
And they'd say oh yeah, me too.
-
7:21
What language do you, do you work in?
-
7:22
And I'd say JavaScript.
-
7:23
And that had a particular [LAUGH] kind of response from them.
-
7:26
And for me that's just incredibly frustrating.
-
7:29
But I think now we accept that this is important.
-
7:32
JavaScript development, front end development, is
-
7:35
somewhere where a lot of craftsmanship occurs.
-
7:37
And it's, you know, super important.
-
7:39
So, you know, I'm kind of flippant coming out with these kind of things.
-
7:41
But.
-
7:42
There's a, there's a serious point behind this,
-
7:44
somebody might get hurt, it sounds very grandiose
-
7:48
for, you know, a sites about a chicken
-
7:50
sandwich but it's the trends that are,are strange.
-
7:53
I mean, everyone seen this, right?
-
7:55
People seen this.
-
7:56
Again a few people nodding.
-
7:57
So this is the Milwaukee police news which won a Webby last year
-
8:02
beating Gov Uk in that category which drives me a little bit insane.
-
8:08
But it's another one of the, the same thing, you know.
-
8:09
People are, are following this pattern.
-
8:11
Following this trend.
-
8:12
Um,and sorry if it's making you a little bit seasick.
-
8:15
Cuz I was scrolling up and down there.
-
8:16
It sort of helps you to, to scroll to a particular place.
-
8:19
I, I love this carousel.
-
8:21
I mean I can't, I couldn't help to keep on, you know,
-
8:23
getting the police academy stuff to march across the, across the room.
-
8:26
I haven't read any of the details that are in there.
-
8:28
I was just fascinated by it.
-
8:30
I was also really entertained, and again, I'm trying to
-
8:32
get it, get the view pulled in the right place.
-
8:34
I could hear this distant dog barking, you know,
-
8:36
just over the sound of my fan wearing away.
-
8:39
And that, there he is, he's down there somewhere, I think.
-
8:41
Where is he?
-
8:42
He's at, there he is, just behind his leg.
-
8:43
Anyway, doesn't matter.
-
8:44
All kinds of nonsense.
-
8:46
There we get down to the most wanted
-
8:47
section after, you know, if you've stalked it out.
-
8:50
So anyway, it's, it's.
-
8:51
It's a strange trend, and, and, I can see that, that what we're
-
8:55
trying to do there, the designers were trying to make it very kind of
-
8:57
elite and exciting, and, you know, trying to big up the, I'm sure the
-
9:01
very good work that the men and women of the police force there do.
-
9:04
But I think it misses the mark.
-
9:06
I don't think it quite conveys what they want to do.
-
9:10
So, slight diversion.
-
9:11
Let's try and get back on topic, talks a little bit about the
-
9:14
importance of front end development and that the trends are there and performance
-
9:18
but getting more to the nub of it, you know something that's very
-
9:22
important as developers and as customers and
-
9:24
clients is this desire to avoid lock-in.
-
9:26
And we spend a lot of time trying to architect systems that don't lock us
-
9:30
into a particular technology that we'll never be
-
9:32
able to move away from in the future.
-
9:34
A thing that clients often care about is being you
-
9:36
know, trying to avoid being locked into a provider, an agency.
-
9:40
Now I, I don't really want our clients at IGA to be locked into
-
9:44
us because we're the only people who can operate something that we built for them.
-
9:47
I want them to stay with us cuz we've done something great, but.
-
9:51
Clients do care about having the freedom to move on
-
9:53
you know having,having the freedom to be able to manage their
-
9:56
own site in the future, and not being dependent on what
-
9:59
could potentially be an expensive agency who's done that design work.
-
10:03
So obviously you mean can see where I am going with
-
10:05
this, a tactic that they have for trying to dodge that.
-
10:08
Is that they've employed the, the power of you
-
10:10
know one of these fellows the content management system.
-
10:12
And then thankfully all of their problems are solved or not always as it turns out.
-
10:19
So we should perhaps ask ourselves why, why have a CMS?
-
10:23
Well I think it's probably fairly self evident
-
10:25
but it's worth tacking on a tiny bit.
-
10:27
You know, a CMS is there to help reduce the cost of change
-
10:30
and make it easier for us to change the content obviously on the site.
-
10:34
We're trying to minimize dependencies on perhaps a, a
-
10:37
particular body of people or perhaps a particular expensive
-
10:41
or rare skill set to try and enable us
-
10:43
to, to move past needing a developer to do everything.
-
10:47
And more critically, we're trying to empower content authors.
-
10:51
You know, we want to be able to let
-
10:52
people create content and get it published as rapidly
-
10:54
as possible and that's the whole purpose, you know
-
10:57
or this, the common purpose of having a CMS.
-
11:01
So, in my experience there's actually some problems
-
11:04
with that and you know, I kind of, you
-
11:06
can kind of tell I work at an ad agency coming up with terms like the CMS paradox.
-
11:10
But nonetheless, I do find that there is a bit of a paradox there.
-
11:14
That's particularly prevalent in systems that
-
11:17
describe themselves as enterprise level systems.
-
11:20
You know and you hear the term enterprise level a lot and often
-
11:24
it's referring to something that's very large
-
11:26
and expensive and very, very feature rich.
-
11:29
You know,a huge long list of features and no enterprise ready.
-
11:33
There's this kind of notion of them being really, reassuringly expensive.
-
11:36
You know big companies use it, it must be good,
-
11:38
we'll be able to do it but it costs a lot.
-
11:40
I find that reassuringly expensive usually just translates to.
-
11:43
Expensive, but that's, that's by the by.
-
11:45
And so what I've observed is that there's this kind of this
-
11:48
desire for flexibility, and flexibility in the, the, the software that you've got.
-
11:53
But that doesn't actually translate to flexibility in the solution very often.
-
11:58
And it's for a number of reasons chief amongst
-
11:59
them, you know, is this, this kind of choice paralysis.
-
12:02
You, you buy something off the shelf that is
-
12:05
able to cater for every possible outcome in the future.
-
12:08
And the, the UI that then you, you get, and
-
12:10
you put in front of your content authors that you're
-
12:12
trying to empower, is actually so overwhelming that people, people
-
12:15
kind of freeze and don't know how to use it.
-
12:17
And when you've got the ability to change everything
-
12:19
on your website, where on earth do you possibly start.
-
12:21
So, I've observed, in fact I've tried to use many
-
12:24
systems that, you know, just go stale because it's actually a.
-
12:28
You know so overwhelming to try and do it.
-
12:30
And as a result, you know, you kind of get this,this strange situation.
-
12:33
Where the cost of the system is
-
12:34
somehow proportional to the cost of making changes.
-
12:37
Because you have to send people on training courses to use these things.
-
12:40
It's, it's not commons skills that everyone has to, to work on
-
12:44
this very expensive, very difficult to
-
12:46
acquire enterprise level piece of software.
-
12:49
So you have to train them up and they're a bit
-
12:52
overwhelmed by it and so they use it very often and
-
12:54
so they forget and then you need to train them up
-
12:55
again or you need a team of people to do that.
-
12:58
And so it's surprising that something that costs
-
13:00
so much and the desire of it, the aim
-
13:03
of it was to reduce the cost of making
-
13:05
changes actually becomes something that's quite expensive to use.
-
13:09
I'm moving on another real strength to this big enterprise level systems.
-
13:15
This is powerful workflow.
-
13:16
Everyone wants a workflow for managing their content.
-
13:21
But sadly, you know, that is often just completely odds with getting shit done.
-
13:25
Because it, it just gets in the way that the number of times that
-
13:29
people buy something with a huge powerful workflow that they can put in place.
-
13:33
But then don't use it because it's too complex, it's just it's, it's staggering.
-
13:37
And one of the reasons for this is you
-
13:38
know the people who're choosing to put a CMS in
-
13:41
place and involved sometimes in the shopping around are the
-
13:44
people, not people who directly are gonna be using it.
-
13:47
You know they want to empower the, the staff
-
13:51
to be able to,to easily manage the content, and
-
13:54
so they, they look for something that's very powerful
-
13:56
and can have the kind of control that they want.
-
13:58
You know, you'll have different levels of, of authors, you know,
-
14:01
people who can create the content, then people who can review
-
14:03
it, and then finally someone who's got the, you know, the
-
14:06
rubber stamp to be able to say, right, we can publish this.
-
14:09
But you know, the people who end up using
-
14:11
these things often aren't the people who've been specifying it.
-
14:14
You'll, you'll.
-
14:14
You'd be amazed at how often a CMS is operated by
-
14:17
a, you know, a marketing intern, you know, someone on work experience.
-
14:20
Well, just look after the website, cuz that's, you know, that's the easy stuff.
-
14:24
Developers often end up operating these things, because they're so complex
-
14:28
that people go, oh, I don't know how to use it.
-
14:30
Let's go get someone who works in computers to do it.
-
14:33
And so it's kind of strange that the system that's been put in place to.
-
14:37
Avoid the need to use a developer ends up use, having a developer to operate in.
-
14:42
And so in this, in this way, you know, the
-
14:43
first thing that happens when you get a complex system like
-
14:45
this is that, you know, you end up trying to
-
14:47
find ways to subvert the workflow that's been put in place.
-
14:50
You know, everyone gets made to be a super admin because
-
14:52
the one person who's got publishing rights is always off traveling, so.
-
14:56
You know.
-
14:56
Everyone can then do everything so, so why
-
14:58
have the, those features in the first place.
-
15:02
So you know, this is turning into a slight rant from me.
-
15:05
A slight bit of therapy you can say that maybe
-
15:08
I've been scarred by some of this in the past but,
-
15:10
you know, I want to try to get back the
-
15:11
point at hand which this notion of you know, smelly CMSs.
-
15:16
People who maybe work with codes in the room will be
-
15:18
familiar with this, this kind of notion, the notion of code
-
15:21
smell which refers to, like, a symptom in the source code
-
15:25
that perhaps suggests a deeper problem, a darker problem in the code.
-
15:28
Often it'll be something that indicates the very
-
15:32
tight coupling with something further, further in the up
-
15:35
the chain in the software or something that you
-
15:36
want to try and refactor out and, and optimize.
-
15:39
It's inefficient code, the.
-
15:41
That really is, in there is a hack that you want to get rid of.
-
15:45
And what I'm suggesting is that content management
-
15:47
systems, as you may have guessed from the title.
-
15:49
Content management systems emit a smell as well.
-
15:52
And in many cases, you know this, this smell is quite severe.
-
15:55
In fact, I'd describe it as a stink.
-
15:58
so, we should look at some examples of
-
16:00
stink and see exactly what I'm talking about.
-
16:06
Okay.
-
16:06
So [COUGH], everyone's, everyone's familiar with these guys.
-
16:09
You know, these file extensions that you've seen around on the web for years.
-
16:14
Certainly my first, my first homepage Although it was
-
16:18
just, lots of NBA basketball and a hit counter.
-
16:22
You know, it was a, it was a static file, so it had a .html extension.
-
16:26
But you know, over time, it's learned to use
-
16:28
different technologies, perhaps using php for some simple templating.
-
16:31
So the file would end up, you know, the URL would end up with a php extension.
-
16:36
What happens then when you want to start
-
16:38
using a different implementation in the back end.
-
16:40
Maybe you've moved it up to .asp or .jsp or, or take
-
16:43
your pick, you know, of the file extension you will then change.
-
16:45
And this is an example of, you know, the content
-
16:47
being coupled to the technology, which is something that we want
-
16:51
to avoid, and it's something that we've learned to avoid
-
16:53
by careful URL routing and that kind of thing these days.
-
16:57
Tim Burners Lee talks about how cool URLs don't change, and that's really important.
-
17:01
I mean, we could go off on a tangent and talk a little bit about the
-
17:04
importance of stability of URLs, but, but we'll
-
17:07
leave that for now just, just to take
-
17:08
it as read that, that it's a valuable thing to have reliable URLs so you don't
-
17:13
have link rot and kind of, you know, a weakening of the links of the web.
-
17:16
You know, the URL is what makes the web the web.
-
17:19
And so, if you have a system that.
-
17:21
Prescribes a URL structure that you can't control.
-
17:25
That dictates what your URL is gonna be without you being able to control it.
-
17:29
And that's a form of lock in I'm arguing.
-
17:31
Because if you ever want to change the technology in the future, then you're
-
17:36
locked in to that URL structure so, so you're going to have to re-imagine that.
-
17:41
But that's not the only problem with something
-
17:42
that will detect, dictate a URL structure to you.
-
17:45
Sometimes you get very ugly URLs that aren't very efficient.
-
17:48
So, I'm gonna pick on a site and, and show you an example of that.
-
17:52
Now, so burton.com is a, Burton is a, a brand that I, I care for a great deal.
-
17:58
My company didn't work on this project.
-
18:00
We didn't work on this site.
-
18:02
However, I did notice from looking at their URL structure that they
-
18:06
used the same technology that I used on a project at RGA.
-
18:12
It was one that was kind of imposed by the client as is often the way.
-
18:16
And so I was able to see from the URL structure that it was the same thing.
-
18:19
And I'll teach you how to do that yourselves.
-
18:21
so.
-
18:22
So this is the homepage.
-
18:24
and, and the URL for that is global.burton.com.
-
18:29
Before I go on I should, I should mention that this,
-
18:30
this bit of software, it's, a, a CMS as a service.
-
18:34
It's hosted up in the clouds.
-
18:37
And it enables lots of eCommerce features.
-
18:39
It's a very powerful bit of software.
-
18:41
And the Burton.
-
18:42
,the Burton site, you know this this site is a really nice
-
18:47
example of like some responsive design,
-
18:49
it's really, it's really nicely put together.
-
18:52
But it's the URLs that I've kind of got a little bit of a bee in my bonnet about.
-
18:55
So, yeah.
-
18:56
The homepage, global.burton.com.
-
18:58
Now, global is there because, [INAUDIBLE], they have different localized versions.
-
19:01
And each one receives a different sub domain.
-
19:03
Not wild about that, if I'm honest [COUGH].
-
19:05
But, you know, that's more of a taste thing.
-
19:07
But that's, that's not my beef here.
-
19:08
So, the homepage.
-
19:09
Ben.com, it's global ben.com/on/demandware.store/sites-burton_Global-Site/default/Home-Show.
-
19:26
That's, that's the home page URL.
-
19:28
Now, I think we can all agree that this is mental.
-
19:32
This, this is not, no one's going to design a URL structure like this.
-
19:38
To be fair, if you go to burton.com, it will.
-
19:41
Do a a redirect, and this is where you, where you'll end up.
-
19:44
The reason for that is that this bit of software provides
-
19:47
something called vanity URLs, or what I like to call URLs.
-
19:51
And a vanity URL in this world
-
19:53
is something that is, is essentially a redirect.
-
19:55
But they do mention that you're only [COUGH]
-
19:57
really able to implement so many of them before.
-
19:59
The system starts to perform badly, which is just frankly to my mind, absurd.
-
20:03
This is a solved problem.
-
20:05
But this kind of thing is prevalent in
-
20:07
what I describe as enterprise level bits of software.
-
20:10
And it just goes to show that enterprise level doesn't necessarily mean something
-
20:13
which is gonna be powerful and awesome out of the, out of the gate.
-
20:18
So you know I said I'd teach you the
-
20:19
very fine art of choosing, of, of noticing what the
-
20:23
software is here, you'll have to use your eyes
-
20:27
it's on demandware is how it is nicely described here.
-
20:30
So Demandware is, is the bit of software And, you know,
-
20:34
now you know the trick, and you know the structure of these.
-
20:36
I'm sure you'd be able to hack the URLs yourself, no need to use the navigation.
-
20:39
Just edit your, your address bar and easily find
-
20:43
the menswear, the womenswear, and of course, the snowboarding experience.
-
20:47
You know the URL structure now.
-
20:50
Again to be fair.
-
20:52
Demandware has an API as well.
-
20:55
So the way that I would prefer to go.
-
20:57
Is to use that API to enable all the e-Commerce features.
-
21:01
And then build it on something that, you know, I have control over.
-
21:04
I don't have to live with the kind of templating that they enforce.
-
21:07
The kind of euros that they enforce on you.
-
21:09
Or that kind of vanity URL.
-
21:11
So there is a method to do that.
-
21:12
But, but this I would describe as Stink.
-
21:15
This is an example of Stink.
-
21:16
It's something that bleeds through into the experience at the front.
-
21:19
Also, you know, an example of lock in.
-
21:21
But frankly, I just think it's fugly.
-
21:23
It's just not nice to have those kind of URLs.
-
21:26
It's not a nice experience.
-
21:27
URL hygiene is incredibly important you know.
-
21:30
It, it has an impact on the user experience.
-
21:32
It has an impact.
-
21:33
On the information architecture.
-
21:35
I, I talk a lot, you know when we're working on projects at IGA
-
21:38
about URL design being a craft and we try to make URL design a priority.
-
21:44
You know, when you're doing the information architecture of your site.
-
21:47
Understanding how the hierarchy works and mapping that to URLs is, is key.
-
21:51
It kind of helps clarify the thinking and
-
21:54
apart from anything else, designing the URLs gives you
-
21:56
a uniform way of describing all of the
-
21:58
assets as you're going through your, your design process.
-
22:01
So it's really important.
-
22:03
Not everyone cares about URL kind of clarity.
-
22:07
And so I tend to talk about URL stability a little bit.
-
22:11
Which again some people are like, well yeah I don't really care if it changes.
-
22:15
So my kind of top tip for that kind of conversation is
-
22:18
to kind of call on the siren of social media because not everyone
-
22:21
cares if a URL changes, but people do care if there is
-
22:25
a URL to their product page and you change the URL for that.
-
22:28
And then your Facebook likes all vanish, you
-
22:30
know, because its, they're mapped to your URL.
-
22:32
So, so that's, that's a way that I've
-
22:33
sometimes, sometimes got people to care about that.
-
22:37
Moving along.
-
22:38
Performance is another issue and we spoke at the
-
22:40
very beginning about the importance of performance on the web.
-
22:42
And Steve Souders again developers in the room may be familiar with Steve Souders.
-
22:47
Who he's not the guy in the, in the muscle suit, he's the other one.
-
22:51
So he's a, a performance engineer at Google.
-
22:53
He's spent, you know, his career working out ways to make things go fast.
-
22:57
He talks about the, the value of things performing
-
23:00
quickly and going quickly, being fast on the web.
-
23:03
Initially he Spent his time focusing on the back end.
-
23:06
Looking at making sure the server requests were responded to quickly.
-
23:12
Optimizing database structures and that kind of thing.
-
23:15
Getting the content back to the browser as fast as possible.
-
23:18
More recently he's focused on the, on the front end.
-
23:19
He does a lot of talk
-
23:20
about front-end development, front-end engineering cuz there's
-
23:24
a lot of, you know, opportunity there to really make a massive difference.
-
23:27
And so,you know what,my, my background's a front-end developer so I care about the
-
23:31
opportunity to kind of tuning and optimizations
-
23:34
and different tricks in the front end.
-
23:36
To make sure that, you know, you, you're
-
23:37
serving the widest possible audience as fast as possible.
-
23:40
And that's a place where there's just a great deal of craft.
-
23:43
So the foundation that, that sits on, of course is really important.
-
23:47
Which is why I care so much about CMSs, you
-
23:49
know, it's not a sexy subject it's a front end developer.
-
23:52
This is why I care about it.
-
23:54
And so we should look at another real example,
-
23:55
so there may be people who'vee experienced EPiSERVER which
-
23:59
again is a ,a, a product that I've used
-
24:01
on projects in the past is a .net-based CMS solution.
-
24:06
You can tell it's built for the web because
-
24:08
it inexplicably has a lowercase i in its name.
-
24:12
but, the nice thing is, that, you know,
-
24:13
the EPiSERVER site, which you can take a quick
-
24:15
look at here as you'd expect, is built
-
24:18
with EPiSERVER, you know, they built it that way.
-
24:20
So, have a little look at the code and see, see what's.
-
24:22
See what's to see.
-
24:23
And there are a few little bits and pieces in there that
-
24:25
maybe we'd, we'd change, you know, there's, there's not a huge deal.
-
24:29
But, you know, the JavaScript is split into
-
24:31
a few different JavaScripts, so they're in the head.
-
24:33
I'd typically want to concatenate those, push them to the bottom, you know.
-
24:37
Little things like that, performance.
-
24:39
That's not what I'm worried about here.
-
24:40
What I'm worried about is this little
-
24:41
chap that's just creeping into screen down here.
-
24:44
This This form, I don't.
-
24:46
I don't remember writing this in my template, this as I
-
24:49
was building this, ASP net form um,with some hidden, hidden values.
-
24:54
And the thing I don't like is this
-
24:56
view state attribute which, I don't remember writing that.
-
25:02
And what you'll find is that, on this system,
-
25:05
every page has injected into it by the system
-
25:08
that was still going has this, this hash injected
-
25:11
into it, to keep track of the view state.
-
25:13
And the reason for, I mean, no one wants that.
-
25:16
No one's gonna spend time, you know, crafting a beautiful, you know
-
25:20
front end code and then be happy with this getting forced into it.
-
25:24
The reason it's there is for, for various UI hooks.
-
25:26
You know.
-
25:27
This is a classic example of a CMS that allows you
-
25:30
to manage the content in place, in the the front end.
-
25:33
You know, you go to an admin URL.
-
25:35
And then you're managing the same code.
-
25:36
And so, these bits of, of code in the html are there to provide these, these hooks.
-
25:42
This is a classic example, in my mind, of Stink.
-
25:44
You know?
-
25:45
This is something that I didn't put there.
-
25:47
It's sticky fingerprints left in the code, and you don't want it there.
-
25:51
So moving along modularity and flexibility.
-
25:54
You, you're buying a system that's going to be able
-
25:57
to control your site for the, for the foreseeable future.
-
26:00
You want it to be flexible and modularity seems like a good thing.
-
26:03
Naturally, that's goinnna be something that's positive.
-
26:05
Well again, there's.
-
26:07
Space for some caution here.
-
26:08
So let's look at the, the kind of makeup of
-
26:10
a, of a module typical in, in kinda CMS systems.
-
26:15
Very typically you'll have some HTML naturally.
-
26:18
And then, you'll have some kind of
-
26:19
target variable, where your content gets injected.
-
26:22
There'll be CSS along with that to, to style the content.
-
26:26
Sometimes that will be very obtrusive CSS which
-
26:28
is right on the, on the elements themselves.
-
26:30
Sometimes it will be in line, sometimes it
-
26:32
will be linked in from a, from another resource.
-
26:35
Either way, it's kind of bundled in together with that bit of content.
-
26:39
Likewise for JavaScript.
-
26:40
If, if this module has some behavior then the JavaScript may
-
26:44
be kind of, again, obtrusively imposed on the elements or inlined or.
-
26:49
Or, or put there as a file resource.
-
26:52
And then, this whole kind of packages
-
26:53
encapsulated in some own way, major repeatable, so
-
26:56
that you can, you can plunk these things as a module on different, different pages.
-
27:01
And so you get this module, and then you, you
-
27:02
start building your page with, with a load of these modules.
-
27:06
This is, you know, typical of things like
-
27:08
SharePoint And a whole host of other systems.
-
27:14
And I think any, any front end developer in
-
27:15
the room will al-, be ahead of me already.
-
27:18
And just suggest that this kills rendering performance.
-
27:21
You know?
-
27:21
When you're switching backwards and forwards between.
-
27:23
The HTML and then having to go and get JavaScripts and get CSS.
-
27:27
It just really kills the rendering.
-
27:29
It all, it all just blocks up.
-
27:30
Also, it's a main, a maintenance nightmare.
-
27:32
It can be really problem, problematic.
-
27:34
So, even this kind of form of modularity.
-
27:38
Can be an example of stink.
-
27:39
But, more importantly to my mind, you know, with the performance that
-
27:43
it kills, this is the kind of thing that makes Steve Souders cry.
-
27:46
And the, the first rule of front end
-
27:48
development is though shalt not make Souders cry.
-
27:50
You've gotta get that into your head.
-
27:52
Things have to go fast.
-
27:54
Okay.
-
27:55
So that's a bit of performance.
-
27:56
But, you know, there's other aspects as well.
-
27:58
You know, I'm very fortunate in that where
-
27:59
I work, I work with some amazingly talented designers.
-
28:02
They, they don't necessarily love the fact that I include
-
28:06
them in my slides, but, you know, that's their own fault.
-
28:09
People come to a design agency or a web development
-
28:13
agency, I should say, for, for design expertise as well.
-
28:16
You know, the.
-
28:17
The client always has an opinion on design, but, you
-
28:19
know, they are coming to you for, for that design expertise.
-
28:22
And so something which is kind of baffling in, in the CMSs is the fact that Rachel
-
28:27
Andrews put this beautifully, and I think she's doing
-
28:30
a talk later today, she did a workshop yesterday.
-
28:32
So um,she talks often about how a CMS can
-
28:35
give the user the power to ruin their site.
-
28:38
Which is absolutely right, you know.
-
28:39
You give them something and then they say that's great
-
28:41
but I think I will put the sidebar over here today.
-
28:44
Just undoing all that good work.
-
28:47
And a, and a place where that hap, happens
-
28:49
very frequently is in a core feature of many CMSs.
-
28:53
Ones that we all know and love.
-
28:55
It's the WYSIWYG.
-
28:57
So everyone's encountered this.
-
28:59
I'd suggest that WYSIWYG is dangerous.
-
29:01
You know, over time when you're using a WYSIWYG,
-
29:04
you get this kind of attrition of the styles,
-
29:06
until eventually the thing that you're left with bares
-
29:09
no relation to the thing that was designed and crafted.
-
29:12
And built in the first place.
-
29:14
Personally, I feel that WYSIWYG is the enemy, or WYSIWYGITE, if you prefer.
-
29:20
It's easier to remember.
-
29:22
And it's not just that WYSIWYG kind of can produce a slightly unexpected result.
-
29:27
But it's also that it's not necessarily fit for purpose now.
-
29:30
I mean, you think about how.
-
29:33
you're, you're letting someone design how their content will
-
29:36
look in, in a, you know, in a WYSIWYG editor.
-
29:39
How it will look where?
-
29:42
You know, it'll look in the context of what they're looking
-
29:44
at or how about on all of the devices that exist now.
-
29:47
Mark Boulton a couple of days ago.
-
29:49
Published a great post on this, and he suggests, well Wysiwig doesn't
-
29:53
look the same anywhere, everywhere anyway
-
29:55
because different browsers render things differently.
-
29:58
We've got a huge range of devices now.
-
30:00
You know?
-
30:01
How is it gonna look on, on the devices in the future and the
-
30:04
things that you're gonna find under the Christmas tree at the end of the year?
-
30:07
But more importantly to me, I think that WISYWIG
-
30:08
just makes it impossible to protect the design experience.
-
30:11
You know, if someone's come to you to craft something
-
30:14
and to design something, then you, you want to preserve that.
-
30:17
And it also makes it impossible to protect the
-
30:19
mark up, they may protect the code that you've engineered.
-
30:24
This next slide is, is a difficult one for me.
-
30:28
I don't have the guts to do live coding.
-
30:29
I just haven't, haven't got that skill or that courage.
-
30:33
I've just about got enough courage to show you some old code that I wrote.
-
30:37
The caveat is that this was code that I wrote and has now has been WYSIWYGed.
-
30:42
It's from a, a.
-
30:44
A restaurant here in London which I'm not going to name.
-
30:47
again, for fear of getting in trouble.
-
30:50
But it's some codes that I wrote for that site.
-
30:53
And then has, I came to look at some two or three years later.
-
30:57
And so this is that code.
-
30:58
So this is my HTML expertise for you.
-
31:02
Now.
-
31:03
I don't know what the make up of, of developers and, and, and real people.
-
31:09
And [COUGH] I'm a developer myself so I can be allowed to say that.
-
31:13
But if you look at this code there's some,
-
31:14
there's some beauties in here there's some great things.
-
31:18
First of all if we just read the language that's in the link.
-
31:21
You know there's a link here to allow you
-
31:22
to you know add your name to a waiting list.
-
31:24
And the language reads.
-
31:25
Please click here to add join our waiting list.
-
31:28
Which you, already is, okay, I don't know if that completely scans.
-
31:32
But then if we look at the, the text that's in the anchor itself.
-
31:35
It's just a thing of beauty.
-
31:36
You know, we've got two words, click here.
-
31:38
And each one is individually lovingly wrapped in it's own strong element.
-
31:43
And then, again, lovingly wrapped in its own font tag.
-
31:47
Nice to see that old friend.
-
31:48
Showing up again u, and you can see that, right there in the font element.
-
31:54
We've, we've forced it to be black.
-
31:55
You know we've imposed the color on each word individually.
-
31:57
You know, because we mean it, and that, you know overwrites.
-
32:01
The style that we meant, know, emphatically on the anchor itself.
-
32:05
Which, you know, is, is there on the a tag.
-
32:07
It's just, it's just bat shit insane.
-
32:10
Don't get me started on the footnote class on the top,
-
32:12
with a font size of 4 with a space in it.
-
32:15
it's, there's also, and then, there's also like a
-
32:17
Unicode character down here, in the, in the cancellation policy.
-
32:21
Goodness knows how it got, that got in there.
-
32:22
But either way, you know, you can see there's some copy and paste funk going on.
-
32:26
I'll move away from the code but I can't move along without showing you this.
-
32:32
I don't know how everyone else does it, but this is how I
-
32:34
like to add a bit of a margin to the bottom of some content.
-
32:37
You've all been doing it wrong.
-
32:40
I think we can agree that this is stink.
-
32:41
I think this is, this is a classic example of stink and
-
32:44
this is an output of this kind of round tripping that happens.
-
32:47
It happens over here in the WYSIWIG controls, so
-
32:50
this is, this is a very popular JavaScript WYSIWIG control.
-
32:54
With all of the elements turned on, and there's a
-
32:56
couple of buttons in here that I want to call out.
-
32:58
This one, you probably can't see it but does anyone recognize that?
-
33:02
Look up.
-
33:03
Paste from Words yeah.
-
33:04
But the thing that every front end developer loves
-
33:07
to see and thankfully it has got a companion.
-
33:10
It's this button source.
-
33:13
So what happens here is that people go off and
-
33:15
they create their content where their happy with it in
-
33:16
Microsoft Word and they will format it their because they've
-
33:19
got an opinion of exactly how that's going to be structured.
-
33:21
And then they paste it in here, and then it, come
-
33:23
gets a bit buggered up as they, as they do that.
-
33:26
And then they'll like tweak it and nudge it.
-
33:27
And then someone's got to figure out how to fix it.
-
33:29
So they go into the source, and then the tweak it in the source.
-
33:31
And they go, how's this been implemented?
-
33:34
No idea, and they clean it up.
-
33:35
And it kinda goes backwards and forwards in
-
33:36
this kind of, kind of Clash of the Titans.
-
33:39
And this, this kind of loop, this kind of trend ,translation is imperfect.
-
33:44
So you end up with this degradation over time through this kind of circular aspect.
-
33:47
So I kind of like to refer to that as circular stink.
-
33:50
Everything's gotta have a name.
-
33:51
And so the way that I would try and get around that, and avoid that,
-
33:54
is, I'd, you know, I'd much prefer
-
33:55
to be authoring things in something like markdown.
-
33:57
You know?
-
33:58
Markdown's a really nice way of allowing.
-
34:00
Just enough control to put, give meaning to
-
34:02
the content, and put semantic structure into the content,
-
34:06
but without giving full control to the content
-
34:08
author over exactly how something should be laid out.
-
34:10
And so I'm a big proponent of this kind of approach
-
34:13
of structured content and that's the kind of thing you should manage.
-
34:16
A content management system is intended I
-
34:19
think to manage the content, not the design.
-
34:22
When you allow it to manage the design, I
-
34:24
think you get into a little bit of trouble.
-
34:26
So, I'm a big advocate for simplicity and using something like Markdown.
-
34:30
Now you might say, well, that's all well and good, but I've got a complex site.
-
34:35
I've got lots of content.
-
34:36
It's a rich, it's a rich bit of of
-
34:39
content, and I've got lots of people authoring it.
-
34:41
This won't work for us.
-
34:43
So what I'd, my response to that is I'd point you at gov.uk.
-
34:46
I think most people would be familiar with the work of gov.uk, which.
-
34:49
I just think is staggering work, really valuable and they use, they use Markdown.
-
34:54
You know just some credentials for for this,
-
34:57
you know last month they served 23 million uniques.
-
35:02
115 million page views last month.
-
35:05
You know, they, they've been winning awards.
-
35:06
They will, won AD and D Black Pencil.
-
35:10
This is a yellow pencil I, I know that.
-
35:12
They won the Black Pencil.
-
35:14
really, you know, just really doing amazing work.
-
35:17
And the thing that I love is that as I mentioned it's built in Markdown.
-
35:20
Or rather the content is authored in Markdown.
-
35:22
And, and it's big.
-
35:24
You know, as of a few days ago.
-
35:26
Was that 67,000 documents published, written in Markdown,
-
35:31
and this is, this is a valuable one.
-
35:33
You know, more than 1000 authors globally are creating that content.
-
35:37
Those content authors, many of them are civil servants, not developers.
-
35:40
They're not comfortable, you know, with, with development environment.
-
35:45
And so, they, they love using Markdown.
-
35:48
You know, I'm told that.
-
35:49
They, they take a very short amount of time to learn it
-
35:52
and then they love it cuz it does exactly what they ex, expect.
-
35:55
The design principles behind gov.uk by the way are also really worth checking out.
-
35:59
They're on the links to the slides and I'll give you a link later on.
-
36:02
So here I'm kind of describing how constraints can be huge enablers.
-
36:06
You know they get rid of that choice paralysis
-
36:09
and they can really valuable and empowering to the users.
-
36:12
Now not all constraints are enablers, obviously.
-
36:15
This is a constraint I've encountered.
-
36:18
A,a vender of a CMS said this to me and I said this to them.
-
36:24
And then it kind of became clear later we can purchase it as an add on.
-
36:28
The fact that the, the back end, the CMS is so kind of crippled, it won't allow you
-
36:35
to offer something that work well in mobile, I
-
36:37
think, gets us back into this kind of territory.
-
36:40
So again, I'd say that we should be managing
-
36:42
the content and not the design in these systems.
-
36:44
And that's the only way that we can build something.
-
36:46
That's truly future friendly.
-
36:47
That, that works everywhere that we want it to go.
-
36:50
And, as I say, on all of the devices that we know about now.
-
36:53
And all of the devices that are under the
-
36:54
Christmas tree as, as Brad Foster likes to say.
-
36:58
So, you know, simplicity.
-
36:59
Simplicity is the key I'm banging on about simplicity all the time.
-
37:03
And you'll be getting bored of it.
-
37:04
But.
-
37:05
I've had a lot of success with this kind of
-
37:07
conversation where a client has come along and, they said,we'd
-
37:10
like you to build a site and this be on
-
37:12
CMS, this is the first question I always always ask.
-
37:16
This is the second question I always ask because the
-
37:18
answer to the first is, well, everything needs to be dynamic.
-
37:20
We want to be able to control everything.
-
37:22
So really you have to tease into it, what really needs to be done like.
-
37:25
And then they say, Oh, okay this much.
-
37:26
And they say, what really needs to be dynamic?
-
37:29
You'd be amazed at how many sites I've
-
37:30
discovered could be static site with a blog.
-
37:33
Which is not the same thing as a fully content managed site.
-
37:37
Often people say, well why, one day, we might
-
37:39
want to,and you know they fill that sentence in.
-
37:42
With, with all kinds of things.
-
37:44
But you know there's this term from software
-
37:46
engineering YAGNI - you ain't gonna need it.
-
37:47
You know just worry about what we're going to need a bit later on.
-
37:50
Rather assuming, rather than assuming we're gonna need
-
37:53
everything because the complexity goes through the roof.
-
37:56
So again, I'm suggesting that we should ruthlessly pursue simplicity.
-
38:00
It's difficult to do but it, it's really important.
-
38:03
And then if we do that then it means that we can focus on the available skills.
-
38:06
You know, who, who's going to be managing this stuff in the end anyway?
-
38:10
You know, it's, it's not gonna be, you know,
-
38:13
the, the people at the top of the, the list.
-
38:15
Very often it's this guy.
-
38:16
You know, they're, they're going to be using the
-
38:19
CMS to, to manage it anyway so why not.
-
38:22
Capitalize on the fact that HTML skills and kind of good engineering skills
-
38:28
are much more available than the skills in you know, ACME and complex enterprise CMS.
-
38:34
And so, in that way [COUGH] you can actually avoid
-
38:37
lock in, just by using the skills that are available.
-
38:39
More readily anyway.
-
38:40
You know, I like to even push people to consider using no
-
38:44
CMS at all and just make it easy to update the site.
-
38:47
You know, there are so many tools around now that,
-
38:49
you know, give you kind of conventions and patterns, guidance.
-
38:52
I mentioned the, the the gov.uk design principles
-
38:55
and they kind of give you templating as well.
-
38:59
So that you can rapidly generate a new version of the site and easily deploy it.
-
39:04
People may be familiar with Jekyll.
-
39:06
Which is a very nice, very simple lightweight templating engine.
-
39:09
This is actually a bit focused for blogs,
-
39:11
but there's a whole load of static site generators
-
39:13
that give you some conventions and some templating to
-
39:16
generate a static site that you can host anywhere.
-
39:19
Just.
-
39:19
Reduces that, that barrier.
-
39:22
I also really like Perch.
-
39:23
I mentioned Rachel Andrew earlier on, with her quote about the ability to ruin.
-
39:27
Users have the power to ruin their site.
-
39:28
This is, this is the product that she and and Drew [UNKNOWN] have built.
-
39:34
I really like Perch.
-
39:36
Because it gives you a chance to optimize in the front end.
-
39:38
You know?
-
39:38
It's my front end roots coming out again.
-
39:40
You build a static site.
-
39:41
And then you say, okay, these are the pieces.
-
39:44
That I want to be content manageable.
-
39:45
So you wrap those in some PHP tags.
-
39:49
And then that generates for you
-
39:50
a completely decoupled stand-alone admin page
-
39:53
which only just has those bits of content available for you to manage.
-
39:57
So it's incredibly lightweight and flexible.
-
40:01
Not overwhelming for the user.
-
40:03
And there are, of course, there are a host of other things along those lines.
-
40:06
So, you know, moving on.
-
40:07
I'm close to wrapping up.
-
40:08
I'm just about out of time.
-
40:09
You know, this standard waterfall picture of a waterfall process.
-
40:13
But you know, this is a common agency
-
40:16
and you know, development pattern that you'll see.
-
40:19
you know, especially if you're working with a third party or if
-
40:21
you're working with a content management system that comes in at the end.
-
40:24
You know, you go through all of this user experience,
-
40:26
the design, the front end development, then you do this kind
-
40:28
of integration piece at the end on the CMS where
-
40:31
everything just kind of falls away and you get into trouble.
-
40:34
So, I'm out of time, so.
-
40:36
My kind of summary to finish.
-
40:38
I'm kind of calling on everyone to challenge
-
40:40
the introduction of CMS stink and to really care
-
40:43
about what the CMS will do to the
-
40:46
engineering and to the work in the front end.
-
40:48
Know, that's how you can protect the craft that's been put into developing things.
-
40:52
And protect the performance, the performance.
-
40:54
And, you know, keep sites working well.
-
40:57
And this is a way that we can fight for a chance to do really good work on the web.
-
41:02
I've used a bunch of creative commons images in my, in my slide.
-
41:05
So, my thanks there.
-
41:06
There are a few links to things I've referenced.
-
41:08
And a few, like, things to read.
-
41:11
They're all available in the slides.
-
41:12
The slides're up now on Speaker Deck.
-
41:14
And you can get them from //bit.ly/what-a-stinker.
-
41:17
I mentioned earlier on that I'll be around all day.
-
41:20
You can ask me questions right after the session in the break, on Twitter.
-
41:23
Just come and grab me.
-
41:24
Sadly I'm not around tomorrow.
-
41:25
But, please feel free to come and grab me.
-
41:28
Thank for, you know, walking away from the session in there.
-
41:31
I know that Patrick Lowe could.
-
41:32
We've done a great session on touch events so I appreciate you coming here.
-
41:36
Thank you for your time.
-
41:39
>> [SOUND]
You need to sign up for Treehouse in order to download course files.
Sign up