Experience

Scott Logic

CTO • 2006 — present

I joined Scott Logic as a Senior Developer in 2006. Over the following years I built trading platforms, research portals and middle-office systems for a wide range of clients including Lehman Brothers, Saxo Bank and Nordea.

As CTO I have a wide range of responsibilities, with a common goal of growing and diversifying our offering while maintaining the quality and reputation that we have built.

TecSphere UK Ltd.

Software Engineer • 2004 — 2006

VisiTech International

R&D Manager • 2002 — 2004

Leeds University

Research Fellow • 1999 — 2002

Timeline

I have published 307 blog posts, delivered 83 talks, appeared on 22 podcasts and published 3 books.

2026

June
talk

Finance and Risk AI Use Cases (Panel)

A panel discussion at Datalyst26 exploring real-world applications of AI in finance and risk management, drawing on practitioner perspectives from financial services, consultancy, and the Bank of England.

Finance and Risk AI Use Cases (Panel)
talk

Agentic AI and the Future of Software Development

Software development has undergone rapid, compounding shifts driven by AI — from autocomplete in 2022 to agentic systems by 2025. This talk asks what the discipline looks like when these trends fully play out, and outlines principles for navigating a period of fundamental transformation.

talk

Agentic AI and the Future of Software Development

Software development has undergone rapid, compounding shifts driven by AI — from autocomplete in 2022 to agentic systems by 2025. This talk asks what the discipline looks like when these trends fully play out, and outlines principles for navigating a period of fundamental transformation.

May
post

Finding Your Voice: A Guide to Technical Communication

If you’re nervous about communicating your ideas, either in a formal presentation setting, or more informally, in meetings and small group conversations, this brief guide is for you. It’s a simple collection of thoughts and ideas; practical steps that you can take to build confidence, or feel more secure.

April
talk

Agentic AI and the Future of Software Development

Software development has undergone rapid, compounding shifts driven by AI — from autocomplete in 2022 to agentic systems by 2025. This talk asks what the discipline looks like when these trends fully play out, and outlines principles for navigating a period of fundamental transformation.

podcast

Beyond the Hype: Is AI taking the fun out of software development?

In this episode, I'm joined by Dean Kerr and Amy Laws to discuss 'The Experiment' – a four‑week study we ran to explore how AI really affects software development. Instead of synthetic benchmarks, the project team tackled genuine issues in an open‑source project, alternating between AI‑assisted work and going completely 'cold turkey'.

March
post

If AI Writes the Code, Who Builds the Next Open Source Project?

AI was trained on open source, but its rapid progress is now raising difficult legal, technical, and cultural questions for the ecosystem that enabled it. From copyright and “fair use” debates to AI-generated code, cloned frameworks, and autonomous coding agents, this post explores how AI may reshape the future motivations and sustainability of open source.

podcast

Beyond the Hype: Vibe coding – Is this really how we’ll build software?

In this episode of Beyond the Hype, I'm joined by Remi Van Goethem to unpack the fast‑evolving world of AI‑accelerated software development. From everyday autocompletion to emerging multi‑agent frameworks, we explore how AI is reshaping coding practice and where human engineering judgement still matters.

2025

December
post

The power of agentic loops - implementing flexbox layout in 3 hours

By leveraging AI agents with iterative feedback loops, a complete flexbox layout algorithm was implemented in just 3 hours, a task that took two weeks back in 2015. The key to this productivity gain was creating an effective agentic loop where the AI could test, debug, and improve its code autonomously using a browser's layout engine as a reference implementation.

talk

From Guardrails to Guidance: Evolving with the AI Frontier

Agentic AI is one of the most disruptive technologies of our time, but its risks — hallucinations, inconsistency, limited explainability — make safe deployment a real challenge. This talk explores how to maximise value while managing those risks responsibly, introducing the FINOS AI Governance Framework as a practical guide for meeting regulatory expectations.

November
post

Putting Spec Kit Through Its Paces: Radical Idea or Reinvented Waterfall?

Spec-Driven Development promises reliable, specification-led software generation, but in practice I found the workflow slow, heavy, and less effective than iterative prompting. This post walks through a real-world test using Spec Kit and explains why traditional AI-assisted development still outpaces SDD by a wide margin.

October
talk

AI Adoption: A Human Problem

As AI models grow increasingly powerful, real-world adoption often falls short of expectations. This talk explores the fundamental transformation required — at an individual and organisational level — to become truly AI-ready, and highlights FINOS's AI Governance Framework v1.

post

Delegating the Grunt Work: AI Agents for UI Test Development

UI automation testing is valuable but time-consuming, with on-going maintenance resulting from fragile selectors, asynchronous behaviors, and complex test paths. This blog post explores whether we can release ourselves from this burden by delegating it to an AI coding agent.

July
post

From Diligence to Exit: The Critical Role of Data in PE Investments

Data enables faster and more accurate due diligence, informs operational transformation post-acquisition, and supports more effective positioning when it comes time to exit. This post outlines the role of data across each of these key stages.

June
talk

AI Adoption: A Human Problem

As AI models grow increasingly powerful, real-world adoption often falls short of expectations. This talk examines the transformation, clarity, discoverability, and human challenges that stand between AI's potential and practical impact, highlighting FINOS's AI Governance Framework v1 as a significant milestone.

AI Adoption: A Human Problem
May
post

Learning to Code Again: Adopting AI Developer Tools

Adopting AI-powered developer tools like GitHub Copilot and ChatGPT is a challenging yet rewarding journey that requires time, experimentation, and a shift in how developers approach their workflows. This post explores why these tools are hard to learn, how they disrupt traditional flow states, and offers practical advice for integrating them effectively into day-to-day coding.

April
post

Making Sense of the AI Developer Tools Ecosystem

The AI developer tooling landscape has rapidly expanded from simple autocomplete to a complex ecosystem of assistants, agents, and AI-first environments. In this post, I propose a practical classification based on how AI is positioned within your workflow—from "arm’s length" tools like ChatGPT to fully "AI-first" environments like Cursor.

March
post

LLMs Don’t Know What They Don’t Know—And That’s a Problem

LLMs are not just limited by hallucinations—they fundamentally lack awareness of their own capabilities, making them overconfident in executing tasks they don’t fully understand. While “vibe coding” embraces AI’s ability to generate quick solutions, true progress lies in models that can acknowledge ambiguity, seek clarification, and recognise when they are out of their depth.

February
post

AI’s Biggest Flaw? The Blinking Cursor Problem

AI's potential is immense, yet clunky user interfaces and a lack of discoverability are holding it back from seamless adoption. To unlock AI’s true power, we need interfaces that guide, adapt, and engage—moving beyond the blinking cursor to something more intuitive, proactive, and, ultimately, more human.

January
post

The UK’s AI Opportunities Action Plan – somewhat quiet on risks

Last week the UK government launched their 50-point AI Opportunities Action Plan. The plan is ambitious, but it is something of a mixed bag. Some sizeable and worthwhile investments, alongside others which are quite questionable. But what I am more concerned with is what is missing. The plan has optimistic, upbeat and pro-innovation, but is rather silent on the risks.

2024

December
post

LLMs vs Advent of Code, AI is winning

This blog post explores the capabilities of OpenAIs o1-mini through the Advent of Code challenge, finding that it is astonishingly capable. In a significant step-up from previous models, it answers most of the questions with ease.

October
post

OSFF NYC - Making GenAI a Tool for Everyone

There is little doubt that GenAI will have an impact on almost every aspect of our business and personal lives. However, we are at an interesting juncture: models are becoming ever more powerful, with prototypes showing ever greater promise, but there remain significant challenges when it comes to the reality of putting this technology into practice.

post

FinJS - GenAI from Prototype to Production

There is little doubt that GenAI will have an impact on almost every aspect of our business and personal lives. However, we are at an interesting juncture: models are becoming ever more powerful, with prototypes showing ever greater promise, but there remain significant challenges when it comes to the reality of putting this technology into practice.

September
talk

Making GenAI a Tool for Everyone

GenAI is moving from the hands of data scientists to everyone in an organisation — but doing so safely requires education, tooling and cultural change. This talk explores the practical challenges of democratising AI in financial services.

Making GenAI a Tool for Everyone
talk

GenAI from Prototype to Production

GenAI prototypes are impressive, but turning them into something safe and reliable in production is a different challenge. This talk explores that gap through practical examples and live demonstrations.

July
post

OSFF London - Making GenAI a Tool for Everyone

There is little doubt that GenAI will have an impact on almost every aspect of our business and personal lives. However, we are at an interesting juncture: models are becoming ever more powerful, with prototypes showing ever greater promise, but there remain significant challenges when it comes to the reality of putting this technology into practice.

June
talk

Making GenAI a Tool for Everyone

GenAI is moving from the hands of data scientists to everyone in an organisation — but doing so safely requires education, tooling and cultural change. This talk explores the practical challenges of democratising AI in financial services.

podcast

Beyond the Hype: Can we do better than 'carbon aware' computing?

In this episode, Oliver Cronk and David Rees from Scott Logic are joined by Hannah Smith, Director of Operations at Green Web Foundation, to explore the potential benefits and limitations of ‘carbon aware’ computing. With global emissions from cloud computing exceeding those from commercial flights, is 'carbon aware' a distraction from getting to grips with the scale of the challenge we face?

May
podcast

Beyond the Hype: UK GOV AI – Is innovation guided by principles enough?

In this episode, I'm joined by Jess McEvoy and Peter Chamberlin for a discussion about the UK government’s approach to addressing AI challenges with its pro-innovation mantra, and whether this creates the right environment for success.

April
podcast

Beyond the Hype: Are Data Mesh and Data Fabric just Marchitecture?

In this episode, Oliver Cronk, Andrew Carr and David Hope talk about the ever-changing world of data, with conversations moving from data warehouse to data lake, and data mesh to data fabric. They discuss the importance of data ownership and common tooling, and their view that data mesh is an approach rather than an architecture.

February
podcast

Beyond the Hype: Can technology sustainability really make a difference?

In this episode, Oliver Cronk is joined by experts including Jeremy Axe, Group CTO at DS Smith, and consultants Darren Smith and Katie Davis from Scott Logic. Together, they unpack topics like the energy usage and carbon emissions of IT infrastructure, the challenges in accurately measuring sustainability, and whether claims of ‘green tech’ are substantiated or just hype.

