Categories
guide how-to php

FantasySP, Building a Better Upgrade Flow

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:

 

Old Billing Page

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:

  1. User should stay on the fantasysp.com domain during the process (SSL would have to be installed)
  2. Only 2 subscription choices to pick from with a suggested audience.
  3. Able to upgrade from monthly to yearly with a prorated cost.
  4. Able to apply a coupon code during selection BEFORE he checks out.
  5. 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:

User Upgrade Options

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:

Coupon Code Entered

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:

More of the Page

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:

 

Checkout Form

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:

Email 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?

Enrolled in Monthly
Clicked to Upgrade

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.

Categories
case-study

Case Study: Bleacher Report

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).

b/r NBA section

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.

Categories
guide how-to htpc

Building a 3D Capable HTPC

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.

[CPU] Intel Core I3-2100 Dual-Core 3.1GHz LGA1155 65W
[MOBO] ASRock H67M-ITX LGA-1155 UEFI SATA-III USB3 eSATA S/PDIF mITX
[GPU] ZOTAC GT210 512MB DDR3 64-bit Fanless Low Profile
[CASE+PSU] Apex MI-008 Black mITX 250W

Step 2: Refining the Setup

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:

[CPU] Intel Core I3-2100 Dual-Core 3.1GHz LGA1155 65W $122
[LOW PROFILE CPU FAN]  Thermaltake Slim X3 Low Profile 36mm Height CPU Cooler CLP0534 $23
[MOBO] ASRock H67M-ITX LGA-1155 UEFI SATA-III USB3 eSATA S/PDIF mITX $87
[GPU] ASUS GeForce GT 430 (Fermi) 1GB 128-bit DDR3 PCI Express 2.0 x16 HDCP Ready Low Profile Ready Video Card $45
[CASE+PSU] Apex MI-008 Black mITX 250W $50
[HARD DRIVE] Storage  – Western Digital Caviar Green 2 TB $175
[HARD DRIVE] SSD – Kingston SSDNow V100 64 GB SATA II 3 GB/s $63
[KEYBOARD & MOUSE]  Logitech Wireless Combo Mk520 With Keyboard and Laser Mouse $43

TOTAL: $608

Small Case, Annoying Problems

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.

Categories
Google

Two-Step Google Verification SMS Spam

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.

Enjoy! 🙂

Categories
rant

5 reasons why the Internet Sales Tax Bill is bullshit

I just heard that there is a bill in the senate that will force all online retailers to pay sales tax, regardless if they operate in that state.  This is wrong for a few reasons:

  1. Online retailers are at a disadvantage to traditional stores because of shipping fees.  Local stores usually do not have to worry about these added fees during a purchase.
  2. Online retailers sell items tend to be cheaper than local stores.  Part of of the reasons might be that in order to compensate for the time it takes to receive your purchase, the buyer has to be enticed to save a few bucks in the process.  Otherwise, you might as well go to the store, right?
  3. Local stores play the game of increasing prices on personal items that consumers NEED to have.  For example, shaving blades.  You either don’t shave for 3 days, or you bite the bullet and buy it in the store even though it costs more.
  4. Local stores, such as Best Buy, mark-up prices for HDMI cables to $50+ dollars so uninformed consumers overpay for something that can be bought online for $5 dollars.  You expect me to feel sorry for local chains when they behave like this?  Then they offer extended warranties on TVs that are meaningless?  I don’t think so.
  5. And finally, the online sales tax “loophole” as some people have described it, is the ONLY loophole that us common folk can use.  Members of Congress and other big corporations use many tax loopholes so they end up paying less taxes or no taxes than people making $50,000.  These will never be closed because it benefits them.  I smell hypocracy.

    Before you start taxing all online retailers, you might want to look at forcing ALL companies that operate in the United States to pay corporate taxes.  Or should the 99% continue to be screwed over?

Categories
rant

What’s Your Angle?

This post might bite me in the ass one day, but what the hell right?

