As you probably know by now, we are using Couchbase for caching data on our web site. However Couchbase contains support for not just cache data, but also for persistent data that is stored on disk using a NoSQL architecture. Once we were actively using Couchbase for our caching tier, the next step was to use it for storing data. The first thing we decided to move to Couchbase, was our session data, which up until that point had been stored in MySQL.

Continue Reading →

In my previous blog post I discussed how we converted from a file based caching solution to one based on Couchbase. In this blog post I am going discuss the system we built to group cache entries together into logical groups, and the mechanism used to quickly invalidate all cache entries for a particular group using sentinels rather than lists.
Continue Reading →

As mentioned in my previous blog post, we had been having site performance problems for a while now. The previous blog post detailed how we solved the performance problems we had at night when our nighty scripts would run, but that was not the final solution. We still had more performance problems that would crop up during the day, and this blog post details the steps we took to finally resolve the problem for good.
Continue Reading →

As anyone who developers software for a living knows, MySQL is a popular Open Source, high performance database system that is used by millions of active web sites every day. Our web site has been running on MySQL since the day it went live, and until recently the performance of MySQL has been excellent. However a number of things happened over the last 12 months that caused our web site to have noticeable performance problems, most of which was caused by the growth in the size of the database. So for the last 12 months we have been on the hunt to solve the performance problems.
Continue Reading →

Recently as we spent a lot of time trying to sort out performance issues on our web site, we spent a lot of time going over our caching system and working to improve it. Our old caching system was originally written to use the file system, which actually worked really well when the site used to run under Linux. But it was beginning to show it’s age and was really expensive to maintain, so we started looking for alternative. I looked at a number of different options, and had read a lot about memcached, but alas I could not find any good memcached implementations for Windows which I needed for our development and testing. That is until I came across Couchbase while I was researching the option of using NoSQL for parts of our web site for the future. Not only is Couchbase a super fast NoSQL database, it is also entirely memcached compatible so makes is a great commercial memcached implementation. And it runs on Windows!


Continue Reading →

Anyone who has written a web page has probably had to work out what character encoding to use for their web site, which is communicated from the web server to the browser using either the charset field in the HTML content meta tag, or the Content-Type header. Most new web sites are developed with the UTF-8 character set encoding as it can be used to represent any character possible (including Kanji, Chinese, Arabic etc), but many legacy web sites deal with an extended ASCII character set commonly called latin1. Our web site is one of those web sites that has always used the latin1 character set, and more importantly, all our database tables are encoded in that same character set. Up until this past week, I had always worked under the assumption that the ISO-8859-1 character set was in fact the same as latin1, but in the case of MySQL we found out this NOT to be the case, even though all browsers will happily display a page encoded in ISO-8859-1 with characters that are not technically legal for that encoding.
Continue Reading →

There is a common rally cry right now amongst local businesses to convince customers to spend their money locally, rather than spending in a national chain store, or online. Movements such as the 3/50 project and “Think. Shop. Buy. Local” all point out that spending money in local businesses will improve your local economy. As a business owner that has both a local bricks and mortar retail hobby shop, and a large online retail hobby shop, I know what it takes to run both a local business and an online business.
Continue Reading →

Steven J. Vaughan-Nichols, a blogger on ZDNet wrote on March 23rd about an issue supposedly present on the new 2012 model Apple iPad (aka iPad 3) where the battery status indicator on the iPad indicates that the battery is fully charged when in fact it is not. He says:

An expert finds that when your new iPad tells you that it’s fully-charged, it’s not even close to being charged up. Are we looking at an Apple iPad “Batterygate?”

The core issue they identified is that “the power actually drawn by the AC Adapter and first found that the new iPad continues to charge for up to 1 hour after it claims to reach 100%. This affects the battery run time if you stop charging when it says 100%.” The article goes on to discuss the issue and wonders why the new iPad lies about the charge status, when the battery is not yet fully charged.
Continue Reading →

The software that runs our site originally started out based on an Open Source project called osCommerce, which is written in PHP. The back end database has always been MySQL, so all our initial code was originally written in PHP. As the business grew, we quickly realized that we needed some back end software that ran natively on the desktop, rather than in the browser as we needed to integrate with barcode scanners, label printers and other hardware devices, which simply cannot be done easily from a web site running in a browser. To build the software, given my background in device driver development I naturally decided to use C++ on the desktop and write the programs with a cross platform user interface called Qt. So off I went and started writing a C++ desktop application that would communicate with our PHP based web server running on Linux.

Continue Reading →

Welcome to my new blog! I have always wanted a blog of my own, so I could share my opinions and views with the world on topics that range from Customer Service to Computer Programming and even R/C Racing. Basically anything that relates to my business whether it is on the technical and computer programming side or on the business side.

Continue Reading →