Episode Number 46

Diagnosing Performance using New Relic with Anna Brown

Jun 18, 2015 @ 11AM MT

Once your client’s site begins to grow, its performance needs may change. But when it slows down, do you know where to begin troubleshooting? Special guest Anna Brown suggests using the New Relic tool to help narrow down issues quickly and decisively. We talk about how to identify site issues and to deal with them, whether involves the front-end or the CMS. We explore client budgets and the practicalities of investing in performance diagnostics, as well as how the data you glean can help you make better optimization choices.

Tags:
anna brown
interview
expressionengine
performance
new relic
optimization
cms
front-end

Episode Transcript

Download Transcript

CTRL+CLICK CAST is proud to provide transcripts for our audience members who prefer text-based content. However, our episodes are designed for an audio experience, which includes emotion and emphasis that don't always translate to our transcripts. Additionally, our transcripts are generated by human transcribers and may contain errors. If you require clarification, please listen to the audio.

[Music]

Lea Alcantara: You are listening to CTRL+CLICK CAST. We inspect the web for you! Today Anna Brown rejoins the show this time to talk about using New Relic to diagnose performance. I’m your host, Lea Alcantara, and I’m joined by my fab co-host:

Emily Lewis: Emily Lewis!

Lea Alcantara: This episode is sponsored by EllisLab. ExpressionEngine is the web professional’s content management system of choice. It’s great for designers, great for clients and has an awesome community and ecosystem. Try the core version for free and see how ExpressionEngine can help you be an internet hero. Visit ellislab.com/expressionengine for all the details.

[Music ends]

Before we introduce our guest today, we want to remind our listeners that thanks to your nominations, CTRL+CLICK is up for Podcast of the Year in this year’s Net Awards. [Laughs]

Emily Lewis: Whoohoo.

Lea Alcantara: This is where we need those sound effects.

Emily Lewis: I know seriously. [Laughs]

Lea Alcantara: That we keep talking about, but we never put in. [Laughs]

Emily Lewis: We are so, so excited to be nominated for the third time because I feel like it means that even though we rebranded and shifted our focus a couple of years ago, we’re still doing something right for our listeners.

Lea Alcantara: [Agrees]

Emily Lewis: So thank you, listeners.

Lea Alcantara: Thank you so much, and please vote. We can’t win without your vote. Voting is open until July, and we’ll have the link on our show notes, but now, back to today’s episode.

Emily Lewis: I’m actually really excited about this one, Lea, because this topic is actually one that’s very close to all three of us because Anna did some New Relic sub-contracting work for one of our clients, which got you into New Relic.

Lea Alcantara: [Agrees]

Emily Lewis: And us into some real-world EE performance tweaking, and of course, it’s great to have our good friend, Anna Brown, back on the show. Anna is a freelance front-end developer and designer and is an expert in both Craft and ExpressionEngine development. Welcome back, Anna.

Anna Brown: Thank you, ladies. It’s so great to be here.

Lea Alcantara: So Anna, can you tell our listeners a bit more about yourself?

Anna Brown: Sure, well, first, congratulations on Podcast of the Year nomination.

Emily Lewis: Thank you.

Anna Brown: That’s awesome.

Lea Alcantara: Yehey!

Anna Brown: Can we vote every day.

Lea Alcantara: I wish, I wish.

Emily Lewis: [Laughs] I think it’s actually one vote.

Lea Alcantara: I think it’s only one.

Anna Brown: Darn it. Darn it. Well, I’ll rally everybody in Albuquerque.

Emily Lewis: [Laughs]

Anna Brown: So well, I’m a freelance web developer. I do front-end web development for ad agencies or just agencies. I’ve worked full time doing this for about ten years now, and I am in Albuquerque, not too far down the road from Emily.

Emily Lewis: Yeah. [Laughs]

Anna Brown: Yeah.

Emily Lewis: And I get to enjoy living vicariously through you as you explore Albuquerque on Facebook. You’re doing tons of hikes around the State. It’s amazing.

Anna Brown: Right.

Emily Lewis: When did you get into this?

Anna Brown: Well, programmers sit a lot.

Lea Alcantara: [Laughs]

Emily Lewis: [Laughs]

Anna Brown: And I just got tired of sitting, and I’m not sure what propelled me to do this, but about three years ago, I started getting out after work because I’m not a big morning person, but after work, I still have energy so I started hiking. I joined a hiking group in Albuquerque and now I lead hikes for the group, and I’m sort of just everywhere, but I love it. I love exploring. I mean, I work alone all day and I’m an extrovert.

Lea Alcantara: Right.

Emily Lewis: [Agrees]

Anna Brown: So it’s not a healthy please for me really, I think. [Laughs]

Lea Alcantara: [Laughs]

Emily Lewis: [Laughs]

Anna Brown: So getting out, being with people, exploring, seeing new things, I just sort of can’t get enough of it. So tomorrow actually I’m headed to the Grand Canyon for a 5-day backpacking trip.

Lea Alcantara: Oh.

Anna Brown: And we’re doing – the trip is rim to rim to rim, so it will be about 80 miles of hiking which is to me I’m just ready for it, like bring it on.

Lea Alcantara: Wow!

Emily Lewis: That’s incredible.

Anna Brown: Yeah, it’s awesome. I’m looking forward to it.

Emily Lewis: Impressive.

Anna Brown: Thank you.

Emily Lewis: Yeah, I went to North Rim to do some camping, but we didn’t do any major hiking. Well, it’s the Grand Canyon, it’s rather grand. [Laughs]

Lea Alcantara: It’s grand. [Laughs]

Emily Lewis: There’s a lot of space to hike around.

Anna Brown: Isn’t it amazing? I hiked it for the first time last September. I did a 5-day trip last year also, and we drove up, we got situated and then we went and watched the sunset.

Emily Lewis: [Agrees]

Anna Brown: And I really just was blown away. You don’t see many things in your day-to-day life that are just so awe-inspiring.

Emily Lewis: [Agrees]

Anna Brown: The sunset happened to be amazing that day and the clouds were phenomenal, and I had tears in my eyes a little bit.

Emily Lewis: I feel really lucky to live in this part of the country, I really do.

Anna Brown: Yeah.

Emily Lewis: It’s pretty amazing. Even outside of Albuquerque, five minutes outside of Albuquerque, there’s stuff that’s just beautiful.

Anna Brown: Yeah, and I grew up here, and I don’t know that I really explored New Mexico until into my 30s. For a long time I felt that I needed to leave and go see the world, but there are just so much to see here, and it’s beautiful. We have such a diverse landscape, and like I don’t like to tell people because I don’t want a lot of people coming into New Mexico.

Emily Lewis: [Laughs]

Anna Brown: But…

Emily Lewis: Well, you should stop posting all those photos then.

Anna Brown: I know, I know.

Lea Alcantara: Yeah.

Anna Brown: Well, no, I just post them to New Mexico people. No, I’m kidding.

Emily Lewis: Well, I’m curious, Anna, since you started doing this three years ago getting out in the afternoons and getting involved, has your work improved, your productivity improved or is it the same?

Anna Brown: No. No, not at all. No, it’s terrible.

Lea Alcantara: [Laughs]

Emily Lewis: [Laughs]