Running your own start-up is not easy.  In fact, its insanely frustrating for many reasons. Try telling ‘regular’ people your idea over and over and for it to just go straight over their heads.  Either that or they’ll instantly think its crap because they don’t understand it.  Then they’ll wonder, “seriously, what do you REALLY do for work?”  You get to the point of asking yourself: “Why bother even mentioning it?”.

Worse yet, try pitching your start-up and/or idea to a tech blog.  I recently sent an email to a tech blog explaining what FantasySP does and why its a neat place to go for fantasy sports fanatics.  It really works and it really provides an incredibly useful service.  I even provided my Google Analytics stats.  The response?  “Nice, just trying to think of an angle…“.  An angle? Are you kidding me?  The angle is that it’s a bootstrapped profitable start-up with loads of cool features.

He doesn’t give a shit that the business is profitable with me working on it 20 hrs a week.  He doesn’t give a shit that I’ve coded a product that people use, to the tune of 700,000 pageviews in September.  Or that I’ve managed to keep costs under $300 per month and make approximately 10X that in revenue.  Or that my start-up outperforms some that have 10+ employees with over a million dollars in funding.  Or that I’ve done it all myself with no prior experience of the business world.  I can go on and on, but none of that matters.

But this is my fault for foolishly not knowing.

What matters is that my start-up needs an angle that they find interesting.  It doesn’t matter if your startup even does what it claims to do or if your profitable.  If I pitched some shitty idea revolving an iPad app and daily deals with facebook integration I bet they’d be at least following up my email with questions.  Why?  Because its on-the-surface buzzword bullshit that attracts them to write and bring in the pageviews.

If you want your product mentioned, then modesty is not going to work.  You have to play their game by overvaluing your product.  Make outrageous claims like its the next Twitter meets Groupon.   Lets look at a start-up like Color.  I mean, why the hell did anyone even write about that shithole of an idea to begin with?  Because Color is a product of arrogant bullshit from people who have been successfull before, and it will outweigh any logical thought or reasoning as to if it might work.

Everything about startup culture is complete bullshit. People would rather believe and write about pompous arrogant assholes who lie through their teeth about their product.  I bet half the time, the things written in articles are BARELY half-truths.  Why else would all of these start-ups go belly up within a few months?

I give people in the start-up world too much credit (which, if you knew me, is actually pretty remarkable).  People only skip across the surface, and I just have to face the facts and move along.  I’m no longer focusing on getting an investor on board, or trying to be mentioned in a tech blog, or trying to be acquired.  If these things happen, great, but I’m not about to waste my time when I could be improving my existing product.

Categories
developer

The cost of running a boot-strapped startup

I’ve seen a few well known entrupenurs make mention of services that they pay for and I’d like to join the club.  For those of you unfamiliar with me, I run a fantasy sports news aggregator called FantasySP.  You can sync fantasy leagues rosters/transactions and be alerted of real-time player tends.  This is bootstrapped in every single way, as I am the sole employee and have zero funding.

The following companies are awesome and deserve my money and/or praise.

Web Host: ServInt $200/month

Not a flashy name in the hosting industry, but they provide solid managed services.  I use their Solo Express server to run FantasySP on a standard LAMP stack. A few other sites (like this one) also run on it.  It is actually about 10% cheaper than this because I pay a year in full.

Cheap Cloud Host: Rackspace Cloud $25/month

For all of those background processes that need to be run for FantasySP, a cheap cloud server from Rackspace does the job with a very fair price.  Highly recommend it to anyone who wants a cheap host to screw around with or run dozens of cronjobs. 🙂

CDN/DNS: Amazon Cloudfront & Cloudflare $8/month / FREE

Amazon Cloudfront is where I store most of my images,stylesheets, and javascript to speed things up.  For the images that slip through the cracks, there is Cloudflare, which offers an amazing service that is part CDN, part firewall, and part dns optimizer.  I have written about them in the past.  I use their free service, the rest of the $8 is spent on Amazon’s Cloudfront.

Version Control System: Github $7/month

