• Dealing with personal opinion in web design

    Luke Canvin Blog Post

    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 Blog Post

    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 Blog Post

    “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 Blog Post

    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 =[...]

  • ContrOCC User Group Meetings – May 2012

    Laura Walton Blog Post

    We were delighted to welcome representatives from some 25 Local Authorities to Oxford this May for two more successful and enjoyable User Groups for ContrOCC , our complete contract management and financial assessment solution for social services. The meetings, one for the Children’s system and one for the Adults’, took place just down the road from our offices at Trinity College. Trinity has some of the most beautiful gardens and buildings in Oxford, and it provided us with a stunning backdrop[...]

  • Oxfordshire Young Enterprise County Finals

    Laura Walton Blog Post

    OCC are very proud to continue our support of Young Enterprise in Oxfordshire. Young Enterprise is the United Kingdom’s largest business and enterprise education charity. Every year they help 250,000 young people learn about business and the world of work in the classroom under the guidance of volunteers from 3,500 companies. This year saw 550 young people aged 15 to 19+ set up 43 teams/companies, from 35 schools and colleges from across the county take part in the Young Enterprise[...]

  • Rank your SQL SELECT results

    Luke Canvin Blog Post

    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:[...]

  • Partition your SQL SELECT results into groups

    Luke Canvin Blog Post

    The second 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 Partition By If you’d like to partition your SELECT statement’s result set into groups, which can be treated separately for things like row-counts or aggregate functions, then the Partition By syntax is perfect. Let’s look at an[...]

  • Include row numbers in your SQL SELECT results

    Luke Canvin Blog Post

    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 Blog Post

    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 Blog Post

    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[...]

  • Improve WordPress page speed without plugins

    Luke Canvin Blog Post

    There are plenty of WordPress plugins out there that promise to improve your page speed in various ways, but the truth is you can do a great deal without resorting to them and just making a few simple but effective changes to your Apache configuration. In fact, this article applies equally to any Apache website, not just WordPress. As we know, keeping our page load times nice and snappy is the key to happy visitors and one of the important[...]

  • TortoiseSVN integrated into Windows 7 Libraries

    Luke Canvin Blog Post

    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 Blog Post

    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[...]