Anna Brown: I’m working less mostly because I just sort of – I don’t know. Programming is great, but I’m just enjoying some other things a little better. So I’m trying to take Fridays off more often. Also, as you get older, your body just doesn’t want to program as much. I mean, my hands don’t want to do it as much, and my body from sitting all day just isn’t so happy. So also, I own rental properties and then I save and then I buy one and then I’m focusing a little more attention on that, just to diversify and just to do something different. I like real estate a lot, so it may be somewhere where I point my attention in the next couple of years.

Emily Lewis: That’s good. I mean, almost all of our guests talk about like hyper focused on work. It’s nice talking where that’s not the hyper focus and you’re still really happy kind of person. [Laughs]

Anna Brown: Yeah. Well, I did that hyper focus thing for a long time, and I don’t know, but it got old. It wasn’t fulfilling, how was that?

Lea Alcantara: Sure.

Emily Lewis: And there are always cycles, you know?

Anna Brown: Yeah. I am much happier honestly. Where I find the ultimate happiness and I’m present is when I’m out hiking or climbing or just doing something outside, so why not do more of that?

Emily Lewis: [Laughs]

Lea Alcantara: Well, that makes sense.

Anna Brown: I need to figure out how to get paid to do it.

Emily Lewis: Yeah, exactly. [Laughs]

Lea Alcantara: Yeah.

Anna Brown: Let’s figure it out.

Lea Alcantara: That’s true.

Anna Brown: As you know, I lead hikes, maybe I should start charging.

Emily Lewis: Charging.

Anna Brown: Yeah, but then you have to get the insurance.

Lea Alcantara: Oh dear.

Emily Lewis: Oh yeah. [Laughs]

Lea Alcantara: Yeah, that’s true.

Anna Brown: That will be expensive.

Emily Lewis: Yeah.

Anna Brown: But anyway, I just enjoy it as a pastime, and you know what too, so Ryan Masuga, who is another developer in our community, I think he posted a blog post maybe last winter or something or last late winter, and he said, “Oh, I’m getting in shape and I’ve got this Fitbit…” and I read that and I was curious about it, and last April, I think April 1st, I started using one. I think it just made me more active even.

Emily Lewis: [Agrees]

Anna Brown: Because I compete with people. [Laughs]

Lea Alcantara: [Laughs]

Anna Brown: I’m a little competitive less against them and more against myself, and so getting my 10,000 steps is pretty important every day.

Emily Lewis: Well, it gives you a visual tracking, right?

Anna Brown: Yeah.

Lea Alcantara: Yeah, and I was about to say that this would be a nice segue way into our topic because…

Anna Brown: Data.

Emily Lewis: Data. [Laughs]

Lea Alcantara: Yeah, it’s data tracking.

Emily Lewis: Nice, Lea.

Anna Brown: Yeah.

Lea Alcantara: It’s performance…

Emily Lewis: [Laughs]

Anna Brown: [Laughs]

Lea Alcantara: Performance tracking, in fact.

Anna Brown: Yeah, absolutely. It’s exactly that.

Lea Alcantara: Exactly, and seeing where you could improve.

Anna Brown: Yes.

Lea Alcantara: So in regards to today’s topic, let’s just talk about what are performance issues, like what are the most common performance issues on sites?

Anna Brown: Well, the ones I’ve seen, I mean, there are so many different components actually that can cause performance issues on a website, and there are some that you can control and some that you can’t. Ones I’ve seen in the past have been related to sort of problems in the code, just code that worked in a specific time with specific conditions and then the conditions changed, meaning maybe there’s more traffic or the database was bigger, or who knows? Maybe the actual code changed, so it just depends on the conditions around the code. I’ve seen issues where an external connection was the problem, and it may be you’re connecting to Twitter and Twitter is down, their API is down, or another API.

So if you’re doing some external connection, that isn’t really under your control. I mean, what you can control is just removing the connection temporarily. I had that with a project in ecommerce site where we were connecting to Campaign Monitor during the checkout process and everyone who actually completed a purchase, we were adding to our database, and their API was down for a day. I don’t know if it was down, it was timing out, I think is what was happening, and I didn’t consider that when I’ve added the code there. So the orders weren’t completing because it was getting stuck on adding to the database, so I really just need to timeout there that said, “Okay, well, you can’t complete this connection in one second or something, then just ignore it and go on to the next thing.”

Lea Alcantara: So when you’re looking at like, let’s say, a client comes to you and says like, “There’s something wrong with my site. It’s just like really slow,” what are the first things you look out for, because you mentioned there are so many particular factors. It could be external. It could be internal. It could be front-end code or it could be the CMS.

Anna Brown: Yeah.

Lea Alcantara: Where do you even begin?

Anna Brown: Okay, well, I would say that you begin by just having experience.

Lea Alcantara: [Laughs]

Emily Lewis: [Laughs]

Anna Brown: So you have to see a lot of things to recognize what they are. It’s sort of such as in life also, right?

Lea Alcantara: Right.

Emily Lewis: Right.

Timestamp: 00:09:53

Anna Brown: As you get older and you’re wiser, you know more things, so having experience helps, but being able to duplicate it consistently also helps.

Lea Alcantara: [Agrees]

Anna Brown: The hardest thing to track down is something that just really doesn’t happen consistently, but then if it’s not consistent, then asking the right questions to understand the pattern. So it’s hard, I mean, you just have to identify sort of all the pieces around it basically, and I think that helps you narrow into where it possibly could be and then your attention focuses there.

Lea Alcantara: Right.

Anna Brown: But sometimes it’s not always clear, and that’s hard to me.

Lea Alcantara: Yeah.

Anna Brown: Those are the hard projects, but I think programmers are in general problem solvers and puzzle solvers, mystery solvers, you know?

Lea Alcantara: Right.

Anna Brown: So we’re all good at that with the right background.

Lea Alcantara: Yeah, I know for sure. I mean, it’s one of those things where I feel like when we first started talking about this particular client that we worked together on, we just did the [Web] Inspector stuff, like that was like one of the most basic things.

Emily Lewis: [Agrees]

Lea Alcantara: Like what is the Inspector showing? Like are there assets even loading? Those kinds of things, I would think that would be one of the first things I check. The hard part about that is if the entire site is slowing down, is there one particular page that’s bringing everything down or several pages?

Anna Brown: [Agrees]

Lea Alcantara: That’s where I feel like a tool like New Relic helps you isolate it.

Anna Brown: Yes.

Lea Alcantara: Because otherwise you’re like, “Okay, we know the site is slow. There might be front-end assets and back-end assets, but I don’t even know where to begin.” [Laughs]

Anna Brown: Yeah, exactly, and they can be just one page.

Lea Alcantara: Yeah.

Anna Brown: It can be a page that’s getting enormous amount of traffic.

Lea Alcantara: Right.

Anna Brown: You’re not necessarily going to see that by inspecting.

Emily Lewis: So would New Relic be one of those things that if you have the ability to use it, budget or whatever to start with do you think after having gone through this particular experience?

Anna Brown: Well, my background with New Relic started with a project where I had sort of regular problems and tried sort of everything else to stabilize this site and never could.

Lea Alcantara: Right.

Anna Brown: So I tell people, “If you’re having problems, just get New Relic,” and so they do it.

Lea Alcantara: [Laughs]

Emily Lewis: [Laughs]

