Tech
This post is designed for Java developers who want to adopt JSpecify for consistent nullability handling in their projects. By following the steps and examples, you should be able to set up and utilize the core JSpecify annotations effectively in your codebase.
Tech
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.
Tech
In the fourth of our series setting out how we work with our clients, we explore software development. We describe our underlying approach based on a set of guiding principles we've distilled from our collective experience.
Tech
The final installment of the assignment algorithm series! This episode covers the last piece of the puzzle - slot sorting, as well as wrapping up all that has been discussed in the previous 2 episodes.
Tech
Join us for the second installment of how we built an assignment algorithm. This blog will pick up from where we left off in part 1, exploring the measure of compromise over the course of multiple talk slots.
Tech
You're organising a conference and the delegates have voted for what talks they would like to attend. How do you give them the fairest choice possible with constraints on talk size? Join us for the first blog in a series of 3 which go into the nitty gritty of an algorithm that gave rapid results, 30% fairer than those done by hand!
Tech
Using semantic-release to publish an npm package with provenance, via a GitHub workflow... Almost too easy! A decidedly non-epic journey that began with accessibility improvements to our applause button.
Tech
This is the first in a series of articles where we outline our approach to consultancy through the lens of principles we have honed through our experience delivering complex, mission-critical programmes. In this post, we define our approach to Architecture...
Tech
A developer takes a dive into the lands of legislation. What is the EAA and what does it mean for me and my company?
Tech
A (belated) festive look at the latest challenger to Node.js's throne
Tech
The increase of in-car instrumentation over the years has opened up the opportunity to use this data as an input into weather modelling. Are we all driving around in mystic minivans and clairvoyant coupés?
Tech
Everyone loves CSS! Continuing in my obsession, I have created a tictactoe game, with an option to have a CPU that plays randomly. This was made without any JavaScript, only HTML and CSS. In this blog post I discuss how I made it
Tech
I'll admit that for me knowledge graphs and graph databases were always something of a mystery, so I spent some time investigating to see how they compare to more traditional relational databases. Are they more than just circles and lines?
UX Design
Observations on an industry shift towards building partner ecosystems for personalised, differentiated customer value propositions.
Sustainability
Notes on the recent Government Digital Sustainability Alliance (GDSA) summit at the Science Museum in London. This event brought together 200 people from government departments, 30 delivery partners and academia. This blog is a summary of some of what Oliver considered to be the key points covered on the day.
Tech
I wrote recently about what the future holds for Open Banking in the US. But what about the UK? We’re now over five years into the Open Banking era in the UK. How is it reshaping the banking sector, and what’s coming next?
Tech
If you work in banking in the US, you should care about Open Banking. To help argue the case, I look at the legal changes in the US that will likely push towards an Open Banking standard and argue that implementing Open Banking can reduce your regular operational costs as a bank.
Tech
On Saturday I attended UKGovCamp XL in London. UKGovCamp is an annual, free public sector digital unconference, which means there’s no set agenda, and anyone attending can propose, host or participate in sessions. I share my reflections on the event in this blog post.
Tech
A brief look into building out a NextJS application which makes use WebAssembly to solve Advent Of Code puzzles in the browser.
Sustainability
Many of us love a good podcast so I reached out to our project team to see what they were listening to in the tech and sustainability space. Here are their recommendations
Testing
In this blog, I will walk the reader through some simple statistical concepts to aid in testing AI. I hope it is accessible regardless of prior statistical knowledge.
Sustainability
Part of the Conscientious Computing series this blog talks about the emerging ecosystem of organisations that are promoting sustainability within software development, cloud computing, infrastructure, and digital services.
Tech
In my previous post, I introduced and approach to testing called Testing with Intent. Essentially, the approach focuses on testing from the perspective of a user intending to do something. Adopting this approach brings you benefits in both your test suites and your products accessibility. That post discussed why the topic is important and how you can benefit if you adopt it. Now, it’s time to look at the technical side of how this actually works in practice.
Tech
In this post, I explore an approach to testing called Testing with Intent. I look what the approach is—testing from the perspective of a user intending to do something—and the positive impacts it can have on both testing and accessibility. I've written this for a broad audience, so I've steered clear of technical details included. Instead, you should come away with an understanding of why this topic is important and how you can benefit from adopting the approach.
Tech
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.
Tech
I developed a cross-platform location sharing app and learned valuable lessons along the way. This post explores the practical strategies used to boost the app's efficiency.
Tech
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).
Tech
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..
Tech
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.
Testing
Discover how to streamline metrics collection in Jest test suites using a centralized 'metricsCollector' utility, simplifying test maintenance and enhancing data-driven testing practices.
Testing
In this blog post I will walk you through how to set up a Jest custom environment in order to dynamically skip tests after they have been queued.
Tech
JSON Web Tokens are a secure way of transmitting information between two parties. This article explores what they are, how they are made, the kinds of JWTs that are commonly used and their key benefits.
Testing
Jest is a JavaScript unit testing framework that is popular amongst developers wanting to ensure code correctness. Jest is not typically used for tasks like performance testing, but offers some useful features in snapshot testing that can be enhanced to carry out such tasks.
Tech
Understand how Google and other search engines use LLMs to gain insights into the semantic meaning of the language in search queries using embedding and cosine similarity.
Tech
There are a plethora of datagrid and table solutions available for JavaScript applications, but it can still be tough to find one that does exactly what you need. In this post, I provide an introduction to an option you might not have considered: using the table library that doesn't actually provide a table at all.
Tech
In this post, I share the top things that resonated with me from the Reset Connect Conference 2023 and crucially some of the topics that I felt were missing – and that we at Scott Logic are actively researching and working on.
Tech
·
Video
We've all now seen the apparently creative outputs of Generative AI, with astonishing results that seem to border on human creativity. How does GPT-3 achieve this? In this short talk, I lift the lid to reveal the probabilistic elements that allow an otherwise deterministic model to give all the appearances of creativity.
Tech
For many of us peer review is an everyday part of software development, but why do we bother and how can we do it well? In this post I share my top tips for peer reviewing code.
Tech
I recently spent some time remotely attending JSNation, a hybrid-format JavaScript conference held in Amsterdam alongside sister conference React Summit. In this post, I'll cover some points of interest from around half the talks I chose to attend.
Tech
Spring Boot makes developer’s life easier through autoconfiguration. Even though it's true most of the time, occasionally we come across situations where autoconfiguration makes it harder to understand what is really happening behind the scenes and ends up wasting hours or may be days of developer time. This article is about one such rare occasion where understanding of RabbitMQ got confused with how Spring Boot implemented it behind the scenes.
Tech
Using RabbitMQ as it is in Spring Boot works fine. But sometimes it's not enough. This article will explain how to alter the retry behaviour and consume messages concurrently by multiple consumers in RabbitMQ in your Spring Boot Application.
Tech
Xamarin Forms has now been superseded with .NET MAUI. In this blog post, I'm looking at the process of upgrading an existing Xamarin Forms project to MAUI. How much effort is needed and what will still work or needs to be updated.
Tech
What is the best way to test the repository layer of a spring boot application? Or should you test it at all? What are Testcontainers and how to use them? This article addresses them all with examples, so you can make a better decision when you are faced with a similar challenge in future.
Tech
Newcomer desktop-web framework Tauri has quickly attracted the interest of developers looking to build cross-platform desktop applications using web technologies. Promises of smaller and faster applications certainly appeal to those using Electron. In this post, I’ll take a look at what’s new in this space, what distinguishes them, and why WebView2 doesn’t solve everything.
Tech
Late last year I attended DevTernity, an all-remote generalist software development conference. In this post I'll cover off some points of interest from some of the talks I chose to attend, and reflect on the remote conference experience.
Tech
Here are five books that influenced my coding style and working practices early in my career. A top list of anything is deeply personal, so I’ve tried to select books I found both inspirational and informative, with an equal focus on technical and non-technical skills.
Tech
A Vim clutch is typically a repurposed keyboard/guitar pedal that enters insert mode when you press down on it and leaves it when you release it. This can and has been accomplished in a great many weird and wonderful ways. This post adds yet another to that list.
Tech
A brief overview of the creation, workings and application of the markup language Markdown
Tech
EDGY is a new graphical design language for visualising enterprises. This new open source design language shows great promise as a tool to bridge across siloed teams. This post explores the preview edition at a high level.
Tech
·
Video
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.
Tech
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.
Tech
Learn about what a data platform is and how it can translate enormous amounts of unstructured data into meaningful reports on your business operations.
Tech
A whistle-stop tour through some of the LGBTQ+ computer science pioneers ,the technology they created, and the impact they have had on modern computing.
Tech
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.
Tech
Ever wondered how to tell how strong your pasword is? This blog post explores this question using the popular Wordle puzzle game for context.
Tech
An introduction to the tree data structure. Trees are often shrouded in mystery and stoke fear in the hearts of software engineers. Today we look at the different types, how they work and most of all, how do you implement one!
Tech
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.
Tech
·
Video
We’ve all played a game with Box2D physics (e.g. Angry Birds). Google forked Box2D to add fluid simulation, but diverged irretrievably in the process. In this talk, I ask whether we can salvage Google’s contributions and bring both these C++ projects to the modern web using WebAssembly and TypeScript?
Tech
A very simple introduction on how to begin pondering about the environmental impact that software can have on the planet. Nothing too technical more just an introduction.
Tech
Everyone loves CSS! So I built a calculator where the CSS handles the logic without the help of javascript. In this blog post, I will discuss how I achieved this and maybe make a case for my sanity for making it.
Tech
There is a lot of information available to us, but we often just read and forget. Using a digital Zettelkasten is an effective way to store and make use of the things you learn.
Tech
Apache JMeter is a very popular performance testing tool which I used recently for load testing a server. In this post I will take a brief look at how to use it to perform a basic HTTP load test on a server.
Tech
The Disruptor was developed by LMAX to improve Java inter-thread communication for extreme low latency applications. In this post I will outline what is the Disruptor and see what we can learn from the framework for building future applications.
Tech
Have you ever wanted to learn Rust or just simply know why everyone is so hyped about it? Well, I’ve put together a pile of links to interesting resources to get you started!
Tech
In a previous blog post, Colin focused on rendering massive numbers of points using D3. In this post I'll consider how you can efficiently load that data using Apache Arrow.
Tech
When coming to TypeScript from OOP languages it can be very easy to fall into the trap of using types the same way you are used to. But this is missing a lot of power of TypeScript. This article looks at how you can extend your TypeScript use to not only represent types, but also express the intent and document your code better.
Tech
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.
Tech
Always wanted to write a custom linting rule for your JavaScript project, but never been sure where to start? This guide will introduce the key concepts you need to give it a go!
Tech
...or what I should have known before I jumped in and started playing around. In this post I cover logprobs and the "creativity" controls.
Tech
TypeScript can enhance the experience of developing React components. However to fully represent the types of some dynamic components, we need to harness the power of union types. This article examines an example where union types improves our component typing.
Tech
When using TypeScript for many developers it is natural to compare to Object Oriented languages. However TypeScript is different. This article looks at one tool that does not exist in Object Oriented languages: Union Types, and how you can use it to improve your TypeScript.
Tech
When first using TypeScript you get presented with a choice, do I represent that with an interface or a type alias? In this article I explain the differences and why and when you should choose one over the other.
Tech
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
Tech
RTK Query is the latest addition to the Redux family, intended to make loading data from a server as easy as possible. In this post, we'll look at why I'm so excited for it, and answer the question "but why does redux care about data fetching?"
Tech
In advance of the event on Profit with Purpose that I'm participating in during Digital Leaders Week, I reflect (briefly) here on my experiences in Government, my thoughts on some of the challenges that still lie ahead, and why I’m excited to be the new ‘gaffer’ at Scott Logic.
Tech
Follow-up article to "Why Java Developers Should Learn C++". If you are interested in picking up C++, or enjoyed my previous post, this can help you get started.
Tech
A step by step guide through the process of building my first bespoke animation with SwiftUI. Touching on technical aspects specific to SwiftUI and more general concepts relating to animation.
Tech
·
Video
Data Mesh: What's different about it, what it means to DWP, and how you might approach it yourselves
Data Mesh is an emerging architectural paradigm for big data that addresses the challenges inherent in the data lake and data warehouse approaches. In this talk, I define what it is, and Charlie Boundy, DWP Deputy Director and Head of Data Science, brings it to life through DWP's technology and data vision.
Tech
An exploration of how to setup up a basic multi-platform SwiftUI project, including platform specific files, common files and conditionally compiled platform code.
Tech
·
Video
With APIs, Open Standards and modern tooling, the vision of GaaP is more readily achievable than ever before, but it requires a different understanding of the role of government — from master and commander to convener and enabler. In this talk, I bring to life why I believe APIs are key to establishing digital foundations that will enable us to better serve citizens' personalised needs at scale.
Tech
·
Video
In this talk, I explore a little of the history of the term API and covers what he considers to be the three most current use cases. I talk about REST and GraphQL with a look at the evolving standards in the 'API over the internet' space. I also look at how the popularity of Event Sourcing has led to a rise in the number of Asynchronous APIs and how standards are emerging in this area too. Finally, I round off with my predictions for the future of Web APIs and signposts some of the technology which is shaping that future.
Tech
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!
Tech
Flutter is a cross-platform mobile UI framework which allows you to develop an app for Android and iOS with one codebase. But is it any good?
Tech
·
Video
Our panel of experts — Jacqui Leggetter (Head of Integration (Deputy Director) at DWP), Kevin Dearing (Head of API Ecosystems at NatWest Group) and Benny Boye Johansen (Head of OpenAPI at Saxo Bank) — share success stories, lessons learnt and practical advice based on their experiences of using APIs as a strategic enabler and value generator.
Tech
Svelte is one of the most exciting parts of front-end development today. But what is it, exactly? In this post, we take a look at the philosophy behind Svelte and see how it affects everything Svelte does.
Tech
JavaScript provides a Promise abstraction that can be used to express 'give me the result later'. What happens if you ask for the result twice?
Tech
It's the end of the #AdventofCode for 2020. I take a look back over the final 6 puzzles and sees how much was possible in BaseA Alteryx. How close did I get to solving all 50 stars in BaseA!
Tech
19 days in, the end of the third week of the #AdventofCode. The challenges have got harder and some have taken a little more than just BaseA Alteryx functionality but am still going strong. Here's my look back at solving the puzzles over the last 7 days.
Tech
As week 2 comes to a close on the Advent of Code, a look back at how the puzzles have been solved using BaseA by the community and me. The challenge has definitely increased this week!
Tech
Everyone hates bugs. Unfortunately, as codebases grow, it's easy for bugs to spread out of control. Fortunately, they can be brought back under control using psychology and a mathematical model from the 1950s.
Tech
It's the end of week one in the Advent of Code and, as has become a little bit of an annual tradition, I and other's from the Alteryx community are trying to solve with the base tools. In this post, I look back over the first 5 puzzles and how I (and others) have solved them.
Tech
OpenFin enables the use modern web technologies in place of older legacy systems. In this post we investigate the 3 primary communication techniques made available when using OpenFin to build the next generation of applications for the financial desktop.
Tech
In this post I'll try to lay out some requirements for 'good' code, talk about how we might define 'easy' code and how this correlates with a definition of 'good' code.
Tech
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.
Tech
Narration.studio is my latest project: a web app for automatically editing voiceovers. In this first part, I introduce the project and the motivations behind it.
Tech
d3-zoom is incredibly robust, powerful and flexible. However, its flexibility means it can be quite complex to configure and use correctly. This post covers one way of wrapping it up, reducing its flexibility but vastly simplifying its use for my use-case.
Tech
Van Halen famously requested M&M's with no brown sweets as part of their 1982 world tour rider. What, if anything, is there to learn from this ridiculous demand, and can it help improve our software development processes?
Tech
This blog post looks at how CSS flexbox item sizing works, how it is used to create responsive layouts, and how it can be used to display interactive charts without using any Javascript.
Tech
Over the past few months I've had an ergonomic keyboard obsession. It started out simple, just wanting to improve my typing experience. It ended with me writing a driver. This is my story - now available as an audiobook!
Tech
Learn Rust, the tech industry's most loved programming language by building Snake, the simple but addictive game found preloaded on old Nokia mobile phones.
Tech
Redux is a great state management library, but its types are too broad. Using the builder pattern, we can generate exact types and ensure type-safety throughout an app.
Tech
The world is racing for quantum supremacy, to solve problems once thought impossible on any reasonable timescale. In this post, I explain the fundamental principles that allow this to be possible.
Tech
This is part two of a series introducing Vue to developers who are new to the ecosystem and evaluating whether to include it in their next project. In this post we will look at Vue components but check out part one if you are looking for an initial overview.
Tech
This blog post is written for developers who have not used the Vue ecosystem before and want to decide whether to use it in a project or not. To help with this decision, this blog post will give a brief overview of the technology and ecosystem.
Tech
TypeScript's type system is amazing, but it can't do everything. In this post, I demonstrate how the builder pattern takes my types to the next level. We walk through an example in detail, so you can start using builders too.
Tech
·
Video
There's a standard approach to migrating legacy applications into desktop containers: the desktop equivalent of the strangler pattern – but this has its drawbacks. Is there another way? In this webinar, I shed light on an alternative that addresses these drawbacks and opens up new opportunities for old tech. And I explain what on earth rollercoasters have to do with it.
Tech
Published in 2007, Amazon's Dynamo paper changed the distributed database world. As well as powering AWS S3, it also inspired many well known open-source NoSQL technologies such as Apache Cassandra, LinkedIn's Voldemort and Basho's Riak. This post intends to present the paper and its concepts in a digestable way.
Tech
In this blog post I'll be demonstrating how quickly it's possible to setup, integrate and deploy a React application using the right tools.
Tech
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.
Tech
With so many organisations claiming to do microservices, it’s time to re-examine. Let's explore the principles of microservices and how the mindset transcends specific technology choices of the moment. It's more about people and change than it is about technology.
Tech
I've been using Svelte for about 6 months now, and the worst bit has always been the lack of TypeScript support - but it's finally here! This post shows you how to get started using my two favourite web technologies together.
Tech
We explore how to use Spring Profiles as a handy way to select the configuration at runtime by wiring in different beans, as well as looking at how to autowire different beans in for integration tests.
Tech
The function console.log is a JS developer's best friend. In this post I explore the console API in greater detail to help you in your next big project, or help you mess around.
Tech
Accessibility is essential to provide a high-quality experience for all of your users. However, it can be easy for failures to slip into our applications. In this post, we'll look at the six most common accessibility problems and discuss why they matter and how they can be fixed.
Tech
·
Video
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.
Tech
In this post, we work through building up a cubic spline from first principles first in Python, and then converting the Python code into an Alteryx macro
Tech
In this post, we look at creating a brute-force search approach to solve Matt Parker's Coin Puzzle using some binary manipulation within Alteryx
Tech
One of the most common complaints when someone starts learning React Redux is that it's too magic. In this post, we'll be pulling back the curtain on React Redux to discover how it really works.
Tech
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
Tech
Async iterators are a great language feature that make working with asynchronous streams of data a joy to use. We'll take a look at consuming an async iterator running in a Web Worker from the main thread and see how we can use a library called Comlink to abstract away the fact it's running in a different execution context.
Tech
The second in a series of posts exploring the things that Spring Boot does when it magically Autowires application dependencies. Is it really a kind of magic, or is there no such thing?
Tech
WebGL presents you with a blank canvas (literally!) and leaves you with what feels like an overwhelming set of decisions to make before you can render your idea on screen. This post introduces a quick reference guide to picking the right draw call for those trying to decipher the difference between drawArrays, drawElements and their oddly-ANGLE'd instanced equivalents.
Tech
The date is March 31st of the year 2020, and things have gone wrong. What follows is the account of a software developer confined to his home in Bristol as the people of the world come together apart, in defiance of this simultaneously macro-and-micro-scopic attack on our very species.
Tech
Some might say I pushed the Micro:Bit too far. This post is not for those people. If your Micro:Bit is also struggling, this post will show you how to optimise your code and push it further
Tech
Rendering charts can be a very intensive operation for the browser, especially multiple charting widgets in the context of a wider application. OffscreenCanvas is growing in browser support and allows canvas rendering to be delegated to a WebWorker. This post looks at what performance improvements we can realistically expect and some gotchas that can crop up along the way.
Tech
Frontend web technologies are increasingly being used beyond traditional web applications. Could the next frontier be multi-window web apps that run in both the browser and on the desktop?
Tech
Ray tracing is the process of simulating light rays to render a 3D scene. It seems really complicated at first, but it's actually quite simple. After reading this post, you could easily implement one yourself!
Tech
I recently got the chance to play around with a BBC Micro:Bit - an educational toy aimed at helping kids learn to program. It's designed to do a lot of things, but 3D rendering isn't one of them.
Tech
A look at the design principals behind the Aeron messaging system and the consequences on its suitability for Scott Logic's purposes.
Tech
A series of posts exploring the things that Spring Boot does when it magically Autowires application dependencies. Is it really a kind of magic, or is there no such thing?
Tech
Practicing Continuous Integration & Deployment, we can get new features to users faster and tighten our feedback loops. In this introduction to CI/CD, I introduce and explain an example GitHub Actions workflow which builds your front-end and deploys it with GitHub Pages
Tech
After hearing about Svelte, a performance-first web framework, I tried it out in a web-based Minesweeper solver. SHOCKINGLY, it didn't automatically make my code fast - that took a process of iterative optimisation
Tech
For the past 3 months, I have been a bit obsessed with Minesweeper. It has plagued my honeymoon, stolen my free time, and been the subject of two tech talks. That's a good thing.
Tech
In this post I explore the Bindable SwiftUI Redux package I created, and explain the motivations behind using Redux for state management in SwiftUI, and the challenges faced in integrating the two frameworks.
Tech
This post discusses one way to add Playwright to a create-react-app generated app, and shows how easy it is to use for cross-browser UI automation.
Tech
Interface Segregation is an important part of writing clean and maintainable code. In most languages, it requires constant maintenance and naturally degrades over time. In TypeScript, we can just Pick the good bits.
Tech
In this post I take a closer look at how SwiftUI uses declarative syntax to construct view hierarchies, and how it transmits state updates to the UI.
Tech
This post looks at adding Puppeteer to a create-react-app generated app, and shows how easy it is to get Puppeteer up and running.
Tech
We - Alex and James - are graduate developers and our first project introduced us to Infrastructure as Code (IaC) and serverless architecture. This post is a collation of useful resources and thoughts gathered on our journey to help you learn about AWS, Terraform and Serverless - it's the guide we wish we had.
Tech
In this post we will be investigating how we can improve the performance of a chart created using D3FC and WebGL by using a lower level API from the d3fc-webgl package.
Tech
SAT solvers are surprisingly fast and probably under-used. Could one help us improve sprint planning meetings? Maybe, but first you'll have to change the way you think about user stories.
Tech
Rebasing is a technique available in Git, often shrouded in mystery or steered away from, this post explains what it is and how it can be used
Tech
Improv is one of my favourite pastimes. In this post I explore some of the most fundamental rules of Improv and what they can teach about writing good code.
Tech
In this post we will be looking at creating a chart using D3FC and the new WebGL functionality. With the performance boost that WebGL provides we will see how we can render a large data set of around 54,000 points in a single pass.
Tech
The more advanced, time saving and helpful techniques of any source control tool require an understanding of the fundamental concepts of any source control, here we cover the most important ones
Tech
In this post I look at how SwiftUI manages state with Combine, and how it compares to using React with Redux. SwiftUI is Apple's new declarative UI framework for developing UI natively, while React is a declarative UI framework for the web.
Tech
DTOs help translate data between server and client. By going back to first principles, how can we utilise static type-checking and integration with modern IDEs to write a better DTO?
Tech
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.
Tech
Delivering software fast and with as few bugs as possible is not an easy thing to do. Developers often blame the lack focus on technical debt for a buggy solution, while testers point to well... lack of testing. In this blog post I will talk about the idea of "sustainability" in software delivery and how thinking and using it may make your project more successful.
Tech
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.
Tech
We're told that we need to commit early and often. But what does this mean...? What is the right frequency? When should branches be used? When do they work well, and when should they be avoided?
Tech
This is a post about doing performance right when building large and complex web applications. Much advice is available about optimising for every last ounce of performance on the web, but that won't help much if we don't already have 'good' to begin with.
Tech
Regular expressions are very powerful, but something that many developers are wary of using—they have a reputation of being difficult to understand. If you appreciate their underlying principles, you can understand them better, and if your code takes advantage of this, you may be able to refactor them into a more readable form.
Tech
This is the first of a series of blog posts exploring SwiftUI, the new UI framework for native Apple development. This post will focus on my initial impressions, having gone through the first part of Apple's SwiftUI tutorials.
Tech
We are taught how to write good code, but we're not taught how to use source control properly. Why is the history of our code any less important than the code itself?
Tech
Prettier, or code formatting in general can polarise developers - everyone has an opinion on braces. There are changes we can make and tricks we can apply to streamline all of this. Or: How I Learnt to Stop Worrying and Love Automated Code Formatting
Tech
An introduction to ArchUnit; an open-source, extensible Java unit testing library for enforcing your architectural and coding rules.
Tech
The switch statement in Swift is a powerful and expressive way of performing flow control. It pairs very nicely with a few other language features: enumerations, extensions and type inference.
Tech
Protecting your data by generating visual reports for your users in an optimal way without exposing the raw data using serverside generation.
Tech
An overview of the methods we used to create and deliver digests (emails containing information on a topic that users are subscribed to) using Elasticsearch and serverless architecture on AWS.
Tech
Drawing and shading an area around a line is a useful feature for any charting library. In this post we will be exploring the approach we took to implementing this functionality for the D3FC library using WebGL.
Tech
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.
Tech
Earlier this year React released hooks, shaking the codebase of developers all over the world and changing the way we write React web applications. Functional components with hooks have largely replaced class components and now Redux has followed.
Tech
The second part of a practical series on building Microservices with Spring Boot and Spring Cloud. In this post we expand on our previous online store project, scaling out while introducing the concept of client-side load-balancing using Netflix Ribbon and Feign. We also implement fault and latency tolerance with Netflix Hystrix.
Tech
Connecting points on a chart with a line is one of the most basic uses of a charting library. When drawing that line in WebGL, however, it's not as straightforward as you might think.
Tech
A very quick experiment into setting up a new development environment in GitHub and Visual Studio Online for creating Python-based AWS Lambdas
Tech
A practical series on building Microservices with Spring Boot and Spring Cloud. In this post we get started by building some services for an online shop and tie them together with 2 more services, backed by Netflix's Eureka and Zuul.
Tech
I am constantly amazed at how unfamiliar otherwise competent developers can be with numeric types. In a series of two blog posts I will explain what you need to know to understand the JVM's numeric types. This first installment covers the integer types.
Tech
In a React app, opening and sharing data with a new (non-modal) window might seem like a challenge, but it's possible - and I've provided a component to make it even simpler.
Tech
When first using WebGL, even rendering a simple shape can be a challenge. In this post, I take a look at the approach we've taken in D3FC to render shapes using the fragment shader.
Tech
Taking a look at Microsoft's new product .NET for Apache Spark by writing a C# app that writes Spark dataframes to a SQL database.
Tech
For the past few months I've been using Visual Studio Code Remotes, a powerful new feature that is available in Visual Studio code.
Tech
In this blog post we consider a practical example of how the D3 and X3DOM libraries can be used together to build dynamic 3D charts for the web.
Tech
An introduction to our recently released open-source React Hooks library, OpenFin React Hooks. Developed especially for OpenFin and its developer community.
Tech
SwiftUI is Apple's new UI framework for all its platforms - watchOS, tvOS, iOS and macOS. This post explores the significance of its release, comparing it to both to former native iOS development and competitor frameworks.
Tech
In this post we look at X3D and how it offers a simple declarative approach for including 3D visualisations in web pages in a way that is supported by major browsers.
Tech
Caching frontend application bundles isn't as effective when they're updated frequently. In this post, I'll explore the idea of using deltas to update already-cached bundles, and cover some approaches - including one that's feasible today using service workers.
Tech
Reactive programming is a powerful technique for handling data that changes over time, time-bound events, API requests and updating the UI. This post is a summary of how the reactive paradigm works in Android.
Tech
Swift combines the type and memory safety of a language like Java with the simplicity and ease of languages like JavaScript and Python. This article will explore some of the language features that, in my opinion, make Swift the most beautiful language to read and write.
Tech
Why Java Developers can gain from C++, what C++ can gain from Java Developers, and how the language has made itself more comfortable for you to make the transition.
Tech
Spring Boot applications have quickly become one of the most popular Java frameworks due to the speed and simplicity of creating production ready applications. Sometimes the world of Spring can be confusing - in this post I give an overview of some fundamentals of Spring, what Spring Boot is actually doing, and where to start if things go wrong.
Tech
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.
Tech
Scott Logic is proud to have been identified as one of 1000 Companies to Inspire Britain in 2019 by the London Stock Exchange Group (LSEG).
Tech
This article is for anyone interested in learning more about Amazon Web Services (AWS). It talks about training resources, getting practical experience and staying up-to-date.
Tech
As a front-end developer working on real-world applications, WebAssembly isn't something I can actually use, is it? Let's find out how easy it can be using AssemblyScript.
Tech
Styling in Android can be a difficult experience for developers not familiar with how the framework works. However, once you start to understand the "Android way" the development experience can be both logical and enjoyable (excepting a few Android quirks, but for the Android developer - c’est la vie).
Tech
React and Vue are two popular web application frameworks aimed to make developing user interfaces easier. This post summarises a few of the similarities and differences between them I found after using both.
Tech
Is WebGL faster than Canvas for drawing 2D shapes, and if so can we harness that speed to visualise very large data sets? I wanted to learn WebGL so I decided to investigate this question and learn at the same time.
Tech
The 'Performance' tab of Chromium (Google Chrome) DevTools isn't always enough for analysing complex multi-window Electron web-desktop applications. In this post, I'll introduce the related but lesser-known Tracing tool, and show how it can be used with Electron.
Tech
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.
Tech
The d3fc cartesian chart provides a simple way to compose the most commonly used type of chart, while keep its API simple. But would it be possible to keep that simplicity while making a chart component that is more flexible?
Tech
Recently we've been looking at enhancing the D3 axis component to implement a number of common features including more flexible label placement (e.g. positioning labels between ticks) and rotation / offset of labels to avoid collisions. This blog post demonstrates some of these features and how they were implemented.
Tech
Hooks are one of the most exciting features of React in recent times, allowing the developer to "hook" into React features without having to use class components. In this post, we take a dive into Hooks and learn how, when and why to use them.
Tech
Can Kotlin, the latest language to join the JVM, supersede its predecessor Java? Let's compare the two languages that are currently battling for supremacy in the world of Android.
Tech
Persisting data can be easy with an ORM like EF Core. Let's take a look at how we can save our data without compromising our domain models.
Tech
A working example of how to create a new plugin for Perspective, using a ready made template to get started quickly, and open source mapping API from OpenLayers.
Tech
How we built a plugin for Perspective from JP Morgan, using d3fc to display a generic charting view that can show multiple chart types.
Tech
We usually need to consider data persistence when writing an application. In this first part we look at how to model your domain in preparation for use with Entity Framework.
Tech
A lot of developers start specialising in Javascript, and have an inherent fear of Java (I know I did!) In this blog post I look at a few tips to get over that initial fear and start coding in Java, from a Javascript background.
Tech
My personal reflections on the sessions that I attended at the 2019 Build IT Right conference. Continuous Delivery, embracing conflict and fighting entropy.
Tech
The WebHID API will allow web applications to use human input/output devices connected via Bluetooth or USB. This post takes an early look at where it fits in, the possibilities enables, and how to use it.
Tech
If I said the words "a tech conference for women" - what would you imagine? Would it be the attendees sitting in circles, holding hands and admiring each other's beads? Do you picture 'sisters' singing kumbaya and plotting the downfall of the patriarchy? Would you picture sessions such as "how to code for fluffy-wuffy knitting sites?" Would you wonder if it was full of hardcode coding and hacking sessions to get women further up the knowledge ladder? Some of the Scott Logic tech staff went to a technical conference for women. This is what it was like.
Tech
In this article, I share my take on the recent AWS Builders Day in Edinburgh. I delve into a couple of the talks i attended which were primarily focused around AWS AppSync, AWS Amplify and GraphQL.
Tech
This post addresses how to grant access to Firebase Test Lab without also granting access to your wider Google Cloud Platform services.
Tech
D3 and d3fc are powerful tools for creating charts in JavaScript. This post will look at one way to create a continuous colour range legend to annotate one of these charts.
Tech
Changes to code formatting tooling/policy can be painful to integrate with work-in-progress branches. Here's an approach to solving the situation quickly and easily using a single Git rebase command.
Tech
When first learning to develop in Swift, there were many cases in which I would become frustrated at some of its unique features. However, the more I learned about Swift, the more I realised these features weren't so crazy after all.
Tech
Riders of public transportation rely on real-time traffic information (RTI) systems to make informed decisions. But really how accurately are those systems? By systematically collecting and analysing the Open Data exposed, we can gain some insight into the question.
Tech
Where does one start when looking to write better code? And how do we maintain code quality and consistency when working in a team? These two questions drove me to create a language-agnostic guide to writing decent code.
Tech
·
Video
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.
Tech
It's useful to be able to use components built using one framework, within different frameworks. In this post, I explore considerations and patterns, and finish off with an example using React and D3.
Tech
This article describes an experiment about building my own DOM render utilities. It is written incrementally following a sequence of commits, each of which brings in a new feature. The results are a tiny library, some learning along the way, and too many questions left unsolved !
Tech
Hi, I'm James. I recently worked on an Android project for Scott Logic and want to share with you some of my tips for starting out as an app developer. If you are a developer wanting to learn how to code Android apps then this article is for you.
Tech
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.
Tech
Perspective is a streaming pivot visualization engine which uses WebAssembly. This blog post explores its capabilities and creates a custom cryptocurrency visualisation using d3fc.
Tech
Beneath the user interface of our applications, we as developers both define and use default values in code and configuration. Choosing carefully helps make what we build quicker, easier, and less error-prone to use.
Tech
This post explores some of the ideas and technology features behind Docker and Kubernetes. We delve into deploying a simple Java application on the Google Cloud Platform using a managed Kubernetes Cluster.
Tech
Developing with Redux makes managing your React state easier, but if not integrated correctly it can remove key advantages of using React, wrecking your application's performance. This blog will outline how I managed to create a painfully slow React app and the steps took to correct it.
Tech
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.
Tech
The TensorFlow team have developed a JavaScript library for performing machine learning tasks in the browser. We take a look at some of its uses and discuss some of the problems encountered while working with it.
Tech
React and Redux are 2 tools that together make it simpler to create functional UIs. However there are many potential pitfalls when it comes to using them. In this blog I will walk you through some practices to keep in mind as you write your own code.
Tech
Do you think Test Driven Development is simply writing the tests before you write the code? If you do, then this post is for you.
Tech
Cake (C# Make) is an awesome tool for writing scripts to build and test projects. This post details how the VsTest runner can be invoked using Cake.
Tech
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.
Tech
Code examples and definitions of the SOLID principles to show how easy it is to voilate them and how you can refactor code to adhere to them.
Tech
Managing state in an application can be tricky, even more so with many moving parts like in typical forms. In this article I consider when it is appropriate to use Redux and Redux Form to manage the state of a form in a webapplication
Tech
The F# language has many features which can lead to expressing complex domains in a terse and typesafe way. To show this we can codify the world of Dogshorts, the private school for young witches and wizards.
Tech
Nobody looks forward to conflicts when collaborating on code. There are things we can do however to minimise unwanted ones, promote useful ones, and make them easier to solve correctly.
Tech
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.
Tech
It seems that everyone is trying to build a microservices based system these days. Some of those attempts succeed when others fail miserably. In this article, I will look at one thing that often connects the winners- the use of DevOps practices and culture.
Tech
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.
Tech
What is npx? How is it useful and why should you care? Find out how you can use npx to run global npm packages without having them installed.
Tech
Key lessons I took from Eric Evans' book "Domain Driven Design". A brief summary of the book's concepts and why you should read it.
Tech
A short tour of different museums and exhibitions that have used technology to support their displays.
Tech
Mock the back-end of your web application, using Node.js, to make developing and testing the front-end easier.
Tech
How Scott Logic consultants worked with Rabobank's London IT department to improve DevOps practices.
Tech
Apache Curator is a client side library providing convenience and out of the box algorithms when working with Apache Zookeeper. In this blog we take a quick look at how to implement a leadership election.
Tech
Following from my recent article on Machine Learning with Scikit Learn, I decided to experiment with the library that is most loved by developers today: TensorFlow. Similar to Scikit Learn, this post walks through a simple example of TensorFlow to categorise handwritten digits.
Tech
In August 2017 a typosquatting attack was discovered in the npm repository with the intention of stealing developers' credentials. This post explains the attack and my efforts to search for similar active attacks.
Tech
In this blog post I'll be exploring Lexical Scope in JavaScript and answering the question "What is Closure?"
Tech
I found splitting JavaScript applications into separate packages within a single source tree difficult, until I found a tool called Lerna.
Tech
JVM Roundabout is a meetup in London where all things related to JVM are discussed. The February edition of the meetup focused on microservices. I had to be there!
Tech
When is it time to make something a generic re-usable class? And how do you manage the additional complexity of a generic solution? A potential solution lies in an incremental approach.
Tech
Machine learning (ML) has become an increasingly popular field of Computer Science. In the past few years I've found myself working with ML to categorise large sets of data, and Scikit Learn for Python has proved itself to be exceptionally good for the task. This post walks through a simple example of Scikit Learn to categorise handwritten digits.
Tech
Conflicts sometimes arise when merging two npm-shrinkwrap.json files from different source control branches. Git might be able to solve some of these - but should you let it, and what should you do if it can't?
Tech
In highly-visual, rapidly-updating, multi-window, buzzword-laden apps performance is a big concern. With WebWorkers, SharedWorkers and ServiceWorkers we have a number of options for moving complex scripting tasks off the critical path. However, rendering can be more of a dark art. In this post I'll dig into how one browser (Chromium) uses renderer processes and how you can use this knowledge to your advantage.
Tech
Java Optional has been around for a while now. It is a pity that this language feature is not used more often by developers. This is a simple demonstration of how to use it correctly.
Tech
First introduced to me as “upside-down recursion”, dynamic programming is a technique used to write efficient algorithms to solve a wide range of problems, often replacing recursive approaches. Having met many examples in the past few years, this post explores three applications I’ve seen for the benefit of those new to the technique.
Tech
A quick look at Apache Storm with a short word count walk-through example using a Redis Database.
Tech
If you're a fan of Redux Saga then you will have noticed the abundance of libraries to assist testing your sagas. This post takes an in-depth look into the different approaches to testing sagas, describing where five popular testing libraries fit into these approaches.
Tech
In this post, I create an interactive map of relative changes in currency strength, using D3's geographic projections, world map data, and a currency exchange API.
Tech
I show a simple use of the PostGIS Postgres database extension to combine route data from Strava and postcode data.
Tech
Over the past couple of months I’ve been exploring the potential of WebAssembly. I wanted to try my hand at creating a more complex WebAssembly application, which is why I’ve been spending my evenings working on a CHIP-8 emulator ... and learning Rust!
Tech
As interns at the Newcastle office we were tasked with creating an interactive desk directory to allow new employees to better acquaint themselves with their building and colleagues, with the speculative goal of replacing the company-wide internal phone directory. The original brief specified we should present a graphical view of the office layout generated from an existing office plan stored in Google Sheets.
Tech
Last week I took a trip to London to attend CodeMesh, the Alternative Programming Conference. Attending conferences can be a way to expand your horizons and inspire interest in a variety of topics, and CodeMesh did this for me and more, with a great line-up of experienced speakers. Here I'll describe a few of the talks I attended.
Tech
I'll be taking a first look at Polymer 3.0, including how to integrate other technologies, as well as comparing it with other front-end frameworks.
Tech
A common misconception I have frequently observed in organisations that are adopting agile is around using story points for planning, forecasting and progress tracking. Long- and mid-term planning in agile can have devastating effects on teams, which is why I’d like to shed some light on it and talk about how the situation can be tackled in an agile way providing much better results for the project and the organisation itself.
Tech
A quick guide to the available source map options in webpack, and the considerations for choosing one in different scenarios.
Tech
In this blog post I'll take a look at a real-world application of WebAssembly (WASM), the re-implementation of D3 force layout. The end result is a drop-in replacement for the D3 APIs, compiled to WASM using AssemblyScript (TypeScript).
Tech
·
Video
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.
Tech
In this blog post I'll explore the various different ways you can create WebAssembly modules, using Emscripten, LLVM and AssemblyScript, comparing the tooling and performance.
Tech
JUnit 5 has been available for a few weeks now so in this post I will investigate setting it up and migrating from JUnit 4 then explore some of the new features available.
Tech
Creating asynchronous functions that are recursive can be a bit of a challenge. This blog post takes a look at various different approaches, including callbacks and promises, and ultimately demonstrates how async functions result in a much simpler and cleaner solution.
Tech
Jest is a testing framework that provides the testing tools we now expect to see in a modern software project. It provides fast parallelised test running, with a familiar assertion syntax, built in code coverage, Snapshots and more. In this post, I'll be investigating Snapshots and laying out some thoughts!
Tech
This post demonstrates one way to add Selenium e2e tests to a `create-react-app` generated app. It uses Jest as the test runner, embraces modern JavaScript features (including async/await, modules, fat-arrow functions, templated strings, etc.) and attempts to ensure that modern editors are able to provide useful auto-complete suggestions when authoring tests.
Tech
Market profile charts are relatively complicated and specialised charts used by financial traders. This blog post looks at how to render a market profile chart using D3.
Tech
Place names in UK and Ireland are very much influenced by their surroundings, with endings such as -hill, -ford, and -wood quite clearly referencing local geography. This blog post uses the new NDJSON command line tools for processing, transforming and joining datasets to create an optimised visualisation.
Tech
Does npm 5 deprecate yarn? With promises of increased speed and consistent package versions yarn has a new competitor, but in this post I'll show the reasons for why, for the time being, I'll be sticking with yarn.
Tech
A walkthrough of setting up a WebPack 2 based build process for creating an Electron application in TypeScript, including configuring a build in Visual Studio Team Services.
Tech
Following on from my previous blog post where I created a simple particle simulation using Go, I looked at adding some complexity.
Tech
Using two of the currently most popular web frameworks I'll demonstrate how to create semantic looking code.
Tech
Theming an application is a concern for many organisations and products. In this post I'll present a simple way to manage branding using current tooling.
Tech
Two years ago I wrote about TypeScript compiler APIs. There has recently been further progress in this area and I explore the newly exposed API in TypeScript 2.3.
Tech
Following on from making a simple particle simulation in Go, I decided to try and implement a simple set of web services too.
Tech
Small multiples repeat the same basic chart, typically with the same axes, to display different slices of a dataset. They are an excellent way of showing rich multi-dimensional data, without becoming a dense mess of lines. This post looks at how to implement small multiples with D3 and d3fc.
Tech
Your store is the source of truth... as long as it makes sense. A concrete example integrating Redux with React Router
Tech
How I used Go to create a web app that would help me practice violin scales.
Tech
I downloaded an analysed the training data for 1,000 athlete who ran the London Marathon in 2016. From this data I've learnt that people put in ~30% less mileage than popular plans suggest, Sunday mornings are a firm favourite for long runs, and that Saturday morning parkruns are very popular!
Tech
Level-up the state is perhaps the most useful React pattern. Apply it to your dependencies and you can get many benefits, like better tests, flow control and idempotent routes.
Tech
I recently downloaded run data for the 7,190 athletes who recorded their London Marathon on Strava, a popular platform for runners and cyclists. This blog post visualises and analyses the data in various interesting ways.
Tech
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!
Tech
Given the complexity of digital transformation, how does anyone faced with a responsibility to deliver get to grips with the issues and decide where to start?
Tech
In this post I will talk about Consumer Driven Contracts in Microservices architectures. I will also give an example of how to use Pact in a modern JavaScript application.
Tech
When creating d3 visualisations it's common to want some form of responsive layout. However, SVG and canvas don't provide a native way to do this. Most examples found online either use fixed dimensions or resort to some form of manual layout to achieve the required effect. This post introduces an alternative approach using CSS and custom elements.
Tech
Recreating the data used for the Guardian's Unaffordable Country visualisation in Apache Spark.
Tech
A few days ago the roadmap for future Angular releases, starting with v.4 in March 2017, was unveiled. It once again made me re-visit my personal doubts about semantic versioning, the underlying issue being that it is great for computers, but bad for humans. Considering that people are the primary 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?
Tech
For the past four years I've been an author on Ray Wenderlich's website which provides tutorials for iOS developers. I don't do much native iOS development these days, However, I do like to keep my skills up to date. As part of this team I sometimes find myself being assigned 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.
Tech
We’ve recently been investigating uses for the blockchain and as part of this, we’ve developed our own system called Scottcoin. This post will explore the core components of the Bitcoin system, how a transaction goes through it, how our internal version differs and what advantages and disadvantages it brings.
Tech
Yesterday I attended (and spoke!) at the 2016 Bristech conference, an event aimed at polyglots, innovators and the "tech curious". It was a full house at the Watershed with over 400 tickets sold. I had a great time at the conference, attending quite a few talks myself. What made the conference interesting to me was the diverse range of subjects covered - design, security, even physics! Presented here are some brief notes and comments from the day's proceedings.
Tech
In this post, I take a look at writing a simple particle simulation as a way of learning some of the basics of the Go language.
Tech
Awareness of Bitcoin has steadily grown, but understanding of it less so. Allow us to shed some light.
Tech
A practical look into higher order components and what they bring to the table, along with a general discussion of code reuse in React
Tech
My highlights from attending the Alteryx Inspire Europe conference, hosted in London.
Tech
In this article, I take a look at writing a watchface for Pebble using their newly released JavaScript SDK.
Tech
If you look up the MVC pattern on the web you can easily find definitions that differ and contradict each other. In this post I'll look at some definitions of MVC and consider what the differences mean for applying the pattern in practice.
Tech
This blog describes my experience of upgrading a basic RESTful API from .NET Core RC1 to .NET Core 1.0, and using Docker to host it on Linux. Docker is completely new to me so I'll give my thoughts as a noob.
Tech
Migrating a Knockout project to a webpack redux application using Riot, and why I didn't use React.
Tech
My highlights from the inaugural JSConf.IS 2016 hosted at Harpa, Reykjavik.
Tech
This post describes my entry into one of the hack events at JSConf.IS which challenged us to take control of the Northern Lights. It hopefully also serves as a nice introduction to creating visualisations with d3-force.
Tech
An overview of the Edinburgh Interns summer project: A react application to filter and search interview questions stored on Google Drive
Tech
This post quickly introduces data join before moving on to some of the edge cases we've run into when building components on top of data join. It covers how you can solve them with vanilla D3 and why you might find our d3fc-data-join component useful.
Tech
A short introduction to Java enum capabilities followed by concrete examples of good use. How enums help with implementing lazy loaded singleton, following open/closed principle and using strategy pattern.
Tech
Euro 2016 may have been a little disappointing and flat, but the same can’t be said for the Scott Logic Euro 2016 table football tournament...
Tech
Back in January, I blogged about using the Web Audio API with D3, creating an app using Knockout and RequireJS. I've since expanded on that application, migrating it to Electron and adding new functionality along the way -- like MP3 tag extraction and recursive folder searching.
Tech
A quick walk through ES6 iterators and iterables. It covers extending d3fc's random data component to implement the required protocols and how this can lead to greater interoperability with utility libraries like RxJS/IxJS.
Tech
I've recently been playing around with the JavaScript Abstract Syntax Trees (AST), with the aim of transforming some JavaScript code into various other languages (Java, C#, Objective-C). As part of my research, I looked at how Babel performs AST transforms. If you're not familiar with Babel, and the plugins which 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.
Tech
This blog post shares a few quick tips and patterns that I've been using to structure JavaScript promises; keeping them clean, simple and readable.
Tech
It’s been a couple of months since my first post about the security of Electron. With v1.0 having recently been released I felt it was time for a a fresh look
Tech
For the past few weeks, Laurie Collingwood and myself have been working on a prototype banking app with an animated graph. In this post we’ll discuss some of what we’ve learned during the project and talk generally about animation with HTML5 canvas.
Tech
Being a software developer requires constantly improving ones knowledge. This is a short list of books that made the largest impact on me as Java developer. I hope that you too will find here something that will take you to the next level!
Tech
The redux pattern provides a simple (and strict) pattern for managing state; a single store holds the state while a reducer applies actions, evolving the application state.
Tech
In this post, we discuss design and implementation choices for account and session management features, and how these trade off against usability and other goals.
Tech
This post uses React to show how we can use features from functional programming in everyday JavaScript, and integrates RxJS to show how these approaches are common across many frameworks today.
Tech
Over the past several years there has been a lot of talk about cryptocurrencies, such as bitcoin, and the blockchain technology that underpins them. However it can be difficult to understand how the blockchain actually works in practice, and why it is such a clever method for currency exchange. Two of our graduates are currently developing our own cryptocurrency for use within Scott Logic, as an attempt to better understand the practical uses of the blockchain. In this blog post, we aim to explain the inner workings of the blockchain and help people to understand how it manages to keep transactions both secure and anonymous. This post will go into the low level algorithms of blockchain and provide verified examples alongside each algorithm; this post is not for the faint of heart!
Tech
Kotlin is the latest JVM-targeted language to see a 1.0.0 release. Having experimented with it for a short while I thought I would capture my experience and point out a few gotchas.
Tech
Mondo Bank has recently moved into public Beta, sending out 1,000 cards to trial customers each week. I received my Beta card a few days ago, and have been using it ever since. This blog post takes a quick look at the Mondo API and how I used it to automate expense claims!
Tech
Along with the modularisation of code, D3 version 4 also brings new support for canvas drawing, thanks to the d3-path package introduced in version 4.
Tech
d3-path is an abstraction over SVG path creation which uses the canvas element's Context2D interface. Previously creating path generation code involved a lot of concatenating SVG path commands like M0,0 or L2,2, and the somewhat more cryptic C70 20,120 20,120 10. Even with ES6 string interpolation such code can be incredibly hard to read (and write!).
Tech
A brief look at the current state of application security in Electron
Tech
I recently created a site which I'm proud to say now hosts an impressive collection of tweet-sized D3 creations from the hugely creative people of the internet. In this post I'll talk through deconstructing one or two of those creations with the aim of giving any aspiring artists a starting point.
Tech
Making the jump to fully modularized applications in javascript is now incredibly easy with ES6 modules and javascript package manager (jspm). We'll take a look at the refreshing simplicity in the jspm workflow and how it goes about achieiving this.
Tech
In this post, we discuss cross site scripting attacks against web apps, and how to defend against them.
Tech
The next version of D3, the data visualisation library, is on the way. As we maintain D3FC (a charting library built on top of D3) we want to stay on top of those changes, to make sure that the library makes appropriate use of any new functionality and to embrace any new conventions that have emerged.
Tech
This post discusses building a modern single page marketing site using a static site generator
Tech
Swift Bond is a binding framework that removes the mundane task of wiring up your UI. In this tutorial, which was originally published on Ray Wenderlich's website, I introduce the concepts of Bond and demonstrate how to use it to rapidly build an iOS app.
Tech
In this post, we discuss SQL and other injection attacks against web apps, and how to defend against them.
Tech
If you've used React and Flux, you'll know how powerful this combination is when building single page applications. But how practical is it when building truly large scale applications with multiple sections?.
Tech
In this post, the causes, effects and mitigations of Man in the Middle attacks against web apps are discussed.
Tech
Hot-reloading UI is a **hot** topic at the moment. I want to take some time to explain why, in the class of applications I typically work on, I believe it to be such an important feature for future UI frameworks to have.
Tech
This post looks at integrating Angular 2 with Immutable.js and Redux, a popular Flux store implementation. It also demonstrates that the functional approach, encouraged by these technologies, allow for powerful concepts such as time travel, where you can replay actions and application state.
Tech
Literally a couple of hours after we released the previous post on writing a RESTful API with ASP.NET 5, I learned that Microsoft have renamed the new platform. This is a very short summary of that decision.
Tech
This blog describes my first experience of writing a RESTful API with Microsoft's new MVC 6 framework which is due to be released as part of ASP.NET 5 in early 2016.
Tech
In this post, I investigate the HTML5 Web Audio API, using it with D3 to perform real-time audio visualisation.
Tech
Angular 2.0 introduces a component-based approach to building applications, where the rendering can be optimised by selecting a suitable change detection strategy for each component. This post looks at how the OnPush change detection strategy works quite elegantly with the concept of immutable objects as enforced by Immutable.js.
Tech
This blog shows how to get started with microservices using Dropwizard. It guides the reader through building a simple task-list service.
Tech
From my perspective Angular 2 is a great improvement over Angular 1. The framework is simpler, and as a result your code is more concise, making use of modern JavaScript concepts. However, this does come at a cost; with Angular 2 the required tooling is really quite complicated.
Tech
This blog post takes a step-by-step approach to building a simple todo-list application with Angular 2.0. Along the way we'll look at web components, dependency injection, TypeScript, bindings and the Angular 2.0 change detection strategy which combine to make a much more elegant framework to its predecessor.
Tech
OData Controllers offer an easy interface between data and your application, but require one controller per model type. These controllers often have a large amount of almost identical code. In this blog post, we look at using C# Generics to remove this duplication.
Tech
There aren't many examples of OAuth2 working with a SAML 2.0 as an authentication method on the Internet. The purpose of this post is to provide a simple implementation of these two technologies working together.
Tech
A few days ago Bloomberg published their list of 50 companies to watch in 2016, and for some reason they decided to publish the entire report in ASCII! I thought it would be a bit of fun to see if I could use D3 to create my own ASCI charts
Tech
Libraries like d3 and d3fc do a fantastic job at making interactive charts. However, when the data size is in the hundreds of thousands, performance suffers. In this post, I'll have a look at some sampling techniques recently implemented in d3fc, and show them off with a demo.
Tech
While d3fc (a toolkit of charting components built in the d3 style) embraces the philosophy of simplicity over performance, there's no point in creating a chart with lousy performance. In this post I'll run through some of the tips and tricks for squeezing the best performance out of d3fc without compromising on its flexibility.
Tech
Saturday marked the fifth annual DDD North conference, held once again at the University of Sunderland. DeveloperDeveloperDeveloper! events are volunteer-organised conferences where members of the community propose and vote on the agenda. ScottLogic took part this year as a Platinum-level sponsor. We had many fantastic conversations with developers from all across the country, plus our squishy rugby ball giveaways were very popular!
Tech
JavaScript builds are getting more complex and time consuming. This blog post shares a few steps I took to improve the performance of one of our project's grunt build, hopefully some of the tools I used will be of use to others.
Tech
Ionic is a framework built on angular-js, targeted at creating mobile applications. However, one useful component that isn't part of the standard controls is the master detail layout, and this post describes the solution I used when creating this control.
Tech
Recently I needed to make a site for a personal project, and although I work on dynamic web apps for a living, I hadn't had to make a proper, honest-to-goodness website for years. There are plenty of well-known options out there for making sites quickly, like Wordpress and Squarespace, but why go for the quick option, I said to myself, when there's a learning opportunity to be had!
Tech
Every year Scott Logic takes on a number of interns who spend 12 weeks writing code, working on projects and having a great time in the offices. My name is Ruth, and along with Chris Barrett, I am an intern in the Newcastle office; and this summer we’ve been working on creating a real-time financial charting application. The application is built on top of Scott Logic’s own open source d3fc library, which itself is built upon the increasingly popular d3.js (Data driven documents) library for javascript.
Tech
A foray into generating simple charts in a fashion inspired by D3 using React as a rendering engine.
Tech
I try to clear up confusion on different ways of setting up TypeScript projects in Visual Studio, particularly for non browser (WebWorker or Node) projects, and end up more confused than ever.
Tech
I've been working on an open-source charting library called d3fc. And following Colin's lead, was looking for a creative example to replicate. I think I found it...
Tech
Code quality is important in large systems and web sites are no exception. This post shows how Umbraco enables developers to write clean and maintainable code.
Tech
Meteor seems like a fresh way to work. It makes a lot of things, like CRUD operations and keeping your UI in line with data changes, extremely easy and it adds a lot of nice, clever tricks, like the client-side stubbing of server-side methods.
Tech
Sizing advanced components such as grids using ng-style can leave you with rendering problems. Here, I create a variant of ng-style with some small tweaks to avoid this problem.
Tech
The standard LDAP JNDI implementation that ships with Java leaks a classloader reference when used from a web application hosted in a web container. While Tomcat and Jetty both include factory-fitted workarounds, JBoss does not. This post describes a JBoss-specific fix.
Tech
A look at some of the more unusual parts of JavaScript by examining seven things I've learnt recently.
Tech
In the second post of my series on the Aurelia framework I walkthrough bundling the less2css project. The result of which significantly reduced the load time, but did uncover a few aspects of the Aurelia bundling process that do not yet feel fully formed.
Tech
This post gives a walkthrough of a project that makes use of the new Aurelia framework. It also take a look at how it compares to Angular 2.0, which is still in development.
Tech
Airbnb's JavaScript coding standards are now based around ES6 and contain many guidelines to help you take advantage of its features. In this blog post I'll present some resources I created to help you learn ES6 through their guidelines.
Tech
This is my final article on ReactiveCocoa 3.0 (RAC3), where I demonstrate some more complex RAC3 usages within the context of an application built using the Model-View-ViewModel (MVVM) pattern.
Tech
This blog post discusses the changes to the .NET framework, the solution layout / configuration and serves as an introduction to the recommended programming style encouraged by Microsoft going forwards.
Tech
My previous blog post took a first look at ReactiveCocoa 3.0 (RC3), where I described the new Signal interface, and the pipe forward operator. In this blog post I continue my exploration of the RC3 APIs and turn my attention to signal producers. I also discuss a few points around the overall clarity of the new ReactiveCocoa APIs.
Tech
This blog post takes a look at the new ReactiveCocoa 3.0 swift interface, which introduces generics, a pipe-forward operator and an interesting use of curried functions.
Tech
This post shows how 'single file generators' can be used to generate type-safe email templates
Tech
I've been building a React Native app for the past few months, which was published as a tutorial yesterday. A number of people have asked about my thoughts and opinions about React Native - which I am sharing in this blog post.
Tech
A few months ago Facebook announced React Native, a framework that lets you build native iOS applications with JavaScript. I've been spending the past couple of months building am app with this framework, which I have finally been able to share!
Tech
When it comes to coding style in JavaScript, what makes most sense - one var declaration, multiple at the start or scoped?
Tech
ZeroMQ is an opinionated, light weight, blazing fast messaging library. Here I take a look at how to get up and running with it and the building blocks it provides you with.
Tech
A quick run through of the steps involved in integrating a Node.js client with Active Directory Federation Services for authentication using OAUTH2.
Tech
For some reason, everybody and their dog has written about how to parse JSON in Swift. Not wishing to be left out, I thought I'd throw my hat into the ring.
Tech
I'm relatively new to the world of single page applications and have just finished a project built using AngularJS.
Tech
Localising a web application to a high standard is difficult. Why is that? Consider the following differently formatted numbers...
Tech
This blog post explores the novel approach taken by the React.js team, where the UI is expressed as a function of the current application state, and re-implements it with Swift.
Tech
Avoiding broken promises with WebDriverJS - a quick guide to avoiding some of the framework pitfalls.
Tech
I have recently been using a set of tools called fastlane, developed by Felix Krause. fastlane helps to automate the steps involved in building and deploying iOS applications to the App Store.
Tech
I mentioned in the previous post that I would create a plugin for less which converted from LTR to RTL. Here is a tutorial post on creating that plugin.
Tech
Some languages of the world (Arabic, Hebrew etc.) are RTL, meaning they are read right-to-left, instead of left-to-right. Typically in web applications supporting one of these languages, everything is reversed, meaning scroll bars, progress indicators, buttons etc.
Tech
Swift has access to all of the Objective-C APIs, which means that anything you could do with Objective-C you can now do with Swift. However, there are times when it is worth exploring a better, pure-Swift, alternative. This post explores the pros and cons of KVO versus a couple of Swift alternatives.
Tech
Swift does not have a built in eventing mechanism. This post explores a few different ways events can be implemented in Swift and how to avoid problems of retain cycles and closure reference equality.
Tech
The upcoming JavaScript standard ES6 introduces generators, which provides us with a new pattern for writing asynchronous code. I compare this pattern to the established patterns of callbacks and Promises.
Tech
This blog looks at how CSS flexbox layout can be applied to SVG in order to simplify the task of constructing charts with D3. This approach has been made possible by the JavaScript flexbox implementation that Facebook recently open sourced to support ReactJS Native.
Tech
Swift doesn't support throwing exceptions, nor does it support catching them. This wouldn't be a problem if you could develop iOS apps in pure Swift, but unfortunately at the moment you cannot.
Tech
TypeScript 1.4 was released last Friday, bringing union types, type aliases, and some ES6-related features. It also brought a new compiler and language services API to facilitate better tool support. Here I'll give a brief introduction with some pointers on places to get started.
Tech
Now that I've completed the Scala MOOC I thought I'd go back and re-implement the assignments in Clojure to get a better understanding of the differences between these two languages
Tech
How to create hero transitions with AngularJS, similar to those implemented by Google's Material Design and Polymer's core-animated-pages.
Tech
I’ve recently completed an ELK (Elasticsearch, Logstash & Kibana) real-time log processing implementation for an HTML5 FX trading platform. Along the way I’ve learnt a few things I wish I’d known beforehand. This post shares some more details of the project and hopefully some time saving tips.
Tech
Some lessons I've learned trying to optimise a HTML5 mobile App so that it's fast and responsive even on old or budget phones with limited performance.
Tech
This blog post looks at a few techniques that can be used to remove the deeply nested if-let statements that are a common sight in Swift code.
Tech
I have spent the last 12 weeks continuing the Foyer Screen project. In this post I describe the Admin Panel which I created to allow dynamic editing of presentation content and share a little of what I've learned in my time at Scott Logic, including some useful resources for getting started with Angular JS.
Tech
This post introduces 'Bramble MVC', a prototype static site generator which aims to be a little different from existing static site generators by having an API resembling a dynamic web server.
Tech
How to use a long-press to trigger re-ordering a list in Ionic Framework, instead of Ionic’s default implementation, which requires a button to switch modes.
Tech
Taking a look at a new fullstack Javascript web application framework.
Tech
Swift's strict initialisation process results in a number of practical issues, leaving developers scratching their heads. This post explores a few solutions including two-phase initialisation, the use of optionals and lazy properties.
Tech
An RSI (Relative Strength Index) D3 component which can be added to a D3 chart. In the blog I've also tried to explain a little bit about RSI and it's uses in calculating risk when trading markets.
Tech
Explaining the very basics of AVFoundation while building a Mac Application that stitches 3 .mov files together.
Tech
With the HTTP/2 specification just going to Working Group Last Call and due for publication in early 2015, I thought now would be a good time to have a quick look at what's changing.
Tech
This post describes a binding helper that allows you to bind arrays directly to table views with ReactiveCocoa. In this update to my previous post, the helper is extended to support mutable arrays.
Tech
In this article I'm going to create an interactive Fibonacci fan D3 component, and show you how to add it to a chart in just 6 lines of code.
Tech
This post show how the simple task of computing a Mandelbrot set can be split up across multiple threads (and processors) using functional techniques.
Tech
Having recently dipped my toe into the world of functional programming with both Scala and Clojure I thought it'd be useful to do a quick compare and contrast of these two JVM based languages.
Tech
Using Cordova and Ionic Framework to turn an AngularJS web application into a cross-platform mobile application.
Tech
This is a blog post about IE and how it handles windows running code which interacts with each other. I've created a test case that shows IE combine together two stacks so that code runs in a context which, when looking at the source code, seems impossible.
Tech
Recently I updated the Scott Logic blog to implement infinite scrolling using a combination of Jekyll pagination and jScroll. Both of these components are quite fussy about their respective configuration, meaning that integrating them took longer than expected. I thought I'd share my solution in this blog post, hopefully saving others from the hours I spent digging into jScroll code or cursing Jekyll!
Tech
In my last article I put together an interactive chart that could be panned and zoomed, but there was one obvious omission - crosshairs. In this article I'm going to create a D3 crosshairs component, and show you how to add it to a chart.
Tech
Comparison charts, as their name suggests, are great for comparing the percentage price change of multiple stocks in time. In this post, we'll make one using D3.
Tech
In this blog post, I talk about my team’s journey from traditional “pass me the keyboard and mouse” pair programming to use of Screenhero for IDE sharing both within the office and remotely.
Tech
Swift, as I am sure you are aware, is quite a strict, safe and strongly-typed language. However, because the language needs to maintain Objective-C compatibility it has some rather curious features, and the behaviour of `AnyObject` is one of them!
Tech
This post is a continuation of my previous which looked at implementing Conway’s Game of Life using functional techniques. Here I look at how memoization can be used to cache the return value of a function in order to improve performance.
Tech
In this post, we'll take a look at some of the performance issues you might encounter when making interactive charts using SVG, and how you might go about fixing them.
Tech
Recently I've been looking at various D3 components, which has been a fun project. I haven't yet had the chance to develop an interactive, dynamic component though, which has meant that the resulting charts have been sadly static. For this article I wanted to use what I've learned to build a fully interactive chart - something that wouldn't look out of place on a financial app.
Tech
Apple released the first public beta of the Swift programming language just over three months ago. Within days of the release myself and Matt Galloway started working on our book Swift by Tutorials, which as of yesterday is finally finished and shipping!
Tech
D3.js is a great library for creating dynamic visualisations with HTML/SVG/CSS, while Jekyll is a static site generator tool. Here I look at integrating static versions of D3 visualisations in a Jekyll site using PhantomJS.
Tech
This post will address a question that is often raised within organisations transitioning to Agile - is there a place for the Project Manager role when using Scrum on a project?
Tech
This blog post shows an implementation of Conway's Game of Life using functional techniques in Swift.
Tech
This post demonstrates how JavaScript and HTML5 related technologies can be used to create an application that can run in both a web browser and as a cross-platform desktop application using node-webkit.
Tech
As an Intern in the Edinburgh office I have been involved in creating a slideshow that conveys interesting information about the company; something useful and entertaining to catch the attention of visitors in the waiting area.
Tech
In my last article (on line annotation components for D3 charts), I created a D3 component which calculated and displayed a moving average. As promised, I'm now turning my attention to Bollinger Bands.
Tech
In this article I'm going to create two simple, reusable D3 components for adding line annotations to charts.
Tech
We're the Scott Logic interns for Newcastle in 2014, and our project was to make a mobile-compatible version of the Scratch HTML5 player that allows offline access, and app-like immersion. This blog post is an overview of what we managed to achieve ...
Tech
An open-high-low-close chart is a type of financial chart used to show price movements in a financial instrument over time. In this post, we'll make a reusable D3 component for an OHLC chart series.
Tech
How to use Asp.Net's built-in bundling and optimisation feature to optimise AngularJS templates
Tech
Actor Models make writing concurrent and scalable software much easier. This post uses Akka and Scala to demonstrate some of the benefits of the Actor model.
Tech
SignalR is an easy to use framework for .NET and the browser which enables bi-directional communication over a variety of transports (from WebSockets to Ajax long-polling). The SignalR Hubs API is dynamically typed, in this post I will summarise some existing tools which can be used to provide strong typing for calls between C# and TypeScript, as well as a more experimental approach via F#, FunScript and Type Providers.
Tech
Writing end-to-end tests for a Single Page Application (SPA) built with Angular or Knockout, and how to improve the robustness of those tests.
Tech
As part of a project I'm working on, I have a requirement for a NoSQL database. There are numerous offerings out there, of which MongoDB and CouchDB appear to be the most popular. So which system should I choose?
Tech
It was just two months ago that Apple took us by surprise in releasing the Swift programming language. This blog post reflects on the first few months of Swift adoption.
Tech
A comparison of Angular and Knockout in an enterprise scale single page application, by building the same sample application with both tools.
Tech
This blog post looks out how Swift makes the combination of ReactiveCocoa and MVVM even better ...
Tech
Reactive programming is a paradigm which allows you to better represent a work flow where changes in one part of your data model propagate down to other parts of the model. This blog post demonstrates an example of this, by listening for updates to Wikipedia and reacting accordingly.
Tech
A few months ago I published a blog post which showed the results of analysing the meta-data of 75,000 apps from the iTunes App Store. This blog post continues the analysis by adding 60,000 Android apps into the mix.
Tech
I've recently had a two-part tutorial published on Ray Wenderlich's website that details how ReactiveCocoa can be used to implement the MVVM pattern within iOS applications.
Tech
In this blog post I want to take a quick look at the Swift Sequence protocol, which forms the basis for the for-in loop, and see how this allows you to write code that performs sequence operations that are only evaluated on-demand.
Tech
This blog post presents a simple utility class for binding ReactiveCocoa ViewModels to UITableViews without the need for the usual datasource / delegate boiler-plate.
Tech
This blog post presents the result of analysing 250,000 screenshots from the Apple App Store, looking at hue, lightness and saturation histograms for each category.
Tech
The App Store continues its rapid growth, with approximately 300,000 apps added each year. I decided it would be fun to download as much app metadata as possible in order to see what patterns and trends I could find. This blog post describes the results.
Tech
This blog post looks at how to simulate accelerometer and location data so that you can test iOS apps without the need for a physical device. The simulated data is provided by an interactive UI which allows you to rotate the phone and mark paths on a map which can then be replayed.
Tech
It feels like everyone in the iOS community is talking about ReactiveCocoa at the moment. In this blog post I talk briefly about what ReactiveCocoa is and the 'Definitive Guide' which I wrote for raywenderlich.com
Tech
An emeging recipe that can change the way we make rich web apps.
Tech
Recently, I have been starting to get to grips with WebGL. Having little to no real previous experience with 3D graphics, there was a reasonably steep learning curve to overcome. So I thought I'd touch on a few of the basics here and share some resources that I found really useful.
Tech
Recently, Knockout's original author Steve Sanderson released a plugin called knockout-projections which optimises the performance of the observable array methods filter and map.
Tech
It's easy to get started building data-bound user interfaces in the browser using the KnockoutJS MVVM library. This post covers some practices and techniques that help with using it successfully in large single page applications.
Tech
PropertyCross has just announced a v1.3 release, which includes two new frameworks, a number of updates and an improved build system.
Tech
The book, iOS 7 By Tutorials, which I contributed four chapters to, is now in print.
Tech
When moving back from web to desktop development, it's easy to miss the quick feedback and update cycle enabled by the developer tools in modern web browsers. To an extent the debugger intermediate window does many of the things the console allows, and many of the "script debugging" features the browser provides are based on a traditional debugger. However the display of the page DOM and related CSS properties, and the ability to inspect and manipulate these on the fly to debug and develop a design, is something that it feels hard to live without.
Tech
The recent rise of web applications that have all the functionality of their desktop counterparts has highlighted the fact that JavaScript MVC Frameworks are now an essential part of any modern web developers toolkit.
Tech
Suppose you have a collection, and you need to perform an action on each element. That's not hard to do in any mainstream programming language. What if you need to know the index of each element as you process it? Not hard, but depending on your datastructures, possibly not as straightforward as it first sounds.
Tech
This article explores the various ways you can create objects with the JavaScript language, and through this exploration finds that there is much to learn about the language!
Tech
Last weekend I had the pleasure of attending this year's DDDNorth conference at Sunderland University.
Tech
Android is fragmented. This is a feature, not a bug. Embrace this and you embrace the future.
Tech
This blog post looks at creating an interactive tab bar controller transition, where you can swipe left and right to navigate between the tabs. The transition itself is a 'paperfold' effect - very pretty!
Tech
Explaining the very basics of getting a simple 2D fighter plane game up and running with SpriteKit
Tech
With iOS 7 Apple introduced a new set of APIs for creating custom View Controller transitions. In this blog post I look at how to create a custom 'flip' transition, giving the impression of a turning page.
Tech
For the past four months I have been hard at work writing four chapters for a book, iOS 7 by tutorials. Just yesterday, as the iOS 7 NDA was lifted, the book went on sale.
Tech
Version 0.9 of Typescript was recently released with support for generic types. In this post I discuss the features of 0.9 and 0.9.1, particularly generics and the "no implicit any" option.
Tech
When Eclipse Juno came out last year, I was excited to see some support for `@Nullable` annotations. I didn't get very far with them at the time, though, as the implementation was quite strict. With the release of Kepler though, it's much easer to make productive use of `@Nullable` to help avoid errors.
Tech
The Open Web is cool. One of the things I most enjoy about modern web development is that so much of the code is open and able to be mashed together.
Tech
In the previous part of this series discussing running an interactive environment (REPL) on .NET I covered the non-C# options. This post explores the options for an interactive or lightweight C# environment.
Tech
A couple of days ago Microsoft announced Windows Phone App Studio, a web based tool for the rapid creation of Windows Phone applications. In this blog post I take this new technology for a spin to see what it's capable of, and the interesting potential it has for creating 'personal' apps.
Tech
In the first part of a series on running an interactive environment (REPL) on .NET, I talk a little about why you might want one, and cover the non-C# options.
Tech
In the final article in the series, we take the RESTful API we've created and integrate it with MongoDB for persistence using the Salat library.
Tech
Taking a macro that can extract path elements from a query string and turning it into a fully fledged RESTful API, backed by an in-memory database.
Tech
In this article we'll look at ways to overcome one of the main restrictions of def macros - the ability to only generate functions.
Tech
Diving in head first into Scala Macros, generating code using the language's abstract syntax tree. I'll be looking at how to create a function that in subsequent articles we can turn into a generated RESTful API.
Tech
My latest iOS development article has been published on Ray Wenderlich's site, this time I look into how to develop custom iOS controls.
Tech
For the last six months or so I have been deeply immersed in a combination of iOS and HTML5 development. Now I don't want my C#/XAML skills to get too rusty, so over the weekend I decided to write a simple Windows 8 Store App.
Tech
A couple of days ago we hosted a one-day conference, HTML5 - It Just Got Real, at the Royal Society buildings in London. As promised, we have made all of our presentations available online.
Tech
This blog post describes the addition of a two-finger rotation and three-finger pitch gesture to the Windows Phone 8 Map control.
Tech
This blog post compares the same twitter search application written with both Knockout and Kendo in order to highlight the strengths and weaknesses of each framework.
Tech
Announcing a one-day conference at the Royal Society, London UK, on the 14th of May.
Tech
For a long time now, extends in less have been bubbling away. When I joined the less team in September last year it was one of the highest asked for feature requests. We decided that 1.3.x releases would fix bugs and implement minor feature requests and that 1.4.0 would include extends.
Tech
Recently I contributed a change to Knockout which allows it to run without hacks in a non-browser JavaScript environment.
Tech
First off, this is a biased blog post as I am heavily involved in less.js at the moment.
Tech
In an attempt to see how powerful pure CSS can be these days I decided to try implementing some of my favourite visual illusions without any JavaScript. Not only was this good fun, I gained quite a few insights into the current state of CSS.
Tech
I've just received an email from those nice folks at CodeProject letting me know that my article 'A Windows Phone 8 Run Tracking App in 100 Lines of Code' has just won the Best Mobile article of January 2013 award.
Tech
In the past few months I have been immersing myself into the world of iOS development.
Tech
In this post I'll run through the development of DOM-Raphael, a basic CSS3 based JavaScript library which acts as a replacement for Raphael.
Tech
Earlier today I received an email informing me that I have been awarded a CodeProject MVP for the year 2013.
Tech
This article looks at how you can write a cross-platform mobile application with a shared C# code base using Xamarin MonoTouch.
Tech
Less.js can be run in two ways, firstly through node and secondly in the browser.
Tech
Introduces a new open source project that helps developers choose a suitable cross-platform framework
Tech
We're very soon to launch a site documenting an open source project we've been hard at work producing. As the project is hosted on github, we'll be making use of the Github Pages hosting feature which itself is built on top of Jekyll.
Tech
Backbone.js is interesting because it gives you the basic framework of an MVC application without enforcing patterns on you.
Tech
This blog post introduces a simple pattern for adding multicasting capabilities to existing iOS controls. Adding multicasting allows for improved clarity and code re-use.
Tech
The technologies that we use to write applications for our end users are changing at a frightening pace!
Tech
With the recent release of Windows 8 and VS 2012, you've probably heard of the bold move in the WinRT API to only offer asynchronous versions of operations which take any significant time and the corresponding async/await feature in C#5 and VB11.
Tech
This blog post looks at the issues regarding integration of KnockoutJS and jQueryMobile, and provides a simple worked example - a Twitter Search application - where the two technologies play nicely together!
Tech
I've been working on a Windows Store application called EdBus, as part of the CodeProject AppInnovation contest.
Tech
A couple of days ago a published a new article on CodeProject, this latest article tackles the migration of a gesture-drive application from Windows Phone to Windows 8.
Tech
Hot on the heels of Reject.js was JSConf EU, a weekend conference about, well, JavaScript!
Tech
In this post I'm going to talk about creating PDF documents in C#.
Tech
Toob is a London Underground travel app for Windows 8 that I am designing and developing for CodeProject's App Innovation Contest. It is currently a work in progress but I have written an article introducing the application and going through some useful technical information for anyone interested in writing HTML5 applications for Windows 8.
Tech
How does Microsoft's TypeScript, the new kid on the block, compare to Google's Closure?
Tech
In this post Colin Eberhardt's Property Finder app gets another outing, but this time with a native twist.
Tech
This post describes a jQuery plugin which performs "picker style" animations between numbers using CSS3 transitions and transforms.
Tech
Most of us have had a play with CSS3 3D transforms, stacked a few elements, rotated them, maybe even made a cube out of them.
Tech
Intellisense for JavaScript has always felt to me like an unfinished addition to Visual Studio, something that promises so much but doesn't deliver for larger projects.
Tech
A look at how the Android design patterns have shifted over time
Tech
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.
Tech
HTML5 versus native (iOS:Obj-C, Android:Java) mobile development is a hot topic at the moment, with Facebook's ditching of a hybrid HTML5/Obj-C app in favour of an Obj-C-only app the latest blow to land.
Tech
A while back, when PhoneGap for Windows Phone was still in beta, I created Property Finder, an application for searching UK property listings.
Tech
This post looks at how to construct Java's built-in hash based Map implementations to ensure they have sufficient, but not excessive capacity.
Tech
Recently, I've had the opportunity to have a bit of a play with GWT's upcoming and excitingly titled "Super Dev Mode".
Tech
A couple of weeks ago Josh Smith published his latest book, "iOS Programming for .NET Developers", which seeks to ease the transition from .NET to iOS developers.
Tech
Over the past few weeks I have been working on a Windows Phone to-do list application, inspired by the iPhone Clear app.
Tech
This blog post describes the creation of a simple twitter search application for iOS, based on a similar application I wrote for Windows Phone a few months back.
Tech
Intrigued by Mark Easton's question on Twitter, 'How much of Britain is built on?', and inspired by the associated article, The Great Urban Myth of Britain, I wanted to put the UK NEA's statement that '6.8% of the UK's land area is now classified as urban' into some kind of context that actually made sense to me.
Tech
It's been a busy Twitter day for me. A reasonably inane tweet that I posted this morning pointing out that the announcement of the (potential) Higgs Boson discovery was written using the much derided Comic Sans font has been retweeted thousands of times.
Tech
PhoneGap Build is a hosted service which wraps HTML5 applications into native applications. The plugin connects to the service, uploads the exploded WAR directory, waits for the builds to complete and then downloads the native binaries installing/deploying them as attached artifacts.
Tech
A couple of weeks ago I blogged about a todo list application which uses gestures to achieve its basic functions.
Tech
My blog post from yesterday "A Developer Perspective on Windows Phone 8" sparked a bit of furious debate on Twitter.
Tech
This blog post takes a look at what Windows Phone 8 (WP8) means for Windows Phone 7 (WP7) developers and the Microsoft development platform in general.
Tech
In this post I present a graphical comparison of the Microsoft Surface and Apple iPad tablets
Tech
About a month ago, I was using the MoTeC i2 Data Analysis software to look through some telemetry data that I had exported from a popular racing simulator game.
Tech
This blog post describes the implementation of a gesture-based todo-list application. The simple interface is controlled entirely by drag, flick and swipe.
Tech
This post describes how to develop an Earthquake Monitor application based on live data from the USGS, using Silverlight, the MVVM Pattern, Visiblox and the Silverlight Bing Maps Interactive SDK.
Tech
I've recently had the opportunity to investigate building web services using Java.
Tech
This blog post talks about developing an extended Drag and Drop TreeView control in C#.
Tech
In this post, I explore four of the available iOS charting libraries and investigate the features, API, and pros and cons of each.
Tech
In this article I show a simple example of integrating Bing and Google mapping into in WPF, Silverlight, and Windows Phone applications.
Tech
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
Tech
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
Tech
This is the second post in my series about databinding in Silverlight and WPF.
Tech
I have just published a new article over on CodeProject called "KnockoutJS vs. Silverlight".
Tech
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.
Tech
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.
Tech
A little while ago Colin showed me a tool for inspecting the visual tree of a Silverlight/WPF application.
Tech
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.
Tech
This is a quick post relating to a Rhino bug I've just fallen foul of. This probably isn't very interesting for most folk, but if you've come here from Google then hopefully I can help you out!
Tech
This post is an attempt to do the impossible, to try and give desktop developers a brief introduction to developing on the web.
Tech
This post describes an implementation of the Blake 512 hashing algorithm in JavaScript.
Tech
Yesterday I presented a talk at the London-based Windows Phone User Group on the development of cross-platform mobile applications using PhoneGap.
Tech
Recently I have been wondering about the wealth of information that can be gleaned from the 2.5 million programming question on Stack Overflow.
Tech
Around one year ago I made the prediction that Silverlight would have an overall adoption of 81% by the end of 2011.
Tech
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.
Tech
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.
Tech
About a month ago I published an article which demonstrated how to create a WP7 application using static HTML pages and PhoneGap.
Tech
The Windows Phone 7 camera gives you the option to record the location where a picture was taken (under Settings => applications => pictures+camera).
Tech
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.
Tech
I recently released an update of the HTML5 / PhoneGap application I wrote a few months ago to the marketplace.
Tech
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 ...
Tech
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.
Tech
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.
Tech
A popular user-interface in the iOS world is the UIPageControl which renders a small set of dots to indicate the number of pages.
Tech
I've been working with Ext JS 4's pure Javascript charting package for a while now and due to the lack of decent real-world examples (i.e. those that don't just use almost all default settings) and a few undue omissions in the documentation, it's not always been plain sailing.
Tech
Recently I have been researching the use of PhoneGap for creating HTML5 Windows Phone 7 applications.
Tech
I recently came across the mustachify.me service. Inspired by Movember, I just had to spread the mo-ssage.
Tech
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.
Tech
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.
Tech
Last Friday I headed down to Brighton for the annual Full Frontal conference.
Tech
Adobe has recently made a number of rather muddled announcements around Flash and Flex that have caused confusion and concern in the development community.
Tech
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.
Tech
With the new Metro UI, Windows 8 has firmly embraced the tablet form-factor, with the interface tailored for touch and multi-touch interactions.
Tech
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.
Tech
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.
Tech
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.
Tech
Having spent a number of years studying Physics at university, I have had the importance of error bars well and truly drummed into me!
Tech
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.
Tech
In my last post back in June, I introduced a new data structure, the PatchWorkArray.
Tech
Some time ago I wrote about plotting mathematical functions with Visiblox Charts, and Jesse responded by showing how to wrap a function in a data series to feed into a chart.
Tech
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!
Tech
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.
Tech
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.
Tech
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.
Tech
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!
Tech
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).
Tech
With the Windows 8 preview release earlier this week, developers are now faced with a whole new and exciting Microsoft stack.
Tech
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.
Tech
Colin's post on Dart and the other fallout from Google's announcement across the web sparked a few thoughts in my mind.
Tech
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.
Tech
I was reading over one of the tutorials over at html5rocks.com (if you haven't had a look through them before I'd thoroughly recommend it!) and came across an article by Ilmari Heikkinen on creating a "kiosk-mode" for chromeexperiments.com.
Tech
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.
Tech
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.
Tech
For reasons best ignored I recently investigated the different ways in which static initialisation code can be run in Flex.
Tech
The Windows Phone 7 Panorama control is widely used in applications and to many has come to symbolise the Metro Design Language.
Tech
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.
Tech
Yesterday I received the exciting news that I will be speaking at the fantastic Flash On The Beach conference in Brighton this September. As Europe's biggest annual Flash conference it brings together leading minds from all over the industry and focuses on design and development in equal share.
Tech
I have just published an article on codeproject which describes the differences in development between Silverlight and HTML5.
Tech
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.
Tech
This post outlines a general purpose alternative to ArrayLists which provide lazy insertions and deletions to speed up those operations.
Tech
Readers of my blog will probably have noticed that I have a keen interest in both charting and performance.
Tech
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.
Tech
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!
Tech
This post demonstrates how to re-template a Visiblox Chart to render data with mathematical-style "on-chart" axes.
Tech
Up until now I have found the term "anonymous" pretty confusing in the context of JavaScript. In this post I'll explain how to define anonymous functions, what "anonymous" means, and what uses these functions have.
Tech
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.
Tech
In this first installment, I'll introduce the appcache, talk about some gotchas of using the appcache and hopefully give some helpful hints for debugging it based on my experience.
Tech
OK, this is a little behind the times since I'm talking about jQuery 1.3.2 - but it may be useful to someone.
Tech
This blog post shows how to implement tombstoning within a Windows Phone 7 application that following the Model-View-ViewModel pattern.
Tech
Each project is different and each client has different needs. Scott Logic has the flexibility to fit in with client requirements - but often we are asked to take on ownership of the process of software development, as well as the day to day mechanics of cutting code.
Tech
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.
Tech
In this post I am going to look at the similarities between jQuery Deferred and Microsoft Reactive Extensions, and supply code which will convert between the two.
Tech
A look at the three big web technologies at the moment.
Tech
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.
Tech
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
Tech
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!
Tech
This post describes the implementation of a List in Java which allows log time removals and insertions.
Tech
In a previous post I presented a library of sparkline implementations for Flex 3.
Tech
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.
Tech
At the weekend I published a CodeProject article titled "A Collection of JavaScript Gotchas".
Tech
The annual MIX conference, where Microsoft showcases the latest and greatest technologies to the development community is now coming to an end.
Tech
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.
Tech
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.
Tech
In January of this year Douglas Crockford decided that some of the options in JSLint were generally accepted and should always be on.
Tech
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.
Tech
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.
Tech
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.
Tech
I have just published a new CodeProject article on developing a Windows Phone 7 jump list control.
Tech
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.
Tech
In this series of posts I showed a sweet way to use Web Workers to improve performance on browsers that support them, without impacting performance on browsers that don't, by using jQuery 1.5 Deferred objects to wrap a "generic" worker.
Tech
In the previous post we set up a Web Worker helper function that allowed us to create a worker file.
Tech
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!
Tech
The Web Workers API is currently a draft HTML5 specification which defines an API for running JavaScript in a background thread. In this series of blog posts I am going to investigate the practical use of Web Workers.
Tech
The .NET Task Parallel Library is a great advance in parallel programming for the .NET framework.
Tech
In the first two parts I looked at different ways of performing dom manipulation tasks like adding rows to a table and sorting rows in a table.
Tech
I've recently been developing a web project using the Struts2 framework. A problem that came up during development was validation.
Tech
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.
Tech
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.
Tech
Both WPF and Silverlight have a property TextTrimming="WordEllipsis", which trims the text that a TextBlock displays based on the available width.
Tech
This post introduces the Presentation Model (or MVVM) architectural pattern as one approach for creating "better" large-scale Flex applications.
Tech
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.
Tech
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.
Tech
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!
Tech
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.
Tech
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.
Tech
A few weeks ago I created a Silverlight version of the #uksnow Twitter mashup, which plots twitter users snow reports on a UK map.
Tech
This post details a jQuery plugin which animates updates to HTML tables representing rankings.
Tech
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.
Tech
I was reading an article on CSS 3 transitions that was very interesting, but as I was reading, it seemed like the feature was designed for CSS designers - the primary example was animating an effect on hover.
Tech
This post goes through an implementation a SortedList in Java which ensures its elements are kept in order and guarantees O(log(n)) run time for all the basic operations.
Tech
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*"
Tech
Around one week ago I published an article which compared the performance of Visibox charts to a few of its competitors.
Tech
A few weeks ago I published a blog post which compared the performance of the Visiblox charts and the Silverlight Toolkit charts.
Tech
In the first part I created a simple speed test harness and found the best way of creating 100 rows in a large table, regardless of the CSS conditions. Now I'm going to do the same for sorting.
Tech
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.
Tech
The following are a couple of examples to accompany my codeproject article on Reactive Extensions.
Tech
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.
Tech
Over the last month or so, I've been interested in website performance.
Tech
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.
Tech
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.
Tech
This post follows on from the comparison of two Silverlight chart libraries.
Tech
Back in the day, processors had a single core and clock speeds increased steadily every year.
Tech
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.
Tech
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.
Tech
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.
Tech
So, in a previous post I pointed out some == coercing that was far from obvious. But despite gradually picking up edge cases, I've never had a true understanding of the various cases where x == y.
Tech
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.
Tech
I was recently reading Google's JavaScript Style Guide when I came across the following claim...
Tech
Recently I gave a presentation on cross platform application development with Silverlight, WPF and WP7.
Tech
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.
Tech
As I've previously mentioned JSLint is a tool by Douglas Crockford that checks code against various rules in order to find code that could potentially be buggy or ambiguous.
Tech
Js Lint is a tool created by Douglas Crockford to parse JavaScript, report errors and ensure good coding practices.
Tech
Over the past few months I've been using the Closure Library to create my own JavaScript library that carries out some graphical processing. This is done entirely in JavaScript, using Closure's graphics package.
Tech
Apache Maven is a popular build management tool that we use at Scott Logic to handle our internal projects. When I began using the Closure Tools, integrating the Compiler into the Maven build process became an important task.
Tech
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.
Tech
In November 2009, Google released their previously internal Closure Tools package, consisting of the Closure Library, Compiler and Templates.
Tech
Recently I read Scott Guthrie's post on improved JavaScript Intellisense in Visual Studio 2010.
Tech
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.
Tech
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.
Tech
An issue that can crop up with Flex applications is the lack of any log information to match up against users' bug reports.
Tech
The Silverlight ScrollViewer exposes readonly properties which indicate the current vertical and horizontal scroll offset, and methods for setting the current offset.
Tech
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.
Tech
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.
Tech
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.
Tech
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.
Tech
This post discusses the this keyword, what it represents, how it can catch you out and how to avoid those problems. It also introduces the functions call and apply from the Function prototype.
Tech
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.
Tech
This blog post demonstrates a Linq API which can be used to query the WPF / Silverlight Visual Tree.
Tech
This blog post describes a simple technique for ensuring that consumers of events unsubscribe their event handlers without the need for weak events.
Tech
Sparklines are described by their inventor, Edward Tufte, as "data-intense, design-simple, word-sized graphics".
Tech
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.
Tech
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.
Tech
Today, Philipp Sumi and I and are proud to announce the release of SLF - the Simple Logging Facade.
Tech
Microsoft have recently submitted US patent application 20090282325, entitled Sparklines in the Grid.
Tech
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 ... !
Tech
Today's blog post is a couple of very simple utility methods that I have found myself using again and again ...
Tech
This blog post describes a technique for specifying WPF / Silverlight Dependency Properties declaritively via attributes
Tech
The construction of a ViewModel is often seen as the standard technique for solving binding problems within WPF and Silverlight.
Tech
Yesterday myself and Gary Scott (our MD) went down to London for the Silverlight 3 UK launch event.
Tech
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.
Tech
A brief article on the launch of Silverlight 3 and why the interest in Silverlight is eclipsing that of WPF.
Tech
This blog posts describes a technique for associating multiple bindings with a single dependency property within Silverlight applications.
Tech
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.
Tech
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.
Tech
With Silverlight, Panels do not clip their contents by default.
Tech
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.
Tech
I have just finished a new article on CodeProject - Generate WPF and Silverlight Dependency Properties using T4 Templates
Tech
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.
Tech
This post demonstrates a technique for binding a Silverlight DataGrid to dynamic data, the structure of which is not know at compile-time ...
Tech
An oddness in default behaviour that can throw those new to Flex Charting is that segments in charts that should correspond to a data point are missing.
Tech
This blog details a technique for generating Silverlight dependency properties from an XML file via a T4 template.
Tech
The number of frustrating decisions in Flex's charting API is minimal, but high up on my list is a strange decision that prevents developers from accessing information that is frequently desirable for custom data tips in stacked area, bar and column charts.
Tech
Silverlight is moving fast. Really fast.
Tech
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.
Tech
The ability to allow a user to save a Flex chart, or in fact any Flex UI component, as an image has popped up on my radar several times over the last few years.
Tech
In my previous post I demonstrated how an the WPF ElementName style binding can be emulated with Silverlight via an attached behaviour.
Tech
As a relative newcomer to Silverlight I was happily greeted by the warm feeling of familiarity when I started developing.
Tech
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.
Tech
This blog post describes how to add a location crosshair to your Silverlight charts.
Tech
Over the weekend Sacha published a new article on codeproject, Total View Validation (does Sacha ever sleep?).
Tech
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.
Tech
I have answered a few forum posts about the WPF transforms recently, mostly regarding confusion between RenderTransform and LayoutTransform.
Tech
The WPF DataGrid is a very flexible tool, however in its current state certain simple tasks can prove to be rather tricky.
Tech
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.
Tech
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.