January
podcast

Beyond the Hype: Was the threat the CRA seemed to pose to open source just hype?

In this episode, I'm joined by Rebecca Rumbul, CEO of Rust Foundation, and Mirko Boehm from Linux Foundation Europe. We discuss the Cyber Resilience Act (CRA), a piece of EU legislation that is actively under development, designed to make end-user products more secure. Early drafts of this act detailed significant obligations on open source maintainers, despite the fact that they often work without financial reward. We discuss how the latest update of the CRA has thankfully addressed these concerns and ponder whether it will actually solve the problems it has set out to tackle.

2023

December
post

If software development were a race, AI wins every time

We’ve undertaken experiments to explore the impact of GenAI tools on developer productivity, revealing a 37% improvement in productivity (speed), however, this result is a misrepresentation of what it means to be productive as a developer. This article delves more deeply, beyond punchy metrics, to explore the overall experience of working with these entirely new tools. We discuss where these tools are most effective, the challenge of quality code, the learning curve and much more.

November
talk

Destination AI: Navigating the Narrow Path Between Opportunity and Risk

A rapid primer on Generative AI — how the models work, what they can and cannot do — followed by a practical assessment of which applications are ready for mainstream adoption and which need more time.

Destination AI: Navigating the Narrow Path Between Opportunity and Risk
October
post

The State of WebAssembly 2023

This blog posts shares the results of the third annual State of WebAssembly survey, where we found that Rust and JavaScript usage continues to increase, but there is a growing desire for Zig and Kotlin. The use of wasm as a plugin environment continues to climb, with developers hoping it will deliver of the “write once and run anywhere” promise.

talk

Destination AI: Navigating the Narrow Path Between Opportunity and Risk

Generative AI is genuinely disruptive, but the hype obscures important home truths about how LLMs actually work. This talk cuts through the noise to offer a grounded view of where GenAI creates real value and where the risks are easy to underestimate.

post

OSFF NYC - Destination AI: Navigating the Narrow Path Between Opportunity and Risk

The buzz and excitement around generative AI is continuing to grow as their capabilities rapidly expand. However, their ability to generate large quantities of textual content is just the starting point. In the past few months we’ve seen an emergent reasoning capability, which coupled with their intelligent use of tools, is what will make this technology truly transformational, and could mark the start of a new technology epoch.

September
post

LF Europe Summit Journal - Day Three

This year I’m attending the Linux Foundation Europe Summit, a sizable event bringing together 1,000s of people involved in open source. Day three made us think about allyship, yet more AI and the looming shadow of the EU Cyber Resilience Act (CRA).

post

LF Europe Summit Journal - Day Two

This year I’m attending the Linux Foundation Europe Summit, a sizable event bringing together 1,000s of people involved in open source. Day two was packed with surveys, statistics and the fragility of the node ecosystem..

post

LF Europe Summit Journal - Day One

This year I’m attending the Linux Foundation Europe Summit, a sizable event bringing together 1,000s of people involved in open source. I typically take extensive notes of the sessions I attend, so thought I’d share them here on our blog.

talk

What's the State of Open Source? (Panel)

A panel exploring the current state of open source adoption, contribution, and governance in Europe, drawing on Linux Foundation research and the perspectives of policymakers and industry leaders.

podcast

Beyond the Hype: DevSecOps, a portmanteau too far?

In this episode, Oliver and Peter from Scott Logic are joined by Laura Bell Main, CEO and co-founder of SafeStack, for a lively discussion on DevSecOps. They touch on techniques such as “assume breach” and “shift left”, and the relationship to DevOps, which is trying to solve a similar problem.

August
podcast

Beyond the Hype: WebAssembly – from the browser to beyond

In this episode, I'm joined by Bailey Hayes from Cosmonic and Sean Isom from Adobe to go beyond the hype with WebAssembly. We start by discussing the early days of WebAssembly, and where it all began, in the browser. We debate the infamous tweet that compares WebAssembly to Docker, and look at the future promise of the Component Model, which aims to break down language barriers.

June
post

A guide to Generative AI terminology

Generative AI is moving at an incredible pace, bringing with it a whole new raft of terminology. With articles packed full of terms like prompt injection, embeddings and funky acronyms like LoRA, it can be a little hard to keep pace. For a while now I've been keeping a notebook where I record brief definitions of these new terms as I encounter them. I find it such a useful reference, I thought I'd share it in this blog post.

May
talk

Open Source Sustainability: Tackling the Challenges

Modern software rests on an invisible foundation of open source dependencies, yet the maintainers who sustain that infrastructure are under-resourced and burning out. This talk examines the systemic challenges — dependency chains, maintainer fatigue, and funding gaps — and explores what organisations and governments can do.

post

Re-implementing LangChain in 100 lines of code

LangChain has become a tremendously popular toolkit for building a wide range of LLM-powered applications, including chat, Q&A and document search. In this blogpost I re-implement some of the novel LangChain functionality as a learning exercise, looking at the low-level prompts it uses to create these higher level capabilities.

podcast

Beyond the Hype: Is generative AI coming for programming jobs?

In this episode, I'm joined by colleagues Oliver Cronk, Chris Price and James Heward for a lively debate on whether the latest advances in generative AI are going to threaten our jobs – are we going to be made redundant by our own creation?

April
podcast

Beyond the Hype: Y2Q – The end of encryption as we know it?

In this episode – the second of a two-parter – we talk to Denis Mandich, CTO of Qrypt, about the growing threat that Quantum Computers will ultimately render our current cryptographic techniques useless – an event dubbed ‘Y2Q’, in a nod to the Y2K issue we faced over twenty years ago.

March
post

AI is morphing from tool to platform (and the next technology epoch begins)

The buzz and excitement around generative AI is continuing to grow as their capabilities rapidly expand. However, their ability to generate content is just the starting point. From my perspective, the emergent reasoning capability, coupled with their intelligent use of tools, is what will make this technology truly transformational, and will mark the start of a new technology epoch.

podcast

Beyond the Hype: Quantum Computing – hype and not hype simultaneously?

In this episode, we talk about Quantum Computing with Denis Mandich, CTO of Qrypt. As well as discussing quantum physics, we cover the practical aspects of cloud-based Quantum Computers and what can be achieved today through circuit design. Finally, we look to the future to discuss the impact this breakthrough technology is likely to have.

February
talk

Could the Public Sector Solve the OSS Sustainability Challenges?

There are far more open source consumers than contributors, and the imbalance is creating serious sustainability challenges. This talk explores whether the public sector holds the key to solving them.

post

Could the Public Sector Solve the OSS Sustainability Challenges?

The rapid rise in the consumption or usage of open source hasn’t been met with an equal rise in contribution – to put it simply, there are far more takers than givers, and the challenges created by this imbalance are starting to emerge.

podcast

Beyond the Hype: ChatGPT and why it has set the internet alight

In this episode, I'm joined by my colleague, Oliver Cronk, and Chris Booth from NatWest for a lively discussion about the much-hyped ChatGPT – covering its origins and recent advances, the new discipline of prompt engineering, and some practical applications and limitations of this technology.

2022

December
podcast

Beyond the Hype: Blockchain is dead, long live blockchain

In this episode, I’m joined by colleagues Oliver Cronk, Peter Chamberlin and Chris Price for a lively discussion about blockchain, including the mechanics of bitcoin, the proof of work consensus, and technologies which are blockchain-like, but prefer not to use that term. Finally, we ask ourselves the question, is blockchain just hype?

November
podcast

Beyond the Hype: Is the Metaverse built on foundations of hype?

In this episode Colin, Ollie, Johanna and Lily hold a lively conversation that dives into Web3 and the Metaverse. We ask the question “what is Web3.0”, and explore what it means to be a decentralised technology. We discuss the Metaverse, Roblox and other virtual environments, and very briefly touch on NFTs. But for the most part, we talk about exploration and innovation.

post

The State of Open Source in Finance - Keynote Panel

FINOS, in partnership with Linux Foundation Research, GitHub, Red Hat, Scott Logic, and with the support of many other FINOS members, conducted the second annual study to assess the opportunities and potential challenges of consuming, contributing to, and governing open source in financial services. This panel dives into the research's key findings, as well as provides insight into how things have progressed year-over-year.

talk

The State of Open Source in Finance (Keynote Panel)

A keynote panel presenting findings from the second annual FINOS study on open source consumption, contribution and governance in financial services, exploring year-on-year progress.

October
post

Can Web3 beat public cloud?

There are a growing number of voices heralding Web3 as the future of the internet, and this technology (concept?) is receiving considerable coverage at conferences, in the technology press, and internet forums. I decided it was time to put Web3 to the test and see how it fares against the contemporary approach to building apps - the public cloud. Unfortunately I found Web3 to be very lacking.

post

Evaluating Workflow Technology

A panel discussion from FinJS London 2022, exploring the latest developments in desktop workflows

talk

Evaluating Workflow Technology (Panel)

A panel discussion from FinJS London 2022 exploring the latest developments in desktop workflow technology within financial services.

September
talk

World of Open Source Europe Spotlight 2022 — Research Insights Revealed (Panel)

A panel presenting findings from the Linux Foundation's first European open source spotlight survey, examining the unique dynamics of the European open source ecosystem.

August
podcast

Beyond the Hype: Most-loved language – does Rust justify the hype?

In this episode, Simon Martin, Chris Price and Rob Pilling share their interest and insights into Rust. This relatively new programming language has caught the attention of the development community, being voted the ‘most-loved’ language seven years in a row in the StackOverflow survey.

July
podcast

Beyond the Hype - Investing in Innovation and avoiding the Hype in Digital Government

In this month’s episode, we tackle a wide range of topics relating to the role of technology innovation, and the perils of hyped technology, within Digital Government.

June
talk

Open Source Sustainability and our Corporate Social Responsibility

A deep dive into modern open source supply chains, examining hidden dependencies and systemic risks — and why genuine corporate responsibility, not defensive security measures, is the only sustainable answer.

post

The State of WebAssembly 2022

WebAssembly has gone through quite a transformation this last year, while the wasm language landscape is slowly shifting, the more notable change is in what people are using WebAssembly for. The use of wasm for serverless, containerisation and as a plug-in technology has leapt considerably, with WebAssembly System Interface (WASI) becoming ever more important.

podcast

Beyond the Hype - Behaviour Driven Development, Hype? Or just misunderstood?