Anna Brown: You have certain server conditions where you actually have a root access and you can install this.

Lea Alcantara: Yeah, like a virtual…

Anna Brown: Yeah…

Lea Alcantara: A Virtual Private Server.

Anna Brown: Yeah, or dedicated server, but you need root access and you need to be able to install this PHP module basically and restart Apache to get the data flowing, and they offer a 2-week trial with all the data. So for most projects, if it’s one or two simple things and you don’t need the regular monitoring…

Lea Alcantara: And there’s a free tier too.

Anna Brown: Yeah. They have a free tier.

Lea Alcantara: It just doesn’t save all the data, but if you just want to look at that day, you can do that.

Anna Brown: Right, yeah, and so the free window is just the shorter window. I think you can see one week of data and you just can’t drill into the details, into the actual individual page load transactions, but it’s definitely helpful.

Emily Lewis: So did you hear about New Relic or were you researching when you were trying to come up with a way to stabilize that site you were dealing with?

Anna Brown: Well, the site was hosted at EngineHosting on dedicated servers. This was a big high-traffic site. It was a daily newspaper. As the database grew and the traffic grew, it just had regular problems, and we were always putting out fires on the site and we would fix something and then a couple of weeks later, something else would start acting up. I felt I was always reactive, and the hardest part was that this is very early morning traffic, and so I am not a morning person, but I would get phone calls saying, “Hey, there is a problem,” and I would be working on those at six in the morning, and that just wasn’t good for me. The stress was a lot more than I’d like to handle.

But this happened for quite a long time because we would fix one thing and then something else would happen, and so anyway, I was working with Nevin [Lyne] at EngineHosting to keep the site stable. We were on very big servers. The database was on an own dedicated server and ultimately in the end, we had two web servers and then we had a Varnish server for caching and then this database server, and so we had a pretty “meaty” server environment in place, but it just still consistently was having issues. When high-traffic articles posted, that’s when they would have the most issues and we just couldn’t stabilize it during those periods. There are sort of two options there. You just keep throwing server power at it or you fix the underlying problem, and I am a freelance developer, I would do this by myself. I don’t have people in my office to look at code with me and track down this server problem.

It’s challenging because when you’re the person responsible for it, you are the person responsible. The odd thing is that a lot of these sized newspapers will have a department, a tech department, focused on this stuff and here was a project that when it was built, I was the freelancer for an agency in Miami and then I stayed on with the newspaper and the agency went away, but I was the person who then they called when they were problems and I was the maintenance person and I was their tech department. Ultimately, I felt very responsible for this site, and I wasn’t going to let them down. [Laughs] So Nevin is the one that maybe he heard about it or had started using it with other clients and he said, “Look, let’s get this set up and let’s see what we see.” So we’d installed it on the server and I collected for a couple of days and then I probably spent two or three days just going through all the data, and anything that looked abnormal to me or that I didn’t understand, I made note of it and then I researched it.

I researched and then getting into the code, finding out why this query was running this many times, et cetera, et cetera, so they were just anything that was abnormal, and ultimately, that led me to making a number of changes and I believe one of the changes was actually the huge, the fix. I mean, all of them fixed and contributed to better performance, but one change was the main one. I never would have been able to find it without a tool like this.

Emily Lewis: Well, what does New Relic tell you? What kind of data does it give you?

Anna Brown: It’s sort of high-level overview. There’s a dashboard. I mean, let’s get in there. I’m actually looking at some. I’m at the dashboard now. The dashboard will give you or the whole thing gives you aggregated statistics or data. It aggregates all of the data coming into it, and it gives you pretty graphs and lists where issues bubble to the top, if that makes sense. It also will show you external service connections.

In this case, it will show you for the project I’m looking at, specifically it’s on PHP with a MySQL database, so it’s going to show you PHP transaction response times and database response times, and so just add a high level on this dashboard, we can see spikes or decreases in just sort of sustained levels for that. With the paid version, you get three months of data and with the free version, I think you get a week. Then you can drill into, yeah, their transactions rather than pages necessarily, but most times they are pages, and the way ExpressionEngine actually has sort of a built-in module that when and if you add New Relic to the server, ExpressionEngine will just kick in and start sending the correct data. What it’s sending is really database on the segments of the URL, and then they start grouping themselves together based on the volume of data. So with the big page count website, you’re not going to see individual pages per se, but like on an article page, that data will start to group itself together, so you’ll see overall times for your article page, not a specific article and you’ll see database queries and times and it will start showing which database queries are taking the longest time. Let me actually just get in there and I can tell you.

For database queries, it will show you the most time-consuming ones, the slowest average response time, and then the highest throughputs, so that’s pretty important, and then the slowest queries by a web transaction, so it gives you some decent data.

Emily Lewis: A way to narrow things down.

Anna Brown: Yeah. What happens is that things bubble to the top. That’s what I’m going to use as sort of the visual, and the queries that are the most time consuming will show from highest to lowest, and they’re only going to show I think about twenty of them, but anything at that top should be researched. It may not specifically be a problem, but you want to understand why that specific query is the most time consuming.

Emily Lewis: Let’s talk a little bit about the client you helped us with, Anna. Lea, you were the one who worked one on one with Anna. Can you first describe some of like this situation that happened because I think it was interesting because we didn’t know what was happening until there are problems, and that’s when we got involved, but they were changing some stuff with their server and then traffic problems.

Lea Alcantara: Yeah, so the long story short is because they made a bunch of server changes that we didn’t know about, their site just literally would stop, like it would not show up. Either it would crash or just like time out like nothing would load, so it got to that critical point like trying to figure out, “Well, what’s wrong with this?” Internally, they just kept looking at the server logs, but that really is kind of gobbledygook unless you really know what you’re looking at, but in addition, that doesn’t really tell you that much except saying, “Okay, did it go down simply because there were a ton of visitors? But even if that’s the case, historically with this particular client, they’ve always had this type of traffic before, but it never went down.”

Timestamp: 00:19:59

So it got to that point where it’s like nobody knew what was going on, and I actually heard Anna talk about New Relic a little bit. She showed me like basically, “Here’s what it will all show you specifically the slowest pages or the slowest situation, and then from there you can do some work.” What’s interesting is that I think within the first week that we installed New Relic, we found the main culprit of the speed situation.

Anna Brown: I think the first day.

Lea Alcantara: Yeah, yeah, simply because we…

Anna Brown: I mean, as soon as we looked at the data.

Lea Alcantara: Yeah, exactly, simply because the moment we started gathering the data, it was really obvious because as Anna was mentioning, information just started bubbling up, and with this particular client, we were just speculating all this ExpressionEngine optimization stuff that was going on, and it actually wasn’t ExpressionEngine. I mean, there were a lot of ExpressionEngine things that we did end up doing, but what we noticed was inordinate amount of 404 errors, like everything was 404-ing, every page was 404-ing and it was showing up in…

Emily Lewis: But not on the browser, like you didn’t see it when you were on the browser.

Lea Alcantara: No, because here’s the thing, like not all 404s are page related. You can get a 404 as “silent 404” or background 404 if an asset like an image doesn’t actually exist, that actually pings the server with a 404 message. The problem was on top of all those 404s, every single page had a missing asset.

Anna Brown: Oh, it had three.

