Archive | Web Design RSS feed for this section

Future of Web Apps

We had a great time at the Future of Web Apps conference in London this week. It was a great opportunity to meet up with some old colleagues and hear from some of the greatest people in web design and development right now.

As mentioned in a previous article, we will be putting together a full break down of some of the best sessions that are relevant to both ourselves and our clients over the coming weeks. We’re working on putting this all together as I type, and so far some clear winners include the sessions on:

  • Writing Software for Humans
  • How to destroy the web
  • The Mobile Revolution
  • Pushing the boundaries without breaking the web
  • Designing an elegant Mobile User Experience across multiple devices and platforms.

We’re really excited about these things and more, and look forward to sharing more with you soon!

FOWA London Conference 2012

We’re off to the Future of Web Apps conference next week, and we’re getting excited about it! It takes a certain group of people to be interested in this stuff I suppose, but that’s definitely us, we’re proud to say. We’ll be learning all about all the latest technologies and techniques in the web development world.

We’ll cover CSS, HTML5, Mobile web development options, responsive web design, how the changing face of social media is changing how web sites should be focused and how we can migrate traditional desktop software onto the web. There will be a whole lot of news coming out of this conference and we’ll be sharing our views on each aspect right here with all of you, and directly with our new and existing clients.

Stay tuned…

PHP on EC2 (AWS) with Multi A-Z and Multi Region (Part 1)

Looking for Part 2? http://www.headenergy.co.uk/2012/10/php-on-ec2-aws-with-multi-a-z-and-multi-region-part-2
Looking for Part 3? See: http://www.headenergy.co.uk/2012/11/php-on-ec2-aws-with-multi-a-z-and-multi-region-part-3
Looking for Part 4? See: http://www.headenergy.co.uk/2012/11/php-on-ec2-aws-with-multi-a-z-and-multi-region-part-4
 

As part of my work with a large client, we are finding ourselves implementing and adapting an open source PHP CMS as part of an ongoing project to migrate existing content systems onto a new platform. The platform (Concrete5) uses MySQL as it’s data store and so we know we require a MySQL database infrastructure that is compatible with Concrete5 but also meets their own requirements for a scalable, robust and resilient infrastructure which can support their expected load and traffic levels. Concrete5 does come with a robust caching system, but due to the shear dynamicism of the website coupled with the low cost approach to design, we’re unable to eagerly scaffold the cache in a similar way to Basecamp (interesting post about that here), at least not without a much larger project lifecycle.

So,  lets move on to what we know we want:

  • Multi A-Z, Multi-Region AWS (Amazon Web Services) deployment that will be resilient to entire region failure worldwide.
  • Horizontally scaleable, preferably taking advantage of the elastic properties of EC2. This system also needs to be scalable within the initially UK focused userbase, but also to allow geographic disparate environments (e.g. the Americas and/or Asia) which would still be updated from the UK administrators and be required to share data between all locales, preferably without the enormously costly (and not necessarily well fitting) Akamai family of services.
  • Be compatible with a PHP CMS that is unable to split read/write database queries (in this case, the rather aged and questionable PHP ADODB abstraction layer).
  • Provide a single synchronous file mount for all nodes in any region.
  • The system will support up to an anticipated concurrency level of 250 database connections at any one time.
  • Resiliant, the database layer needs to be robust, ensuring that in the event of a database server going offline that access to the data is not limited. The Web Servers need to automatically failover to a working node without users noticing.

There is some light in these demanding (to say the least) requirements, in that although all end users might require database writes for registration, form filling or survey completion in addition to the requirements of the site administrators to update content, the nature of use is predominately a read-heavy environment.

Analysis of Methods

There are a number of key problems in our requirements that are driving us away from native mysql replication. The following ideas were considered but discounted:

Native MySQL Replication

Native MySQL replication is very easy to set up and does offer a fast replication mechanism, it has two key drawbacks in our context:

  1. It is asyncronous
  2. With more than two servers in the environment, reads and writes from the application layer would need to be split such that writes only go to the master(s). It’s not practical to modify the core of an open-source CMS to carry this separation out. Furthermore, the often touted solution of MySQL Proxy by the community isn’t mature and production ready (- and doesn’t appear as though it ever will be thanks to Oracle politics) and would introduce a fairly inflexible single point of failure, thereby increasing an already slightly complex architecture a little too much for my inner calm. PHP’s own mysqlnd-ms seems to be another possibility with an added bonus of being local to the box, but again amounts to little more than a check for “SELECT” at the beginning of outgoing statements.

Native MySQL Cluster