In this month’s episode we talk about Behaviour Driven Development (BDD), a testing practice where system behaviours are captured in a human readable Domain Specific Language (DSL), which are automated and executed.

May
podcast

Beyond the Hype - Is multi-cloud a myth?

In this month’s episode, we talk multi-cloud. This is a challenging topic, even the first step—nailing down what the term actually means—isn’t easy. How does it differ from hybrid-cloud or poly-cloud? Does the term refer to the deployment approach for a single application or an entire organisation?

April
post

Building a WebAssembly-powered serverless platform

WebAssembly is really starting to shine is as a standalone runtime environment. In this blog post I explore the Wasmtime WebAssembly runtime, and build a WebAssembly-powered serverless platform in just 70 lines of code.

podcast

Beyond the Hype - Do you actually need a microfrontend?

A relatively new architectural style for building web-based applications, micro-frontends are an extension of the popular microservices pattern where the vertical slice of functionality that a microservice provides is extended all the way to the front-end. With micro-frontends, you can more easily scale your development teams by composing applications from loosely coupled frontend components. In this podcast we ask the question 'Do you actually need a micro-frontend?'

March
podcast

Beyond the Hype - Microservices: are they the only architecture you need?

Microservices have become the standard architectural pattern for everything. It’s a great and versatile pattern, but what people rarely talk about is the cost. You didn’t think you got all that good stuff (polyglot, scalable, decoupled...) for free, did you? In this episode, we talk about the real-world impact of choosing this pattern and when it might not be the right choice.

February
podcast

Beyond the Hype - Coming soon from Scott Logic

Beyond the Hype is a brand new monthly podcast from the Scott Logic team, where we cast a practical eye over what is new and exciting in technology – everything from Kafka to Kubernetes, AI to APIs, microservices to micro-frontends. We look beyond the promises, the buzz and excitement to guide you towards the genuine value.

post

Article recommendations and increasing engagement with OpenAI GPT-3 Embeddings

It is quite common for blogs, or news / content distribution websites, to organise their content around categories of tags. However, this approach is time-consuming, and from measuring behaviours, it doesn't seem to do much to encourage browsing. In this blog post I use the new OpenAI embedding API to create highly targeted article recommendations, resulting in a four-fold (x4) increase in engagement.

January
post

NE:Tech - GitHub Copilot - Life with an AI-powered pair programmer

Last month GitHub released Copilot, an AI powered tool that provides surprising accurate suggestions ranging from a few lines of code to entire functions. Copilot uses a vast and powerful AI model that is trained on billions of lines of open source code from GitHub. This, combined with the context provided by your code and comments, allows it to provide amazingly accurate suggestions. This is no simple autocomplete, this is pair programming with a robot!

talk

"GitHub Copilot: Life with an AI-Powered Pair Programmer"

A hands-on look at GitHub Copilot, the AI pair programmer, examining both its impressive capabilities and its limitations around unpredictability, cognitive load, and licensing.

2021

December
post

Open Source Sustainability through Corporate Social Responsibility

The recent Log4j vulnerability has once again sparked a lot of debate around our reliance on open source projects and their sustainability challenges. I argue that money cannot fix this issue, nor can hiding behind security scans, audits and other defenses. The solution is to genuinely understand the open source community, acknowledge the shared responsibility we have in our commons and through the well-understood tool of Corporate Social Responsibility, look to fill the ethical and philanthropic gaps.

post

Creating personalised data stories with GPT-3

You can tell powerful stories with data, but so often we are faced with raw data (albeit beautifully presented), and are left to create our own narratives. My previous attempts at turning data into stories have been time consuming and underwhelming. In this post I demonstrate how GPT-3, a new and advanced language model, can construct engaging and unique stories from user-specific data, with relative ease.

November
talk

Keynote: WebAssembly – The Past, Present and Future

October
post

Open source in financial services, bridging the contribution gap

We recently worked on a research project, exploring open source issues and challenges within financial services organisations. We found that consumption is “acceptable” rather than “encouraged”, with security concerns representing the biggest obstacle. On the flip-side, open source maintainers don’t wish to invest further in security. Financial services organisations, whose contribution policies lag behind, need to bridge this gap in order to fully capitalise on the value open source presents.

post

Open Source Sustainability through Corporate Social Responsibility

Modern software is increasingly complex, made up of hundreds or thousands of open source components, hidden away in deeply nested dependency trees. Just how much do we know about these components that are an integral part of our products? What are the risks associated with their usage, and our exposure?

talk

Open Source Sustainability through Corporate Social Responsibility

Modern software is built on thousands of open source dependencies, yet their sustainability is increasingly at risk. This talk argues that genuine corporate social responsibility — not defensive security measures — is the only answer.

post

OSFF London - Open Source Sustainability and Our Corporate Social Responsibility

Modern software is increasingly complex, made up of hundreds or thousands of open source components, hidden away in deeply-nested dependency trees. Just how much do we know about these open source components that are an integral part of our products? What are the risks associated with their usage, and our exposure?

talk

Open Source Sustainability and Our Corporate Social Responsibility

Modern software depends on thousands of open source components, yet the industry's response — security scans and walled gardens — harms the very ecosystem it relies on. This talk argues that corporations need to treat open source sustainability as a genuine corporate social responsibility.

talk

State of Open Source in Financial Services (Panel)

A panel introducing the first Linux Foundation Research report on the state of open source consumption, contribution and governance in financial services.

September
post

Exploring 120 years of timezones

Timezones, and daylight saving - the practice of moving clocks forward by one hour once a year - are a pain. They make it hard to schedule international meetings, plan travel, or may simply cause you to be an hour late for work once a year. For a developer, they are even worse! This blog post takes a visual journey through the last 120 years of timezones, daylight saving and the ever changing world time.

August
post

Copilot - Life with an AI-powered programming pair

Last month GitHub released Copilot, an AI powered tool that provides surprising accurate suggestions ranging from a few lines of code to entire functions. Copilot uses a vast and powerful AI model that is trained on billions of lines of open source code from GitHub. This, combined with the context provided by your code and comments, allows it to provide amazingly accurate suggestions. This is no simple autocomplete, this is pair programming with a robot!

talk

GitHub Copilot: Life with an AI-Powered Pair Programmer

A first look at GitHub Copilot — the AI pair programmer trained on billions of lines of open source code — examining its impressive capabilities alongside limitations around unpredictability, cognitive load and licensing.

July
post

GitHub Copilot Experiences - a glimpse of an AI-assisted future

I've been lucky enough to be granted access to the preview of Copilot, GitHub's new 'AI pair programmer' that is causing quite a stir. This blog post shares my initial thoughts and experiences with this tool. In brief, I'm stunned by its capabilities. It has genuinely made me say 'wow' out loud a few times in the past few hours, not something you expect from your developer tooling.

June
post

The State of WebAssembly 2021

This blog post shares the results of the first State of WebAssembly Survey, with results from 250 respondents surveyed in June 2021. We find that Rust is the most frequently used and most desired WebAssembly language and many other interesting results

February
post

You probably don’t need a micro-frontend

Micro-frontends is a relatively new architectural style for building web-based applications, which as the name suggests, is an extension of the popular microservices pattern. In this blog post I argue that this is a pattern you might not need!

2020

December
post

What the financial crash can teach us about open source

A talk I gave at the virtual Open Source Strategy Forum conference in 2020, where I compared some of the challenges facing open source (complexity, fragility, sustainability) to those which triggered the financial crisis of 2008.

post

What the financial crash can teach us about open source?

A talk, from the Open Source Strategy Forums, where I compared some of the challenges facing open source (complexity, fragility, sustainability) to those which triggered the financial crisis of 2008.

talk

What the Financial Crash Can Teach Us About Open Source

Drawing parallels between the hidden systemic risks of the 2008 financial crash and the fragile complexity of modern open source supply chains. Argues that the industry's defensive walled-garden approach is not a sustainable solution.

November
post

In-browser transcoding of video files with FFmpeg and WebAssembly

The WebAssembly build of FFmpeg allows you to run this powerful video processing tool directly within the browser. In this blog post I explore FFmpeg.wasm and create a simple client-side transcoder that streams data into a video element, with a bit of RxJS thrown in for good measure.

August
post

Code generating a WebAssembly 6502 emulator from specifications

Writing emulators that bring old computer hardware back to life is a popular hobby, and one that I have been enjoying recently through my own goal of writing an Atari 2600 emulator. However, writing a CPU emulator can get a little repetitive and tedious, so I thought I'd explore a different approach - generating the CPU emulation code from a specification rather than manually translating it. This blog post shares the fruitful results.

post

White Paper: Building an integrated desktop application ecosystem

This white paper identifies the core building blocks that are required to build an integrated desktop application ecosystem using a combination of web and legacy technologies, looks at the associated challenges, and reviews the various open source and commercial products that form the foundations of this ecosystem of the future.

July
talk

A Practitioner's View of Legacy Migration

June
post

The new normal for your desktop

This webinar explores the potential and realities of an emerging vision for a more integrated desktop application ecosystem, as facilitated by various open-source and vendor products.

talk

The New Normal for your Desktop

A webinar exploring the emerging vision for a more integrated financial desktop application ecosystem, covering the business case, migration challenges, and a pragmatic adoption approach using products such as OpenFin, Glue42 and Finsemble.

post

A gentle introduction to WebAssembly

WebAssembly is a brand new W3C standard for a secure and load-time optimised, stack-based virtual machine that is a compilation target for a broad range of languages. That's clear isn't it?! This talk will provide a very gentle introduction to WebAssembly, with practical examples. By the end of the talk you'll have a much better understanding of this exciting new technology.

talk

A Gentle Introduction to WebAssembly

An accessible introduction to WebAssembly — what it is, how it works, and why it matters as a complement to JavaScript in the browser.

May
post

Rendering One Million Datapoints with D3 and WebGL

This blog post introduces the WebGL components which we recently added to D3FC, this suite of components make it easy to render charts with very large numbers of datapoints using D3. Throughout this post I'll describe the creation of the following visualisation, which displays 1 million books from the Hathi Trust library

March
talk

Build Your Own WebAssembly Compiler

WebAssembly has ended JavaScript's 20-year monopoly as the web's only native language. This talk explores WebAssembly's internals and walks through building a simple compiler that targets the WebAssembly runtime.

February
talk

NE:Tech

January
talk