Lea Alcantara: Yeah.

Anna Brown: Well, that was the issue. To me, that was the primary issue.

Lea Alcantara: Yeah, that was absolutely.

Anna Brown: Every page load had three 404s on images. I think it was an icon file. I don’t remember what they were.

Lea Alcantara: Yeah.

Anna Brown: But they were coming out of the CSS maybe just for a modal window or something. I can’t remember what it was.

Lea Alcantara: Yeah, it was like an abandoned script that wasn’t being used.

Emily Lewis: [Agrees]

Lea Alcantara: Because I mean, this is one of the things about like older sites, right?

Emily Lewis: Or inherited sites.

Anna Brown: Yeah, too many people have worked on them and nobody has all of it in their head anymore.

Lea Alcantara: Yeah, exactly, or you just leave certain things as they are because you don’t know what it’s being used.

Anna Brown: What does it going to break if you remove it?

Lea Alcantara: Yeah, exactly, so you don’t remove it, but that was actually a mistake because with this particular site, it was trying to ping all the missing images. Now, that in and of itself shouldn’t bring a site down even though it does affect every single page because those assets were missing for every single page.

Emily Lewis: [Agrees]

Lea Alcantara: The real issue we also found digging deeper was that for whatever reason, and we figured it out, it was two things, a typo in .htaccess and the order it was written in the rewrite in the .htaccess, but the 404 signals for those missing image assets were pinging ExpressionEngine each time.

Anna Brown: Yeah, it was hitting the 404 page that was in ExpressionEngine, right?

Lea Alcantara: Yes, yeah, exactly.

Anna Brown: Or was it loading? No, it had to be doing that.

Lea Alcantara: No, it pings it, but I don’t think it loaded it because it would crash the server. [Laughs]

Anna Brown: Yeah. Well, no, it was loading it, but when there were just too much traffic for every page load.

Lea Alcantara: Right.

Anna Brown: So it was loading its normal page, ExpressionEngine was loading the page that was requested, but then also for every single page load, it was hitting the 404 page three times.

Lea Alcantara: Right, right.

Anna Brown: And that 404 page is running through ExpressionEngine, and also had resource-intensive queries in it.

Lea Alcantara: Yes.

Anna Brown: So ultimately, the 404 page needed to be dumbed down and those image 404s needed to stop running through ExpressionEngine.

Lea Alcantara: Yeah, so the fix obviously was fix the 404 image paths completely first.

Anna Brown: Right. Remove them.

Lea Alcantara: Yeah, remove them, so that there’s no longer a 404 thing. Next, make sure that the .htaccess wasn’t pinging ExpressionEngine simply because it was a missing CSS or missing image file.

Anna Brown: Let me explain that real quick, so ExpressionEngine’s code for removing index.php from the URL, I guess it sends all requests through ExpressionEngine, so there’s this .htaccess code that’s doing this removal while it looks at everything and sends it through ExpressionEngine to understand what to do with it, and so if you don’t tell the server to explicitly not send images and JavaScript and CSS and icon files and anything else, don’t explicitly tell it to not go through ExpressionEngine, then it will.

Lea Alcantara: Yeah, absolutely.

Emily Lewis: Is that good? Like do you want it to do that, or should by default you say, “Don’t,” even though that’s not part of like I guess the recommended code snip that they give you?

Anna Brown: I think it’s in there now.

Emily Lewis: Is it?

Anna Brown: You definitely do not want it to go through ExpressionEngine, period, and your images are not…

Lea Alcantara: It’s not a page.

Anna Brown: You should never have an image running through ExpressionEngine. The real image won’t go. I mean, if an image exists, they won’t run, they won’t run a page load on ExpressionEngine, but if there’s a 404, it will.

Lea Alcantara: That was essentially like we found the main issue almost immediately simply because now we actually got the data, got the first thing to even look at, because without something like New Relic, we wouldn’t even know where to start, and that’s exactly where we were, we didn’t know where to start.

Anna Brown: So what I saw when I looked at specifically what’s called the transaction data in New Relic, I was seeing these image files and…

Lea Alcantara: Bubbling up, yeah.

Anna Brown: Yeah, bubbling up in there, and those should not be there at all, ever, so when they are showing there, that means those server requests are running through ExpressionEngine. That’s what it says to me, and I saw those on my project also, on my newspaper project, and so there’s the why part, where I’ve seen that before, I’ve actually seen it on a number of other project since, and so I knew right away, one, it shouldn’t be there, and two, I knew what the fix was.

Lea Alcantara: Right.

Anna Brown: And I just had you remove you because it shouldn’t be there, so why…

Lea Alcantara: Yeah.

Anna Brown: It shouldn’t be there, let’s fix it.

Lea Alcantara: Yeah, totally, and I mean, it just also points out that just generally, whether you’re using ExpressionEngine or another CMS, like thinking about, “Does this even need to be dynamic?”

Emily Lewis: [Agrees]

Lea Alcantara: Because you were like, “Why don’t you just make 404 page a completely static page?”

Anna Brown: Right.

Lea Alcantara: Like how many times does the 404 message going to change, all those kinds of things, right?

Anna Brown: Right.

Lea Alcantara: Even let’s say there is a mistake and a 404 situation was happening, if it’s loading a static page versus a dynamically-created one, it’s still a better situation.

Anna Brown: Oh, absolutely, it’s not using PHP resources on the server and it absolutely is not touching the database at all.

Lea Alcantara: Yeah.

Anna Brown: A lot of times the database resources can be sort of the core of the problem.

Emily Lewis: Well, is there anything specific to ExpressionEngine that you need to keep in mind with New Relic, like you knew, like you said, you had experience with those assets showing up that shouldn’t have, but that has nothing to do with ExpressionEngine, but that just something you had seen before.

Anna Brown: No.

Emily Lewis: But is there anything with ExpressionEngine that’s important to know if you’re going to use New Relic?

Anna Brown: Off hand, I don’t have any input there. I don’t…

Lea Alcantara: Use the latest EE.

Anna Brown: Yeah, definitely, I mean…

Lea Alcantara: That’s what we found.

Anna Brown: You want to be on the latest EE and the latest add-ons if you can, but you can’t always.

Lea Alcantara: Oh, absolutely.

Anna Brown: So the reality is you can’t always upgrade.

Lea Alcantara: Because you had to hack our EE install because we were in an older version.

Anna Brown: Right. The hack was just integrating a bit of code that said, “If the New Relic module is installed, then send this data.” And then what I told it to do was to grab the URL segment, so that I had that kind of data, and that stuff would start grouping.

Lea Alcantara: Yeah. Because before you did that, it just grouped into this one giant EE/index file or path.

Anna Brown: Right. Yeah, a grouping.

Lea Alcantara: Which it’s still doing simply because I think that the older version of EE just doesn’t send the right information.

Anna Brown: I don’t know. Okay, so after your project, that is the one thing I was not able to figure out was why so many of the server requests were still logging under that. With more time, we could track it down, but I don’t know, but some of that is uniquely backed up.

Lea Alcantara: Right, yeah.

Anna Brown: I mean, I can see those ones, the ones that are…

Lea Alcantara: Yeah, the little spikes.

Anna Brown: Yeah.

Lea Alcantara: Yeah.

