Blog

Tech

Tech
What is npx? How is it useful and why should you care? Find out how you can use npx to run global npm packages without having them installed.
Tech
Key lessons I took from Eric Evans' book "Domain Driven Design". A brief summary of the book's concepts and why you should read it.
Tech
A short tour of different museums and exhibitions that have used technology to support their displays.
Tech
Mock the back-end of your web application, using Node.js, to make developing and testing the front-end easier.
Tech
Apache Curator is a client side library providing convenience and out of the box algorithms when working with Apache Zookeeper. In this blog we take a quick look at how to implement a leadership election.
Tech
Following from my recent article on Machine Learning with Scikit Learn, I decided to experiment with the library that is most loved by developers today: TensorFlow. Similar to Scikit Learn, this post walks through a simple example of TensorFlow to categorise handwritten digits.
Tech
In August 2017 a typosquatting attack was discovered in the npm repository with the intention of stealing developers' credentials. This post explains the attack and my efforts to search for similar active attacks.
Tech
In this blog post I'll be exploring Lexical Scope in JavaScript and answering the question "What is Closure?"
Tech
I found splitting JavaScript applications into separate packages within a single source tree difficult, until I found a tool called Lerna.
Tech
I describe setting up feature branch deployments with Gitlab's Review Apps and AWS Elastic Beanstalk. This gives a fairly straightforward means of setting up automated deployment of PR branches, but I discuss some issues I encountered along the way.
Tech
When is it time to make something a generic re-usable class? And how do you manage the additional complexity of a generic solution? A potential solution lies in an incremental approach.
Tech
Machine learning (ML) has become an increasingly popular field of Computer Science. In the past few years I've found myself working with ML to categorise large sets of data, and Scikit Learn for Python has proved itself to be exceptionally good for the task. This post walks through a simple example of Scikit Learn to categorise handwritten digits.
Tech
Conflicts sometimes arise when merging two npm-shrinkwrap.json files from different source control branches. Git might be able to solve some of these - but should you let it, and what should you do if it can't?
Tech
With an objective of building some docker images on cloud CI infrastructure I introduce one build-template sledgehammer I've been using recently, multi-stage docker builds running in docker-in-docker host container, with examples of AWS CodeBuild and Gitlab CI, and musing on other options.
Tech
In highly-visual, rapidly-updating, multi-window, buzzword-laden apps performance is a big concern. With WebWorkers, SharedWorkers and ServiceWorkers we have a number of options for moving complex scripting tasks off the critical path. However, rendering can be more of a dark art. In this post I'll dig into how one browser (Chromium) uses renderer processes and how you can use this knowledge to your advantage.
Tech
Java Optional has been around for a while now. It is a pity that this language feature is not used more often by developers. This is a simple demonstration of how to use it correctly.
Tech
First introduced to me as “upside-down recursion”, dynamic programming is a technique used to write efficient algorithms to solve a wide range of problems, often replacing recursive approaches. Having met many examples in the past few years, this post explores three applications I’ve seen for the benefit of those new to the technique.
Tech
A quick look at Apache Storm with a short word count walk-through example using a Redis Database.
Tech
If you're a fan of Redux Saga then you will have noticed the abundance of libraries to assist testing your sagas. This post takes an in-depth look into the different approaches to testing sagas, describing where five popular testing libraries fit into these approaches.
Tech
In this post, I create an interactive map of relative changes in currency strength, using D3's geographic projections, world map data, and a currency exchange API.
Tech
I show a simple use of the PostGIS Postgres database extension to combine route data from Strava and postcode data.
Tech
AWS recently announced a couple of new container services, EKS and Fargate, and I'll give a brief overview, a "first experience" walkthrough of Fargate, and discuss when you might want to choose it.
Tech
Over the past couple of months I’ve been exploring the potential of WebAssembly. I wanted to try my hand at creating a more complex WebAssembly application, which is why I’ve been spending my evenings working on a CHIP-8 emulator ... and learning Rust!
Tech
As interns at the Newcastle office we were tasked with creating an interactive desk directory to allow new employees to better acquaint themselves with their building and colleagues, with the speculative goal of replacing the company-wide internal phone directory. The original brief specified we should present a graphical view of...
Tech
A few weeks ago the new Bristol Pound mobile app was launched, allowing users of this local currency to find vendors, view transactions and make payments on both iOS and Android. This post describes our experience of writing this application using React Native.
Tech
I'll be taking a first look at Polymer 3.0, including how to integrate other technologies, as well as comparing it with other front-end frameworks.
Tech
A common misconception I have frequently observed in organisations that are adopting agile is around using story points for planning, forecasting and progress tracking. Long- and mid-term planning in agile can have devastating effects on teams, which is why I’d like to shed some light on it and talk about how the situation can be tackled in an agile way providing much better results for the project and the organisation itself.
Tech
A quick guide to the available source map options in webpack, and the considerations for choosing one in different scenarios.
Tech
In this blog post I'll take a look at a real-world application of WebAssembly (WASM), the re-implementation of D3 force layout. The end result is a drop-in replacement for the D3 APIs, compiled to WASM using AssemblyScript (TypeScript).
Tech
In this blog post I'll explore the various different ways you can create WebAssembly modules, using Emscripten, LLVM and AssemblyScript, comparing the tooling and performance.
Tech
JUnit 5 has been available for a few weeks now so in this post I will investigate setting it up and migrating from JUnit 4 then explore some of the new features available.
Tech
Creating asynchronous functions that are recursive can be a bit of a challenge. This blog post takes a look at various different approaches, including callbacks and promises, and ultimately demonstrates how async functions result in a much simpler and cleaner solution.
Tech
Jest is a testing framework that provides the testing tools we now expect to see in a modern software project. It provides fast parallelised test running, with a familiar assertion syntax, built in code coverage, Snapshots and more. In this post, I'll be investigating Snapshots and laying out some thoughts!
Tech
This post demonstrates one way to add Selenium e2e tests to a `create-react-app` generated app. It uses Jest as the test runner, embraces modern JavaScript features (including async/await, modules, fat-arrow functions, templated strings, etc.) and attempts to ensure that modern editors are able to provide useful auto-complete suggestions when authoring tests.
Tech
Market profile charts are relatively complicated and specialised charts used by financial traders. This blog post looks at how to render a market profile chart using D3.
Tech
A few months ago we contributed a project, ContainerJS, to the Symphony Software Foundation, an organization that fosters open source and collaboration within financial services. The Foundation has various legal requirements that must be adhered to, including that all contributors (i.e. committers) sign a Contributor License Agreement (CLA). Unfortunately as...
Tech
Place names in UK and Ireland are very much influenced by their surroundings, with endings such as -hill, -ford, and -wood quite clearly referencing local geography. This blog post uses the new NDJSON command line tools for processing, transforming and joining datasets to create an optimised visualisation.
Tech
A walkthrough of setting up a WebPack 2 based build process for creating an Electron application in TypeScript, including configuring a build in Visual Studio Team Services.
Tech
Does npm 5 deprecate yarn? With promises of increased speed and consistent package versions yarn has a new competitor, but in this post I'll show the reasons for why, for the time being, I'll be sticking with yarn.
Tech
Following on from my previous blog post where I created a simple particle simulation using Go, I looked at adding some complexity.
Tech
Using two of the currently most popular web frameworks I'll demonstrate how to create semantic looking code.
Tech
Theming an application is a concern for many organisations and products. In this post I'll present a simple way to manage branding using current tooling.
Tech
This post takes a look at the recently launched GitHub App platform, that allows developers to create integrations and services which can be shared with others. The post describes the development of gifbot, a simple and fun App!
Tech
This blog post describes the process of creating a GitHub bot, hosted as an Amazon Web Services (AWS) Lambda function, that performs various checks on pull requests.
Tech
Two years ago I wrote about TypeScript compiler APIs. There has recently been further progress in this area and I explore the newly exposed API in TypeScript 2.3.
Tech
Following on from making a simple particle simulation in Go, I decided to try and implement a simple set of web services too.
Tech
Small multiples repeat the same basic chart, typically with the same axes, to display different slices of a dataset. They are an excellent way of showing rich multi-dimensional data, without becoming a dense mess of lines. This post looks at how to implement small multiples with D3 and d3fc.
Tech
Your store is the source of truth... as long as it makes sense. A concrete example integrating Redux with React Router
Tech
How I used Go to create a web app that would help me practice violin scales.
Tech
I downloaded an analysed the training data for 1,000 athlete who ran the London Marathon in 2016. From this data I've learnt that people put in ~30% less mileage than popular plans suggest, Sunday mornings are a firm favourite for long runs, and that Saturday morning parkruns are very popular!
Tech
Level-up the state is perhaps the most useful React pattern. Apply it to your dependencies and you can get many benefits, like better tests, flow control and idempotent routes.
Tech
My first thoughts and impressions of version 11 of Alteryx.
Tech
I recently downloaded run data for the 7,190 athletes who recorded their London Marathon on Strava, a popular platform for runners and cyclists. This blog post visualises and analyses the data in various interesting ways.
Tech
Given the complexity of digital transformation, how does anyone faced with a responsibility to deliver get to grips with the issues and decide where to start?
Tech
When creating d3 visualisations it's common to want some form of responsive layout. However, SVG and canvas don't provide a native way to do this. Most examples found online either use fixed dimensions or resort to some form of manual layout to achieve the required effect. This post introduces an alternative approach using CSS and custom elements.
Tech
In this post I will talk about Consumer Driven Contracts in Microservices architectures. I will also give an example of how to use Pact in a modern JavaScript application.
Tech
Recreating the data used for the Guardian's Unaffordable Country visualisation in Apache Spark.
Tech
A few days ago the roadmap for future Angular releases, starting with v.4 in March 2017, was unveiled. It once again made me re-visit my personal doubts about semantic versioning, the underlying issue being that it is great for computers, but bad for humans. Considering that people are the primary...
Tech
For the past four years I’ve been an author on Ray Wenderlich’s website which provides tutorials for iOS developers. I don’t do much native iOS development these days, However, I do like to keep my skills up to date. As part of this team I sometimes find myself being assigned...
Tech
We’ve recently been investigating uses for the blockchain and as part of this, we’ve developed our own system called Scottcoin. This post will explore the core components of the Bitcoin system, how a transaction goes through it, how our internal version differs and what advantages and disadvantages it brings.
Tech
In this post, I take a look at writing a simple particle simulation as a way of learning some of the basics of the Go language.
Tech
Awareness of Bitcoin has steadily grown, but understanding of it less so. Allow us to shed some light.
Tech
A practical look into higher order components and what they bring to the table, along with a general discussion of code reuse in React
Tech
My highlights from attending the Alteryx Inspire Europe conference, hosted in London.
Tech
In this article, I take a look at writing a watchface for Pebble using their newly released JavaScript SDK.
Tech
If you look up the MVC pattern on the web you can easily find definitions that differ and contradict each other. In this post I'll look at some definitions of MVC and consider what the differences mean for applying the pattern in practice.
Tech
This blog describes my experience of upgrading a basic RESTful API from .NET Core RC1 to .NET Core 1.0, and using Docker to host it on Linux. Docker is completely new to me so I'll give my thoughts as a noob.
Tech
Migrating a Knockout project to a webpack redux application using Riot, and why I didn't use React.
Tech
My highlights from the inaugural JSConf.IS 2016 hosted at Harpa, Reykjavik.
Tech
This post describes my entry into one of the hack events at JSConf.IS which challenged us to take control of the Northern Lights. It hopefully also serves as a nice introduction to creating visualisations with d3-force.
Tech
An overview of the Edinburgh Interns summer project: A react application to filter and search interview questions stored on Google Drive
Tech
This post quickly introduces data join before moving on to some of the edge cases we've run into when building components on top of data join. It covers how you can solve them with vanilla D3 and why you might find our d3fc-data-join component useful.
Tech
A short introduction to Java enum capabilities followed by concrete examples of good use. How enums help with implementing lazy loaded singleton, following open/closed principle and using strategy pattern.
Tech
Euro 2016 may have been a little disappointing and flat, but the same can’t be said for the Scott Logic Euro 2016 table football tournament...
Tech
Back in January, I blogged about using the Web Audio API with D3, creating an app using Knockout and RequireJS. I’ve since expanded on that application, migrating it to Electron and adding new functionality along the way – like MP3 tag extraction and recursive folder searching. Migrating to Electron In...
Tech
A quick walk through ES6 iterators and iterables. It covers extending d3fc’s random data component to implement the required protocols and how this can lead to greater interoperability with utility libraries like RxJS/IxJS. The d3fc-random-data stochastic generator d3fc contains a component for generating random data series based on stochastic processes....
Tech
I’ve recently been playing around with the JavaScript Abstract Syntax Trees (AST), with the aim of transforming some JavaScript code into various other languages (Java, C#, Objective-C). As part of my research, I looked at how Babel performs AST transforms. If you’re not familiar with Babel, and the plugins which...
Tech
This blog post shares a few quick tips and patterns that I've been using to structure JavaScript promises; keeping them clean, simple and readable.
Tech
It’s been a couple of months since my first post about the security of Electron. With v1.0 having recently been released I felt it was time for a a fresh look
Tech
For the past few weeks, Laurie Collingwood and myself have been working on a prototype banking app with an animated graph. In this post we’ll discuss some of what we’ve learned during the project and talk generally about animation with HTML5 canvas. Designed by Scott Logic’s UX team, the app...
Tech
Being a software developer requires constantly improving ones knowledge. This is a short list of books that made the largest impact on me as Java developer. I hope that you too will find here something that will take you to the next level!
Tech
The redux pattern provides a simple (and strict) pattern for managing state; a single store holds the state while a reducer applies actions, evolving the application state. As your app becomes more complex, you can split up your reducer into separate functions, however, what if you have multiple instances of...
Tech
In this post, we discuss design and implementation choices for account and session management features, and how these trade off against usability and other goals.
Tech
Inspired by Colin’s article on building an expenses app with the Mondo API, I wanted to create something to make use of the webhook API which fires in real-time (ish) whenever a transaction happens. In this post I’ll cover subscribing to the Mondo webhook, creating the glue code as an...
Tech
This post uses React to show how we can use features from functional programming in everyday JavaScript, and integrates RxJS to show how these approaches are common across many frameworks today.
Tech
Kotlin is the latest JVM-targeted language to see a 1.0.0 release. Having experimented with it for a short while I thought I would capture my experience and point out a few gotchas.
Tech
Over the past several years there has been a lot of talk about cryptocurrencies, such as bitcoin, and the blockchain technology that underpins them. However it can be difficult to understand how the blockchain actually works in practice, and why it is such a clever method for currency exchange. Two...
Tech
Mondo Bank has recently moved into public Beta, sending out 1,000 cards to trial customers each week. I received my Beta card a few days ago, and have been using it ever since. This blog post takes a quick look at the Mondo API and how I used it to automate expense claims!
Tech
Along with the modularisation of code, D3 version 4 also brings new support for canvas drawing, thanks to the d3-path package introduced in version 4. There are performance advantages to using canvas over svg for drawing complex charts (however canvas is not necessarily always better). You can read more about...
Tech
This post introduces a new feature of D3 version 4: the d3-path package. d3-path is an abstraction over SVG path creation which uses the canvas element’s Context2D interface. Previously creating path generation code involved a lot of concatenating SVG path commands like M0,0 or L2,2, and the somewhat more cryptic...
Tech
A brief look at the current state of application security in Electron
Tech
I recently created a site which I’m proud to say now hosts an impressive collection of tweet-sized D3 creations from the hugely creative people of the internet. In this post I’ll talk through deconstructing one or two of those creations with the aim of giving any aspiring artists a starting...
Tech
Making the jump to fully modularized applications in javascript is now incredibly easy with ES6 modules and javascript package manager (jspm). We'll take a look at the refreshing simplicity in the jspm workflow and how it goes about achieiving this.
Tech
In this post, we discuss cross site scripting attacks against web apps, and how to defend against them.
Tech
The next version of D3, the data visualisation library, is on the way. As we maintain D3FC (a charting library built on top of D3) we want to stay on top of those changes, to make sure that the library makes appropriate use of any new functionality and to embrace...
Tech
This post discusses building a modern single page marketing site using a static site generator
Tech
Swift Bond is a binding framework that removes the mundane task of wiring up your UI. In this tutorial, which was originally published on Ray Wenderlich's website, I introduce the concepts of Bond and demonstrate how to use it to rapidly build an iOS app.
Tech
In this post, we discuss SQL and other injection attacks against web apps, and how to defend against them.
Tech
If you've used React and Flux, you'll know how powerful this combination is when building single page applications. But how practical is it when building truly large scale applications with multiple sections?.
Tech
In this post, the causes, effects and mitigations of Man in the Middle attacks against web apps are discussed.
Tech
Hot-reloading UI is a hot topic at the moment. I want to take some time to explain why, in the class of applications I typically work on, I believe it to be such an important feature for future UI frameworks to have. Fundamentally it’s about improving the developer workflow, improving...
Tech
This post looks at integrating Angular 2 with Immutable.js and Redux, a popular Flux store implementation. It also demonstrates that the functional approach, encouraged by these technologies, allow for powerful concepts such as time travel, where you can replay actions and application state.
Tech
Literally a couple of hours after we released the previous post on writing a RESTful API with ASP.NET 5, I learned that Microsoft have renamed the new platform. This is a very short summary of that decision.
Tech
This blog describes my first experience of writing a RESTful API with Microsoft's new MVC 6 framework which is due to be released as part of ASP.NET 5 in early 2016.
Tech
In this post, I investigate the HTML5 Web Audio API, using it with D3 to perform real-time audio visualisation.
Tech
Angular 2.0 introduces a component-based approach to building applications, where the rendering can be optimised by selecting a suitable change detection strategy for each component. This post looks at how the OnPush change detection strategy works quite elegantly with the concept of immutable objects as enforced by Immutable.js.
Tech
This blog shows how to get started with microservices using Dropwizard. It guides the reader through building a simple task-list service.
Tech
From my perspective Angular 2 is a great improvement over Angular 1. The framework is simpler, and as a result your code is more concise, making use of modern JavaScript concepts. However, this does come at a cost; with Angular 2 the required tooling is really quite complicated.
Tech
This blog post takes a step-by-step approach to building a simple todo-list application with Angular 2.0. Along the way we'll look at web components, dependency injection, TypeScript, bindings and the Angular 2.0 change detection strategy which combine to make a much more elegant framework to its predecessor.
Tech
OData Controllers offer an easy interface between data and your application, but require one controller per model type. These controllers often have a large amount of almost identical code. In this blog post, we look at using C# Generics to remove this duplication.
Tech
There aren't many examples of OAuth2 working with a SAML 2.0 as an authentication method on the Internet. The purpose of this post is to provide a simple implementation of these two technologies working together.
Tech
A few days ago Bloomberg published their list of 50 companies to watch in 2016, and for some reason they decided to publish the entire report in ASCII! I thought it would be a bit of fun to see if I could use D3 to create my own ASCI charts
Tech
Libraries like d3 and d3fc do a fantastic job at making interactive charts. However, when the data size is in the hundreds of thousands, performance suffers. In this post, I'll have a look at some sampling techniques recently implemented in d3fc, and show them off with a demo.
Tech
While d3fc (a toolkit of charting components built in the d3 style) embraces the philosophy of simplicity over performance, there’s no point in creating a chart with lousy performance. In this post I’ll run through some of the tips and tricks for squeezing the best performance out of d3fc without...
Tech
JavaScript builds are getting more complex and time consuming. This blog post shares a few steps I took to improve the performance of one of our project's grunt build, hopefully some of the tools I used will be of use to others.
Tech
Ionic is a framework built on angular-js, targeted at creating mobile applications. However, one useful component that isn't part of the standard controls is the master detail layout, and this post describes the solution I used when creating this control.
Tech
Recently I needed to make a site for a personal project, and although I work on dynamic web apps for a living, I hadn't had to make a proper, honest-to-goodness website for years. There are plenty of well-known options out there for making sites quickly, like Wordpress and Squarespace, but why go for the quick option, I said to myself, when there's a learning opportunity to be had!
Tech
Every year Scott Logic takes on a number of interns who spend 12 weeks writing code, working on projects and having a great time in the offices. My name is Ruth, and along with Chris Barrett, I am an intern in the Newcastle office; and this summer we’ve been working...
Tech
A foray into generating simple charts in a fashion inspired by D3 using React as a rendering engine.
Tech
I try to clear up confusion on different ways of setting up TypeScript projects in Visual Studio, particularly for non browser (WebWorker or Node) projects, and end up more confused than ever.
Tech
I’ve been working on an open-source charting library called d3fc. And following Colin’s lead, was looking for a creative example to replicate: I think I found it… Once upon a time The story starts with Coinbase, a well-known(/funded) Bitcoin company. I was hunting for a freely available streaming data feed...
Tech
Code quality is important in large systems and web sites are no exception. This post shows how Umbraco enables developers to write clean and maintainable code.
Tech
Most charting libraries are monoliths. The more features they support, the more unwieldy their APIs tend to become. With the d3fc project we have been exploring an alternative approach, constructing charts from a set of small components, using the D3 library.
Tech
Meteor seems like a fresh way to work. It makes a lot of things, like CRUD operations and keeping your UI in line with data changes, extremely easy and it adds a lot of nice, clever tricks, like the client-side stubbing of server-side methods.
Tech
Sizing advanced components such as grids using ng-style can leave you with rendering problems. Here, I create a variant of ng-style with some small tweaks to avoid this problem.
Tech
Most charting libraries are monoliths. The more features they support, the more unwieldy their APIs tend to become. With the d3fc project we have been exploring an alternative approach, constructing charts from a set of small components, using the D3 library.
Tech
The standard LDAP JNDI implementation that ships with Java leaks a classloader reference when used from a web application hosted in a web container. While Tomcat and Jetty both include factory-fitted workarounds, JBoss does not. This post describes a JBoss-specific fix.
Tech
A look at some of the more unusual parts of JavaScript by examining seven things I've learnt recently.
Tech
In the second post of my series on the Aurelia framework I walkthrough bundling the less2css project. The result of which significantly reduced the load time, but did uncover a few aspects of the Aurelia bundling process that do not yet feel fully formed.
Tech
This post gives a walkthrough of a project that makes use of the new Aurelia framework. It also take a look at how it compares to Angular 2.0, which is still in development.
Tech
Airbnb's JavaScript coding standards are now based around ES6 and contain many guidelines to help you take advantage of its features. In this blog post I'll present some resources I created to help you learn ES6 through their guidelines.
Tech
This is my final article on ReactiveCocoa 3.0 (RAC3), where I demonstrate some more complex RAC3 usages within the context of an application built using the Model-View-ViewModel (MVVM) pattern.
Tech
This blog post discusses the changes to the .NET framework, the solution layout / configuration and serves as an introduction to the recommended programming style encouraged by Microsoft going forwards.
Tech
My previous blog post took a first look at ReactiveCocoa 3.0 (RC3), where I described the new Signal interface, and the pipe forward operator. In this blog post I continue my exploration of the RC3 APIs and turn my attention to signal producers. I also discuss a few points around the overall clarity of the new ReactiveCocoa APIs.
Tech
This blog post takes a look at the new ReactiveCocoa 3.0 swift interface, which introduces generics, a pipe-forward operator and an interesting use of curried functions.
Tech
This post shows how 'single file generators' can be used to generate type-safe email templates
Tech
I've been building a React Native app for the past few months, which was published as a tutorial yesterday. A number of people have asked about my thoughts and opinions about React Native - which I am sharing in this blog post.
Tech
A few months ago Facebook announced React Native, a framework that lets you build native iOS applications with JavaScript. I've been spending the past couple of months building am app with this framework, which I have finally been able to share!
Tech
When it comes to coding style in JavaScript, what makes most sense - one var declaration, multiple at the start or scoped?
Tech
ZeroMQ is an opinionated, light weight, blazing fast messaging library. Here I take a look at how to get up and running with it and the building blocks it provides you with.
Tech
A quick run through of the steps involved in integrating a Node.js client with Active Directory Federation Services for authentication using OAUTH2. I recently had the dubious pleasure of proving the feasibility of authenticating apps against ADFS using its OAUTH2 endpoints. In short, whilst it is possible to securely prove...
Tech
For some reason, everybody and their dog has written about how to parse JSON in Swift. Not wishing to be left out, I thought I'd throw my hat into the ring.
Tech
I’m relatively new to the world of single page applications and have just finished a project built using AngularJS. What we built was impressive but I had the following reservations: The learning curve was steep (it’s not just me right?!). The code was difficult to dive into for new developers....
Tech
Localising a web application to a high standard is difficult. Why is that? Consider the following differently formatted numbers… -1,23,45,678.99 12.345.678,99- (12 345 678.99) ١٢,٣٤٥,٦٧٨.٩٩ There are several differences between them: The location and type of the negative sign - it can be brackets (though of the standard windows locales,...
Tech
This blog post explores the novel approach taken by the React.js team, where the UI is expressed as a function of the current application state, and re-implements it with Swift.
Tech
Recently I have been working with WebdriverJS to fulfil a need for browser testing on a project. Although I’ve used Selenium for Java in the past, this was my first time using the JavaScript version. While broadly similar to what I remembered about the Java API, WebDriverJS returns Promises from...
Tech
I have recently been using a set of tools called fastlane, developed by Felix Krause. fastlane helps to automate the steps involved in building and deploying iOS applications to the App Store. Snapshot One of my favourite fastlane tools is snapshot. snapshot allows you to automate taking localised screenshots of...
Tech
I mentioned in the previous post that I would create a plugin for less which converted from LTR to RTL. Here is a tutorial post on creating that plugin. Setting the project up I know we want to modify the AST (abstract syntax tree), so we will need a visitor...
Tech
Some languages of the world (Arabic, Hebrew etc.) are RTL, meaning they are read right-to-left, instead of left-to-right. Typically in web applications supporting one of these languages, everything is reversed, meaning scroll bars, progress indicators, buttons etc. I recently took part in a discussion with the jQuery UI team about...
Tech
Swift has access to all of the Objective-C APIs, which means that anything you could do with Objective-C you can now do with Swift. However, there are times when it is worth exploring a better, pure-Swift, alternative. This post explores the pros and cons of KVO versus a couple of Swift alternatives.
Tech
Swift does not have a built in eventing mechanism. This post explores a few different ways events can be implemented in Swift and how to avoid problems of retain cycles and closure reference equality.
Tech
The upcoming JavaScript standard ES6 introduces generators, which provides us with a new pattern for writing asynchronous code. I compare this pattern to the established patterns of callbacks and Promises.
Tech
This blog looks at how CSS flexbox layout can be applied to SVG in order to simplify the task of constructing charts with D3. This approach has been made possible by the JavaScript flexbox implementation that Facebook recently open sourced to support ReactJS Native.
Tech
Swift doesn’t support throwing exceptions, nor does it support catching them. This wouldn’t be a problem if you could develop iOS apps in pure Swift, but unfortunately at the moment you cannot. When developing an app most of the APIs you’ll be working with are Objective-C APIs that have been...
Tech
TypeScript 1.4 was released last Friday, bringing union types, type aliases, and some ES6-related features. It also brought a new compiler and language services API to facilitate better tool support. Here I'll give a brief introduction with some pointers on places to get started.
Tech
Now that I've completed the Scala MOOC I thought I'd go back and re-implement the assignments in Clojure to get a better understanding of the differences between these two languages
Tech
How to create hero transitions with AngularJS, similar to those implemented by Google's Material Design and Polymer's core-animated-pages.
Tech
I’ve recently completed an ELK (Elasticsearch, Logstash & Kibana) real-time log processing implementation for an HTML5 FX trading platform. Along the way I’ve learnt a few things I wish I’d known beforehand. This post shares some more details of the project and hopefully some time saving tips. ELK The ELK...
Tech
Some lessons I've learned trying to optimise a HTML5 mobile App so that it's fast and responsive even on old or budget phones with limited performance.
Tech
This blog post looks at a few techniques that can be used to remove the deeply nested if-let statements that are a common sight in Swift code.
Tech
I have spent the last 12 weeks continuing the Foyer Screen project. In this post I describe the Admin Panel which I created to allow dynamic editing of presentation content and share a little of what I've learned in my time at Scott Logic, including some useful resources for getting started with Angular JS.
Tech
This post introduces 'Bramble MVC', a prototype static site generator which aims to be a little different from existing static site generators by having an API resembling a dynamic web server.
Tech
How to use a long-press to trigger re-ordering a list in Ionic Framework, instead of Ionic’s default implementation, which requires a button to switch modes.
Tech
Taking a look at a new fullstack Javascript web application framework.
Tech
Swift's strict initialisation process results in a number of practical issues, leaving developers scratching their heads. This post explores a few solutions including two-phase initialisation, the use of optionals and lazy properties.
Tech
An RSI (Relative Strength Index) D3 component which can be added to a D3 chart. In the blog I've also tried to explain a little bit about RSI and it's uses in calculating risk when trading markets.
Tech
Explaining the very basics of AVFoundation while building a Mac Application that stitches 3 .mov files together.
Tech
With the HTTP/2 specification just going to Working Group Last Call and due for publication in early 2015, I thought now would be a good time to have a quick look at what's changing.
Tech
This post describes a binding helper that allows you to bind arrays directly to table views with ReactiveCocoa. In this update to my previous post, the helper is extended to support mutable arrays.
Tech
In this article I'm going to create an interactive Fibonacci fan D3 component, and show you how to add it to a chart in just 6 lines of code.
Tech
This post show how the simple task of computing a Mandelbrot set can be split up across multiple threads (and processors) using functional techniques.
Tech
Having recently dipped my toe into the world of functional programming with both Scala and Clojure I thought it'd be useful to do a quick compare and contrast of these two JVM based languages.
Tech
Using Cordova and Ionic Framework to turn an AngularJS web application into a cross-platform mobile application.
Tech
This is a blog post about IE and how it handles windows running code which interacts with each other. I've created a test case that shows IE combine together two stacks so that code runs in a context which, when looking at the source code, seems impossible.
Tech
Recently I updated the Scott Logic blog to implement infinite scrolling using a combination of Jekyll pagination and jScroll. Both of these components are quite fussy about their respective configuration, meaning that integrating them took longer than expected. I thought I'd share my solution in this blog post, hopefully saving others from the hours I spent digging into jScroll code or cursing Jekyll!
Tech
In my last article I put together an interactive chart that could be panned and zoomed, but there was one obvious omission - crosshairs. In this article I'm going to create a D3 crosshairs component, and show you how to add it to a chart.
Tech
Comparison charts, as their name suggests, are great for comparing the percentage price change of multiple stocks in time. In this post, we'll make one using D3.
Tech
In this blog post, I talk about my team’s journey from traditional “pass me the keyboard and mouse” pair programming to use of Screenhero for IDE sharing both within the office and remotely.
Tech
Swift, as I am sure you are aware, is quite a strict, safe and strongly-typed language. However, because the language needs to maintain Objective-C compatibility it has some rather curious features, and the behaviour of `AnyObject` is one of them!
Tech
This post is a continuation of my previous which looked at implementing Conway’s Game of Life using functional techniques. Here I look at how memoization can be used to cache the return value of a function in order to improve performance.
Tech
Recently I've been looking at various D3 components, which has been a fun project. I haven't yet had the chance to develop an interactive, dynamic component though, which has meant that the resulting charts have been sadly static. For this article I wanted to use what I've learned to build a fully interactive chart - something that wouldn't look out of place on a financial app.
Tech
In this post, we'll take a look at some of the performance issues you might encounter when making interactive charts using SVG, and how you might go about fixing them.
Tech
Apple released the first public beta of the Swift programming language just over three months ago. Within days of the release myself and Matt Galloway started working on our book Swift by Tutorials, which as of yesterday is finally finished and shipping!
Tech
D3.js is a great library for creating dynamic visualisations with HTML/SVG/CSS, while Jekyll is a static site generator tool. Here I look at integrating static versions of D3 visualisations in a Jekyll site using PhantomJS.
Tech
This blog post shows an implementation of Conway’s Game of Life using functional techniques in Swift. This results in code which is a clear and concise representation of the game’s logic. I also take a closer look at ranges, intervals, the pattern match operator, ~= and how local functions help...
Tech
This post demonstrates how JavaScript and HTML5 related technologies can be used to create an application that can run in both a web browser and as a cross-platform desktop application using node-webkit.
Tech
This post will address a question that is often raised within organisations transitioning to Agile: is there a place for the Project Manager role when using Scrum on a project? This is a challenging question for IT departments that have historically relied on project managers to control their change portfolio,...
Tech
As an Intern in the Edinburgh office I have been involved in creating a slideshow that conveys interesting information about the company; something useful and entertaining to catch the attention of visitors in the waiting area. The project is essentially a web application built with JavaScript, HTML5 and CSS3. Back-end...
Tech
In my last article (on line annotation components for D3 charts), I created a D3 component which calculated and displayed a moving average. As promised, I'm now turning my attention to Bollinger Bands.
Tech
In this article I'm going to create two simple, reusable D3 components for adding line annotations to charts.
Tech
We’re the Scott Logic interns for Newcastle in 2014, and our project was to make a mobile-compatible version of the Scratch HTML5 player that allows offline access, and app-like immersion. This blog post is an overview of what we managed to achieve … And just to whet your appetite, here’s...
Tech
An open-high-low-close chart is a type of financial chart used to show price movements in a financial instrument over time. In this post, we'll make a reusable D3 component for an OHLC chart series.
Tech
How to use Asp.Net's built-in bundling and optimisation feature to optimise AngularJS templates
Tech
Actor Models make writing concurrent and scalable software much easier. This post uses Akka and Scala to demonstrate some of the benefits of the Actor model.
Tech
SignalR is an easy to use framework for .NET and the browser which enables bi-directional communication over a variety of transports (from WebSockets to Ajax long-polling). The SignalR Hubs API is dynamically typed, in this post I will summarise some existing tools which can be used to provide strong typing for calls between C# and TypeScript, as well as a more experimental approach via F#, FunScript and Type Providers.
Tech
Writing end-to-end tests for a Single Page Application (SPA) built with Angular or Knockout, and how to improve the robustness of those tests.
Tech
As part of a project I'm working on, I have a requirement for a NoSQL database. There are numerous offerings out there, of which MongoDB and CouchDB appear to be the most popular. So which system should I choose?
Tech
It was just two months ago that Apple took us by surprise in releasing the Swift programming language. This blog post reflects on the first few months of Swift adoption.
Tech
A comparison of Angular and Knockout in an enterprise scale single page application, by building the same sample application with both tools.
Tech
This blog post looks out how Swift makes the combination of ReactiveCocoa and MVVM even better ...
Tech
Reactive programming is a paradigm which allows you to better represent a work flow where changes in one part of your data model propagate down to other parts of the model. This blog post demonstrates an example of this, by listening for updates to Wikipedia and reacting accordingly.
Tech
A few months ago I published a blog post which showed the results of analysing the meta-data of 75,000 apps from the iTunes App Store. This blog post continues the analysis by adding 60,000 Android apps into the mix.
Tech
I've recently had a two-part tutorial published on Ray Wenderlich's website that details how ReactiveCocoa can be used to implement the MVVM pattern within iOS applications.
Tech
In this blog post I want to take a quick look at the Swift Sequence protocol, which forms the basis for the for-in loop, and see how this allows you to write code that performs sequence operations that are only evaluated on-demand.
Tech
This blog post presents a simple utility class for binding ReactiveCocoa ViewModels to UITableViews without the need for the usual datasource / delegate boiler-plate.
Tech
This blog post presents the result of analysing 250,000 screenshots from the Apple App Store, looking at hue, lightness and saturation histograms for each category.
Tech
The App Store continues its rapid growth, with approximately 300,000 apps added each year. I decided it would be fun to download as much app metadata as possible in order to see what patterns and trends I could find. This blog post describes the results.
Tech
This blog post looks at how to simulate accelerometer and location data so that you can test iOS apps without the need for a physical device. The simulated data is provided by an interactive UI which allows you to rotate the phone and mark paths on a map which can then be replayed.
Tech
It feels like everyone in the iOS community is talking about ReactiveCocoa at the moment. In this blog post I talk briefly about what ReactiveCocoa is and the 'Definitive Guide' which I wrote for raywenderlich.com
Tech
An emeging recipe that can change the way we make rich web apps.
Tech
Recently, I have been starting to get to grips with WebGL. Having little to no real previous experience with 3D graphics, there was a reasonably steep learning curve to overcome. So I thought I’d touch on a few of the basics here and share some resources that I found really...
Tech
Recently, Knockout’s original author Steve Sanderson released a plugin called knockout-projections which optimises the performance of the observable array methods filter and map. In this post, I’ll take a peek into the future by combining this plugin with the forthcoming ES6 arrow functions to produce some very terse and highly...
Tech
It's easy to get started building data-bound user interfaces in the browser using the KnockoutJS MVVM library. This post covers some practices and techniques that help with using it successfully in large single page applications.
Tech
PropertyCross has just announced a v1.3 release, which includes two new frameworks, a number of updates and an improved build system.
Tech
The book, iOS 7 By Tutorials, which I contributed four chapters to, is now in print.
Tech
When moving back from web to desktop development, it’s easy to miss the quick feedback and update cycle enabled by the developer tools in modern web browsers. To an extent the debugger intermediate window does many of the things the console allows, and many of the “script debugging” features the...
Tech
The recent rise of web applications that have all the functionality of their desktop counterparts has highlighted the fact that JavaScript MVC Frameworks are now an essential part of any modern web developers toolkit.
Tech
Suppose you have a collection, and you need to perform an action on each element. That’s not hard to do in any mainstream programming language. What if you need to know the index of each element as you process it? Not hard, but depending on your datastructures, possibly not as...
Tech
This article explores the various ways you can create objects with the JavaScript language, and through this exploration finds that there is much to learn about the language!
Tech
Android is fragmented. This is a feature, not a bug. Embrace this and you embrace the future.
Tech
This blog post looks at creating an interactive tab bar controller transition, where you can swipe left and right to navigate between the tabs. The transition itself is a 'paperfold' effect - very pretty!
Tech
Explaining the very basics of getting a simple 2D fighter plane game up and running with SpriteKit
Tech
With iOS 7 Apple introduced a new set of APIs for creating custom View Controller transitions. In this blog post I look at how to create a custom 'flip' transition, giving the impression of a turning page.
Tech
For the past four months I have been hard at work writing four chapters for a book, iOS 7 by tutorials. Just yesterday, as the iOS 7 NDA was lifted, the book went on sale.
Tech
Version 0.9 of Typescript was recently released with support for generic types. In this post I discuss the features of 0.9 and 0.9.1, particularly generics and the "no implicit any" option.
Tech
When Eclipse Juno came out last year, I was excited to see some support for @Nullable annotations. I didn’t get very far with them at the time, though, as the implementation was quite strict. With the release of Kepler though, it’s much easer to make productive use of @Nullable to...
Tech
The Open Web is cool :). One of the things I most enjoy about modern web development is that so much of the code is open and able to be mashed together. We were talking in the office about collaborative editing. I remembered having seen a link to Mozilla’s Tow...
Tech
In the previous part of this series discussing running an interactive environment (REPL) on .NET I covered the non-C# options. This post explores the options for an interactive or lightweight C# environment.
Tech
A couple of days ago Microsoft announced Windows Phone App Studio, a web based tool for the rapid creation of Windows Phone applications. In this blog post I take this new technology for a spin to see what it's capable of, and the interesting potential it has for creating 'personal' apps.
Tech
In the first part of a series on running an interactive environment (REPL) on .NET, I talk a little about why you might want one, and cover the non-C# options.
Tech
Betamax is a tool to help with testing applications that consume web services by allowing the developer to record responses and then replay them. In this post we look at how we can use it in Scala.
Tech
In the final article in the series, we take the RESTful API we've created and integrate it with MongoDB for persistence using the Salat library.
Tech
Taking a macro that can extract path elements from a query string and turning it into a fully fledged RESTful API, backed by an in-memory database.
Tech
In this article we'll look at ways to overcome one of the main restrictions of def macros - the ability to only generate functions.
Tech
Diving in head first into Scala Macros, generating code using the language's abstract syntax tree. I'll be looking at how to create a function that in subsequent articles we can turn into a generated RESTful API.
Tech
My latest iOS development article has been published on Ray Wenderlich's site, this time I look into how to develop custom iOS controls. The article describes the creation of a 'range' slider control, and covers topics such as API design and using Core Graphics for rendering. Interestingly, iOS developers have...
Tech
For the last six months or so I have been deeply immersed in a combination of iOS and HTML5 development. Now I don't want my C#/XAML skills to get too rusty, so over the weekend I decided to write a simple Windows 8 Store App. You can see the results...
Tech
A couple of days ago we hosted a one-day conference, HTML5 - It Just Got Real, at the Royal Society buildings in London. As promised, we have made all of our presentations available online.
Tech
This blog post describes the addition of a two-finger rotation and three-finger pitch gesture to the Windows Phone 8 Map control. You can see these gesture in action below: The WP8 release replaced the image-tile based Bing maps with a fully vector-rendered map from Nokia. Being vector-based, this map can...
Tech
This blog post compares the same twitter search application written with both Knockout and Kendo in order to highlight the strengths and weaknesses of each framework. Introduction I've always been a big fan of Knockout, most likely because it reminds me of Silverlight (rest in peace). For my thoughts on...
Tech
Announcing a one-day conference at the Royal Society, London UK, on the 14th of May. Just a few years back I wrote a white paper titled "Flex, Silverlight or HTML5? Time to decide ..." with the help of a couple of my colleagues, comparing the strengths and weaknesses of the...
Tech
Recently I contributed a change to Knockout which allows it to run without hacks in a non-browser JavaScript environment. My original intention was to allow Knockout.js to be used with Titanium for the PropertyCross project however, a convenient side-effect is that it now also runs in Node. In this post...
Tech
For a long time now, extends in less have been bubbling away. When I joined the less team in September last year it was one of the highest asked for feature requests. We decided that 1.3.x releases would fix bugs and implement minor feature requests and that 1.4.0 would include...
Tech
First off, this is a biased blog post as I am heavily involved in less.js at the moment. I have been inspired to write this because of the popular sass vs less post and because although it is very accurate (at the time it was written) it doesn't really cover...
Tech
In an attempt to see how powerful pure CSS can be these days I decided to try implementing some of my favourite visual illusions without any JavaScript. Not only was this good fun, I gained quite a few insights into the current state of CSS.
Tech
I've just received an email from those nice folks at CodeProject letting me know that my article 'A Windows Phone 8 Run Tracking App in 100 Lines of Code' has just won the Best Mobile article of January 2013 award.
Tech
In the past few months I have been immersing myself into the world of iOS development. Whilst the Objective-C language takes a little getting used to, with its odd syntax and memory management rules, it is certainly a fun platform to develop for. I do miss a few C# language...
Tech
In this post I'll run through the development of DOM-Raphael, a basic CSS3 based JavaScript library which acts as a replacement for Raphael and can be used to improve performance when running on iOS. The source code for the JavaScript for this post is available on GitHub. The driver behind...
Tech
Yesterday I published a new article on CodePrioject: Property Finder - a Cross-Platform Xamarin MonoTouch Mobile App This article looks at how you can write a cross-platform mobile application with a shared C# code base using Xamarin MonoTouch. The application that is described in the article, a property finder, is...
Tech
Introduces a new open source project that helps developers choose a suitable cross-platform framework
Tech
Introduction Less.js can be run in two ways, firstly through node and secondly in the browser. A great deal of the code is shared, but not all of it - particularly the way it deals with imports, paths and url's differs. Whilst typing "make test" in the node less.js repository...
Tech
Outrageous pun intentionally… hyde-n… We’re very soon to launch a site documenting an open source project we’ve been hard at work producing. As the project is hosted on github, we’ll be making use of the Github Pages hosting feature which itself is built on top of Jekyll. As all my...
Tech
Backbone.js is interesting because it gives you the basic framework of an MVC application without enforcing patterns on you. However, in larger web application it's always important to ensure your structure promotes code reuse and good organization for future development. One such way is through inheritance of views, and in...
Tech
This blog post introduces a simple pattern for adding multicasting capabilities to existing iOS controls. Adding multicasting allows for improved clarity and code re-use. Colin Eberhardt is CIO at ShinobiControls, suppliers of highly interactive and fun charts, grid and UI controls for iOS developers. Most iOS controls have a concept...
Tech
Luke Page, one of the project leads, gives an introduction to less.
Tech
The technologies that we use to write applications for our end users are changing at a frightening pace! Over the past few years the title of my blog has changed from "Adventures in WPF" to "Adventures in .NET", and more recently to the very generic "Adventures in Technology". The latest...
Tech
With the recent release of Windows 8 and VS 2012, you've probably heard of the bold move in the WinRT API (that is, the target platform for Windows Store apps) to only offer asynchronous versions of operations which take any significant time (ie 50ms+) - and the corresponding async/await feature...
Tech
This blog post looks at the issues regarding integration of KnockoutJS and jQueryMobile, and provides a simple worked example - a Twitter Search application - where the two technologies play nicely together! The code for this blog post can be found on github. You can also try it out on...
Tech
I've been working on a Windows Store application called EdBus, as part of the CodeProject AppInnovation contest. It's not yet finished, but I've written an article about it as part of the competition. EdBus presents nearby bus stops, with details about services and bus times, so you can easily see...
Tech
A couple of days ago a published a new article on CodeProject, this latest article tackles the migration of a gesture-drive application from Windows Phone to Windows 8: "I had fun porting my gesture-driven to-do list application to Windows 8, and had an interesting journey along the way. There are...
Tech
In this post I'm going to talk about creating PDF documents in C#. I will primarily focus on the PdfSharp and MigraDoc libraries, which are free C# libraries available from http://www.pdfsharp.net/. I recently became acquainted with them while investigating .NET exporting functionality and wanted to blog about my experience and...
Tech
Toob is a London Underground travel app for Windows 8 that I am designing and developing for CodeProject's App Innovation Contest. It is currently a work in progress but I have written an article introducing the application and going through some useful technical information for anyone interested in writing HTML5 applications for Windows 8.
Tech
How does Microsoft's TypeScript, the new kid on the block, compare to Google's Closure?
Tech
In this post Colin Eberhardt's Property Finder app gets another outing, but this time with a native twist. Titanium is a popular open-source framework for building multi-platform native apps in JavaScript. Here I've used it to port the existing MVVM application to iOS and Android whilst trying to maintain as...
Tech
This post describes a jQuery plugin which performs "picker style" animations between numbers using CSS3 transitions and transforms. The plugin was originally designed with iOS Safari in mind but works on the latest versions of Opera, Chrome and Firefox too (it should work on IE10 too but I've been unable...
Tech
Most of us have had a play with CSS3 3D transforms, stacked a few elements, rotated them, maybe even made a cube out of them. And somewhere along the way, you'll probably have set the perspective property, tweaked it, wondered what it did, tweaked it some more, figured it looked...
Tech
Intellisense for JavaScript has always felt to me like an unfinished addition to Visual Studio, something that promises so much but doesn't deliver for larger projects. Manually adding and then maintaining another set of dependency references just for Intellisense has just never seemed worth it. However, with the launch of...
Tech
A look at how the Android design patterns have shifted over time
Tech
HTML5 versus native (iOS:Obj-C, Android:Java) mobile development is a hot topic at the moment, with Facebook's ditching of a hybrid HTML5/Obj-C app in favour of an Obj-C-only app the latest blow to land. However, independent observers will already have noted that the battle, as always, is not without it's fair...
Tech
A while back, when PhoneGap for Windows Phone was still in beta, I created Property Finder, an application for searching UK property listings. This application successfully made its way into the Windows Phone Marketplace, making it the first WP7 PhoneGap app. I recently developed the Property Finder application further in...
Tech
This post looks at how to construct Java's built-in hash based Map implementations to ensure they have sufficient, but not excessive capacity. Hash based maps are one of the most commonly used data structures in programming and Java provides two different implementations of these - the commonly used HashMap and...
Tech
Captured webcam frames arranged in a 3D rotate-able cube for your viewing pleasure. A simple tech demo trying out the new getUserMedia API in Chrome 21, with some 3D transforms and canvas based pixel manipulation thrown in for good measure. Try it outMake sure you're using Chrome >= 21 and...
Tech
A Hero is Born Recently, I've had the opportunity to have a bit of a play with GWT's upcoming and excitingly titled "Super Dev Mode". Super Dev Mode will eventually replace the current plugin based development mode that GWT developers will no doubt be familiar with. Google's main reasoning for...
Tech
A couple of weeks ago Josh Smith published his latest book, "iOS Programming for .NET Developers", which seeks to ease the transition from .NET to iOS developers. As someone who has many years of .NET experience, and more recently a desire to develop for 'the other side', I thought this...
Tech
Over the past few weeks I have been working on a Windows Phone to-do list application, inspired by the iPhone Clear app. I have just published the final application over on codeproject. You can see it in action below: Pop over to CodeProject for the full sourcecode and implementation details....
Tech
This blog post describes the creation of a simple twitter search application for iOS, based on a similar application I wrote for Windows Phone a few months back. In this blog post I'll used the MonoTouch platform, which allows you to write iOS applications using C#. This blog posts describes...
Tech
Intrigued by Mark Easton's question on Twitter, 'How much of Britain is built on?', and inspired by the associated article, The Great Urban Myth of Britain, I wanted to put the UK NEA's statement that '6.8% of the UK's land area is now classified as urban' into some kind of context that actually made sense to me.
Tech
It's been a busy Twitter day for me. A reasonably inane tweet that I posted this morning pointing out that the announcement of the (potential) Higgs Boson discovery was written using the much derided Comic Sans font has been retweeted thousands of times, and has been the top tweet for...
Tech
This post introduces a Maven plugin for easily building native PhoneGap apps for iOS, Android, WP7 (and more) from any WAR project, in any environment. It assumes that you are familiar with using Maven and have a WAR project you wish to build. In return, when you run your build...
Tech
A couple of weeks ago I blogged about a todo list application which uses gestures to achieve its basic functions, a left swipe deletes an item, while a right-swipe marks it as complete. In this blog post I am adding re-ordering which is initiated via a tap-and-hold gesture and performed...
Tech
My blog post from yesterday "A Developer Perspective on Windows Phone 8" sparked a bit of furious debate on Twitter. I think it is fair to say that I was not the only one who was quite concerned about the impact of aligning the developer experience of Windows Phone 8...
Tech
This blog post takes a look at what Windows Phone 8 (WP8) means for Windows Phone 7 (WP7) developers and the Microsoft development platform in general. This has been a big week for Microsoft; Monday saw them unveil the new Surface tablet that runs Windows 8. This was followed up...
Tech
In this post I present a graphical comparison of the Microsoft Surface and Apple iPad tablets
Tech