Techie Brekkie Bristol

post

A WebAssembly Powered Augmented Reality Sudoku Solver

An Augmented Reality Sudoku solver using the WebAssembly build of OpenCV (a C++ computer vision library), Tensorflow (a machine learning library) and solver written in Rust. It neatly demonstrates how WebAssembly allows you to write performance-critical web-based applications in a wide range of languages.

2019

December
post

WebAssembly 2019 Year In Review

I've been authoring the WebAssembly Weekly newsletter for just over two years now. As we near the end of 2019 I want to take the opportunity to share some of my favourite articles from the year.

post

Edinburgh Open Source Meetup - Why I 🖤 open source

At work, Colin spends a lot of time talking about the commercial benefits of open source software, and more broadly the business benefit of engaging with the open source community. However, in this talk he shares a more personal viewpoint, talking about the reasons why he contributes to open source projects, and the benefits it brings to him as an individual.

talk

Why I Love Open Source

A personal talk on why contributing to open source projects matters beyond the commercial case, sharing individual motivations and benefits.

November
post

WebAssembly on the Blockchain and JavaScript Smart Contracts

WebAssembly, despite the name, is a universal runtime that is finding traction on a number of platforms beyond the web. In this blog post I explore just one example, the use of WebAssembly as a smart contract engine on the blockchain. This post looks at the creation of a simple meetup-style event with ticket allocation governed by a smart contract written in JavaScript.

talk

Build Your Own WebAssembly Compiler

WebAssembly has ended JavaScript's 20-year monopoly as the web's only native language. This talk explores WebAssembly's internals and walks through building a simple compiler that targets the WebAssembly runtime.

Build Your Own WebAssembly Compiler
talk

Cloudflare

talk

WebAssembly Beyond the Browser

September
talk

Lloyds Banking Group ConnecTech

July
post

Faster Fractals with Multi-Threaded WebAssembly

When WebAssembly was released a couple of years ago it was an MVP (Minimal Viable Product), one significant feature that was missing from the MVP was threads. The WebAssembly threads proposal is now quite mature and available in both the tooling and Chrome. This blog post explores the internals of this feature, the new instruction set, and how it supports multi-threaded applications.

talk

Cloud Breakfast Briefing

June
talk

Perspective and D3FC: A Collaboration Success Story

A live demonstration of the collaboration between Perspective (JP Morgan's WebAssembly-based streaming pivot engine) and D3FC (Scott Logic's data visualisation library), showcasing the benefits of cross-organisation open source collaboration.

May
post

Build your own WebAssembly Compiler

Have you ever wanted to write your own compiler? ... yes? ... of course you have! I've always wanted to have a go at writing a compiler, and with the recent release of WebAssembly, I had the perfect excuse to have a go.

talk

Build Your Own WebAssembly Compiler

WebAssembly has ended JavaScript's 20-year monopoly as the web's only native language. This talk explores WebAssembly's internals and walks through building a simple compiler that targets the WebAssembly runtime.

talk

Perspective and D3FC: A Collaboration Success Story

A live demonstration of the collaboration between Perspective (JP Morgan's WebAssembly-based streaming pivot engine) and D3FC (Scott Logic's data visualisation library), showcasing the benefits of cross-organisation open source collaboration.

April
post

Build Your Own WebAssembly Compiler - London Node User Group - April 2019

This talk, from London Node User Group, looked at some of the internals of WebAssembly, exploring how it works ‘under the hood’ with a demonstration of how you can create your own (simple) compiler that targets this runtime.

talk

Build Your Own WebAssembly Compiler

A deep dive into WebAssembly internals, exploring how it works under the hood and demonstrating how to build a simple compiler that targets this runtime.

post

White Paper: Thinking differently - the cloud as a value driver

The Financial Services industry is having to change and adapt in the face of regulations, competition, changes in buying habits and client expectations. This white paper encourages the industry to look at public cloud not as a tool for driving down costs, but as a vehicle for technical and business agility.

March
post

Maintaining global state in AWS Lambda functions with Async Hooks

This post looks at how the experimental Async Hooks API can be used to support global state within AWS Lambda functions. Considering that this is an experimental API it's worth treating with caution, but it does provide an interesting potential solution to a common problem.

February
talk

The Summit for Asset Management

2018

December
post

Tools, Bots and Automation for better Open Source Projects

With open source projects, we often work with strangers, people we may never speak to, let alone meet. Creating a quality product, with such a disparate team can be quite a challenge. This talk takes a look at how tools and automation are a critical component when creating a successful open source project.

post

OpenFin Layouts added to StockFlux

We've updated StockFlux, our OpenFin demo app, to make use of the recently-released OpenFin Layouts APIs. This blog post takes a quick look at the features we've added, and the APIs used.

November
post

Realtime crypto charting with JPM Perspective and d3fc

Perspective is a streaming pivot visualization engine which uses WebAssembly. This blog post explores its capabilities and creates a custom cryptocurrency visualisation using d3fc.

talk

WebAssembly and the Future of JavaScript?

JavaScript has been the web's only native language for over 20 years — WebAssembly changes that. This talk explores what WebAssembly is, how it works, and what it means for the future of web development.

talk

Tools, Bots and Automation for Better Open Source Projects

A look at how tools, bots and automation are a critical component of successful open source projects, covering code standards, testing, licensing and more.

post

7 Reasons I ❤️ Open Source

Here's why I spend so much of my time—including evenings and weekends—on GitHub, as an active member of the open source community.

October
talk

WebAssembly and the Future of JavaScript?

JavaScript has been the web's only native language for over 20 years — WebAssembly changes that. This talk explores what WebAssembly is, how it works, and what it means for the future of web development.

post

Serverless Rust with AWS Lambda and WebAssembly

In this post, I look at how WebAssembly can be used to create serverless functions and demonstrate an AWS Lambda function written entirely in Rust.

talk

WebAssembly and the Future of JavaScript?

JavaScript has been the web's only native language for over 20 years — WebAssembly changes that. This talk explores what WebAssembly is, how it works, and what it means for the future of web development.

September
post

Building a Complex Financial Chart with D3 and d3fc

When it comes to creating complex bespoke charts, of all the JavaScript visualisation / charting frameworks, D3 is the clear winner. This blog post takes a step-by-step look at the process of of building an ‘advanced’ financial charting using D3, with additional components from d3fc.

July
post

The future of WebAssembly - A look at upcoming features and proposals

WebAssembly is a performance optimised virtual machine that was shipped in all four major browsers earlier this year. It is a nascent technology and the current version is very much an MVP. This blog post takes a look at the WebAssembly roadmap and the features it might gain in the near future.

talk

WebAssembly and the Future of JavaScript?

JavaScript has been the web's only native language for over 20 years — WebAssembly changes that. This talk explores what WebAssembly is, how it works, and what it means for the future of web development.

June
post

Sleeping Lambdas and AWS Step Functions

With AWS Lambda you pay for execution duration, which means that sleeping or waiting during execution has a direct impact on your bill! This blog post takes a look at how to make AWS Lambda functions sleep, without incurring costs, via AWS Step Functions.

talk

Transforming Development Productivity with Hot-Reload and Time Travel

A demonstration of how functional programming frameworks — React, ImmutableJS and Redux — enable Hot Module Reload and Time Travel, techniques that transform the developer experience when building complex HTML5 trading and financial desktop applications.

talk

WebAssembly and the Death of JavaScript?

A talk examining what is wrong with the way we use JavaScript today and why WebAssembly is the answer.

May
post

Transpiling WebAssembly to support Multi Return Values

The WebAssembly specification is evolving, with many new features on the way. This blog post makes one of these future features available today, multi value returns, using the Babel approach of transpiling.

talk

WebAssembly and the Future of JavaScript?

JavaScript has been the web's only native language for over 20 years — WebAssembly changes that. This talk explores what WebAssembly is, how it works, and what it means for the future of web development.

talk

WebAssembly and the Death of JavaScript?

A talk examining what is wrong with the way we use JavaScript today and why WebAssembly is the answer.

April
post

Writing WebAssembly By Hand

WebAssembly is a new language for the web, although unlike JavaScript it's not a language you are expected to use directly. However, it is actually possible to write WebAssembly directly by hand and it turns out this is an educational and enjoyable process, which I will explore in this blog post.

post

White Paper: The Web Assembles

WebAssembly is a new runtime for the web; a fast and efficient compilation target for a wide range of languages that could have a far-reaching impact on the web as we know it. This paper looks at at the performance limits of JavaScript and how WebAssembly was designed to tackle them.

March
talk

WebAssembly and the Future of JavaScript

JavaScript has been the web's only native language for over 20 years — WebAssembly changes that. This talk explores what WebAssembly is, how it works, and what it means for the future of web development.

talk

WebAssembly and the Death of JavaScript?

A talk examining what is wrong with the way we use JavaScript today and why WebAssembly is the answer.

WebAssembly and the Death of JavaScript?
February
post

WebAssembly - and the Death of JavaScript?

This talk, from JSMonthly, looked at what's wrong with the way we are using JavaScript today and why we need WebAssembly.

talk

WebAssembly – and the Death of JavaScript?

A talk examining what is wrong with the way we use JavaScript today and why WebAssembly is the answer.

2017

December
post

Writing a CHIP-8 emulator with Rust and WebAssembly

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!

November
talk

Scott Logic Evening of Tech Talks

talk

WebAssembly: The Future of Web Development?

An early look at WebAssembly — the emerging W3C binary format that could reshape web development by allowing languages beyond JavaScript to run in the browser at near-native speed.

post

Developing Bristol Pound - An Open Source React Native App

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.

October
post

Migrating D3 Force Layout to WebAssembly

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).

post

Serverless JavaScript

JavaScript is the dominant force on the web and increasingly the desktop too, but what about on the server? This talk looks at server-side JavaScript within the context of serverless architectures, a cloud-computing pattern with zero configuration, automatic scaling and a pay-per execution model.

talk

Serverless JavaScript

A look at server-side JavaScript within the context of serverless architectures — a cloud-computing pattern with zero configuration, automatic scaling and pay-per-execution pricing.

post

Exploring different approaches to building WebAssembly modules

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.

September
post

Asynchronous Recursion with Callbacks, Promises and Async.

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.

August
post

Creating a Market Profile Chart with D3

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.

July
post

cla-bot a GitHub bot for automating Contributor Licence Agreements

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.

