My name is Myles Noton, I am a Web Developer / Designer & Photographer based in London

20 Jun 2009

Now that university is over and I no longer have to spend all my time completing projects and reports I have had a bit more time to complete some of the ongoing things that I have previously not had time to complete. One of those things is this site, which over the past year or so has become in need of updating.

Services

Previously this area of the site was one of the worst. The design didn’t really fit the content or the rest of the site and it was a pretty bland page. With this in mind I have redesigned it to show off my abilities a bit more while trying to keep it fitting in with the rest of the site. You can see the changes on the new look Services page.

services

Events

As I have blogged previously my plans to integrate the “Calendar” into the events system this shouldn’t come as much of a surprise. Much of it was actually re-written to work correctly but it you can now see all of the public events in the events system on a nice little Calendar. This is currently only a V1 implementation, in the future things like will be added to improve it, for example some AJAX features, changes to the design etc.

calendar

Also improved are the individual event information pages, the related photo galleries now work and are tied into the new photography system.

Photography

Like many people I use Flickr to share my photos with anyone who wants to look at them. To make things easier for me I have been using the Flickr API to show the photos on this site as well and up until recently I have been using a script called Satellite to do so. However over the past few months I have been developing my own Flickr gallery that includes many of the things that Satellite lacked, the most important being caching.

On the face of it you probably won’t notice much of a difference since I had already heavily customised the Satellite code base and ripped out the theme engine to add my own, but once you click on one of the galleries you start to really notice.

  1. The tags of each photo are now shown on the gallery pages and can be clicked to view every photo in any gallery with the same tag.
  2. If I’ve also written a blog post about or featuring the gallery that you are viewing, it will show up on the page.
  3. Related albums are also suggested based on a number of criteria.
  4. On each Tag page there is also a list of albums that the tag appears in and also a list of related tags.

Behind the scenes is where most of the sweat and tears went though. Since the whole thing was written from scratch I also decided to implement database caching so that I don’t keep having to request data from the Flickr API on every page view (which made the whole thing very slow to load). Of course all of this is managed through my own administration site so now I also have more control over what happens.

photography

More things are planned but I am going to be working on other things for the time being so for now there won’t be many more changes.

Footer

I have changed the footer design to span across the entire width of the browser window. The previous footer design included a breadcrumb navigation that unfortunately caused more problems that it solved, it only served to propagate errors through the site.

footer

Future

In the coming days I will also be updating the Web section of the site and improving some other areas like the blog for example, I’m sure I will be able to find the time to blog the other improvements that I have made.

This post has been tagged: ,

Following on from my previous post previewing some of the things that I’ve been doing for my final year project I wanted to highlight a recently finished feature that started out a small addition but ended in a nicely polished and useful feature to the project.

The Holiday Planner is part of the Customer Centre, the idea behind it is that customers can choose from a predefined list of activities to do on their holiday, these can be scheduled in either the morning, afternoon or evening. It is a visual representation of the activities that a customer wants to do while they are on holiday, viewed as a calendar. The calendar view makes sure that the customers holiday is always in the centre of the grid, calculating the amount of days needed before and after to fill the 7 x 5 grid.

planner
Holiday Planner Calendar View

The activities can be added by clicking on a day that falls within the customers holiday, these activities can then be edited / deleted by clicking on them and using the AJAX pop-up that appears.

edit
Edit an activity

The main reason the feature exists is to strengthen the business case for the project by providing customers with a value to booking online beyond the convenience of using such a service. If there is any left over time there are a few additions I would like to make, the first one being the ability to export the calendar as a PDF for example.

Of course as a V1 feature there is no ability to customise the activities or add activities beyond the days of the customers holiday, however I think even without these things it provides a benefit to customers who will take the time to use it.

You will probably be seeing a similar idea on my Events area sometime in the future once I have the time to integrate and modify the code.

This post has been tagged: ,

Note: The site is still under development and some of the things shown in this post may be incomplete and unpolished!

Part of my Computer Science degree involves the design, implementation and documentation of a project of our choosing. As most of my projects seem to be along the same lines it only makes sense to keep it that way.

The site is a completely different site to the one that is currently online. I decided move away from the overload of photos and simply move towards a more clean and commercial style rather than a mere showcase for photos.

home
Homepage

Now a simple site obviously isn’t good enough for a degree project, even with some Google Maps integration and the implementation of the data provided by my own custom Event API it still needs more, a lot more.

So the site also includes an online booking system with PayPal integration for payment processing, availability checking and suggestion engine to suggest alternate accommodation if the one they choose is unavailable. Not only that but it also offer a Customer Centre to customers who book a holiday, allowing them to manage their booking, generate a parking permit for the duration of their holiday, create customisable lists of things they need to bring with them and a holiday planner so they can plan their holiday. Of course, all this is protected by the membership and login system that is also used on this site (one of the advantages of writing on Object Orientated code).

my
Customer Centre

And of course on top of all that there is a backend administration system that allows the owners of the business to manage bookings, create campaigns, view detailed reports on key aspects of the site to analyse the effectiveness of key areas and generally mange the entire site.

I’m sure I will share more once it is fully complete.

This post has been tagged: ,
8 Feb 2009

