• UX Oxford – User research doesn’t need to be boring

    Luke Canvin

    August’s UX Oxford talk was “Research is boring: How we sell it, do it better, and make better use of it.” from Lee McIvor, a freelance user experience designer and the organiser of lightningUX. As user experience designers, we often come up against the misconception that user research is not important, that a design does not need to be fed by research, but that we can take the “genius” design route, assume that we know what we need to know,[...]

  • Dealing with personal opinion in web design

    Luke Canvin

    Design can be a very subjective matter. All of us have our personal likes and dislikes when it comes to the appearance of the products, tools and websites we use, but it’s important for both the designer and client to set those aside when you’re working on a web design project. Websites are designed for their audience, for the users that the owner is hoping will visit and complete some transaction or task. As part of the user-centred design process,[...]

  • Developing apps for the Microsoft Surface tablet

    Luke Canvin

    Microsoft has just announced its entry into the tablet market, the Surface. Designed and manufactured by Microsoft, Surface will launch this Autumn and comes in two models: A more powerful, expensive, thicker & heavier (13.5mm, 903g) one running Windows 8 Pro on an Intel chipset comparable to the latest ultrabooks. This tablet will be able to run demanding desktop applications such as Office, Photoshop and others. An attachable stylus will also be available for handwriting and annotation. A cheaper, more[...]

  • Set up WordPress in the Cloud on Windows Azure

    Luke Canvin

    “The Cloud” is a term that we use to describe a way of hosting and running websites and applications where we ship off our files and databases to whomever we choose and have all the worries of managing the details of hardware, operating systems, networks and datacentres managed for us by them. This way, the specialists at the cloud provider can focus on providing a high quality, scalable platform, and the customer can focus on developing and deploying their website[...]

  • Debugging inside an SQL Trigger

    Luke Canvin

    Debugging inside an SQL Server Trigger can be incredibly difficult, since the data exists only in the scope of that trigger. However, there are a couple of techniques that can help. Raise an error You can output debug data from the Inserted and Deleted tables by converting it to a string via XML as follows: Declare @ErrorInfo varchar(8000) Set @ErrorInfo = Char(13) + 'Inserted: ' + Char(13) + IsNull ((Select * From Inserted FOR XML PATH('')), '') Set @ErrorInfo =[...]

  • Rank your SQL SELECT results

    Luke Canvin

    The third of a series of posts introducing handy functions built into SQL Server (2005 and above) to help you include interesting metadata about your SELECT statement’s results. Include row numbers in your SQL SELECT results Partition your SQL SELECT results into groups Rank your SQL SELECT results Rank() and Dense_Rank() If you’d like to rank your SQL SELECT result set by one or more factors then you can use Rank() or Dense_Rank(), which are best demonstrated with an example:[...]

  • Include row numbers in your SQL SELECT results

    Luke Canvin

    The first of a series of posts introducing handy functions built into SQL Server (2005 and above) to help you include interesting metadata about your SELECT statement’s results. Row_Number() If you’d like to include the row number of the items as they appear in your SELECT result set then the Row_Number function does exactly that. For example: Select SortName, Row_Number() Over (Order By Forename) As Row From T_Person Where Surname = 'Lawson' Would result in: SortName Row ------------------------- ------ Lawson,[...]

  • Stop serving insecure files over a secure connection

    Luke Canvin

    I’m sure you’ve come across IE7’s warning “This page contains both secure and nonsecure items. Do you want to display the nonsecure items?” Or IE’s more recent warning “Do you want to view only the page content that was delivered securely?” Other browsers have similar messages, which will rightly unnerve cautious internet users. These warnings are the result of the page being secured, delivered over HTTPS, but some of the page’s resources being delivered using HTTP. It’s a simple thing[...]

  • Foreign keys and deletion performance

    Luke Canvin

    Relational databases tend to be furnished with many foreign key constraints. These prevent some types of invalid data from being added to tables – you can think of them as an ASSERT if you’re more familiar with C# and the like. Normally, the performance impact is minimal, based on the following arrangement: The column being referenced by the foreign key will almost always be the primary key of its table. As such it will be indexed so that, when adding[...]

  • TortoiseSVN integrated into Windows 7 Libraries

    Luke Canvin

    TortoiseSVN 1.7 added some Windows integration goodness in the form of integration with Windows 7’s “Libraries” feature. Windows 7 Libraries are a way of giving a name to a group of related folders. You can then search the library, which will look through all the different folders you added to it. The important thing to remember is that all the folders you add to a library will remain in the same physical location. There are a few special, default libraries[...]

  • Display SQL messages instantly, mid-execution

    Luke Canvin

    Sometimes when you are running a long running script or stored procedure it’s nice to know whereabouts it has got to, often we put in print statements for this purpose. The problem is that half the time you won’t see the printed statement until SQL Server decides it can’t buffer anymore and shoves it back to the client (e.g. Management Studio) which may not be until it has finished in some cases. Instead of using print in these situations the[...]

  • Handling JavaScript touch events in HTML5 Canvas

    Luke Canvin

    Right from the start, we wanted to make our application as usable on a tablet as it was on a laptop or desktop computer, which means offering top-notch support for touch as well as mouse-clicks. The only area where this presented a challenge was in allowing a user to use touch to drag and drop in our HTML5 Canvas controls. It was clear how to do this with mouse-clicks; you would bind your mousedown, mousemove and mouseup events to the[...]

  • Backbone, local storage and server synchronization

    Neil Bevis

    Backbone comes with methods for fetching and saving data models to and from the server. However, we want an application that works offline and synchronizes with the server when online. Therefore we require to communicate models both with the server and with  the browser’s local storage. The good news is that a backbone extension “backbone.localstorage.js” provides the communication with local storage, and by simply dropping its .js file. The bad news is that you then cannot communicate between backbone and[...]

  • Tomasz’ final thoughts

    Tomasz Agurkiewicz

    To summarise, I have to say it was a very productive week with many hours spent on development. More than in a normal work week. But I believe it was worth putting in the extra hours to see the final result. CoffeeScript was a very nice discovery and made writing JavaScript really nice. It was hard though to change my mind about some ways things get written but once past that, all was well. Almost. At some point the code[...]