MySQL cluster offers a clustering technology which can be described, simply, as RAID for a database. While it is a fast, synchronous clustering technology which supports writes on all nodes, it also has a number of limitations which excludes it for consideration.

  1. It requires the use of the NDB cluster engine for all tables in the cluster.
  2. The maximum size for a table row is 14 kilobytes, not counting BLOB values.
  3. The NDBCLUSTER engine does not support foreign key constraints. As with MyISAM tables, if these are specified in a CREATE TABLE or ALTER TABLE statement, they are ignored.
  4. Fulltext searching is not supported.
  5. Indexes exist in memory on each cluster node, requiring signifcantly more RAM than on a non-cluster server with the same dataset.

Tungsten Replicator

While Tungsten replicator can provide a synchronous and parallel replication environment, it still requires reads and writes to be split when the cluster has more than 2 servers.

The recommendation

The recommended technology which meets all requirements is Galera Cluser from Codership. A follow up blog post will be written to discuss why in the next few days, stay tuned!

Concrete 5 – A Review

With the latest release (5.6) of Concrete5 fresh out of the gates, I thought I’d share my thoughts about this CMS, particularly as we’ve been choosing this as a foundation for many of our recent projects, including Cambridge University Press’s soon to be new website. I’ll go into more detail in the weeks that follow, but I consider this underdog to be one of the strongest of the pack in PHP, and rightfully should take it’s place amongst the “Big Three” alternatives.

Strengths:

User Interface is extremely intuitive and all levels of expertise can take to editing the site very easily, ranging from the IT illiterate to the most advanced programmer.

There’s already a large and helpful user base, and a constantly growing marketplace. E-commerce add-ons are simply a joy to use, and plenty of free themes and “blocks” can be installed at the click of a button.

Unparalleled support from the developers, even the CEO of the Concrete 5 outfit is regularly pitching in when he feels there’s something important being discussed in the community.

Fantastic permission granularity, allowing detailed control of users.

Enterprise grade work-flow management system is now built in.

A simple to understand structure, that allows even novice programmers to get started without much delay, along with a good MVC architecture.

Good inbuilt functionality, along with a fast search engine.

Search Engine Optimization build in.

Free translation packages allow you to provide a localized site relatively easily.

Great cache integration.

Weaknesses:

There are bugs still appearing in the releases more regularly than we’d like to see.

The system is flexible at a cost, without consideration and understanding for the structure, one could end up building a slow site that attempts to join far too many tables during the course of a page render.

Collections (the name given to Pages on your site) are very expensive to initialize too. We’re breaking into SQL a little more often than we’d expect, simply to avoid penalties on loading full collections on larger operations.

Add-ons can be costly when compared with alternative CMS’s.

Listing Pages, an opening killer feature in the system, can’t actually be done so over custom attribute values out of the box. SQL or the Page List Plus block is mandatory as you get more exotic with your needs.

I’m not sure this is a weakness, but the developers seem to have a genuinely reasonable attitude of sacrificing performance for ease of use and extendibility, but as your site gets large, you will need to compensate more and more. That said, Concrete5 has been set up in a well performing manner with millions of pages inside the system, so don’t take that too much to heart.

Tune in over the coming months as I share my experiences further, but as of now, I really am excited to be working with this system for our clients.

MONOTONE WordPress theme

We’re working on our first premium wordpress theme this week. Called MONOTONE, this theme is great for building a simple blog and portfolio. The idea behind this design is to allow the artwork and imagery of your site to do the talking. Several different customisations will allow you to differentiate your site and through careful image selection, your site will really shine.

Here are two variants for the home page of your site:

WordPress Themes

Working with James Church designs, we are starting to build customisable WordPress themes/templates to provide an entry level package for clients who don’t want the undertake a full design project. These templates will have plenty of options for colours, layout, fonts etc. These options will add up to a huge variety of designs that can be updated as the client sees fit.

If you want to here more about these upcoming designs, please don’t hesitate to contact us.

Norwich Based Elite Teaching Goes Live

We’ve launched a new site for Norwich Based EliteTeaching, you can read more in our website design portfolio.

Why I do Web Design

Just read a great post over at 37Signals about career progression. Got me thinking about how we got here in the web design world. Like Jason, I can’t remember exactly where my interest in software design came from, but from the age of about 15 I knew that I wanted to be a software designer. Somewhere along the way, a few drunken nights at university got me an a flat mate working on a new website for the University of East Anglia, right here in Norwich. The idea was simple, a website for all the students to sign in and share ideas, thoughts, reviews of all sorts of student related things, and more. This turned out to be a great success, and after just a few short months we found ourselves nominated for the Guardian Media Awards for best student website….

…We didn’t win, but we still had a lot of fun running the site. This was back in 2002, and we shut the site down in 2004 as we finished our studies and needed to go get a real job. Little did we know, if we stuck around a few more months, we would have learned about this thing called “social media” and who knows where that site would be now?

I digress, the point is, this site got me hooked, and is pretty much the reason I have ended up working with websites rather than playing with databases in some dark cellar like some of my old class mates!

Why are you where you are now?