Search Results for: speed

Google incorporating site speed in search rankings

(I’m in the middle of traveling, but I know that a lot of people will be interested in the news that Google is incorporating site speed as one of the over 200 signals that we use in determining search rankings. I wanted to jot down some quick thoughts.)

The main thing I want to get across is: don’t panic. We mentioned site speed as early as last year, and you can watch this video from February where I pointed out that we still put much more weight on factors like relevance, topicality, reputation, value-add, etc. — all the factors that you probably think about all the time. Compared to those signals, site speed will carry much less weight.

In fact, if you read the official blog post, you’ll notice that the current implementation mentions that fewer than 1% of search queries will change as a result of incorporating site speed into our ranking. That means that even fewer search results are affected, since the average search query is returning 10 or so search results on each page. So please don’t worry that the effect of this change will be huge. In fact, I believe the official blog post mentioned that “We launched this change a few weeks back after rigorous testing.” The fact that not too many people noticed the change is another reason not to stress out disproportionately over this change.

There are lots of tools to help you identify ways to improve the speed of your site. The official blog post gives lots of links, and some of the links lead to even more tools. But just to highlight a few, Google’s webmaster console provides information very close to the information that we’re actually using in our ranking. In addition, various free-to-use tools offer things like in-depth analysis of individual pages. Google also provides an entire speed-related mini-site with tons of resources and videos about speeding up websites.

I want to pre-debunk another misconception, which is that this change will somehow help “big sites” who can affect to pay more for hosting. In my experience, small sites can often react and respond faster than large companies to changes on the web. Often even a little bit of work can make big differences for site speed. So I think the average smaller web site can really benefit from this change, because a smaller website can often implement the best practices that speed up a site more easily than a larger organization that might move slower or be hindered by bureaucracy.

Also take a step back for a minute and consider the intent of this change: a faster web is great for everyone, but especially for users. Lots of websites have demonstrated that speeding up the user experience results in more usage. So speeding up your website isn’t just something that can affect your search rankings–it’s a fantastic idea for your users.

I know this change will be popular with some people and unpopular with others. Let me reiterate a point to the search engine optimizers (SEOs) out there: SEO is a field that changes over time, and the most successful SEOs embrace change and turn it into an opportunity. SEOs in 1999 didn’t think about social media, but there’s clearly a lot of interesting things going on in that space in 2010. I would love if SEOs dive into improving website speed, because (unlike a few facets of SEO) decreasing the latency of a website is something that is easily measurable and controllable. A #1 ranking might not always be achievable, but most websites can be made noticeably faster, which can improve ROI and conversion rates. In that sense, this change represents an opportunity for SEOs and developers who can help other websites improve their speediness.

I know that there will be a lot of discussion about this change, and some people won’t like it. But I’m glad that Google is making this step, both for the sake of transparency (letting webmasters know more about how to do better in Google) and because I think this change will make the web better. My takeaway messages would be three-fold: first, this is actually a relatively small-impact change, so you don’t need to panic. Second, speeding up your website is a great thing to do in general. Visitors to your site will be happier (and might convert more or use your site more), and a faster web will be better for all. Third, this change highlights that there are very constructive things that can directly improve your website’s user experience. Instead of wasting time on keyword meta tags, you can focus on some very easy, straightforward, small steps that can really improve how users perceive your site.

Speed runs

Okay, I just gave some productivity tips, so it’s time to give some *unproductivity* tips: ways to waste time online.

One thing I really enjoy is watching “speed runs,” which are people recording themselves as they finish video games in record time. The best site I’ve run across is Speed Demos Archive. You can view their entire list of game speedruns. You can watch someone beat all the stages of NES Super Mario Bros., with no warps, in twenty minutes. Or see someone beat Half-Life in about 45 minutes. If you watch a lot of videos, drop them some moolah to help pay for bandwidth.

I don’t know about you, but I tend to suck at video games, other than perhaps Time Pilot. I made it about two minutes into Gears of War before I got snagged in a corner as monsters shot me. 🙂 If you suck at video games too, speed demos can give you ideas for what to try.