Seriously, where else would I host FantasySP’s code and have version control.  Github is my first and only choice.

Realtime Analytics: Clicky $4.16/month

The best real-time analytics package out there.  I have no idea why people in the industry seem to blindly love chartbeat. Clicky is better in every way combing historical and real-time analytics in a great UI.

Application Performance Analysis: NewRelic $50/month

The best real-time software to monitor how your application is performing.  This has enabled me to spend less money on my hosting due to optimizations based on what NewRelic data and graphics tells me.  FantasySP zooms and NewRelic has a lot to do with it.  With around 700,000 pageviews per month, FantasySP remains rock solid.  These guys rock and are totally worth the money.

Source Code Editor: Notepad++ FREE

Notepad++ for windows, its free and it does just about everything those super expensive pay ones do.  (Why the heck is UltraEdit so damn expensive?)

Grand Total: $295 per month

This brings my grand total of web developer / startup related expenses to about $295.  The good news is that FantasySP more than makes up for these expenditures.  I try to not waste any money, so how do my expenses stack up to yours?  I am guessing most companies pay at least $500 per month JUST for hosting.

 

Full Disclosure, some of the links provided here are affiliate links.

 

Categories
Google

Switch from Google Chrome DEV to Beta Channel

If you are like me, then you’re sick of the Google DEV channel getting screwed up by new bugs. (I thought that was the whole point of the Canary build?)  Recent hair-pulling bugs include: fonts no longer rendering properly, sluggish performance on Twitter, or random crashes that weren’t there a build ago.

Well, fear not.  I just decided to downgrade from Chrome DEV to BETA and I kept ALL my user data.  Here is what you do:

  1. Backup your “User Data” folder first.  For windows 7 users: C:\\Users\YOUR-USERNAME\AppData\Local\Google\Chrome\User Data\ . You’ll notice that this folder is fairly big, in fact, mine weighed in at around 1 gig. If you are on an earlier version of windows or a different OS, then head here for more paths.
  2. Next, close Chrome and go to Add/Remove programs to uninstall.  When asked, Do not remove your user data.
  3. Now open up another browser and head over to the beta channel download page.
  4. After you install, Chrome will open and you’ll notice that it did not save any of your settings. Don’t panic.
  5. Close Chrome and head over to your folder again C:\\Users\YOUR-USERNAME\AppData\Local\Google\Chrome
  6. Rename “User Data” to “User Data OLD” (just incase) and then copy over your backed-up folder.
  7. Open Chrome and rejoice, all of your data is exactly how you left it.
No more weird DEV bugs anymore!  Enjoy. 🙂
Categories
rant

Is it hard to use logic?

This is just one of those random thoughts I had.  As a programmer, everything I do involves taking complex problems and breaking them down into small pieces of logic.  I look for the simplest and most effective answer to a problem.  Pretty cut and dry, right?  But after being a programmer for almost 10 years now, I’ve realized that I apply this mindset to just about everything I do.

I can’t say this is necessarily a good thing because most people do not agree with many of my opinions and observations.  I often get remarks that I am being “too harsh” or “not giving them a chance” or “being judgmental” or “I don’t know all the facts”.  More often than not, I tend to be right. But why don’t other people see what I see?  I’m not overly smart.  I think I am just wired to think differently, and the reason is because I became a programmer.  Call it the programmers curse.

Here, I’ll show you…

Have to go food shopping?  Go at night, less people means less time to waste.  Shop for clothes?  Wait for a 30-40% off sale, then just get everything at once online with free shipping.  Need a new television?  Well, I’m certainly not just going to get the cheapest one out there.  Time to look at reviews and add a deal alert from Slickdeals and patiently wait.  Time to buy a new console?  Well, which one is easier to mod because I surely don’t see myself spending $60 per game.

Is it hard to be logical? Absolutely.  It’s extremely hard.  In fact, I would argue that its much easier to be illogical than to be logical.  To come to an illogical conclusion requires almost no thought and relies mostly on impulse and emotion.  An illogical person is not looking for the simplest and most effective answer to a problem.  They don’t care if they are right or wrong.  I think more people are illogical rather than logical.  But I don’t blame them; it’s hard.