Anna Brown: So those were taking like 200 seconds to run. It’s a big change, but there are some other ones that are maybe nine seconds that are grouping there. I don’t know what those are. It’s just not a big enough problem I think on your server to spend a lot of time there.

Emily Lewis: I think that also brings up a good point, time and money, because I’ll be honest, I think that if the client hadn’t gone down to – what was I guess – smaller server, then we wouldn’t have seen this happen because when they had more server support, these 404s didn’t cause a crash. I didn’t mean that they weren’t a problem, but we just didn’t see them. So if they hadn’t moved to this smaller server and then their site crashed, this wouldn’t have become a priority for them, and it has become a priority. They have limited budget, but they are putting money towards improving the performance of the site starting with identifying the issues, not just from the ExpressionEngine and database processing and things like that, but also front-end performance. But not all clients have that kind of budget, and Anna, you were talking about like when you were troubleshooting the newspaper site, were you like on a retainer? Did you charge hourly? Was there some sort of guarantee you had promised things would work, so you had to eat it?

Anna Brown: No, no, not at all. No, I bill hourly for any maintenance I do. In my career, I very rarely ever have eaten any work. [Laughs] I mean, sometimes I maybe would on that project just because the amount of time spent trying to troubleshoot was quite a bit, but I mean, I always build, and just because you build it and it doesn’t work doesn’t mean you don’t get paid. I mean, you don’t have control over all the pieces.

Timestamp: 00:29:57

Emily Lewis: Did you have to talk with them about limits beforehand, because if you didn’t know what was wrong, you could go down a rabbit hole.

Anna Brown: Right. With this project, no, because it had to work, so they had a budget to support it, so it just had to work, so whatever it took really.

Emily Lewis: Yeah, I think from our perspective, it’s not a “whatever it takes,” they just don’t have that kind of budget.

Anna Brown: That’s a different sized project ultimately also.

Emily Lewis: Oh yeah, absolutely.

Anna Brown: And New Relic is great for small stuff. I mean, it does the job, but this tool is built for websites and then applications, just any web apps that they always have to be on. Like, let’s say, Airbnb. Airbnb I think is one of their clients, and Airbnb, those guys have a whole dev op center that just focuses on making sure that website is fast and when they deploy a code, that it works, and they’re always looking at this data because if they deploy a code and there’s a problem, they will spot it immediately here, and then they’ll be able to drill down and see what the issue is and apply fixes and deploy a new code, but they’ll be able to see it. So when something is that mission critical, then you have to have this kind of monitoring, not just New Relic, but there are other services, but you have to be able to see deep into the data. It’s not optional for certain kind of websites.

Emily Lewis: And I think for where I guess it is optional like with this client that we’re working with, Lea, it’s become a priority for them, which is great for us because we don’t have to sell them on anything. We’re just trying to work with them to prioritize what we find and work with them to say, “Well, we can fix this within this year’s budget and then these other things can be prioritize at a different place.”

But I think the biggest lesson that I’ve gotten from this client, at least from the business perspective, the budget perspective, is that when you’re talking about performance, I think it’s great when IT gets involved, like this project up until this problem arose, we were mostly dealing with Marketing. Marketing was in charge of the website. They were the ones giving us content and dictating changes and things like that, but when the performance started affecting the site uptime, IT got involved and I think that sort of escalated their interest in making this a priority, which was something like I’m not sure if we would have been able to convey the importance to the marketing department the same way we could to IT who could then internally do the educating.

Anna Brown: A lot of companies don’t treat their websites the same as they would a storefront, and I think really companies need to do that a little better. When you have a storefront and your door doesn’t open, there’s a problem, right?

Emily Lewis: Right. [Laughs]

Anna Brown: And you fix it. You call whoever you need to and get the damned door open. It’s just not optional, and so I don’t know, the analogy is just that, like people need to be able to get in and do what they’re needed to do and that process needs to be fast and easy, and the server back-end part has to work.

Emily Lewis: So Lea, since we finished up some of that initial troubleshooting with Anna, you’ve been doing some ongoing New Relic monitoring and reporting and tweaking things here and there with EE while I’ve been doing some front-end performance monitoring, and what are some of the common things that you fixed on some of the problem pages that you found on the site?

Lea Alcantara: Well, before we get into that, I just wanted to mention another thing that solved a lot of issues before I did like just the general maintenance speed stuff—Structure, the Structure add-on.

Emily Lewis: Oh yeah.

Lea Alcantara: Yeah. So before I go into that, New Relic has something called transaction traces. So we’ve been talking about transactions, there’s something where you could dive even deeper and it’s called a transaction trace, but in order to get the transaction trace in the first place, you need to set something called the Apdex score to a specific aggressive level so that if your site or your pages don’t meet that minimum level, it’s going to create a transaction trace to say like, “Okay, this took more time than you set in your Apdex score, so here’s the trace at that point in time where it failed that test and exactly what time and what happened.”

After we fixed that 404 issue, this was the next big issue, and it was showing up in practically almost all the pages, and the reason why is because their site is on Structure, and so all the pages were developed through Structure, and it was actually one simple checkbox. So the issue was we were removing trailing slashes via .htaccess to have clean URLs and to make sure that there’s a consistency in URLs for SEO. However, in our Structure module, it had “add trailing slashes to page URLs” turned on.

Emily Lewis: [Agrees]

Lea Alcantara: Simply by unselecting this, dropped, you know…

Anna Brown: Right, the PHP resource usage.

Lea Alcantara: Exactly. It was using up so much, so much resources and the moment we turned that off, it dramatically changed.

Anna Brown: Now, I have to say that we could see something happening in that transaction trace. We could see a problem clearly, but I don’t remember what, but I mean, it didn’t point us exactly where we needed to go with something a little more generic, and so it was something I hadn’t seen before, so I was sort of trying to track that down, but I think you and I were screen-sharing looking at the Structure settings.

Lea Alcantara: Right.

Anna Brown: And you were like, “Wait! Wait! What is that?”

Lea Alcantara: Yeah, exactly. [Laughs]

Anna Brown: So you knew that. I would have not known to change that because I didn’t know the details of your project.

Lea Alcantara: Yeah.

Anna Brown: I didn’t know you were doing that in your .htaccess.

Lea Alcantara: Yeah.

Anna Brown: So just you having all the details in your head, knowing and reading that, and saying, “Hey, wait a minute, we’re doing this here and then we’re undoing it.”

Lea Alcantara: Yeah, exactly.

Anna Brown: And that actually it was a huge change, like an enormous change.

Lea Alcantara: Yeah, absolutely, and it was one of those things that something like New Relic did help us because when we did do the drill down to that transaction trace, maybe it doesn’t tell you specifically it was that specific switch, but it told me it was Structure.

Anna Brown: Right, right. It says Structure, and then what we were able to see which is what New Relic is great for also is that after we made the change, we could see immediately in that overview dashboard that there was a significant decrease of the PHP resources.

Lea Alcantara: It then dropped, yeah.

Anna Brown: And it’s refreshing the data I think every minute on that dashboard and so you make a change, wait a couple of minutes, you’re going to see it there.