June
post

Mapping UK place name endings (With command line cartography tools)

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.

talk

ContainerJS – Container Application API for Financial Desktops

An overview of ContainerJS, a Symphony Foundation project providing a unified API abstraction over HTML5 desktop containers such as OpenFin, Electron and the browser.

May
post

gifbot - Building a GitHub App

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!

post

Developing a GitHub Bot with AWS Lambda

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.

talk

Accelerating HTML5 Desktop Development: Hot Reload and Time Travel

A demonstration of how functional programming frameworks — React, ImmutableJS and Redux — enable Hot Module Reload and Time Travel, techniques that transform the developer experience when building complex HTML5 trading and financial desktop applications.

April
talk

Project Automation Series Webinar

post

Interactive and Responsive Small Multiples with D3

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.

March
talk

OpenFin Meetup

February
post

Visualising London Marathon Training Data From Strava

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!

January
post

Visualising London Marathon Strava Data

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.

post

Our most popular Tech Blog posts of 2016

OK, I’m a bit late; I intended this for the start of January, but this time last year I wrote a post on our most popular 2015 technical blogs. Here I am again!

2016

December
post

Semantic Versioning is not enough

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 consumers of your libraries and frameworks this can’t be right? Perhaps a hybrid approach that combines both semantic and romantic versioning would keep both the computers and the humans happy?

November
post

A Journey Through Sound Synthesis with AudioKit

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 topics that I wouldn't otherwise look into. And so it was, a couple of months ago, that I received an assignment to write a tutorial on the open source AudioKit project.

October
post

White Paper: Unstoppable HTML5

A white paper which takes a looks at the continued growth of HTML5 and how it is now a viable solution for desktop application development.

talk

Transforming Development Productivity with Hot-Reload and Time Travel

A demonstration of how functional programming frameworks — React, ImmutableJS and Redux — enable Hot Module Reload and Time Travel, techniques that transform the developer experience when building complex HTML5 trading and financial desktop applications.

talk

Time Travel and the Future of HTML5 Productivity

A look at how functional programming frameworks like React, ImmutableJS and Redux enable novel development techniques including Hot Module Reload and Time Travel. Demonstrates rapid development cycles in the context of complex trading platforms.

September
talk

Transforming Development Productivity with Hot-Reload and Time Travel

A demonstration of how functional programming frameworks — React, ImmutableJS and Redux — enable Hot Module Reload and Time Travel, techniques that transform the developer experience when building complex HTML5 trading and financial desktop applications.

talk

Collaboration: Getting to the Heart of Open Source Software

July
post

Time Travel and The Future of HTML5 Productivity

In this talk I'll review how the functional programming style of frameworks such as React, ImmutableJS and Redux have paved the way for novel techniques that once again support rapid development cycles

talk

Time Travel and the Future of HTML5 Productivity

A look at how functional programming frameworks like React, ImmutableJS and Redux enable novel development techniques including Hot Module Reload and Time Travel. Demonstrates rapid development cycles in the context of complex trading platforms.

June
post

Recursive Pattern Matching and Transformation of JavaScript AST

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 perform the transformations, I'd recommend this blog post by Shuhei Kagawa that describes the development of a simple plugin for Angular 2 code generation.

post

Six tips for cleaner javascript promises

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.

talk

Time Travel and the Future of HTML5 Productivity

A look at how functional programming frameworks like React, ImmutableJS and Redux enable novel development techniques including Hot Module Reload and Time Travel. Demonstrates rapid development cycles in the context of complex trading platforms.

May
post

Applying redux reducers to arrays

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.

talk

Accelerating HTML5 Desktop Development: Hot Reload and Time Travel

A demonstration of how functional programming frameworks — React, ImmutableJS and Redux — enable Hot Module Reload and Time Travel, techniques that transform the developer experience when building complex HTML5 trading and financial desktop applications.

talk

Time Travel and the Future of HTML5 Productivity

A look at how functional programming frameworks like React, ImmutableJS and Redux enable novel development techniques including Hot Module Reload and Time Travel. Demonstrates rapid development cycles in the context of complex trading platforms.

April
talk

(Geeking out about) React Native

A talk exploring all the seriously cool tech that makes React Native possible, covering ReactJS, Virtual DOM, JSX, ES6 features, flexbox and native UI.

March
post

Automating Expenses With the Mondo API

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!

February
post

Binding with Bond

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.

January
post

Angular 2 Time Travel with Redux

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.

post

Angular 2 with Immutable.JS

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.

post

Most popular Tech Blog posts of 2015

Most popular tech blog posts of 2015

2015

December
post

Creating an Angular 2 build with Gulp, TSLint and DefinitelyTyped

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.

post

Building a todo list application with Angular 2.0

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.

November
post

Rendering ASCII Charts with D3

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

October
post

Geeking out about React Native

ReactJS, Virtual DOM, JSX, a hackable editor, ES6 modules, classes, arrow functions, node, iOS, native-UI, flexbox, idempotent functions… In this talk I’ll be geeking out about all the seriously cool tech that makes ReactNative possible.

talk

Geeking out about React Native

A talk exploring all the seriously cool tech that makes React Native possible, covering ReactJS, Virtual DOM, JSX, ES6 features, flexbox and native UI.

post

White Paper: HTML5 Migration – Get started with a Little Bang

This white paper explores and addresses the importance of migrating complex business applications from Flex and Silverlight to HTML5. It highlights the risks involved in delaying your migration and provides a solution that tackles cost concerns at the same time as delivering an early return on investment.

post

Improving Grunt Performance

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.

September
talk

From Monoliths to Components with D3

D3 is a powerful data visualisation library, but its low-level API makes it hard to build reusable components. This talk explores patterns for composing D3 code into well-structured, reusable components.

June
talk

JS Monthly

May
post

MVVM With ReactiveCocoa 3.0

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.

April
post

ReactiveCocoa 3.0 - Signal Producers and API clarity

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.

post

A First Look at ReactiveCocoa 3.0

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.

talk

Cross Platform Mobile: Looking Beyond the HTML5 Hype

talk

ReactiveCocoa and Swift, Better Together

ReactiveCocoa is an elegant functional reactive programming framework that changes how we structure iOS applications, but its beauty is somewhat obscured by Objective-C. This talk shows how Swift and ReactiveCocoa form a natural and beautiful partnership.

March
post

Introducing React Native

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!

post

Retrospective on Developing an application with React Native

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.

talk

ReactiveCocoa and Swift, Better Together

ReactiveCocoa is an elegant functional reactive programming framework that changes how we structure iOS applications, but its beauty is somewhat obscured by Objective-C. This talk shows how Swift and ReactiveCocoa form a natural and beautiful partnership.

post

Implementing React.js in Swift

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.

February
post

Exploring KVO alternatives with Swift

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.

post

Implementing Events in Swift

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.

post

SVG layout with Flexbox for simpler D3 charts

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.

January
post

Exception Handling in Swift

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.

2014

December
post

Tearing Down Swift's Optional Pyramid of Doom

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.

November
post

Swift Initialization and the Pain of Optionals

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.

post

Binding mutable arrays with ReactiveCocoa

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.

October
post

Mandelbrot Generation With Concurrent Functional Swift

This post show how the simple task of computing a Mandelbrot set can be split up across multiple threads (and processors) using functional techniques.

talk

ReactiveCocoa and Swift, Better Together

ReactiveCocoa is an elegant functional reactive programming framework that changes how we structure iOS applications, but its beauty is somewhat obscured by Objective-C. This talk shows how Swift and ReactiveCocoa form a natural and beautiful partnership.

post

Jekyll Pagination and Infinite Scroll

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!

September
post

Swift and the curious case of AnyObject

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!

post

Functional Swift and Memoization

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.

post

Swift By Tutorials is Published

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!

book

Swift by Tutorials

The first book published covering the Swift programming language, co-authored with Matt Galloway (Facebook). Published by Ray Wenderlich.

post

The Game of Life with Functional Swift

This blog post shows an implementation of Conway's Game of Life using functional techniques in Swift.

talk

iOSDevUK 2014

August
post

Swift Adoption Statistics

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.

July
post

MVVM, Swift and ReactiveCocoa - It's all good!

This blog post looks out how Swift makes the combination of ReactiveCocoa and MVVM even better ...

post

A Statistical Comparison of the iOS and Android Stores

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.

post

MVVM with ReactiveCocoa

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.

June
post

Swift Sequences and Lazy Evaluation

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.

May
post

White Paper - HTML5 At Enterprise Scale

Moving from desktop or plugin technologies (Flex, Silverlight, Java Applets) to HTML5 is a challenge for developers of large-scale enterprise applications. This White Paper discusses the challenges and offers potential solutions.

post

Binding to a UITableView from a ReactiveCocoa ViewModel

This blog post presents a simple utility class for binding ReactiveCocoa ViewModels to UITableViews without the need for the usual datasource / delegate boiler-plate.

April
post

A Colour Analysis of the Apple App Store

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.

March
post

A Statistical Analysis of the Apple App Store

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.

post

Simulating Accelerometer and Location data for iOS

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.

post

ReactiveCocoa - The Definitive Guide

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

February
talk

Cross-Platform Data Visualization for Mobile with ShinobiControls and Xamarin

January
post

PropertyCross 1.3 Released

PropertyCross has just announced a v1.3 release, which includes two new frameworks, a number of updates and an improved build system.

post

iOS 7 By Tutorials In Print

The book, iOS 7 By Tutorials, which I contributed four chapters to, is now in print.

2013

November
post

Understanding JavaScript Object Creation Patterns

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!

October
talk

DIBI 2013

September
post

An Interactive Tab Bar Controller Transition

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!

post

Creating a custom flip view controller transition

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.

post

iOS 7 by Tutorials - the first iOS 7 book - is published

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.

book

iOS 7 by Tutorials

Authored four chapters covering UIKit Dynamic, TextKit and ViewController transitions. Published by Ray Wenderlich.

August
post

Windows Phone App Studio - Shows Potential ...

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.

June
post

New iOS Article - How To Make a Custom Control

My latest iOS development article has been published on Ray Wenderlich's site, this time I look into how to develop custom iOS controls.

May
post

ReversiEight - A Windows 8 Reversi Game

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.

post

HTML5 - It Just Got Real - Slides

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.

talk

HTML5 – It Just Got Real

April
post