There comes a time when doing a standard query just isn’t enough, you start out with an idea in your head and continue to develop it while looking at the feasibility, as this thought process continues you realise that there is a lot more than meets the eye, this isn’t something that can be done in one line of code, it requires a more intricate solution, and here was mine…

SELECT p.guid, p.post_date, p.post_title, p.post_excerpt, p.post_status, p.post_type, p.post_title, p.ID, rel.object_id, rel.term_taxonomy_id, tax.term_taxonomy_id, tax.term_id, t.name, t.term_id
FROM community.wp_posts p, community.wp_terms t, community.wp_term_relationships rel, community.wp_term_taxonomy tax
WHERE rel.object_id = p.ID
AND rel.term_taxonomy_id = tax.term_taxonomy_id
AND tax.term_id = t.term_id
AND t.name = '$event_category'
LIMIT 6

A 4 table query against the WordPress database pulling out posts with certain tags for use on the Events Pages ”Related Blog Posts” Section. Took me a while to get my head around it, but it worked in the end!

This post has been tagged: ,

Continuing with the post detailing some of the changes that I have been making to my site here is another one!

Performance Improvements

You may have noticed that the homepage has been changed slightly, one of the things that has been changed is the latest blog posts are no longer being pulled down from my blog RSS feed, instead I am pulling the data directly from the wordpress database, and as a result the homepage (and every other page with the footer) has seen a significant performance increase, which is a very welcome improvement.

Login Service

Some of you may have seen the new login design, although the old one did what it was supposed to it didn’t really do everything that I wanted it to do, and a better more versatile layout was needed.

In a move to improve the login experience I have added the ability for the system to remember what page you were on before you logged in and will then return you to that page once the login process is complete. One thing that I have left out from the revision is the “stay logged in” feature that existed in part before, I decided that unless there was a public out-cry, the hour idle time is sufficient, since for every page refresh the cookie resets the expiration time back to an hour.

Events API

The events API is almost completed, currently all of the functions to get the event data have been implemented and can be seen at the Events API Documentation, more improvements will come over time, for instance the ability to add events to the database (Something that I’m still thinking about from a security perspective).

Future Upgrades

In the coming 6 months I am planning quite a few updates. The first of which will be a site refresh (whic has started already), nothing too drastic, the overall design will be the same, but there will be improvements to the layout of the pages and more improvements to the backend system.

Most of the sections of the site will encompass the idea of Landing pages, something that has been on my list for a while, and something that I partially implemented with the Services and Events sections, although there will need to be more improvements. Along with the better landing page approach will be some integration work with other sections on the site, like the blog or photography section, for example, an event listing would have photos from last year displayed on the same page as well as related blog posts and other things like that. This will hopefully integrate the other previously standalone sections into each other and hopefully make for a better visiting experience.

The photography section is currently powered by the Flickr API and Satellite although heavily customised, one feature I would like to implement is some sort of caching on the data that it pulls down from Flickr, each time the page loads the Flickr API is called and the photos / data is downloaded, this of course isn’t a very good idea from a performance perspective, so I would like to work on this area to improve the performance.

WordPress Integration is another item on the list, this would be in the form of registering and login operations, so when a new account is created, a wordpress account is also inititiated and when a user signs in they are automatically logged in to wordpress too.

This post has been tagged: ,
17 Oct 2008

Following on from my previous post I wanted to highlight some of the other things I am attempting to do with this site.

The events “system” was implemented over a year ago now, originally it was a way for me and Lloyd to keep track of the various events that we wanted to attend and get photographs of - a web version was the preferred way of doing it rather than the simple spreadsheet that we used for a few weeks but soon got frustrated with.

The original version of the events system was just a single table with the basic information about the events we were interested in and was then simply displayed on a page, the information was merely things like name, location, date / time and URL.

Soon enough more and more things were added, the most notable additions were an email notification system (which emails us when the event is 7 days away) and more recently the integration with my main site. The data being held in the table grew and the system is currently split into 2 different areas, a “public” view, which shows only the events I want to make public on the Events page and only displays basic information about the event, and a “private” version that shows every event and all of the information associated with it, for example if there are tickets required or any notes that I have added about it for personal use – This is of course integrated with my new login system depending on what user level your account is.

As with before, this system was built in stages over time and with differing techniques as I learnt more and more about PHP development (It was a mix of procedural PHP and functional PHP so there was business logic and other code all over the place), this became a problem when I needed to integrate the system with other projects rather than just my site, because there was no common structure and without recreating the system on a different server (which wouldn’t be a very manageable solution to the problem, and would only have served to negate the issue) it was practically impossible to use for anything else, in short it wasn’t written in a reusable way.

So with this in mind it became my aim to bring the whole thing into the Object Orientated world and from there create an API for my own use (and others if they wanted) to pull data out by creating a  REST Web Service and returning the data using standard XML.


An example of the XML output

Now that I have created the API I am free to use the data on any system simply by calling the API and parsing the XML data returned, and all in a very easy and manageable way, this means that not only can I use the data for other sites I make if required but I can also use it for my final year project, a double bonus if you will.

A bit more information about the API can be found at www.mylesnoton.com/services/api/ documentation will be added in the near future.

It is unlikely that anyone apart from me will want to use the API, but it will help me a huge amount and if one person finds it as useful as I will then it was worth it!

This post has been tagged: ,