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 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[...]
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[...]
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[...]
Our last full day of Dev Camp was very productive and we completed much of the app’s functionality – it’s pretty satisfying to see the various elements come together and begin functioning nicely across our various test devices. Tomasz and Neil worked together on completing the Questionnaire and Response views, with support for pagination, asynchronous saving to local and remote storage, and a few other nice touches. Mariusz worked on completing the data management for the slider and drag &[...]
With all of the app’s basics in place, day four was pretty much just hard slog working on the nitty gritty. Slowly through the day pieces began to fall into place: The Backbone router was added and the application broken up into separate “pages” when the user clicks through the various entities to complete their questionnaire. The first drafts of the drag and drop controls were added, allowing users to place items on a grid corresponding to some sort of[...]
Our day started at the OCC office with the five of us making a fantastic mess on one of the meeting-room whiteboards getting down our ideas for the domain model of the questionnaire app we are planning to build. After much discussion, especially around the issue of making the application robust vs. doing more interesting things, we settled on our model. Essentially a very simple pairing of Questionnaires as sets of Questions along with their types, and Responses as sets[...]
One of the most important elements of a modern web application is the JavaScript that powers the client-side interactions. It is what gives us AJAX for subtle server interaction; powerful manipulation of the web page’s structure; and attractive animations and effects that users come to expect from high-quality web sites. All that JavaScript can lead to a mess of script files, functions and variables, which becomes harder to manage as the application advances. To combat this a range of JavaScript[...]
Based on our requirements, we batted a few ideas back and forth before settling on a web application that will allow a user to fill in forms/questionnaires/assessments that will continue to work when the user is offline. The form would be made up of data recording objects ranging from simple sliders and data entry fields to complex canvas-based controls, sketchpads and multi-user interactions. This idea gives us a simple way of scaling the scope of what we create to the time we[...]
Starting from a blank slate on day one would be a little daunting and no doubt we’d spend a fair chunk of the week trying to decide what we’d like to build before even getting on to planning how to build it. So we decided to make a list of the technologies we’d like the chance to try out and use that to give us some direction in the sort of app we’ll be building. We came up with the[...]
First, a little introduction might be useful. I’m Luke, a developer and product manager at Oxford Computer Consultants. We build web and software applications for a really wide range of clients all over the UK and further afield – you can take a look at the OCC site if you want to know more. As part of my annual review process, this year I was particularly interested in finding new ways to give our developers a chance to express their[...]