Enhanced Windows Phone 8 Map Gestures

This blog post describes the addition of a two-finger rotation and three-finger pitch gesture to the Windows Phone 8 Map control.

post

Comparing KendoUI and Knockout (with a bit of jQueryMobile on the side)

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.

March
post

HTML5 - It Just Got Real - A One-day Conference in London 14th May

Announcing a one-day conference at the Royal Society, London UK, on the 14th of May.

February
post

Windows Phone 8 Running App Article wins CodeProject competition

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.

post

Linq to Objective-C

In the past few months I have been immersing myself into the world of iOS development.

January
post

CodeProject MVP 2013

Earlier today I received an email informing me that I have been awarded a CodeProject MVP for the year 2013.

post

CodeProject Article on Xamarin Cross Platform Development

This article looks at how you can write a cross-platform mobile application with a shared C# code base using Xamarin MonoTouch.

2012

December
post

Introducing PropertyCross - Helping you select a cross-platform mobile framework

Introduces a new open source project that helps developers choose a suitable cross-platform framework

November
post

A Multicast Delegate Pattern for iOS Controls

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.

post

Ray Wenderlich and My Adventures in iOS

The technologies that we use to write applications for our end users are changing at a frightening pace!

October
post

Integrating Knockout and jQueryMobile

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!

post

Clearer - A Gesture-Driven Windows 8 To-Do Application

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.

August
post

Gesture-Driven To Do List Article Wins CodeProject Monthly Competition

I have just found out that my article "A Gesture-Driven Windows Phone To-Do List" won first place in the July 2012 best mobile article category.

post

Property Finder - A Cross-platform HTML5 Mobile App

A while back, when PhoneGap for Windows Phone was still in beta, I created Property Finder, an application for searching UK property listings.

July
post

Book Review: iOS Programming for .NET Developers

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.

post

A Gesture-Driven Windows Phone To-Do List - Complete Example

Over the past few weeks I have been working on a Windows Phone to-do list application, inspired by the iPhone Clear app.

post

An Introduction and Thoughts on Developing iOS Applications with MonoTouch

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.

post

The Higgs Boson, Comic Sans and my 15 minutes of Twitter fame

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.

June
post

A gesture-driven Windows Phone to-do application Part Two - drag re-ordering

A couple of weeks ago I blogged about a todo list application which uses gestures to achieve its basic functions.

post

A Developer Perspective on Windows Phone 8 - An Update

My blog post from yesterday "A Developer Perspective on Windows Phone 8" sparked a bit of furious debate on Twitter.

post

A Developer Perspective on Windows Phone 8

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.

post

Microsoft Surface vs. Apple iPad - a Visual Comparison

In this post I present a graphical comparison of the Microsoft Surface and Apple iPad tablets

post

A gesture-driven Windows Phone to-do application

This blog post describes the implementation of a gesture-based todo-list application. The simple interface is controlled entirely by drag, flick and swipe.

April
post

Introducing the jQuery Mobile Metro Theme

This blog post introduces the new jQuery Mobile Metro theme and demonstrates how to create a web UI that detects the device it is being viewed on, to render a Metro UI on WP7 and iOS on other devices

post

WPF Charting Performance Comparisons (the Battle Continues)

This blog post presents a thorough analysis of the performance of various WPF Charting components. The results show that a new class of charting solutions, which use raster-based graphics as opposed to retained mode vector graphics, provide a considerable performance advantage

post

Everything you wanted to know about databinding in WPF, Silverlight and WP7 (Part Two)

This is the second post in my series about databinding in Silverlight and WPF.

post

KnockoutJS vs. Silverlight - a new CodeProject article

I have just published a new article over on CodeProject called "KnockoutJS vs. Silverlight".

post

Everything you wanted to know about databinding in WPF, Silverlight and WP7 (Part One)

OK, so the title is a little ambitious, but there is nothing wrong with setting yourself lofty aims! Because of the depth of this topic I have decided to split this tutorial up into a series of blog posts, each of which explore a different aspect of the binding framework.

March
post

Developing a GWT TodoMVC application

This blog post describes my experiences of developing a simple Todo application with Google Web Toolkit (GWT), that I have contributed to the JavaScript TodoMVC project, which compares the implementation of the same application with various JavaScript frameworks.

post

Plotting Circular Relationships Graphs with Silverlight

I have just published a new article on codeproject, which describes the creation of a Silverlight custom control for plotting the relationships between a network of nodes.

February
post

Slides and code from my WPUG talk on PhoneGap

Yesterday I presented a talk at the London-based Windows Phone User Group on the development of cross-platform mobile applications using PhoneGap.

post

Visualising StackOverflow Tag Relationships with Silverlight

Recently I have been wondering about the wealth of information that can be gleaned from the 2.5 million programming question on Stack Overflow.

post

The Gradual Decline in Silverlight Adoption

Around one year ago I made the prediction that Silverlight would have an overall adoption of 81% by the end of 2011.

post

WPUG Talk: Developing cross-platform mobile applications with PhoneGap for Windows Phone 7

In a couple of weeks I will be giving a talk on using PhoneGap for cross platform mobile application development at the WPUG #NotAtMWC12 event on Tuesday, February 28, in London. This post gives a brief overview of my talk and a video.

post

A Simple Pattern for Creating Re-useable UserControls in WPF / Silverlight

This blog post provides step-by-step instructions for creating a user control, which exposes bindable properties, in WPF and Silverlight. The post covers dependency properties, and how to manage DataContext inheritance.

January
post

WP7 PhoneGap Backbutton Support Re-visited

About a month ago I published an article which demonstrated how to create a WP7 application using static HTML pages and PhoneGap.

post

Windows Phone 7 - Browsing your Photos via Bing Maps

The Windows Phone 7 camera gives you the option to record the location where a picture was taken (under Settings => applications => pictures+camera).

post

Proud to be a CodeProject MVP 2012

I have just received an email from Chris Maunder, co-founder of CodeProject, informing me that I have been awarded CodeProject MVP status for 2012.

post

FastClick for WP7 - Improving Browser Responsiveness for PhoneGap Apps

I recently released an update of the HTML5 / PhoneGap application I wrote a few months ago to the marketplace.

2011

December
post

A Festive and Fun Windows Phone 7 Maze Game

Last night, with my Christmas presents all wrapped and a lack of any decent programmes (festive or otherwise) on television, I had a few hours to kill, so decided to create a festive-themed WP7 game ...

post

A Metro Themed PowerPoint Template

Over the weekend I mentioned on Twitter that I had created a Metro-style PowerPoint template. There were a few requests to share, so hence this blog post. Scroll to the bottom to download the PowerPoint file.

post

A Simple Multi-Page Windows Phone 7 PhoneGap Example

This blog post shows how you can use PhoneGap to create Windows Phone 7 applications that are comprised of multiple, simple HTML pages, whilst meeting the Marketplace certification requirements.

post

A Windows Phone 7 Slide View with Page Pips

A popular user-interface in the iOS world is the UIPageControl which renders a small set of dots to indicate the number of pages.

November
post

Handling the back-stack in Windows Phone 7 PhoneGap applications

Recently I have been researching the use of PhoneGap for creating HTML5 Windows Phone 7 applications.

post

Pushpin Clustering with the Windows Phone 7 Bing Map control

This blog post provides a simple utility class that will cluster pushpins on a Bing Map control. This utility provides a way to achieve great performance with 1000s of pushpins.

post

Suppressing Zoom and Scroll interactions in the Windows Phone 7 WebBrowser Control

This blog post describes a simple helper class that can be used to supress scrolling and pinch zoom of the Windows Phone 7 WebBrowser control.

post

The Untimely Demise of the Plugin (and how LOB developments will suffer)

It has been another interesting week for HTML5 and front-end technologies. We have seen Adobe abandon work on mobile versions of the Flash plugin, news of Silverlight 5 being the last version of the Microsoft plugin and more recently an announcement that Adobe will no longer develop Flex.

post

An Introduction to Semantic Zoom in Windows 8 Metro

With the new Metro UI, Windows 8 has firmly embraced the tablet form-factor, with the interface tailored for touch and multi-touch interactions.

post

Property Finder - the first HTML5-based Windows Phone 7 Application

Last week I submitted Property Finder, a simple application that searches for properties based in the UK, to the Windows Phone 7 Marketplace. I was happy to receive confirmation that this application had been certified and published just two days later.

October
post

Tombstoning with PhoneGap for Windows Phone 7 (and KnockoutJS)

A few weeks back I wrote a blog post about how the recent announcement of PhoneGap support for Windows Phone 7 (WP7) which makes it possible to develop HTML5-based applications.

post

Codeproject September Competition - Scored a Double!

I have just received an email from Codeproject - my article on XAMLFinance, a cross platform Silverlight, WPF and WP7 application, has won Best C# and Best Overall article competitions for September.

post

Adding Error Bars to Visiblox Silverlight Charts

Having spent a number of years studying Physics at university, I have had the importance of error bars well and truly drummed into me!

post

Paging Data from the Server with Silverlight

This blog post provides an implementation of IPagedCollectionView which allows paging of data from the server. An IPagedDataSource is introduced that allows any paged data source to be plugged in, with the standard controls such as DataPager making it easy to create paging applications.

post

WinRT Transitions - Creating Fast and Fluid Metro UIs

This blog post looks at the new concept of 'transitions' that WinRT, within Windows 8, introduces. This concept makes it very easy for you to create a fluid and interactive UI without going anywhere near storyboards!

post

Using ObservableCollection with WinRT (via a little shim!)

WInRT introduces a new interface for collection change notification, IObservableVector, which means ObservableCollection no longer works with this framework. In this blog post I will show how you can use ObservableCollection, via a simple adapter, within you WInRT applications.

post

A Windows Phone 7.1 (Mango) MVVM Tombstoning Example

In this blog post I look at the new application lifecycle model that Windows Phone 7.1 (Mango) introduces, and show how to handle the various lifecycle events in a simple MVVM application.

September
post

Developing Windows Phone 7 HTML5 apps with PhoneGap

This article show the step-by-step development of a Windows Phone 7 HTML5 application using PhoneGap. It also looks at how viable this approach is for cross-platform mobile development.

post

Building Windows Phone Apps - a free WP7 eBook

I've just had an email land in my inbox from Microsoft's Mike Ormond, announcing that the Windows Phone 7 book that I contributed a couple of chapters to (Introduction and Tools), has finally been published!