Think about some of the toughest problems or topics that people seem to fight over.

Politics?  That reeks of illogical people who really don’t care what the truth is.  We have a debt problem.  What’s the most logical decision to fix that? Cut spending and raise taxes?  For who?  The rich? Some argue that the money companies save from tax breaks eventually trickle down to us poor folk. They create jobs. Is their logic flawed?  Are they aware of the wealth breakdown in the United States?  Is it time for a change?  The real facts are out there waiting for you to soak them in.

Religion? Again, this is another area where it seems largely devoid of logic.  Think of the simplest and most effective answer.  Take a step back and learn about human history and the laws of the universe.  Most people won’t end up at the conclusion I come to.

What about technology?  This is a very tough area and there are a lot of illogical loyal users out there.   I’m sorry folks, but I just can’t bring myself to buy a $600 iPad when an iPhone or Android is essentially the same thing.   I am not loyal to a company.  I use a Macbook for work and a PC at home.  They both work well for me.  My web browser? I used to love Firefox, but they fell behind in innovation and features to a 2 year old browser.  Do I stay loyal to Firefox? Hell no, logic dictates I use the fastest and feature rich browser out there.

Relationships are by far the hardest to use logic with.  I don’t even to go into that one do I? 🙂  Oh hell, why not?  What I do drives my wife crazy because I can’t just blurt things out or make seemingly simple decisions and move on.  If she does something overtly illogical, I want to try to figure out why she did it.  She will look at me and say: “WOULD YOU STOP THAT? ARE YOU JUDGING ME!”.  I’m not judging. I am analyzing.  I just want to know WHY.  See what I mean?  I can’t help myself.

What about in the business world?  I see people over and over making the wrong decisions. (Surprise surprise right?)  I assume there is logic behind these decisions, but perhaps they are too lazy to REALLY delve into it to fully understand the problem?   Perhaps they are just looking in the wrong place for advice?  The stats are there, so why don’t they listen to them?  I wish I knew.

Again, don’t take this article the wrong way.  I am not saying I am the smartest or the most logical person in the world.  I am not saying everything I wrote in this article is the truth.  There are times when my logic is wrong.  All I am saying is that I try to be as logical as I can be.  But is that the best way to go about things?  You know, when I think about it…sometimes being illogical seems like the logical thing to do.

Categories
optimization php

Fix the WordPress SQL_CALC_FOUND_ROWS Bug

Anyone who has a WordPress blog with a lot of posts will eventually encounter an extremely slow query. I refer to this as the SQL_CALC_FOUND_ROWS Bug. If you have slow-query-log enabled then a query similar to this might have shown up before:

SELECT SQL_CALC_FOUND_ROWS wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.ID NOT IN (44682, 44657, 44630) AND wp_posts.post_type = 'post' AND (wp_posts.post_status = 'publish') GROUP BY wp_posts.ID ORDER BY wp_posts.post_date DESC LIMIT 24580, 5

Just how detremential is this to your blogs performance?  Well thanks to newrelic, I can show you:

SQL_CALC_FOUND_ROWS Bug

Unfortunately I don’t know why WordPress runs this query.  What I do know is that it apparently only shows up on index.php.  What you probably care about is how to fix this problem.   I’ve located a possible workaround thanks to this open ticket at wordpress.org.  The diff log on the changes are listed as well.  I went ahead and applied these code changes to wp-includes/query.php.  The fixed query.php can be found here.

How are the results so far?  Inconclusive.  I just applied this patch and nothing broke so far, which is always a plus.  I suggest you give it a try and see how your blog responds in a development environment.  If I STILL spot slowdowns in the revised query, then I will update this post and let you know.

Some of you might be asking, does this affect your version of WordPress? The answer is yes.  I am running WordPress 3.2.1.

Please do post your thoughts, concerns, or comments to help others out.