Lea Alcantara: Yes, so that was one of the things that we did in the previous one that helped a lot, but for like day-to-day little things, and Anna actually gave me some of these tips, and for this particular client, they just contracted us to do “quick fixes.” I mean, there are still like big fixes that we need to do, but there are certain things that could help speed up specific templates immediately, and one of them was if a template contains a single entry, don’t make it dynamic, explicitly state the entry ID and that will reduce all the extra queries, because…

Anna Brown: It stops one query, a big query, from running.

Lea Alcantara: Yeah.

Anna Brown: So it’s best to target that directly.

Lea Alcantara: Yeah, absolutely, and so it’s like that was one of the very quick things where I just went through not all of the templates, but definitely the most popular templates and I started isolating which ones had single entry issues and then I just mentioned, “Okay, here is the entry ID, dynamic=“no”, those kinds of things, so that was one of the quick things that I was doing.

The other things that I’ve been doing recently that is still like TBD because it’s we’re still working on it and whether it’s working or not, sometimes you need to take some time to reflect, but it’s where I’m trying to reduce queries just overall, and the way that I started doing that is using the add-on Stash. So I know some of the EE people must have seen me tweet like, “How do I reduce that, like how many category entries need to be output?” And that was like one of my questions and Anna actually helped me out with this one too.

Anna Brown: Oh yeah, you see?

Lea Alcantara: Yeah.

Anna Brown: Oh, is that the one where you had to do the category archive?

Lea Alcantara: Yeah, yes.

Anna Brown: In that, when you have to do that Structure with custom fields in ExpressionEngine, you get into this thing where you have to do looping using the native code, and that is resource intensive.

Lea Alcantara: Yeah, yeah.

Anna Brown: So using Stash, I think it’s the only option really.

Lea Alcantara: Yeah, especially because something like Stash means you could, with this particular client, for example, this category entries query was on every page.

Anna Brown: Oh yeah. Oh my.

Lea Alcantara: Yeah, because it was in the footer. It’s like the massive footer link.

Anna Brown: Yes, got it, yeah.

Lea Alcantara: Yeah, so it was on every page, and then on top of that, other pages had in the main content area, so before, it was doing the queries for every page and it was in cached, and then on top of that, on the page where it has those queries, again, into content…

Anna Brown: It’s doing it twice.

Lea Alcantara: Exactly, so it was doing it twice. So basically what I’m doing right now is just trying to see like, “Okay, does it make sense to cache this? Does it make sense to add Stash so that I can run the query once, but show the results of that query in two places?”

Anna Brown: [Agrees]

Lea Alcantara: And that’s exactly what’s perfect with Stash, like I mean, I’ve got my own opinions over whether you should Stash for layouts, but Stash for like making sure one query can be repeated in several places, it’s perfect.

Timestamp: 00:39:55

Anna Brown: Yeah, absolutely. That’s what I use it for. I use it when I need to push all the data into a container and then pull it out in some different ways, and I just used it on a project where I needed data in columns instead of rows, so I pushed all the data into one container and then I pulled it out, like I built the table structure and then pulled out that data pieces and inserted them as I needed to, and it worked perfect. That’s great.

Lea Alcantara: I mean, but there are always caveats to that too. The thing is like unless you buy, say, the Mustash add-on, if you need to clear those Stash caches, you really can’t, like you have to go into the database, and that’s going to get messy with those kinds of things.

Anna Brown: I haven’t used the cache in Stash. I just use Stash. I mean, is it creating cache with you telling it to?

Lea Alcantara: Yeah, so there are certain things where you can cache it, like I don’t have it turned on. I just have it for like to do the one query and just repeat the output of that query in a few places, but there is this one particular page that’s super, super busy and popular on this particular client site, and one of the things I know, for example, Matrix, if you got Playa or Matrix in any of these entries fields, that’s going to slow things down. So I was thinking like, “Okay, maybe I should cache just this entire thing.” The issue was we ended up deciding not to cache it because with their different admins, they wanted to be able to see the change within five minutes. So then I was like, “Well, it will change in 60 minutes or whatever.” They were like, “No, it would make more sense for them to be able to see it live.”

So there are those types of things that you have to kind of consider, but there are always like unexpected issues too, so before this podcast, you were mentioning like, “Oh, I kind of took a peek and some of your performance to the PHP stuff kind of increased.” The increase was because I turned on the Stash for the categories. That was what changed during that time, but when you look at the database, the database, it dropped dramatically like in terms of like…

Anna Brown: Yeah, resource usage.

Lea Alcantara: Yeah, the resource usage, because what I’m doing with this particular client is I do like one weekly report, so I just take a screenshot of what did happen before, so the database like usage is way down, but there’s a tiny bit of an uptick with the PHP, and I’m just still trying to figure out, “Well, is one better than the other? Is the end user going to actually notice?” Because sometimes some people whenever you read about New Relic or like the detractors of New Relic or whatever, you’re going to be a slave to the data, or are there more things that are going on here that actually affect the end user experience?

Anna Brown: I think the data tells you.

Lea Alcantara: Yeah, that’s true.

Anna Brown: I don’t know why anybody would not want to look at the data first. The data tells you what’s going on at least, and what this is tracking. Well, one of the options for New Relic is for you to track the very first sort of kilobit to the very last of the page load for the user so that’s where you can start actually seeing the end user’s experience also, and that’s what’s happening on their front end so you can track that in a little more detail.

Lea Alcantara: Well, and sometimes you can’t make assumptions over, like some people, for example, with this particular client, we’re like, “Yeah, let’s put on CloudFlare because this is CDN and everyone recommends everybody to be on CloudFlare because it’s free.”

Anna Brown: Yeah.

Lea Alcantara: We did this with this client and almost within the first ten minutes we both saw performance went up and we’re like, “This is…”

Anna Brown: Like triple.

Lea Alcantara: Yeah.

Anna Brown: You and I never understood why.

Lea Alcantara: Yeah.

Anna Brown: I still don’t know why that happened. It doesn’t make any sense.

Emily Lewis: Okay, so we’ve been talking about the specifics of some stuff you’ve done with EE, but does this mean that once you involve a CMS into a site, the things that could be causing performance hits kind of like doubles or triples versus something that’s just old school? [Laughs]

Anna Brown: Yeah, absolutely. I would say the answer is yes, and honestly, I haven’t built a flat site maybe ever. I mean, I couldn’t tell you the last one I built, so it’s probably been eight or nine or ten years, so everything I have built has been with a CMS and once you add CMS, you’re adding a database and PHP or whatever language you’re starting to use, so you add these additional components that are beyond just the server configuration and the server performance.

Emily Lewis: Does that mean it becomes something that when you’re looking at different CMSs, that there should be a consideration of how the CMS itself performs? Is that something that I don’t even know if I’ve seen EllisLab talk anything about how ExpressionEngine performs, like if you don’t have Stash and you don’t have caching enabled.

Anna Brown: I don’t know that I’ve ever seen that. I did see that at the Craft Summit that data was shown and Craft performed exceptionally well in the test.

Emily Lewis: Would that influence your decision to use a given CMS?

Anna Brown: Well, I mean, yes. Obviously, if it’s not performing well, it’s not performing well for my clients, so I don’t know that I’ve ever picked that way so I would say no. I mean, in general, if the CMS is going to have issues, they’re going to get remedied quickly. So I mean, we report that kind of stuff. I mean, EE at its core, the issues that I have experienced in ten years with ExpressionEngine have generally been resolved quickly. I mean, they have to be identified first, and then EllisLab fixes them.