post

XAML Finance - a cross-platform WPF, Silverlight, WP7 application

I have just published a new article on codeproject which describes the development of XAMLFinance, a cross-platform application for the desktop (WPF), web (Silverlight) and phone (WP7).

post

TweetSearch - A Cross platform Metro UI WinRT and Silverlight Application

With the Windows 8 preview release earlier this week, developers are now faced with a whole new and exciting Microsoft stack.

post

Windows 8 - An OS of two halves.

In this blog post I take a look at Windows 8 on the outside, from a user perspective; and on the inside, from a developer perspective to see how it will change the way we develop with Windows on tablets, smartphones and the desktop when it is released next year.

post

Dart - will Google make HTML5 applications viable?

Just a few weeks ago I wrote a blogpost "Can Microsoft 'fix' JavaScript and make HTML5 applications viable?", where I described some of the issues with JavaScript and how these could be solved by Microsoft if they wrote a C# to JavaScript compiler.

August
post

Can Microsoft 'fix' JavaScript and make HTML5 applications viable?

Microsoft's recent change in stance over Silverlight, promoting HTML5 as "the only true cross-platform solution for everything", seems to have sidelined Silverlight as a niche framework.

post

Talk on Cross-Platform XAML Applications @NEBytes

I am happy to have been invited by NEBytes to give a talk on cross-platform XAML applications later this month.

post

Implementing a Windows Phone 7 Conversation View Part Two

This blog post describes how to implement a conversation / messaging style application with Windows Phone 7. It covers how to style the speech bubbles and the scrolling of the conversation list view when the phone keyboard is shown.

July
talk

Cross Platform XAML Applications

post

Capturing Windows Phone 7 Panorama Images

The Windows Phone 7 Panorama control is widely used in applications and to many has come to symbolise the Metro Design Language.

post

Implementing a Windows Phone 7 Conversation View

This blog post looks at how to to create a conversation view, mimicking the SMS messaging interface within Windows Phone 7. This post shows how we can select different DataTemplate for each item in an ItemsControl to achieve this effect.

post

Silverlight UK User Group Presentation on Cross Platform XAML

Earlier this week I presented a talk to the Silverlight UK User Group on cross-platform application development with WPF, Silverlight and Windows Phone 7.

post

From Silverlight to HTML5 CodeProject Article

I have just published an article on codeproject which describes the differences in development between Silverlight and HTML5.

June
post

Visiblox MVP Giveaway

Readers of my blog will probably have noticed that I have a keen interest in both charting and performance.

post

Metro In Motion #8 - AutoCompleteBox Reveal Animation

When I started the Metro In Motion series, I thought I would probably post three or four articles and be done. However, every time I use my Windows Phone 7 I seem to spot a new 'native' fluid UI effect which I would like to use in my own code.

post

Metro In Motion Part #7 - Panorama Prettiness and Opacity

This blog post details a simple metro-in-motion behaviour which reduces the Panorama control's contents while the user slides from item-to-item so that they can really appreciate your fancy background graphic!

post

Metro In Motion Part #6 - Rolling List Location Indicator

This blog post describes the development of a rolling list location indicator. This indicator mirrors the behaviour seen in the native Windows Phone 7 calendar which rolls from one date to the next as the user scrolls.

May
post

A Simple Windows Phone 7 MVVM Tombstoning Example

This blog post shows how to implement tombstoning within a Windows Phone 7 application that following the Model-View-ViewModel pattern.

post

Metro In Motion #5 - SandwichFlow

For the past few months I have been writing a Metro-In-Motion blog series which describes how to recreate some of the fluid effects found in native Windows Phone 7 applications within your own applications.

post

White Paper: Flex, Silverlight or HTML5? Time to decide...

When meeting current and prospective clients the subject of web technology choice often arises. There has been a great deal of confusion and uncertainty out there, even before Microsoft's perceived change of stance with respect to Silverlight emerged.

post

White Paper: Flex, Silverlight or HTML5? Time to decide...

When meeting current and prospective clients the subject of web technology choice often arises. There has been a great deal of confusion and uncertainty out there, even before Microsoft's perceived change of stance with respect to Silverlight emerged.

post

Metro In Motion Part #4 - Tilt Effect

This blog post describes the implementation of a metro 'tilt' effect for Windows Phone 7 which causes element to respond to user interactions by tilting in 3D

April
post

ViewModel INotifyPropertyChanged Code Generation

This blog post describes a novel method of generating boiler-plate MVVM code using codesnippet automation. You simply add attributes to your view model classes and the code is generated for you!

post

A Fast Loading Windows Phone 7 NavigationList Control

This blog post describes a Windows Phone 7 NavigationList control, a list control designed for navigation pages. The NavigationList renders twice as fast as a ListBox and has a slightly simpler API.

post

MIX11 - A Tale of Two Keynotes - As Told By Twitter

The annual MIX conference, where Microsoft showcases the latest and greatest technologies to the development community is now coming to an end.

post

Gartner Predicts a Promising Future for Windows Phone 7 Developers

Yesterday Gartner released its latest mobile smartphone sales predications, with the figures showing a dramatic turnaround in their predictions for the Microsoft Windows Phone 7 platform.

post

Metro In Motion Part #3 - Flying Titles!

In this blog post I look at how to implement the fly-out fly-in effect seen in native Windows Phone 7 applications. This effect is seen in the native mail application; when you click on a message, the title flies out of the list then flies back in as the title of the message page.

March
post

Metro In Motion Part #2 - 'Peel' Animations

This blog post is part Š of my Metro In Motion series. In this post I demonstrate how to implement the animated 'peel' effect seen when native Windows Phone 7 applications exit.

post

Metro In Motion Part #1 - Fluid List Animation

This blog post presents an attached behaviour that gracefully slides the contents of a list into view when used in conjunction with a Pivot control, emulating the Windows Phone 7 email application.

post

A Silverlight Resizable TextBlock (and other resizable things)

In this blog post I present a simple attached behaviour that uses a Thumb control within a Popup to adorn any UI element so that the user can re-size it.

post

CodeProject Article on WP7 Jump List

I have just published a new CodeProject article on developing a Windows Phone 7 jump list control.

post

MVVM Charting - Binding Multiple Series to a Visiblox Chart

This post describes a method of using attached properties to bind a ViewModel which contains multiple data series to a Visiblox chart without any code-behind.

February
post

Google Sky on Windows Phone 7

This blog post shows just how easy it is to use Google Sky as a tile source for Bing Maps, bringing the universe to Windows Phone 7!

post

Windows Phone 7 Performance Measurements - Emulator vs. Hardware

This blog post presents a few performance measurements that detail the relative performance of ItemsControl, ListBox and manual addition of elements to the UI. These performance measurements are also compared when ran on the emulator and the real hardware.

post

My DDDHack Entry

At the weekend my wife was having a 'girls night out', which gave me an excellent excuse (and roughly four hours) to spend working on a DDDHack entry.

post

A Circular ProgressBar Style using an Attached ViewModel

This blog post describes how to re-template the Silverlight ProgressBar control to render a circular progress indicator. This approach uses an attached view model to circumnavigate some of the limitations of the ProgressBar design.

January
post

Automatically Showing ToolTips on a Trimmed TextBlock (Silverlight + WPF)

Both WPF and Silverlight have a property TextTrimming="WordEllipsis", which trims the text that a TextBlock displays based on the available width.

post

Windows Phone 7 DeferredLoadContentControl

This blog post describes a simple content control that can be used to defer the rendering of its contents in order to provide a better user experience on Windows Phone 7.

post

A Navigator Control For Visiblox Time Series Charts

In this blog post I will describe the creation of a simple range selector UserControl, which can be used alongside a Visiblox chart to create an interactive navigator for time series data.

post

A Windows Phone 7 Jump List Control

This blog post presents a Windows Phone 7 Jump List control that I have developed.This post describes the API in detail and includes full sourcecode. Feel free to use and enjoy!

post

#ukfuel - another Twitter / Bing Maps Mashup!

A few weeks ago I blogged about a Twitter / Bing Maps mashup that I had created for tracking snowfall in the UK via the #uksnow twitter hashtag.

post

#ukfuel - a Twitter / Bing Maps Mashup for Tracking Fuel Prices

A few weeks ago I created a Silverlight version of the #uksnow Twitter mashup, which plots twitter users snow reports on a UK map.

post

Automatically Showing ToolTips on a Trimmed TextBlock (Silverlight)

Silverlight 4 added TextTrimming="WordEllipsis", which trims the text that a TextBlock displays based on the available width. This blog post describes a simple method for automatically showing the full text as a tooltip whenever the text is trimmed. This is presented as an attached behaviour.

2010

December
post

#uksnow #silverlight The Movie! - Happy Christmas.

It's Christmas Eve and time for some fun! A few weeks back I published an article on Reactive Extensions where I created a Bing Maps / Twitter mashup that plotted the geolocation of #uksnow twitter tags.

post

A Simplified Grid Markup for Silverlight and WPF

The WPF / Silverlight syntax is long and cumbersome. This blog post describe a simple attached property that allows you to specify row and column widths / heights as a simple comma separated list, e.g. RowDefinitions="Auto,,3*,,,,2*"

post

Visiblox Charts vs. amCharts Quick Charts

Around one week ago I published an article which compared the performance of Visibox charts to a few of its competitors.

post

Visiblox, Visifire, DynamicDataDisplay - Charting Performance Comparison

A few weeks ago I published a blog post which compared the performance of the Visiblox charts and the Silverlight Toolkit charts.

post

Silverlight 5 Adoption Predictions

The announced launch of Silverlight 5 has got the developer community all excited about improved media capabilities, MVVM support, printing and 3D, but how will Silverlight adoption evolve throughout 2011.

post

UKSnow Silverlight Twitter / Bing Maps mashup - Sourcecode available

I have published an article on codeproject "Exploring Reactive Extensions (Rx) through Twitter and Bing Maps Mashups" which includes the sourcecode for my uksnow mashup.

post

Exploring Reactive Extensions (Rx) through Twitter and Bing Maps Mashups

The following are a couple of examples to accompany my codeproject article on Reactive Extensions.

November
post

UKSnow Silverlight - An Rx powered Twitter, Bing Maps mashup.

A week ago a colleague of mine posted an interesting article on parallelism in .NET 4.0 which included a few different libraries for asynchronous / parallel processing.

