I hear a lot about alternative search engines. If you do some Googling searching on the subject, then you’ll quickly realize that there are many “alternatives” out there. I’m not talking about companies such as Yahoo and Bing. Of course we know that these guys are alright when it comes to search, but even they come up short. So let’s quickly ponder about the type of challenges a search start-up faces in this space.
DuckDuckGo is the first one that comes to mind. I see them pop up quite a bit since they constantly appear on hackernews. The truth is that they would be fortunate if they could capture Bing’s share of search, let alone actually competing with Google.
The real question is why? Why not at least give it a try, right? After all, Google Chrome came out not too long ago and has quickly captured a large chunk of the market. Keep in mind three things about that: 1) The browser market was no longer innovating at a fast pace. 2) Google has an immense amount of resources at their disposal 3) Google saw inefficiencies and knew they could improve upon them. 4) Developing a browser would fit well into their existing business model and future business opportunities.
Recently Google released a video on an internal discussion about search. Watch that video and let this quote soak in for a moment:
The specific change discussed in this video improves spelling suggestions for searches with more than 10 words and it impacts only .1% of our traffic.
Google’s platform is so mature that these are the current problems that they are solving. Do you really think that is what is going on at DuckDuckGo and similar search engines? Hardly. They are trying to solve problems that were solved years ago and will be playing catch-up for years to come, assuming they are still around. Keep in mind .1% of Google’s traffic is at least 100 times more than DuckDuckGo’s TOTAL traffic right now.
The only hope a company has is to appeal to a specific niche or hope Google implodes. A company that prides itself as a general all-purpose search engine is wasting everyone’s time because you will not come close to Google in terms of accuracy. Your best bet is that Google beats itself and does stupid things like implementing changes that appear to hurt accuracy, or favor their properties, or break referral data that is critical for SEO.
So which alternative search engines are worthwhile? Obviously Twitter’s search performs better with real-time search queries than Google. For example, if I want to know if Firehost is having issues, then I would turn to a Twitter search.
So what solution does DuckDuckGo solve? Privacy concerns? I’m not so sure. People who complain about privacy are the same ones who use Twitter and Facebook on a daily basis. Five years ago searches based on your previous search history were “revolutionary” and “the future”, but now they are “invasive”. Interesting how perceptions change, isn’t it?
My apologies for the sensationalist title, but there is a problem with Cloudflare that is not being reported on tech blogs, or their status page. My intention of this post is to simply get the word out to other developers. Enabling the cloudflare proxy can cause severe delay in response times.
I get 20 ms ping from my home and sub 10 ms from work, when the name servers run directly. After the switch-over to CloudFlare, I started getting ping in the range of 260ms – 300ms, they were unstable and over ten times my normal ping.
With Cloudflare proxy enabled I saw the occasional bad response time with FantasySP and thought nothing of it. Over time, response times seem to have continued to drop. Now it’s gotten so bad that Ajax POST requests would take up to 1 minute to respond.
I began getting complaints from my users. I figured it was something on my end. Maybe my host was having issues? Is my caching having issues? I spent a day trying to track down the problem. Every other server monitoring metric suggested that they should be just fine.
It turns out the culprit was Cloudflare. Once it was disabled, pages no longer took 100ms+ to connect. Ajax requests no longer hung for up to one minute.
The issue with Cloudflare is worth mentioning. There is a chance Cloudflare is slowing down your site and you don’t even know it, especially your WordPress Dashboard.
My advice to Cloudflare users is to disable the orange cloud and test out your site for a day or so. Did response times improve? If they got worse, simply re-enable Cloudflare. (Keep in mind disabling the Cloudflare Proxy takes about 10 to 20 minutes to go into effect, so look in the Header Requests for “Server” and wait until “cloudflare-nginx” is gone.)
I hope Cloudflare fixes their issues because I will be the first one to jump back on the bandwagon. Do they serve too many users? Do they realize their service has degraded over time? Perhaps there was a problem from the start, and I didn’t even notice it?
I have an open support ticket with Cloudflare and will update this post with anything worth noting. So far they have acknowledged some type of problem and are looking into it.
If you have experienced similar issues, let me know.
It’s time for a new theme here. I was looking for something simple, clean, easy to read, and fluid. Oh yea, and free. So this is it. The designer did an incredible job with this one.
Do you happen to have a really bad uptime for PHP’s APC, and it seems to randomly restart after 2 hours or so? Well, chances are that you are running cPanel/WHM on this server as well?
The problem is that you need to enable Piped Loggin for Apache. This can be found under Apache Configuration in WHM.
It says:
Configure Apache to use a single log target for all virtual host access and bandwidth logs. The combined logs will be piped to a helper application where they can be split based upon domain. This option will reduce the number of log files Apache manages freeing up system resources. Piped logging is recommended for systems with a large number of domains. By default this feature is disabled, and Apache will create distinct log files for each virtual host entry.
Once you do this, your log files will be processed (it defaults to every 2 hours), without APC restarting. For even more information, head over to this post on the cPanel forums.
This problem is obviously very frustrating and it took me quite a while to dig up the solution. Hopefully this helps others out there.
Here goes another rant, but this time about privacy.
Everyone worries about what is collected about them from big companies like Google, Apple, Amazon, and Facebook. Back when I first started using the internet, it was a time where you NEVER used your last name for anything. In fact, few even knew my first name (hello xpose). The last thing I wanted was someone to know my full name, let alone anything else about me.
Well, times have changed.
Many people use social websites that you sign up for and intentionally post your thoughts, photos, job status, and other personal information. You think nothing of this, as its the norm nowadays. Yet you complain when Google bases advertisements or customized search results on your browsing habits.
So what? What are you afraid of? What’s the worst thing that can happen? Are they amasing a database with the entire population in hopes to one day sell your data and steal your identity? Hardly. You’re not that important.
People care, but I don’t think they know why exactly. I am not giving these companies a pass for collecting data and not telling its users. What I am saying is that you shouldn’t be surprised. If you want your information to remain private then stop using these sites. In-fact, unplug your ethernet cable and turn off your wireless. You aren’t going to find many places to visit that respect your standards on privacy.
As the web gets smarter, your privacy will continue to decrease over time.
But something tells me you won’t. You’d rather still use these services, complain about their irresponsibility, then check-in to foursquare.
Don’t look now, but the internet user has an increasing amount of influence over how or what is consumed online. Early on, only the geeks held some influence, but it is quickly moving towards the masses.
Geeks Force Legal Issues to Forefront
Roll the clock back to around 1997, way before the technological wonders of today’s world. The mp3 was invented a few years earlier and the distribution of mp3s slowly began underground on places like IRC. (I’m sure elsewhere as well, but that was my primary method) I never thought mp3s would ever make it to the average user, but boy was I wrong. We didn’t know it at the time, but music would never be the same again. At first the music industry was scared of something they did not understand. Fast forward to today and mp3s outsell physical disc copies.
Also in the late 90s, the DVD was created to consume movies in a digital format. Soon, a way to circumvent protection schemes on the DVDs, called DeCSS, was created. Fair Use? Freedom of Speech? The source code was printed on tvshirts and spread across the internet. Geeks came in-defense of one of its authors and the internet was actively backing one of its own.
Fast forward a few years to the advent of HD-DVDs and the HD-DVD key fiasco on Digg. I was a part of that, and we actually got Kevin Rose and Digg to change their stance and it felt pretty remarkable. I thought this is about as big as it could get by having a voice online. Boy was I wrong.
The Masses Get Involved
As the internet user base continued to grow, the average user became much more knowledgeable about the internet world around them. Privacy started to become a key issue online and what is or is not appropriate. Google had one of their first blunders when it came to Google Buzz and privacy. Facebook too had their run in with privacy concerns (facebook beacon anyone?) again and again and forced some real change when the FTC got involved.
Average users also influence how websites evolve over time. Twitter is a great example of this, as the hashtag was invented by one of its users. Now we can see the hashtag across multiple websites and platforms that are incorporated in various ways.
Conclusion
Never before has an online following or action resulted in a pre-emptive strike against legislationuntil SOPA happened this month. The blackout on Jan 18th was a great idea and major players across the internet were leading the charge. Everyone should be proud of what was accomplished. My prior examples have had their fair share of change and influence, but this is the first time I think that Congress has actually realized that we have power too.
Continue to be proactive. Learn about the services you use online and the media you consume. Learn about how the internet works and appreciate the work and sacrifice geeks did to transform the internet into what it is today. In 25 years, don’t be surprised if high schools across America make the history of the internet mandatory curriculum.
A few weeks ago I came to the realization that my current implementation of upgrading and billing users on FantasySP using Paypal was pretty terrible.
It was a clunky process where the user left my site to go to paypal, then they could sign in and/or input their credit card information. After that, they get directed back to my site to a “success” page.
The user was unable to upgrade from a monthly subscription to a yearly subscription, if he so chose. I never implemented automatic membership downgrades/upgrades because I thought I would be leaving paypal sooner rather than later. To top it off, the design of the page was just plain bad.
Talk about a mess. This is what my upgrade/billing page used to look like:
Simplicity is Key
When it comes to designing and implementing the new upgrade flow, I knew I wanted something extremely simple and easy to use:
User should stay on the fantasysp.com domain during the process (SSL would have to be installed)
Only 2 subscription choices to pick from with a suggested audience.
Able to upgrade from monthly to yearly with a prorated cost.
Able to apply a coupon code during selection BEFORE he checks out.
Easily see the breakdown of features.
For me, Stripe seemed like the best option. There are countless posts out there detailing what Stripe is all about and why its cool. During the checkout process, stripe uses a javascript library that handles the form submission and processing of credit card information. If it all checks out, then the form is submitted to my server with an authenticated token that stripe recognizes to perform the transaction, create a new customer, or subscribe them to a plan. Therefore no credit card information is actually handled by my server.
Design the Page
Instead of hiring a professional designer, I decided to take a crack at this one myself. If what I made looked like shit then I would bite the bullet and hire a pro. I would never say that I am a designer, but I can pretend to be one. I looked at quite a few checkout pages ranging from 37signals to Old Navy. I skipped the Photoshop process of a mockup and went straight to designing in HTML/CSS because I knew what I wanted in my head:
The boxes look pretty much like Monopoly cards, right? Instead of smashing everything together, I wanted to make sure I utilized the entire width of the website. The user is presented with a CLEAR option of free, monthly, or yearly plus. Underneath the price suggests who would benefit best from the plan. Monthly is for the seasonal fantasy player, whereas Yearly is for hardcore players, and Standard is for the casual player. When mousing over each box, the background turns yellow.
You may notice that I decided to use different fonts (via Google Fonts) because I think it makes it appear and feel more unique. Arial gets boring real quick. I also wanted to make sure that the page relied solely on CSS for styling. Everything you see there are some fairly simple and common CSS techniques to add a bit of flare to each box.
The coupon code is shown just below the choices WITHOUT a button. My site will analyze the text as the user types or pastes the coupon into the box. In order to proceed to the next page, the user must click a box. If a valid/expired coupon code is detected then it gives a message like so:
But of course, the user needs to see the full breakdown of the features. The user also needs to see what the site would look like as a Yearly Plus subscriber, which means the top banner of the site will show Player Trends instead of banner ads:
The user can mouse over the bottom 4 choices and see more information about each via tooltips powered by qTips. Now lets move onto the actual form to submit the subscription order:
Thanks to Stripe, I don’t need their billing address or even full name to process an order. We want the bare minimum here so the user can quickly move on. Next to the plan is an option to change their plan. There is also an option to “Go Back” incase the user changes their mind. The “Submit Payment” button is BIG and BOLD because the user should be able to quickly find the “Submit” button.
Again, clicking the “Submit Payment” button sends the information to Stripe and then responds back with a token if valid. Once that happens, then communication between Stripe occurs and the user is upgraded to their selected plan. If all goes well, the form is finally submitted and the user is presented with a Success page.
But Wait, There’s More
You thought that was it, huh? That is the basic checkout process, but the user needs to see an email invoice to ensure they have something for their records. Sounds like something else I have to design that also needs to look just as good and be just as simple. Luckily I recently redesigned the email newsletter that goes out, so I used that template for the invoice:
Looks like I should be nearly done with the design of the billing process, but there are a few more possibilites to take into account. What about Cancelling memberships? What about Upgrading from a Monthly subscription to a Yearly Plus?
As you can see, choosing to upgrade a subscription prompts the user with a new box via jQuery UI. After clicking yes, the user is shown the price and is sent a new prorated invoice. Similarly, if the user wishes to cancel, then a similar box would pop up.
Wrap Up
Revamping a billing page takes a lot of planning, testing, and fine tuning. Just the design implementation alone took about 2 weeks with lots of tweaking. Lots of frontend technologies are used including jQuery, jQuery UI, Google Fonts, Stripe, and qTip. There are still a few things that need to be tweaked on the frontend and backend, but overall the new billing is exactly what I envisioned and is light-years better than what I had.
Hopefully this post will help others who are thinking about revamping their upgrade flow. Nearly 3 weeks of hard-work launched a few days ago and it was great to see a few users already go through the process with no problems. Merry Christmas to me.
Not too long ago I made a blog post about how Fantasy Sports sites need to be faster. For those of you unfamiliar with me, I run my own fantasy sports start-up called FantasySP. It is a simple yet effective way to keep tabs on your fantasy teams.
I tend to write articles detailing things I don’t like, but it’s time for a change of pace. Its time to go in the opposite direction and breakdown one particular site called Bleacher Report that is quickly becoming a leader in the sports industry. Bleacher Report is a sports site where its users create the articles that can range from stat driven geekiness to Hollywood type entertainment. These guys do a lot of things right and this article is going to showcase what makes Bleacher Report (b/r) so special. From the outside looking in, it looks like there is great balance and understanding between the content/business people and the technical aspect of things. I emphasis this because this is a rarity in today’s world of startups.
Before I get to praising Bleacher Report, let’s take a moment to see what the critics are saying. Specifically Sports Pickle. As you can see by their graphic, they are mocking content choices, their target audience, usage of slideshows, and their attempts at driving traffic by loosely basing stories around sports.
Is what they say valid criticism?
Of course it is. I agree with a lot of their points. Like any website, you want to broaden the audience to reach as many people as possible to generate more pageviews, better time on site, and more revenue. b/r is playing the game that every other website out there plays. Look at Profootballtalk or bigleadsports, because both of those sites report about rumors and gossip because it drives traffic. b/r is giving the people what they want and they do a good job at delivering it. Not only that, but they manage to achieve this with arguably less paid writers and editors than most other sites.
Does some of their content stink? Of course. But overall, the best stories are the most visible and the rest are kind of just – there.
Enough with the business side of things, lets talk tech.
Design
I should preface this by saying that I am NOT a designer, though I pretend to be one. Now that you are confident what I have to say should be taken with a grain of salt, lets move on.
The latest redesign of b/r is very clean and unique. I’ve talked a lot in the past about how 2nd tier sports site’s in general lack polish and attention to detail in their designs. 2nd tier websites are often bloated in design and confusing messes. Obviously ESPN is in a league of their own, but b/r is one of the best designed sports site out there. (b/r has a killer mobile design as well.) In fact, their design reminds me a lot of c|net’s latest design.
One of the best ways to evaluate a design (at least to me) is to compare it to the competition. As far as I know, their direct competition is yardbarker. Take a moment to look at yardbarker and b/r from strictly a design perspective. There is no question that you would prefer b/r: It’s more inviting, cleaner, more organized, and feels modern. Does it surprise anyone that b/r has about twice as much traffic as yardbarker? (source: alexa.com).
Advertisements
The guys at b/r use advertisements as a revenue source. I am sure it’s not their only source of revenue, but its probably a critical piece to their revenue goals. These guys understand ad placement and they understand where to draw the line.
The number of ads per page range from 3 to 5. Sizes include 300×250, 728×90, 970×66 and background takeover ads. None of their ads are inline with their content. None of their ads are popups or intrusive in any way. (I could be wrong, but based on browsing for a day, this is what I can go on).
Their ad placement alone is well done and it can be found in the usual places. A lot of sites throw advertisements in-line with the content because it has a higher CTR, but b/r has decided not to. On some pages, they opted to include their 728×90 ad next to the logo which is pretty much an industry standard. Their takeover ad is somewhat obtrusive but it is done very well and does not hurt the end-user’s browsing experience. The entire background ad is clickable, which should produce some very nice CTR’s and a bulk of their ad money.
Overall, the quality of the ads and their placement is about as good as it gets.
Readability
b/r does a great job at making sure their site is very readable. Their main body of text on an article page has a font-size of 16. The only time their font-size reaches 11px or lower is at the very bottom of the footer. There is plenty of whitespace inside the main article and their usage of social buttons are done in good taste (as opposed to mashable and huffington post’s dreadful examples).
If you take a closer look at their fonts, you’ll notice that they are custom fonts including: droid-sans and francois-one. Judging by their source-code it looks like they are using font squirrel for custom font implementation. Thankfully they are NOT using cufon which uses javascript to render font changes after the page is loaded. Their font choices add a certain flair to the site that would not be obtainable with regular font choices such as Arial.
Technology
The technology behind b/r is equally as impressive as their front-end. According to their about page, their lead developer is Sam Parnell and I am going to assume he gets a lot of credit for their current direction of the site. (If the guys at b/r would like to clarify this then be sure and comment so I can fix it.)
Caution, things are about to get geeky. The site uses Ruby on Rails for the backend paired with nginx+mod_rails to serve requests. As far as I can tell, this is a custom built CMS built from the ground up. It is obvious that the tech team behind b/r is a very knowledgeable bunch. This is a far cry from the average LAMP stack that we often see.
They utilize Amazon Cloudfront for their CDN and jQuery for their javascript library of choice. To monitor server performance they are using NewRelic. It goes without saying that these guys must spend a lot of time on improving site performance. They also utilize the standard practices of website optimization by gziping, caching, and minifying stylesheets/javascript etc.
I also want to make mention of their use of Ajax, specifically how their article pages will load content via ajax without reloading the entire page. I imagine the point of this is to encourage users to load more pages per visit and this tends to save on server resources as well. To see this in action load any single article and click on one of the “recommended stories” on the top right. If you notice, the href links point to their actual URL (Finally a site that does not use the “twitter” method by including a # in the url). This is the BEST way to handle ajax content because the failsafe url is there for the user to load if the javascript is broke and googlebot can easily crawl these pages as well.
Areas to Improve
Even some of the best sites have ways they can improve and b/r is no different. Their facebook implementation is a bit wonky (technical term). I used their facebook connect and their popup was initially blocked, then when it did go through it asks for my email and then a bunch of other follow-up questions. As a developer I understand how shitty it is to use facebook connect, but its even shitter for the end user to have to enter their email address when you already have access to that information in the API. Furthermore, once I close my browser and go back to the site I have to click the “sign-in” button for facebook to re-authenticate. Not cool.
Either fix the facebook implementation or drop it all-together. Don’t get me wrong, this isn’t the worst I’ve seen (cough: huffington post).
Another questionable decision is the whitespace above their 970px advertisement (shown in the above screenshot). That is a huge waste of space and is pretty pointless. I’m not very religious, but I do follow the rule of “Thou shall cherish their above-the-fold space“.
Finally, the pages are a bit on the hefty side, some approaching nearly 2mb in size. This has a lot to do with the amount of images on the page and it might be a good idea to lazy-load some of those to improve load times and lower CDN bills.
Wrap Up
Hopefully this case study has proved useful to some of you guys out there on best practices and a good example of company appearing to make the right decisions. I am sure I missed plenty of other aspects of the site, but this article has gone on long enough. In fact, two other things I didn’t have time to go into full detail are their great implementation of the search box and mobile site. Both are top notch, especially their mobile site. Anyone out there who is looking to design their mobile site should use b/r’s as a template.
I am extremely pleased to see that some startups have the right people behind the wheel.
Agree? Disagree? Let me know in the comments. I’m new at this case-study stuff.
For those of you interested in a brief summary, building your own 3D HTPC is recommended for the technically inclined. You will likely run into small snags and it is a bit pricey. Despite that, it beats ALL small media players such as popcornhour or wdlive in terms of features and performance.
I used to use my PC for my media playing needs before I purchased the original Popcornhour A-100. Since then I have been using popcornhour up to version A-210. Eventually I realized that the media player’s limitations were really starting to get to me. There are limitations in 3D movie support as well as the lack of high definition audio support. Not to mention the slow clunky interface.
I decided last week that it was time to go back to using a PC, though this time it will be a Home Theater PC dedicated to task at hand. My goal was simple: Complete support for all modern audio and video formats and future proof it the best I can.
Step 1: Research
I’ve built plenty of PCs in my day, but never a HTPC, so I honestly wasn’t sure where to start. Then I figured, since I plan to use XBMC it would be a good idea to check out their forums. I began by reading this post by eskro to find out which type of setup I’d fit into. My build fits into group #7, which then leads you to his recommended base specs. Ultimately, I went with this base setup that he recommended.
As you can see, this setup does not include memory, hard drives, or a DVD/Blu-ray drive. I also need to upgrade the video card to the GT430 to make sure I have 3D support. I also decided the boot drive should be an SSD, since I want to make sure this thing boots up quick and has a snappy interface. My final specs look like this:
As you can see, I had to buy a low profile cpu heatsink/fan. The reason is that the default heatsink was too big when I was trying to install it. I had no choice but to wait until the new heatsink came. In fact, if I could do it over again I would also opt to get low-profile memory as well. It is an extremely tight fit in there so any time something is offered in a smaller format, go ahead and buy it.
You may also want to purchase a 2.5 to 3.5 inch bay converter for the SSD to fit snug. The western digital hard drive is a very tight fit as well and just bare fit with the SATA cables touching the cpu fan. If I had to do it over again, I’d opt for the 90 degree SATA connectors to avoid them sticking out too far.
Install Windows 7 / Software
As you probably noticed, I did not buy a DVD/Blu-ray drive, mainly because I don’t intend on using it and would free up space for the future. The only problem with that is there is no CD drive to install Windows on. If you have a 8gig USB stick and have a Windows 7 ISO handy, then create a bootable USB thumb drive. Though you can install whichever OS you are most comfortable with.
Playing Blu-ray ISOS
XBMC should be your media player of choice for your HTPC, but Boxee is also worth a look. Both are free, so it can’t hurt to install both to see which one you prefer. I opted to install the Nightly build of XBMC 11.00, which is scheduled to be released in Dec 2011. Both have an awesome interface and its quite refreshing coming from a Popcornhour.
As you may know, XBMC does not support menu’s for a Blu-ray ISO file. When you mount a blu-ray image via daemon tools, you will see an option called “Play Disc” and the movie will play. If you want menu support then you will have to use something like PowerDVD 11. Luckily they offer a 30 day trial.
XBMC 11.00 supports high definition audio formats such as DTS-HD and Dolby True HD. Obviously, PowerDVD will also support these formats.
Playing 3D Blu-Rays
In order to get 3D Blu-ray ISOs to play you must first enable 3D support under the nvidia control panel. There is an option to modify your 3D settings, so have your glasses handy and run through the quick setup process. Once you do that, open up PowerDVD and 3D mode should work with no problem, assuming the movie is in 3D.
Also keep in mind that you need to purchase the Geforce GT 430 (or similar card) to have HD Audio format support and 3D playback. It goes without saying that your receiver and TV also need to be 3D capable. Your reciever must support HD audio formats and have 3D pass through via HDMI 1.4
Is an HTPC for You?
As you probably guessed, building your own HTPC and setting it up is a bit of a pain in the ass. It will likely be a weekend project, or at least a full day. There are a lot of steps and things to set up before you can watch your movies in all their glory. If you have never built your own PC, then I’d advise against building your own HTPC. Instead, you might want to purchase a pre-built one like the ASRock 3D for $699. I also hear that new sigma chips to support 3D playback and HD audio will make their way to devices in 2012 (if they haven’t already). That should be an interesting option for those of you who cannot handle building an HTPC.
As for performance, this HTPC setup will be able to handle anything you can throw at it this year and for several years to come. Now that the system is set up, minor upgrades for more HD space, new video card, or new software updates will be extremely easy. Furthermore, XBMC is actively being developed and will continue to improve much faster than anything else out there. Similarly, PowerDVD will also be able to handle playing blu-ray movies with no problem with full menu support.
Is it Worth it?
If you want to take the plunge into HD audio and 3D blu-ray’s then it is most definitely worth it. I used to play mkv 1080p backup movies and thought, “what more could I need?” Those rips are fine, and I’ll continue to play them, but for action movies nothing beats the original blu-ray. The movie experience now is truly awesome. Some people rent Netflix movies while others build an HTPC. I happen to prefer the latter.
The bottom line is that if you have the time, money, and hardware then go with an HTPC. Not to mention it’s also a handy extra PC for the living room.
Not too long ago I started to receive an endless stream of Google Two-Step Verification codes to my cell phone. I had not changed anything, but I had no way of stopping it and hoped the problem would resolve itself. Well, it turns out that it does not. What you need to do is use Google Authenticator to receive these codes instead of opting to use SMS text messages.
To do this, go to your Account Settings for two step verification and you will see the option to make the switch. Not sure where this is? Log into gmail and click your name in the top right.
Google Authenticator works for both Android and Apple phones.