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 →

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 →

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 →