Once you’re well and truly hooked on this hobby, try searching for [speed run] on Google Video or YouTube. You’ll find 10K+ videos. Good luck with that productivity. 🙂

Solving a Verizon issue (Nexus 5X)

I solved a problem today and figured that I’d document it for the rest of the world. Every time someone left me a voicemail on Verizon, I would get a cryptic text from Verizon at 900080006202 that looked like “//VZWVVM:SYNC:ev=NM;id=1;c=1;t=v;s=1XXXXXXXXXX;dt=18/01/2016 13:40-0900;l=13;dev_t=5” or “//VZWVVM:SYNC:ev=MBU;dev_t=5”.

Here’s what happened. It turns out that Verizon has three kinds of voicemail: basic voicemail (free), basic visual voicemail (also free), and premium visual voicemail ($2.99/month). I have a Nexus 5X and I recently switched from an unlimited Verizon data plan to a different plan (long story).

As part of that shift, it looks like Verizon switched me to visual voicemail. I suspect a lot of phones that you get at a Verizon store have some sort of visual voicemail app pre-installed. That app probably intercepts those cryptic texts and uses them to show a voicemail indicator. Ever wondered how the voicemail indicator disappears so fast after you call voicemail? I suspect that’s also because of a Verizon text that is interpreted by your phone.

But a Nexus 5X doesn’t have Verizon’s voicemail app, so it just presents texts from Verizon. To fix this issue, I stopped by a Verizon store and had a rep change me from “basic visual voicemail” to “basic voicemail,” and that fixed the issue. I don’t think you can toggle that setting yourself on Verizon’s website. Added: A friend told me that he got his voicemail changed to basic voicemail by chatting with a Verizon representative online. That might be easier/faster than visiting a Verizon store in person.

Nexus 5X rocks!

By the way, I love my Nexus 5X. It fits well in my hand, the camera is superb, and the fingerprint reader is blazingly fast. Also, the speed and accuracy of voice recognition on the Nexus 5X is amazing.

A final nice feature is that you can insert a Nano SIM card from any of the major carriers in the US. I often switch my Nexus 5X over to Google Fi in various situations; for example, Fi is great if you’re traveling outside the US.

HD Voice

One last tip if you’re still on Verizon: you can get HD Voice for free, but you have to enable it. HD Voice works via Voice over LTE, or VoLTE. HD Voice should have much better audio than a regular cell phone as long as both phones support it. On Verizon’s site, go to My Verizon->My Plan & Services->My Plan->Products & Apps->Manage Products & Apps and then click Free Products. Enable HD Voice on all your compatible lines on the website.

Then you need to enable HD Voice on each of your phones. On recent Android phones, look for Settings->More->Cellular networks->Enhanced 4G LTE Mode. On iPhones, look for Settings->Cellular->Enable LTE and select Voice & Data. More info on HD Voice and Advanced Calling on Verizon is in these FAQs.

What phone are you rocking right now, and how do you like it?

Fun mosaic effect with Go

A few months ago I saw a cool mosaic effect in a Wired ad for CA Technologies. Here’s what part of the ad looked like:

Photomosaic of people in an office

I liked the ad, so I wondered how they did it. Can you see out how to create a similar effect? Take a minute to figure it out as an exercise.

Here’s what I came up with: divide the image into tiles. For each tile, compute an average overall color for that tile. Then go back and blend every pixel in that tile with the average color. So if a tile is partly dark and partly blue, the average color is a dark blue, so the blue in that tile becomes even darker. I like that the effect is pretty simple once you figure out how to do it.

Of course, once I had an idea of how to do it, I wanted to write some code and see whether I could recreate the effect. Go has good libraries for handling images and I’ve been meaning to try Go. I ended up with about 70 lines of moderately-ghastly Go code that did the job.

For this Creative Commons image (thanks Fuelrefuel/Wikimedia Commons!)

Photo of people in an office

I ended up with a photomosaic like this:

Photomosaic of people in an office

As far as I can tell, that’s pretty much the same filter that ran in the ad. Here’s another example. First, a picture of me:

Matt Cutts

and here’s the resulting mosaic’ed image:

Matt Cutts in mosaic form

That’s all the interesting stuff. You can stop reading now.

This part is boring. Really. No need to keep reading. The code I came up with is really ugly, but the pseudo-code is pretty simple:


- Read the picture into a go image
- Number of horizontal tiles = image_width / desired_tile_width
- Number of vertical tiles = image_height / desired_tile_height
- Loop through tiles with nested vertical and horizontal for loops
- For each tile, loop over the tile's pixels to compute average RGB values
- Loop over the tile's pixels again & set new_color = (avg_color+curr_color)/2
- Write the image out as a new picture

That’s it! I wanted a quick and dirty test, so I didn’t worry about things like the leftover pixels if the tiles didn’t evenly divide the image.

Let’s see, what else. Things I liked about Go:
– It’s super-easy to read and write images, so I could concentrate on the fun stuff.
– I like that documentation like this gives a clear, easy way to set up your environment. The golang tour is great too. And installing Go on Ubuntu is easy: “sudo apt-get install golang” and you’re done.
– The language makes a lot of sense to me, in a C kind of way.

Some things didn’t make as much sense to me, or at least I need to do more reading:
– My initial program just read a JPEG and wrote it back out, and the output image was considerably dimmer. I was just using default encoding values, so maybe some gamma values got left out, but it was a little weird. I was expecting read->decode->encode->write to be a no-op.
– When I read the JPEG into an image and tried to write directly to that image, Go gave me an error. That was a little strange. I ended up copying the JPEG to a new image and then I could write.
– In the spirit of just doing stuff without reading the documentation, it seemed like Go images stored their At() component colors with 16 bits of range (from 0..65536). But when I wanted to write colors with Set() it seemed like Go wanted 8 bits in the example I found. So for a while I was casting stuff with (uint8) and getting totally random bits written into the image. That also generated a fun image:

Random mosaic from converting a 16 bit-range color to uint8

but it took me a few minutes to figure out what was going on. I’m sure some reading would clear things up, but.. who cares? I was also doing some weird float arithmetic to compute color averages. This was just quick/dirty code, and I can read more about the nitty gritty later. As soon as I got the effect I wanted, I rapidly lost interest. I even hard-coded image filenames because I couldn’t be bothered to search for go command-line flag info. All in good fun.
– Arrays and slices are cool, but allocating 2D arrays and slices seems a little verbose.
– I like that Go’s designers have opinions and enforce them, at least 99% of the time. When you’re hacking ugly code, it was annoying to get the “you didn’t use this variable” errors. But I understand the rationale and it’s probably a good idea for writing Real Code that’s not intended to be thrown away.
– I was all set to grouse about go fmt’s enforced indentations/spacing, but it actually looks pretty reasonable. Basically, each indent is a tab. Then if you’re a 3 or 4 space indent kind of guy, you can configure your editor like vim or emacs to change how the tab width is displayed.

Historically, Python is my language of choice to knock out a quick script thing–I love Python dictionaries. But with Go’s speed, support for dictionaries/maps, and capability to do HTTP servers very easily, I might end up switching to Go. I think I’ll use Go for my next little fun project.

Added: Thanks to Tom Madams who whipped a prototype of this filter in video using Shadertoy!

Fostering open source services

Open source is really good at creating products. Almost any commercial software package or product like Word, Excel, Windows, or Photoshop has a great open source equivalent. However, open source has been less successful at creating services. Where’s the open source version of Google, or Facebook, or Twitter, or Gmail, or Craigslist?

You could sum it up with this drawing:

Where are the open source services?

Now to be fair, the bottom-right box isn’t completely empty. There’s Wikipedia, which is a phenomenal service/website supported by donations. There’s Tor, where many companies and people volunteer to run relays and bridges. There’s BOINC, which is the open source software used by volunteers for SETI@home and Folding@home. There’s also OpenStreetMap, which is a wonderful resource.

