Dreamhost’s MySQL servers are slow and oversold
I love Dreamhost. I use Dreamhost for just about anything I put on the mighty internet. Dreamhost has the best control panel of any hosting company, allows me to become a little hosting company of my own by giving my clients discrete shell accounts with access to all of their sites, and gives me unlimited storage (which I’ve tested with a facebook app which I hosted on Dreamhost that created tens of gigabytes of images). I can even build my own php, ruby, python, etc. I have one, and just one beef with Dreamhost, and it’s a pretty big one.
Dreamhost’s shared MySQL servers are SLOOWWWWW!!!1^H
This problem is most apparent with Drupal sites. If Drupal is anything, it’s hard on the database. Drupal makes more queries than a baby-boomer changing email clients. I consider it a flaw of Drupal’s, but sest lah vye. If you install Drupal 7 Core on the Dreamhost Happy Hosting service, the first page load takes 5-10 seconds, and navigating the dashboard is unbearable. The point is, other hosting companies don’t have this problem. Other hosting companies, for whatever reason (mysql servers running on the same machine as the web-server, butt-loads of hardware, better caching configuration), can run Drupal quickly on a basic plan.
I am writing this blog post with a tear trickling down my nose because I really do love Dreamhost. But I need to be honest with myself and admit Dreamhost’s failing. I hope Mr Dreamhost notices this post when he vainly searches the Google for himself and changes his ways. I hope Dreamhost upgrades their MySQL servers!
It looks like Mr. Dreamhost was cruising the googles for himself after all. After mentioning this post on the Twitter, Mr. Dreamhost contacted me via the Dreamhost support system and offered me a free (up to 300M) MySQL VPS. I’ve taken him up on the offer, even though it does not solve the underlying problem of poor MySQL performance on the shared servers.
In the process, the Dreamhost tech handling the case discovered that my Happy Hosting mysql server lived in a separate data-centre from my Happy Hosting webserver. Can we say flawed infrastructure?
Either way, I’ve gotten some satisfaction, but it’s in no way a solve.
Update: 2012-01-27
I’ve run some AP benchmarks comparing the Dreamhost Happy Hosting performance (about a $10/mo account) with a basic JustHost account (about $4/mo). The site in question runs Pligg, a fairly database-heavy Digg clone. It’s in no way scientific, but does tell a story. Here are the dumps:
Dreamhost
Percentage of the requests served within a certain time (ms) 50% 2749 66% 2972 75% 3246 80% 3412 90% 4650 95% 5051 98% 9514 99% 9514 100% 9514 (longest request)
Justhost
Percentage of the requests served within a certain time (ms) 50% 2609 66% 2961 75% 3299 80% 3498 90% 3560 95% 3741 98% 3952 99% 3952 100% 3952 (longest request)
Ice Cream Sandwich on Nexus S from Wind Mobile
I just switched back to Wind mobile after six months of Mobilisery. I signed up for the Christmas plan which is still available as of this writing (unlimited everything including north american calling and intl text for $40). The Wind rep told me I could get one of several phones effectively for free (tab) with the new plan so I asked if I could play with a Nexus S while I waited for them to complete the paperwork.
To my surprise, she handed me a Nexus S I9020T with Super AMOLED Plus display, and it was running Android 4.0, Ice Cream Sandwich (ICS)! I had been drooling over a Galaxy Nexus which I had visited several times in a Virgin Mobile store downstairs from my building to play with Android Ice Cream Sandwich, so after seeing it running well on the free Nexus S, I couldn’t resist.
There was one catch, though. I had to manually update the phone to ICS, because Google had suspended the OTA update of ICS to Nexus S after receiving quality complaints from users. Luckily this was a very easy process, and doesn’t require rooting your phone as the official update is still available thanks to the mighty internets. (more…)
Use Google Calendars on your website
I tend to recommend a lot of google products. One that I recommend very often is the use of Google Calendars as a calendar of events on your website. Using Google Calendars saves you having to install and configure clunky event management plugins, and fits easily onto a page on your website using a little bit of embedding code. You can even have more than one calendar display at a time and choose which ones you want displayed from a little drop-down menu. I will briefly describe how this is done and include links to the Google documentation for each step. They do a much better job of explaining than I would.
The first thing you’re going to need is a Google-ID. If you have a gmail address, you already have one. If not, go and get one. This is your single sign-on to all of Google’s services. If you are setting something up for an organization, you probably want to get a Google-ID specifically for that organization so that you can share it with others. Here are instructions on how to sign up for your Google-ID.
Now that you have your new Google-ID go log into Google Calendars. The first thing you’ll have to do is create a new calendar. This will be the calendar that you embed on your website, so give it a meaningful name like “My Organization’s Events”. Make sure you set the visibility of the calendar to public. If you skip this step, nobody else will be able to see it. Finally you are ready to embed the calendar into your website by pasting the embed code into (for example) a page in WordPress.
If you need to you can create more than one calendar and include them all in one calendar view. Just check off each of the calendars you want included in the list on the Google Calendars embedding page. If you find there are too many events in your combined calendars for the Month view, try changing to the Week or Agenda views. They are better able to display more entries in each day.
I’ve completed all of these steps in order to embed a calendar into this post that displays three Google Calendars. If you click on the little down arrow in the top right corner, you can choose which of the three calendars you’d like to see. (more…)
Preparing your images for the web
It’s become an age old question. “How do I optimize my image files so that they are small and fast loading, but still look great?” Image formats, and image optimization tools have come a long way, but there have always been just a few fundamental concepts at play here. (more…)
What RSS is and what it isn’t
I have noticed many people are confused by what happens when they click the RSS icon on their website. I think this confusion stems from people forgetting exactly what RSS is, in combination with the placement of the RSS icon in the same place as other social media icons. (more…)
I can has Google Music Canada, and so can you!
Google music is just about the yummiest thing since sliced meat, but it’s only available in the US until Google manages to navigate the canadian music-communism regulatory labyrinth. That means it won’t be available in canada until the 12th of never.
But that’s ok! It’s pretty easy to set yourself up with a google music account, and once you have it, it will work from anywhere. You can upload your 20,000 songs to the great big Google in the sky, and listen to them on the bus, in the park, or even in your home! All you need is to install one of those proxy thingymajigs when you sign up for the account.
I used Stealthy: a little browser extension available for Chrome and Firefox. Others have used Tor. Heck, if you’ve got a webserver that lives in the US, you could even do it the old fashioned way and setup a SSH proxy server. The point is you need to sign up for the account from a US IP address, and all of these methods will do that.
Once you’ve got your account, you should be able to access Google Music from your standard canadian IP address, and start uploading your songs!
If you have a google phone, you’re gonna need the new Google Music enabled android music app. You’ve probably noticed that you’re not allowed to download it from the android market unless your phone lives in the US. Well, have no fear. The internet pirates have once again come to your rescue.
You can download the latest version of the android music app apk here. If you download it using your phone, you’ll be able to install it by touching it in your downloads list. You’ll be asked to replace the existing (kinda old and crappy) music app. For heaven’s sake say yes, and begin enjoying your music wherever you want to from the great big Google in the sky.
Cheers!
5 questions to ask your web hosting provider
We’ve launched a lot of websites for our clients on a lot of different web-hosting services over the years. And we’ve often found that clients choose providers that make things unnecessarily difficult, and much more time consuming than they should be. How should you choose a host? What should you be looking for in order to get the best service? (more…)
How to submit your website to search engines
I am often asked for advice about how to submit a website to the major search engines, and what other things one can do to begin promoting a new website. Here’s a list of the submission pages of the three major search engines. Just follow the instructions on each of them to submit your site. (more…)
Death to the Canadian Multilingual (Bilingual) Keyboard
If you’re planning on buying a new laptop or netbook in Canada there’s something you should be aware of.
Throughout the entirety of the personal computer revolution, and for at least 100 years of typewriters, Canadians have been typing on what is generally known as the US keyboard layout. That’s enough time for several generations to be conditioned into typing a certain way.
Since 2009, all laptop manufacturers that ship to Canadian computer vendors have been shipping with a new keyboard. It’s called the Canadian Multilingual, or Canadian Bilingual keyboard. At first glance, it looks a bit funny, but is not that alarming. It’s got a few funny symbols on some of the keys, and a fat enter key, but is still a fairly standard looking qwerty layout.
But, in plain sight, this keyboard hides a nasty surprise.
Android 2.3 on Nexus One Reviewed
Well, after today I’ve got to admit it, I’m a geek. I spent my last few minutes at work manually upgrading my Nexus One phone to Android 2.3 Gingerbread.
For those of you who don’t remember, the Nexus One is the amazing HTC built Google Android reference phone sold by google online at google.com/phone. You could only buy it online, unlocked, and at full price. Needless to say it was everything I ever dreamed of, and a total commercial failure.
Anyway, here’s the skinny on the upgraded OS.
They said the keyboard would be more responsive, and it is! It’s still not as lightning fast as a recent iPhone’s keyboard, but it’s very close. The iPhone’s keyboard runs as a native application, and probably gets special scheduling priority from kernel hooks. Android’s keyboard runs as an application in userland, which means it’s essentially a Java app on a fast VM, and is competing with the rest of the system for CPU time. Native code will always outperform a virtual machine.
They said the system would look better, and it does! The first thing you’ll notice is the UI is much more dark grey with light text than it used to be. Almost like using the “reverse” UI that the visually impaired use on a desktop OS. I really like this. It means that I won’t wake up my girlfriend when I’m switching which chapter of Human Action I’m listening to in audiobook format in the middle of the night. (remember when I said I was a geek? I meant it) (more…)
Time to learn Ruby
What better time is there to learn ruby than on one’s vacation? I’m considering using it to develop a very exciting secret project involving web typography. Like many programmers, I’m going through the ruby koans Exercises to get used to using the language.
about_triangle_project.rb
Sofar, my favorite problems are the about_triangle_project.rb and about_triangle_project2.rb problems. Here’s my solution:
def triangle(a, b, c) # important for efficient triangle testing ar = [a,b,c].sort # test for impossible triangles from sorted array of sides raise TriangleError, "Impossible!" unless ar[0] > 0 and ar[0] + ar[1] > ar[2] # identify triangle type with some stringy magic case [a,b,c].uniq.size when 1 then :equilateral when 2 then :isosceles when 3 then :scalene end end
Isn’t unless a fun operator?
(more…)
Are you a hard money fanatic?
As an Exercise in graphing on the web, I’ve setup a little page which aggregates the precious metal prices from the Vancouver Bullion & Currency Exchange. I’ve got a little curl script that scrapes the prices off of the VBCE Gold prices webpage and records them on an hourly basis. From there I use a php graphing system to create graphs of the data as collected. I’ve also included a line for the spot price which I scrape hourly form XE.com (don’t tell on me!)
You can see the graphs here: http://gold.brainbits.ca
Cheers, and ¡Viva la revolution!
A couple of WordPress design tips
After converting so many static site templates into WordPress themes, I’ve identified a couple of very simple things you should have in mind when you’re designing a new CMS theme.
1) Fix your width
One of the most important things you can do to make your site an easy read is to use an ideal line length. For those who don’t know, line length is defined as the distance between the left most character and the right most character in a block of text. Lines that are too short or too long are uncomfortable to read. There are several different rules that people follow to choose an ideal line length, but in general if you keep your lines to between 60 and 80 characters, you’re in pretty good shape. This is where the problem with fluid or liquid layouts comes in. (more…)
Firefox-3.5 in Ubuntu, and Facebook
Many people have noticed, after upgrading to firefox-3.5 in ubuntu (sudo apt-get install firefox-3.5; sudo ln -sf /usr/bin/firefox-3.5 /usr/bin/firefox) that Facebook stops liking you. Facebook chat insists on running as an external app. The handy dandy menu-bar doesn’t work the way it used to. Well, I noticed this too.
I also noticed, the Firefox-3.5 insists on calling itself Shiretoko, the codename for firefox-3.5, in its title bar. Aha! A clue! The problem here is that the wise old owls at Canonical decided to install firefox-3.5 into the system with a different name. Don’t ask me why… I can’t figure it. I can, however, fix it so that Facebook Chat works again, and here’s how. (more…)
Dating in the modern world
When it comes to dating, there is only one guide you need to read: ISO 8601. The ISO 8601 date/time format looks like this: 2009-07-25T08:29-9. The date portion sorts in a list in date order, and it reads from left to right in order of significance from greatest to least. The time is in 24 hour, and so also sorts correctly, and it’s finally followed by a timezone designator represented as an offset from UTC, or simply Z meaning zero offset, if specifying UTC. If no timezone is given, localtime is assumed. Also, all numbers are zero-padded, again, making sure the whole thing sorts. (more…)