post

Adding a Smoothed Line Series (Bézier curve) to a Visiblox Chart

In this blog post I look at how to add a new series type to the Visiblox charts by creating my own series type which renders a smoothed line using a Bézier curve.

post

Using a Grid as the Panel for an ItemsControl

In this blog post I look at how to use a Grid as the ItemsPanel for an ItemsControl, solving a few of the issues that crop up along the way.

post

Visiblox Charts vs. Silverlight Toolkit Charts - a test of Performance

This blog post compares the performance of the Visiblox and Silverlight Toolkit charts using a simple image processing tool to test and illustrate their differences in performance.

post

Does HTML5 mean the end is in sight for Silverlight?

This blog post looks at the fallout after last week's PDC conference where Microsoft were quoted as saying "our strategy on Silverlight has shifted", and the resulting fallout in the developer community.

October
post

Developing a Lookless Silverlight Gauge Control (part 2)

In a previous blog post I described the process of creating a lookless gauge control. I introduced the concept of an attached view model which separates view specific concepts from the control. In this post I demonstrate how this allows for great flexibility when re-templating the control.

post

Silverlight as an alternative to PowerPoint

Recently I gave a presentation on cross platform application development with Silverlight, WPF and WP7.

post

White Paper: Silverlight, WPF and Windows Phone 7 cross platform development

Last week I gave a presentation at a joint Scott Logic / Microsoft event about how WPF and Silverlight are unifying the development platform for desktop, web and mobile.

post

White Paper: Silverlight, WPF and Windows Phone 7 cross platform development

Last week I gave a presentation at a joint Scott Logic / Microsoft event about how WPF and Silverlight are unifying the development platform for desktop, web and mobile. To accompany the talk I wrote a white paper which delves into this subject in a little more detail.

September
post

XAML Finance

XAML finance.

post

Templates, or Why I love WPF (and Silverlight Too!)

This post compares the implementation of a simple ListBox layout with Windows Forms and Windows Presentation Foundation. The use of Templates within WPF are a clear winner over the WinForms 'owner draw' route.

August
post

Developing a (very) Lookless Silverlight Radial Gauge Control

This blog post describes the development of a lookless radial gauge control. In this post I will explore the use of an attached view model in order to move view specific properties and logic out of the control code in order to give a truly lookless control.

post

Silverlight MultiBinding updated, adding support for ElementName and TwoWay binding

This blog post describes an update to the Silverlight 4 MultiBinding technique I blogged about a couple of months ago to add support for ElementName binding and TwoWay binding.

July
post

Exposing and Binding to a Silverlight ScrollViewer's Scrollbars

The Silverlight ScrollViewer exposes readonly properties which indicate the current vertical and horizontal scroll offset, and methods for setting the current offset.

post

A Universal Value Converter for WPF

This post provides a simple IValueConverter implementation that makes use of the framework type converters in order to convert between a large range of source / target types. This converter can be used both within bindings and in code-behind to give more concise property setters.

June
post

Modal dialogs in cross-platform WPF/Silverlight applications

This blog post looks at the problem of showing modal dialog windows in applications that target both the Silverlight and WPF platforms. A solution is provided which allows modal dialogs to be written that work well for both technologies.

post

Throttling Silverlight Mouse Events to Keep the UI Responsive

If your Silverlight application performs intensive updates to the UI during mouse events, the UI can freeze because it is invalidated before it has a chance to render.

May
post

Silverlight MultiBinding solution for Silverlight 4

In this post I describe an update to the Silverlight MultiBinding solution I presented last year. This update includes support for Silverlight 4, attached properties and multiple bindings on a single object.

April
post

Ineffective Data Visualisation ... and how to fix it

This blog post looks at a recently published set of charts in a UK newspaper and how they fail to help in the comprehension of the data which they visualise. I will also look at much more effective ways of displaying this same data.

March
post

Binding a Silverlight 3 DataGrid to dynamic data via IDictionary (Updated)

In this post I demonstrate a method for binding a Silverlight 3 DataGrid to dynamic data, i.e. data which does not have properties that are known at design time.

post

Linq to Visual Tree

This blog post demonstrates a Linq API which can be used to query the WPF / Silverlight Visual Tree.

February
post

Forcing Event Consumer Cleanup without Weak Events

This blog post describes a simple technique for ensuring that consumers of events unsubscribe their event handlers without the need for weak events.

January
post

Presentation on Agile Development

Last week I gave a presentation on Agile Development for an event hosted by Codeworks and Sunderland Software City.

post

My Mix10k entry - Old Skool demo - plus a few tips

This blog post is about my entry to the Mix10k code competition, and old-skool demo, plus a few tips about how to keep you code size to below 10k.

2009

December
post

Rippling Reflection Effect with Silverlight 3's WriteableBitmap

This blog post demonstrates how Silvelight 3's WriteableBitmap can be used to create a UserControl that renders the content of any other Framework Element as a reflection with an animated ripple effect.

post

Simple Logging Facade released on codeplex today

Today, Philipp Sumi and I and are proud to announce the release of SLF - the Simple Logging Facade.

November
post

Silverlight 4 beta released leaving Flex behind

This post looks at the speed of development of the two leading RIA frameworks, Silverlight and Flex, giving unequivocal proof that Silverlight is better than Flex ... !

September
post

Helpful extension methods for Show / Hide animations in Silverlight

Today's blog post is a couple of very simple utility methods that I have found myself using again and again ...

August
post

Declarative Dependency Property Definition with T4 + DTE

This blog post describes a technique for specifying WPF / Silverlight Dependency Properties declaritively via attributes

post

The mini-ViewModel pattern

The construction of a ViewModel is often seen as the standard technique for solving binding problems within WPF and Silverlight.

July
post

News on Silverlight adoption from the Silverlight 3 UK Launch

Yesterday myself and Gary Scott (our MD) went down to London for the Silverlight 3 UK launch event.

post

Silverlight v3 ClearType Font Rendering - A comparison

Text rendering has been a problem for both Silverlight and WPF for a while. This blog post looks at ClearType in Silverlight v3 and compares it to WPF and WinForms text rendering.

post

Silverlight 3 UK launch ... and the future of WPF?

A brief article on the launch of Silverlight 3 and why the interest in Silverlight is eclipsing that of WPF.

June
post

Silverlight MultiBindings, How to attached multiple bindings to a single property.

This blog posts describes a technique for associating multiple bindings with a single dependency property within Silverlight applications.

post

Exposing Bindings as Properties of a Control

I must admit that the title of this post is not entirely clear, however I couldn't find a way to sum up the content in one short sentence, so we'll dive straight into an example.

post

Dependency Property Performance and Lissajous Figures

A few night ago I was working on a Siverlight control which renders some quite complex Paths, the geometry of which is determined from a number of dependency properties.

May
post

Silverlight ClipToBounds - Can I Clip It?, Yes You Can!

With Silverlight, Panels do not clip their contents by default.

post

Community Credit Prize Winner

Last month was a busy one for me - I wrote quite a few blog posts, with the Silverlight ones proving very popular, and added new article posted to codeproject.

April
post

New codeproject article on WPF, Silverlight + T4 Templates

I have just finished a new article on CodeProject - Generate WPF and Silverlight Dependency Properties using T4 Templates

post

Binding a Silverlight DataGrid to dynamic data Part 2 - editable data and INotifyPropertyChanged

In my previous blog post I described a method for solving the commonly faced problem of binding a Silverlight DataGrid to dynamic data, the form of which is not know at compile time.

post

Binding a Silverlight DataGrid to dynamic data via IDictionary

This post demonstrates a technique for binding a Silverlight DataGrid to dynamic data, the structure of which is not know at compile-time ...

post

Silverlight Dependency Property Code Generation

This blog details a technique for generating Silverlight dependency properties from an XML file via a T4 template.

March
post

Adding a Location Crosshair to Silverlight charts (again!)

Silverlight is moving fast. Really fast.

post

Silverlight 3 is here! (but is it a flash killer yet?)

Less than 24 hours ago Microsoft's MIX09 conference kicked of in Las Vegas with Silverlight 3 taking centre stage.

post

Using CSS Selectors for Styling in WPF

When I first encountered WPF I was really impressed by its styling and templating features which are more powerful than anything else I had previously seen for desktop software development.

February
post

Implementing RelativeSource binding in Silverlight

In my previous post I demonstrated how an the WPF ElementName style binding can be emulated with Silverlight via an attached behaviour.

post

ElementName binding in Silverlight via Attached Behaviours

As a relative newcomer to Silverlight I was happily greeted by the warm feeling of familiarity when I started developing.

post

Styling hard-to-reach elements in control templates with attached behaviours

OK, the title of this blog post is not very snappy, but it is not an easy problem to describe in a few short words.

post

Adding a Location Crosshair to Silverlight Charts

This blog post describes how to add a location crosshair to your Silverlight charts.

January
post

BindingGroups for Total View Validation

Over the weekend Sacha published a new article on codeproject, Total View Validation (does Sacha ever sleep?).

post

WPF DataGrid - Committing changes cell-by-cell

In my recent codeproject article on the DataGrid I described a number of techniques for handling the updates to DataTables which are bound to the grid.

2008

December
post

LayoutTransform vs. RenderTransform - What's the Difference?

I have answered a few forum posts about the WPF transforms recently, mostly regarding confusion between RenderTransform and LayoutTransform.

post

WPF DataGrid - detecting the column, cell and row that has been clicked

The WPF DataGrid is a very flexible tool, however in its current state certain simple tasks can prove to be rather tricky.

November
post

Using BindingGroups for greater control over input validation

In a recent post on his blog Josh Smith described a technique for providing more meaningful error messages when the type conversion process fails within the binding framework.

post

Design time drag-and-drop binding is on its way

In my opinion the lack of decent design-time tool support is currently hampering the adoption of WPF, that and the relatively small number of controls available to the developer out-of-the-box.

post

About

Welcome to my blog, Colin Eberhardt's Adventures in WPF. This page gives a little background on myself and the blog.

post

Multiselect DataGrid with CheckBoxes

I am currently very interested in the new WPF DataGrid which was released on codeplex recently.

2002

November
book

Microscopy Techniques for Materials Science

Co-authored with Ashley Clarke, a 424-page comprehensive guide to computer-aided microscopical techniques. Published by Woodhead Publishing / CRC Press.