But why aren’t there more open source services? Let’s run down some differences between products and services.

“One and done” vs. ongoing support

With open source products, it can take a lot of work to create something great like Linux or Firefox, but then everyone can download that product and use it immediately–there’s no extra cost for the producer or the consumer, other than maybe a bit of bandwidth for downloading.

Once a product is done, it’s often done–frozen until the next major update. A product might take a year or more to reach a milestone, but it can often be used for years after that. In contrast, services may change from week to week, which implies strong product leadership to determine priorities.

Abuse

If you download a copy of LibreOffice, you might write some unpleasant things or even hate speech, but that doesn’t hurt LibreOffice itself. However, if someone sets up a “free as in beer” translation API or geocoding API, you often see multiple levels of abuse. For example, some people might use a service so much that it overloads the service provider. Or people might scrape the translation API in an attempt to generate spammy text in lots of different languages. When you offer a product, potential abuse is usually less of an issue.

User Experience and Speed

Products don’t have to be perfect; often “free as in beer” is enough of a feature that someone will use GIMP as opposed to paying for Photoshop. But user experience and speed do matter, and commercial services have a strong incentive to nail both of those issues. It takes a ton of work to be fast, for example. Commercial services are often “free as in beer” as well as fast and pleasant to use.

Funding models

Thanks for staying with me so far, because I think this is the most important difference. I believe what might be missing is a good funding model for open source services. With a finished product, if you can find someone to donate bandwidth for downloading and maybe a simple website, you’re close to done. But with a service, there’s typically an ongoing cost involved with every API call. For something like web search, there can be a lot of processing work going on behind the scenes.

So what are the major funding models that might support an open source service? Right now, I can think of ads, occasional pledge drives, grants, subscriptions, or micropayments. From that list, my guess is that ads are the least appropriate. If ads are easily separated or can be blocked, then you might get a “free rider” problem where someone could take your service, remove all the ads, and offer it up as their free service. Personally I think advertising can be incredibly useful and responsive to a user’s needs, but some other individuals dislike ads. Ads can be the foundation of a freemium or hybrid approach; for example, I think Automattic offers free blogging on WordPress.com and funds itself partly through ads.

Regarding pledge drives, Wikipedia is a notable success, but it’s a lot of work on both the producer side and the user side, much like public radio (by the way, you can donate to Wikipedia here). Grants can work well, but grants tend to end after a few years, so they aren’t a complete solution to sustainability.

That leads me toward subscriptions or micropayments. I’m excited to see some movement in this area. Patreon lets you support your favorite creators and does at least a couple smart things. First, they only take 5% of donations. That puts them in the “doing it for the love” category. Patreon can be beloved while still making some money ($1M in donations each month * 5% cut * 12 months means >$600K/year). Second, they attempt to minimize payment fees by charging only once a month for all the people you support. So if you’re supporting four creators, then the credit card charges are split four ways. The first move is brilliant, and the second is very smart.

Bitcoin is another possibility for micropayments, although it’s still early days for that. I’m also excited to see Google Contributor launch. The idea is that a user contributes a certain donation each month. As the user surfs around a participating site, they don’t see ads on that site, but the site still gets paid from the user’s contribution.

Ultimately, I don’t know how to foster more open source services. I just know that I want them. In the same way that Firefox pushed Internet Explorer to improve or Apache pushed IIS, I personally would like having an open source search engine to push Google as well. Wikia Search was an attempt at that, but it didn’t get much traction.

Maybe the answer isn’t funding. In a recent talk, Melody Kramer floated the idea that people could support public radio in *tons* of different ways like volunteering their time or experience, not just with money. Maybe we need better ways for companies or regular people to volunteer their CPU, storage, or bandwidth. If we all kicked in 10% of our free disk space, could we come up with open source versions of Dropbox, Box, or Google Drive?

So I don’t have the answer. I just think it’s an interesting and perhaps an important problem. Do you agree? How would you foster more open source services?

css.php