Lea Alcantara: But you don’t know what you don’t know until it happens.

Anna Brown: Yeah, you don’t know what you don’t know, and then there are conditions, like this newspaper is saying, “We’re at million-plus articles.” Once you get to that kind of level, I mean, nobody has really put that much data into the ExpressionEngine database and then we don’t know what’s going to happen. [Laughs] And then you’d throw high traffic at that on top of it, you just don’t know. I just recently had an issue on that site with the tags module because the tags database is so enormous, and at this point we have to take it out of the template because the query just doesn’t function well at that kind of traffic table-sized level. It’s too much, and it would have to be rewritten and it’s just easier for us to remove it.

Lea Alcantara: Yeah, and I think what this points out is that different conditions change the way you would develop, because when you develop just like a regular medium traffic or low-traffic site, there are a lot of things you don’t need to do that you have to do in a larger traffic site, or there’s a lot more like, for example, you mentioned that this particular client of yours has Varnish or whatever, and for most traffic sites, that’s like overkill.

Anna Brown: Absolutely. That’s the only project I’ve ever had to put it on, and we were putting it on to try to fix the other issues. So at this point, it’s there, it may not be needed, but it’s there. But if it all works, so we don’t try to fix or we don’t try to change things. [Laughs] It works.

Emily Lewis: All right, so I wanted to ask if you didn’t have New Relic or service like that, what would you do? Where would you start, Anna?

Anna Brown: Oh my God.

Emily Lewis: Like what were you doing with that newspaper site? When before you got into New Relic, what were some of the things you were doing?

Anna Brown: Sort of everything and anything, and I didn’t, I never felt like I had a good tool. So just simple things like making template changes and then sitting there and waiting.

Lea Alcantara: Oh God, yeah.

Anna Brown: Is the server going to crash? [Laughs]

Lea Alcantara: Right.

Anna Brown: I mean, you don’t know like you can go through the database logs, the server logs. With MySQL you get statistics based on the kind of traffic that’s going through the server and so I was looking at optimizing the database settings, going through server logs, I don’t know, I don’t find that I can find data through server logs. There are some tools that will process the server logs and give you some data. I don’t recall if that was exceptionally helpful. I don’t think it was. So with a lot of my troubleshooting, it was template-specific stuff and then we were increasing server capacity, and then we also changed the database too. We converted it to an InnoDB which changed it. Hope I can remember this, it allows the priority I think of writes over reads. I think that’s what it is, but don’t quote me on that.

But something about InnoDB was a better option for this site, but maybe it’s reads over writes, because we needed the reads to happen fast and the writes could be a little delayed. Those could start piling up. Anyway, so were trying everything and anything, and for ExpressionEngine, there are tools. They’re sort of native debugging tools that will give you template timing and then there’s another one that will actually show you database queries and timing and then there are plugins for ExpressionEngine that do something very similar. There’s a good free one out there that visually gives you good data. I still feel like New Relic is superior just because when I have used it, it has solved problems for me, and I did a talk at the ExpressionEngine Conference last year and I put a call out for people with problem sites, and I got a number of projects to use for my talk.

So for each project, we installed New Relic on the server, collected data and then I worked with the developer to first identify the issues and then I worked with the developer to fix them, and so I was able to show across those projects pretty quickly how I was able to identify the source of the issue and then what our fix was.

Emily Lewis: Have you ever done anything with like free websites out there that you can run your site through, and it’s more of a front-end performance report that it gives you like Google’s PageSpeed for one. Have you ever used any of those?

Timestamp: 00:49:49

Anna Brown: Yeah, I’ve used probably Google PageSpeed a little bit, but I use Yahoo!‘s YSlow one. It’s good. It definitely helps. I had a project where performance was more important to the client than I understood. I do my job, but I don’t focus an enormous amount of attention on optimizing performance because that’s just really not there in the budget, and as Lea said, it’s not generally needed on most projects. But when it is important then, I’ll spend time on that and focus on it. So I use YSlow and just got any of the things I identify I was pretty quickly able to fix.

Emily Lewis: Well, I think we’ve been talking about this a lot. I think performance, and this is a total tip of the iceberg kind of conversation. [Laughs]

Anna Brown: Oh, it is. I love looking at this data, so if anyone has a project… [Laughs]

Emily Lewis: [Laughs]

Anna Brown: I know it’s crazy, but I really enjoy this. So if anybody has a problem project and they could get New Relic installed on the server, please find me. I will help do a cursory look for free, but then if you need help, I’m happy to drill in deeper, but it’s great for solving problems.

Lea Alcantara: I would agree. I enjoy it too.

Anna Brown: Yeah.

Lea Alcantara: Especially because there’s that weird satisfaction of, as you said before New Relic, all you do is you make a template change and then you’re like crossing your fingers and you don’t know whether anything really happened unless the site crashed.

Anna Brown: Yeah.

Lea Alcantara: But for example, when we did make a fix, within five minutes, it’s just like, “Yahoo, the graph is changing.”

Anna Brown: We could see it. When we narrowed in on that CloudFlare being the problem for the PHP performance, I never would have guessed it was that.

Lea Alcantara: Right.

Anna Brown: But we thought back or I think we went back to emails and said, “Okay, what did we change that day?”

Lea Alcantara: Yeah.

Anna Brown: And we undid all the things that we changed and that was one of the last things, and as soon as we disconnected CloudFlare, probably 50% to 100% decrease in PHP resource usage that it was quite significant.

Emily Lewis: Before I let you go, Anna, you mentioned once that you’ve heard of other services other than New Relic. Did I hear you right?

Anna Brown: Well, I pulled up a list of a number of them. There are a lot of tools like this. If you just google application monitoring, that’s sort of the general group that they fit under, here are a couple, FlightRecorder.co, AppNeta.com and they have a tool called TraceView, serverdensity.com, ruxit.com and appdynamics.com. So those are some other services that do similar data collection and aggregation and then display all of that in usable graphs, and most likely all of them allow that drilling into and actual individual transaction also.

Emily Lewis: And I will say as a business owner who has to ensure that the clients feel that they’re getting accurate information, but without having it to be too much, I feel like the graphs and things that New Relic provides, like they’re easy to extract out, put into a report and share it with a client. They have a sense of what’s going on, but it’s not the whole telling them to log in at the New Relic and see how things are happening.

Anna Brown: Right. Oh, they would get overwhelmed.

Emily Lewis: Yeah, absolutely.

Lea Alcantara: But they can understand the graph that goes up or down.

Anna Brown: Yeah.

Emily Lewis: Right, and that’s actually a valuable thing for a tool to have is to have that sort of pretty charts. It actually makes a difference for a client if this is not their area of expertise. They just want to know that things are improving, numbers are then better, graphs are prettier.

Anna Brown: Yeah. So New Relic allows you to track the app, which is basically the PHP and MySQL components, and then the external connections, but it also lets you track browser-specific stuff, and then also server-specific stuff. So if you look at that server area, you can look at the disk space that’s being used, the load average, CPU usage, memory usage. You can look at your network in and out, and then also your disk in and out, so those are all big things to keep an eye on also. Like for instance, if you see big swings in your disk in and out, usually that’s something getting written or deleted from the server, so with a tool like ExpressionEngine, it’s most likely cache, so if I saw that, that’s where I would look first.

Lea Alcantara: Very cool. Well, this was a ton of information and even though it’s just the tip of the iceberg, hopefully this will help our listeners get a sense of where to even begin if you’ve got a slow site.

Anna Brown: Well, the good thing is you’re not alone with this, you’re not blind. So if you have a problem server, you have two weeks of a free trial, get it and install in a server and check out what you have because…

Emily Lewis: Especially if it’s something that you’ve inherited or you were just one part of a big team and now you’re in charge like Anna you were describing. It’s one of those things where you don’t know what’s in place or maybe things weren’t done the way you would do them now versus how you’ve done them in the past, and it’s one of those things that you just really have no control over when you inherit something, but this gives you a sense of finding out where the issues are.

Anna Brown: Absolutely, you will not feel blind, and then you don’t have the web host. The web host always says, “Oh, it’s the code.” [Laughs]

Lea Alcantara: Yeah, totally. [Laughs]

Anna Brown: And you’re like, “Wait a minute, help me. The server is crashing.” And they’re like, “Oh, it’s your code.” Well, you can’t see into the code. You can’t see the problem to solve.

Emily Lewis: That’s exactly what happened. [Laughs]

Anna Brown: They did that, right? No, it’ the most infuriating thing.

Emily Lewis: We’re like, “How do you know it’s the code? Did you run some report?” [Laughs]

Anna Brown: They do know, and so we don’t know how they know, but they look at specific things. They look at their own kind of data like this, and they know, “Okay, it’s not the code or it’s not the server.”

Lea Alcantara: All right, so before we finish up, we’ve got our Rapid Fire 10 Questions so our listeners can get to know you a bit better.

Anna Brown: Okay.

Lea Alcantara: Are you ready?

Anna Brown: Yeah, let’s do this. [Laughs]

Lea Alcantara: First question, Android or iOS?

Anna Brown: It’s iOS.

Emily Lewis: If you are stranded on a desert island and can only bring three things, what would you bring?

Anna Brown: I would bring my dog, water and food. [Laughs]

Lea Alcantara: Very, very practical.

Anna Brown: That’s me.

Lea Alcantara: What’s your favorite TV show?

Anna Brown: I have dumped TV for a while, so I don’t even know what’s out there anymore. I really liked Breaking Bad just because it was awesome and it’s just such different TV and then it was filmed in Albuquerque, so it can’t get better than that.

Emily Lewis: What’s your favorite dessert?

Anna Brown: Any of them. [Laughs]

Lea Alcantara: [Laughs]

Emily Lewis: [Laughs]

Anna Brown: I have a little dessert addiction right now. My pants are a little tight. [Laughs]

Lea Alcantara: [Laughs]

Emily Lewis: [Laughs]

Lea Alcantara: What profession other than your own would you like to attempt?

Anna Brown: I would go into like rafting guide or some kind of guide.

Lea Alcantara: Oh cool, right.

Anna Brown: Or I like problem solving so like detective or police officer or forensics or real estate. Those are the three things that interest me.

Lea Alcantara: [Laughs]

Anna Brown: Yeah, they’re very different, but…

Emily Lewis: What profession would you not like to try?

Anna Brown: You guys asked me this last time.

Emily Lewis: [Laughs]

Anna Brown: I absolutely would not be the guy who cleans septic systems.

Lea Alcantara: Eww..

Emily Lewis: I think that…

Anna Brown: That’s like absolutely never. [Laughs]

Emily Lewis: I think you’re consistent.

Lea Alcantara: [Laughs]

Emily Lewis: I think that’s… [Laughs]

Anna Brown: [Laughs] I did. I answered that. Well, and I just had a septic system installed at a property and it’s the most disgusting smell. I can’t…

Lea Alcantara: Oh.

Anna Brown: Yeah, anyway. [Laughs]

Lea Alcantara: What’s the latest article or blog post you’ve read?

Anna Brown: Oh, I don’t know. Let’s see, I mean, I read stuff on Twitter all the time. This morning, a blog post article, oh I read about a police officer who was just shot and killed last night in Rio Rancho.

Lea Alcantara: Oh no.

Emily Lewis: Oh no.

Anna Brown: Which is five minutes from my house, and it’s the first police officer who’s been shot and killed in the line of duty since this police department was started and it’s very disturbing.

Emily Lewis: If you could have a super power, what would it be?

Anna Brown: I would like to be able to make people happy.

Lea Alcantara: Oh.

Emily Lewis: Oh.

Anna Brown: There is a lot of unhappiness in this world, and God, we just all deserve to be happy.

Lea Alcantara: What music do you like to work to?

Anna Brown: I can get into techno, stuff that doesn’t have a lot of voice and just more rhythm and consistent mind-numbing rhythm, I guess, and then I like really loud like 90’s…

Lea Alcantara: Nice. [Laughs]

Anna Brown: Nineties alternative.

Emily Lewis: [Laughs]

Anna Brown: But I turn it on really loud, you know? [Laughs]

Lea Alcantara: Fun.

Emily Lewis: Right.

Anna Brown: I work alone so I can do that.

Emily Lewis: All right, last question, cats or dogs?

Anna Brown: I like both a lot, but I don’t like the cat hair, and I have a Maltese, so dogs I guess and Maltese don’t shed, so that’s good.

Emily Lewis: [Laughs]

Lea Alcantara: Awesome. Well, that’s all the time we have for today. Thanks for joining us, Anna.

Anna Brown: Thank you guys. I always have so much fun. I really do.

Lea Alcantara: [Laughs]

Emily Lewis: [Laughs]

Anna Brown: You should have me on every month and/or I’ll guest host anytime.

Emily Lewis: I love “Anna’s Corner.”

Lea Alcantara: Yeah.

Anna Brown: Yeah. It’s always enjoyable. I always really love it. Thanks for having me on.

Emily Lewis: Absolutely.

Anna Brown: I’m happy to come on again if you guys need me to chat about something. [Laughs]

Emily Lewis: In case our listeners want to follow up with you, where can they find you online?

Anna Brown: Sure. So I’m on Twitter @mediagirl, or you can find on my website which is so dated, but mediagirl.com. Just find me on Twitter.

Emily Lewis: [Laughs] Thanks again, Anna.

Anna Brown: Thanks guys.

[Music starts]

Lea Alcantara: We’d now like to thank our sponsors for this podcast: EllisLab and Pixel & Tonic.

Emily Lewis: And thanks to our partners: Arcustech, Devot:ee and EE Insider.

Lea Alcantara: We also want to thank our listeners for tuning in! If you want to know more about CTRL+CLICK, make sure you follow us on Twitter @ctrlclickcast or visit our website, ctrlclickcast.com. And if you liked this episode, please give us a review on iTunes, Stitcher or both!

Emily Lewis: Don’t forget to tune in to our next episode when we’ll talk about content-first design with Steph Hay. Please be sure to check out our schedule on our site, ctrlclickcast.com/schedule for more upcoming topics.

Lea Alcantara: This is Lea Alcantara …

Emily Lewis: And Emily Lewis …

Lea Alcantara: Signing off for CTRL+CLICK CAST. See you next time!

Emily Lewis: Cheers!

[Music stops]

Timestamp: 00:59:22