Scott Logic
This blog shares Scott Logic's thoughts and ideas, covering topics across Tech, UX Design, Testing and Delivery.
AI / MLSoftware / engineering practiceEngineering management / careersTesting / QA
- Posts
- 1,200 from 25 Feb 2013 to 19 Oct 2026
- Posting
- weekly (72 in the last year)
- Kind
- company blog
- Feed
- https://blog.scottlogic.com/atom.xml
2026 56
- An honest review of Matt Pocock's Skills framework
- Proactive messaging, reactions, and compute pooling with Microsoft Foundry hosted agents
- NoJS 4 - Pure CSS hackery with AI
- Start at the beginning: how to get the most out of discovery and alpha
- Building the business case for agentic software development
- AI didn't make me a better marketer... It gave me more time to be one
- MCP Apps: Your UI, Their Chat
- Why agentic AI starts with legacy modernisation
- Want to use AI agents safely? Start with design
- How to take incremental steps towards data democratisation
- AI success depends on data foundations
- Unlocking your data: the value is in collaboration
- Agile Leadership
- How to accelerate agentic adoption
- Confidence Techniques for Guiding AI Migration
- Four pillars of agentic AI success
- Shifting readiness left: What AI can (and can't) do for organisational readiness
- The Rise of Open Weights; And the fall of commercial AI?
- Choosing the right tool safety approach for coding agents
- Adopting Agentic: Talks and Reflections from Our AI Engineering Event
- GLM-5.2: Considerations for enterprise teams starting out with open-weight models
- Auditable Agentic Orchestration: From Autonomous Systems to Governed Execution
- Agentrification and the Agentrification Index
- Sustainable acceleration and the Agentic Software Development Life Cycle
- Working Effectively with Claude Code
- Ponytail? YAGNI!
- What a good transformation looks like
- Rethinking 'Transformation': From projects to long-term capability
- Ruby on Rails - A Developer’s Perspective
- Finding Your Voice: A Guide to Technical Communication
- The Human Bottleneck
- Alternative Coding Agents: Pi
- Data Engineering on a Budget
- Open Source Is Not One-Size-Fits-All — Find Your Fit
- From AI Slop to AI Empowerment: Raising the Bar for Open-Source Contribution
- Beyond the Hype: Is AI taking the fun out of software development?
- If AI Writes the Code, Who Builds the Next Open Source Project?
- Beyond the Hype: Vibe coding – Is this really how we’ll build software?
- NoJS 3 - The dawn of Flappy Bird. Making a Flappy Bird clone using pure HTML and CSS, no JavaScript
- Microsoft Agent Framework - powering up your agentic teammate
- Analysis → Implementation → Reflection – a practical technique for issue resolution with agentic AI
- Software Engineering in the Agentic AI Era
- Things to expect when starting to work with Copilot
- Diving into Retro Computing with the Amstrad PCW 8256
- Functional Optics for Modern Java - Part 6
- Functional Optics for Modern Java - Part 5
- Detective Adventures - on debugging UI issues
- Functional Optics for Modern Java - Part 4
- Introduction to Energy Trading for Novices
- Functional Optics for Modern Java - Part 3
- What I’ve learned over 3 years of writing code
- Refining the retrospective
- Functional Optics for Modern Java - Part 2
- Exploring Google Gemini's video analysis
- Functional Optics for Modern Java - Part 1
- Options appraisal: a pragmatic guide for architecture decisions
2025 103
- The power of agentic loops - implementing flexbox layout in 3 hours
- My AI Colleague: Claude, the good, the bad, the UglAI
- Token Prism
- The Specification Renaissance? Skills and Mindset for Spec-Driven Development
- Beyond the Hype: Will sustainable AI ever be a reality?
- Building JARVIS Properly - Phase 6: Vision Awakens (The Power of Protocol)
- Longevity without lock-in: the open-source upgrade alternative
- Evaluating Answers with Large Language Models: How InferESG and RAGAS Helped
- Putting Spec Kit Through Its Paces: Radical Idea or Reinvented Waterfall?
- Building JARVIS Properly - Phase 5: From Ultron's Ruins to JARVIS's Foundation
- How Do We Effectively Communicate Architecture?
- Testers, testing and the future: A Bifurcation into Testing AI and AI-powered Testing.
- Sustainability in AI - why we must listen to the smaller players
- Balancing AI Innovation and Sustainability: Our presentation at HM Treasury ID25
- Introducing the Latest Version of the Tech Carbon Estimator
- Artificial Intelligence (AI) in Mental Health Services: Will AI Burn Us or Warm Us?
- Beyond Benchmarks: Testing Open-Source LLMs in Multi-Agent Workflows
- Mapping the carbon footprint of digital content
- Accelerating Financial Process Automation: Scott Logic’s Contribution to the FINOS Fluxnova Initiative
- Beyond the Hype: Is Agile now a dirty word?
- Rapid web app development with Devin - A Developer’s Perspective
- Beyond Compliance: How Sustainable Technology Creates Value
- Delegating the Grunt Work: AI Agents for UI Test Development
- Using proxy object for state management
- Intro to Masonry Layout
- Greener AI - what matters, what helps, and what we still do not know
- Rethinking MVPs: Learning Tool or Delivery Strategy?
- Leveraging Copilot to rapidly refactor test automation
- Reading The Gentle Singularity Through a Sustainability Lens
- Building An AI-Agnostic Conversation Logger - Phase 4: Mini-Me
- Solving Data Consistency in Distributed Systems with the Transactional Outbox
- Introducing AI-related emissions into the Technology Carbon Standard
- Why a holistic approach is the key to a successful legacy modernisation project
- How to deliver social value? Think small.
- Making Sense of CSS Length Units
- Learning Through Doing: From one language to another
- Is AI Taking Over Testing? Here’s Why Human Insight Still Matters
- Making Visual Comparison Test Maintenance Easier with GitHub Actions
- Developing a Custom Query Language with ANTLR and Elasticsearch
- Channels for effective software team communication in messaging tools
- Avoiding chaos when testers change hands
- Why you should rethink legacy and consider Event-Driven Architecture
- Commercial product selection reflections
- Motivation Matters: Rethinking AI’s Role in Human-Centred Workplaces
- How to avoid ‘cultural rework’ on a legacy modernisation project
- Lessons under construction: My first client project
- Testing an Event Ingestion Service: A Deep Dive into Our Approach
- Extracting Data From AI Models - Phase 3: A Tale of Three Approaches
- Legacy Systems: Beyond the Modernisation Hype
- Visualising the Trade Lifecycle - Phase 2: Refactoring with Cursor IDE
- Visualising the Trade Lifecycle - Phase 1: Building a React SPA with Multiple AIs
- Making Digital Emissions Data Work Better: How We Built the Technology Carbon Standard Schema
- My Experience with the Scott Logic Graduate Training
- Agile-powered empowerment
- GenAI sustainability: a review of the 2025 numbers
- Beyond the Hype: Will Low-Code and No-Code be disrupted or powered up by AI?
- Embracing my Neurodivergent Journey
- From Diligence to Exit: The Critical Role of Data in PE Investments
- How is de-risking a legacy modernisation project different?
- Want to deliver value? Focus on flow
- Why We Still Need Pride: A Celebration and a Protest
- Testing in Production
- What is a Data Lakehouse?
- A proven approach to legacy modernisation that delivers early value
- Beyond the Hype: Event-Driven Architecture – The only data integration approach you need?
- Enterprise AI Architecture Deployment Patterns
- More than drawing rainbows
- Advice on transitioning from a legacy API
- Read the books! Should junior developers use LLMs?
- What Every Consultant Should Reflect on Between Engagements
- The Feature Fallacy
- Bridging the AI Valley of Doubt
- Tools for measuring Cloud Carbon Emissions (updated for 2025)
- An SBOM primer with some practical insights
- Are we sleepwalking into AI-driven societal challenges?
- Beyond the Hype: Does innovation have to come at the expense of ethics?
- Learning to Code Again: Adopting AI Developer Tools
- Recursion, Thunks and Trampolines with Java and Scala
- What is Architecture?
- The problem(s) with image accessibility
- Beyond the Hype: Should fully autonomous AI agents be developed?
- Higher Kinded Types with Java and Scala
- Tiny Computer, Big Headache - Porting Advent of Code to the Pi Pico
- InferESG: Finding the Right Architecture for AI-Powered ESG Analysis
- Making Sense of the AI Developer Tools Ecosystem
- Functors and Monads with Java and Scala
- pytest with Requests: A useful automation alternative to Postman in a Python world
- InferESG: Augmenting ESG Analysis with Generative AI
- Insights on AI Sustainability at Data Centre World 2025
- Beyond the Hype: Is architecture for AI even necessary?
- Imposter Syndrome: A Workplace Responsibility, Not an Individual Burden
- LLMs Don’t Know What They Don’t Know—And That’s a Problem
- Intersection and Union types with Java and Scala
- AI’s Biggest Flaw? The Blinking Cursor Problem
- There is more than one way to do GenAI
- Variance in Generics, Phantom and Existential types with Java and Scala
- Playwright Visual Testing; How Should Things Look?
- Beyond the Hype: Are enterprise browsers just about security?
- How Business Operations and Software Testing Overlap
- Beyond the Hype: Technology Strategies – Essential roadmaps or just hype?
- The UK’s AI Opportunities Action Plan – somewhat quiet on risks
- Algebraic Data Types and Pattern Matching with Java
- Developing vAirify for the ECMWF
2024 99
- Using JSpecify 1.0 to Tame Nulls in Java
- LLMs vs Advent of Code, AI is winning
- Our Approach to Software Development
- Building an Assignment Algorithm - Episode 3 / 3
- What I learnt about software development from the RAF
- Building an Assignment Algorithm - Episode 2 / 3
- Testing GenerativeAI Chatbot Models
- An Introduction into Karate Test Automation
- Our Approach to Testing
- Building an Assignment Algorithm - Episode 1 / 3
- Our Approach to Delivery
- Sustainability in Agile: How Scrum Roles Can Drive Greener Practices
- Into The Multi-cloud
- A round of applause: semantically releasing the clapper component
- Our Approach to Architecture
- OSFF NYC - Making GenAI a Tool for Everyone
- Elevate Your Accessibility Testing - 10 Key Steps and 5 Inclusive Strategies to help you raise your game
- FinJS - GenAI from Prototype to Production
- Terraform VS CDK
- Key takeaways from the Green IO Conference London 2024
- Introducing FINOS Common Cloud Controls (CCC)
- Performance testing - the often overlooked ingredient in web application success
- Evolving with AI from Traditional Testing to Model Evaluation I
- Introducing Our Technology Carbon Estimator
- LLMs don't 'hallucinate'
- Detecting AI-written code: lessons on the importance of data quality
- AI in Government – Addressing bias in AI-assisted services
- AI in Government – Balancing productivity gains with accountability
- AI in Government – the central role of data
- Carbon Emissions of End-User Devices: Part Two - Power Profiling
- Beyond the Hype: Is observability just the new name for system monitoring?
- AI in Government – from prototype to production
- If agile is the answer, what is the question?
- Mobiumata
- Jest in AWS CodeBuild: feeling ignored
- Beyond Automation: Unveiling the True Essence of BDD
- Will Generative AI Implode and Become More Sustainable?
- Investigating Code Quality from PR Data
- In conversation with AI - when Prompt Engineering meets Linguistics
- OSFF London - Making GenAI a Tool for Everyone
- Supply chain security in NPM - we can be optimistic about the future
- Beyond the Hype: Will we ever be able to secure GenAI?
- Monzo Stand-in, a smarter approach to DORA and Operational Resilience
- Story points are pointless
- Building a Multi Agent Chatbot Without LangChain
- Using Cloud Carbon Footprint to estimate On-Premise emissions
- Why we should care about process
- We need bold and better GovTech – not ‘Big IT’
- Beyond the Hype: Can we do better than 'carbon aware' computing?
- Pride 2024: Pride is a verb, not just a noun
- A Software Developer's Perspective on the European Accessibility Act
- Embracing Diversity and Inclusion at Workplaces
- Can LLMs spot accessibility issues?
- Bun - A fast-rising star?
- Could cars help predict the weather?
- NoJS 2 - Stochastic Boogaloo. Making a tic-tac-toe game with 'randomness' using pure HTML and CSS. Without JavaScript!
- Navigating Knowledge Graphs - Creating Cypher Queries with LLMs
- LangGraph - cycling through multi-agent LLM applications
- Beyond the Hype: UK GOV AI – Is innovation guided by principles enough?
- Securing a public AWS load-balanced server without your own domain
- Measuring energy consumption in the cloud
- Knowledge Graphs - What Are They?
- Measuring Energy use of Android Devices
- Are we ready to put AI in the hands of business users?
- Async APIs - don't confuse your events, commands and state
- Apache Spark - What does going from 2.4 to 3.5 get you?
- Monitoring AWS CodeBuild Build Status
- Beyond the Hype: Are Data Mesh and Data Fabric just Marchitecture?
- Is Agile always the answer?
- How Can CxOs Spot Technology Greenwashing?
- The Changing World in Life, IT, Software Testing and Artificial Intelligence
- Carbon Hack 24: Leveraging the Impact Framework to Estimate the Carbon Cost of Cloud Storage
- How to make ChatGPT do anything you want
- Carbon Emissions of End-User Devices: Part One - SWD Method
- Will It Automate? Accessibility Testing
- Ecosystems over user experience: redefining priorities in financial services
- Generating D3 code with LLMs
- Cloud Business Intelligence: A Comparative Analysis of Power BI, QuickSight, and Tableau
- Designing for Neurodiversity
- Insights from the Government Digital Sustainability Alliance (GDSA) 2024 Summit
- Reflecting on the 2024 Public Sector Innovation Conference
- How Open Banking is reshaping the sector
- Technology Carbon Standard Update - 15th March 2024
- Kanban - Not The Lazy Option
- Something in the Wind: Weather Forecasting in the Age of AI
- Technology Carbon Standard update
- How the tables turned – My life with Spy Logic
- Beyond the Hype: Can technology sustainability really make a difference?
- Announcing the (proposed) Technology Carbon Standard
- Why you should care about Open Banking if you are in the US
- The art of SEO and optimising your voice in a crowded market
- Reflections from UKGovCamp XL
- Beyond the Hype: Was the threat the CRA seemed to pose to open source just hype?
- Prompt engineering with spreadsheets
- Fast.ai Study Group
- What can I do as a Software Developer to help with the climate crisis?
- Never a waste: How missteps can lead us to meaningful change
- The basics of the Layered Neural Network
- A Journey into Wasm
2023 94
- Conscientious Computing - Podcasts: What we are listening to right now!
- If software development were a race, AI wins every time
- Implementing cost-effective Test-Driven Development in an LLM application
- Our prompt injection playground has gone open source!
- DiffEdit: Editing Images using Generative AI
- Conscientious Computing - Accurately measuring the energy consumption of hardware
- Seeing the Forest for the Trees
- LLM finetuning memory requirements
- Conscientious Cloud – Pick Your Cloud Location Consciously
- What capabilities do you actually need to deploy AI in your organisation?
- Balancing Act: Financial Organisations and the Constraints on Open Source Community Engagement
- Maybe you're a Tester
- Using the T-Test for Effective Testing of Nondeterministic AI Systems
- OpenAI Outage November 2023
- Bridging the Gap: The Dance Between Humans and Technology in the AI Epoch
- A quick tour of data distribution technologies
- Testing LLM-Based Applications: Strategy and Challenges
- How To Convince LangChain To Use The Correct Tool
- The Sustainable Computing Ecosystem
- Understand your data requirements
- Testing with Intent: a Technical View
- Testing with Intent: a Path to Embedded Accessibility
- Working in a blameless culture
- Spy Logic
- Elevating Software - The Indispensable Role of UX
- Mitigating prompt injections on Generative AI systems
- Getting ready for AI in government: a guide for data-literate leaders
- Conscientious Computing - facing into big tech challenges
- B-ing a force for good
- Building Scottbot: an AI Chatbot for Scott Logic
- How AI can improve your processes – without actually using it
- Tools for measuring Cloud Carbon Emissions
- The State of WebAssembly 2023
- OSFF NYC - Destination AI: Navigating the Narrow Path Between Opportunity and Risk
- The hybrids are coming: A survival guide
- How I Reduced My App's Network Usage by 95%
- Being honest about Embodied Carbon from Software Development
- Architecting a regenerative future: Thoughts from INTERSECTION23
- Accessibility tooling: WAVE vs aXe
- Navigating the Practical Challenges Faced by Test Engineers
- LF Europe Summit Journal - Day Three
- LF Europe Summit Journal - Day Two
- LF Europe Summit Journal - Day One
- Optimizing Test Suite Metrics Logging in Jest Using `metricsCollector`
- What are JWTs/Jots/JSON Web Tokens?
- Dynamically Skipping Tests within Jest
- Enhancing Jest snapshot testing to performance test your application
- A guide to Software Sustainability terminology
- The Power of a Well Written User Story - A Test Engineer's Perspective
- Beyond the Hype: DevSecOps, a portmanteau too far?
- You only have to come out once… right?
- Celebrating Failure?
- How to Make Your Own Search Engine: Semantic Search With LLM Embeddings
- Mental Models and the User Experience
- Beyond the Hype: WebAssembly – from the browser to beyond
- An Introduction to TanStack Table
- How we de-risked a GenAI chatbot
- Work Experience Takeover: What I learned about getting into a tech career
- Seven Things I Wish I Knew When I Started as a Software Developer
- Environmental Impact – The supplier problem
- Accessibility Considerations in the Software Development Process
- Pixel Pioneers UI/UX Conference 2023
- Reset Connect Conference 2023
- GPT3: How do you get creativity from determinism?
- Making Digital Products Accessible
- Hands-on example of ChatGPT as a programming tool
- My Top Ten Tips for Peer Review
- Using the very app we created – Graduate Project 2023
- JSNation conference 2023
- Making our contribution to FDC3 2.0
- How AI may impact software architecture
- What Pride and allyship mean to me
- A guide to Generative AI terminology
- Deep Dive into RabbitMQ with Spring Boot - Part 2
- Deep Dive into RabbitMQ with Spring Boot - Part 1
- The Product Owner Role
- Generative AI Solution Architecture for Complex Enterprises
- Re-implementing LangChain in 100 lines of code
- Beyond the Hype: Is generative AI coming for programming jobs?
- Catching up with OpenAI
- Beyond the Hype: Y2Q – The end of encryption as we know it?
- AI is morphing from tool to platform (and the next technology epoch begins)
- I’m no longer a Tester, I’m a Checker. Or am I?
- RxJS Unit Testing
- Migrating from Xamarin Forms to .NET MAUI
- Beyond the Hype: Quantum Computing – hype and not hype simultaneously?
- Testing Spring Boot With Testcontainers
- Could the Public Sector Solve the OSS Sustainability Challenges?
- Beyond the Hype: ChatGPT and why it has set the internet alight
- WebView2, Electron challengers, and (slightly) lighter desktop web applications
- Why rapid collaboration needs careful preparation
- DevTernity conference 2022
- How data literacy gives leaders the edge
- Five books every developer should read
2022 56
- Beyond the Hype: Blockchain is dead, long live blockchain
- What makes for a Most Loved Workplace?
- Building a Rust-y Vim clutch with the Raspberry Pi 2040
- An introduction to Markdown
- Rules help you go faster
- The Career Canvas
- Why you should get the right people in the room from the start
- ActivityPub - the open standard that makes Mastodon special
- Diagnosing Slow Performance in a Microservice Pipeline
- An EDGY approach to designing Enterprises
- Beyond the Hype: Is the Metaverse built on foundations of hype?
- How to avoid the meeting vortex
- The State of Open Source in Finance - Keynote Panel
- Can Web3 beat public cloud?
- When should we automate?
- Evaluating Workflow Technology
- How data has improved the amateur runner
- UI vs UX Design
- Contributing to open source - taking the dive
- Observations on finding good first issues
- WeAreDevelopers World Congress - The good, the bad, and the not-so-ugly
- Beyond the Hype: Most-loved language – does Rust justify the hype?
- Putting your machine data to use with Splunk
- Beyond the Hype - Investing in Innovation and avoiding the Hype in Digital Government
- Battling the 5S's at the Data+AI summit
- The Queer History of Technology
- The State of WebAssembly 2022
- Pride 2022: Remember. Resist. Rise Up
- Beyond the Hype - Behaviour Driven Development, Hype? Or just misunderstood?
- Passwordle: Musings on password strength
- Binary Trees 101
- Beyond the Hype - Is multi-cloud a myth?
- Insights for Test Engineers from Scott Logic’s Grad Summit 2022
- Building a WebAssembly-powered serverless platform
- Cloud sustainability - Could using the cloud help your organisation reach net zero?
- Web UI development in Rust
- The History of Encryption
- Beyond the Hype - Do you actually need a microfrontend?
- Reviving Google's lost fluid engine
- The Dependencies' Reckoning - Considerations when selecting third-party software
- Panel: Break the bias (IWD2022)
- Beyond the Hype - Microservices: are they the only architecture you need?
- Beyond the Hype - Coming soon from Scott Logic
- Article recommendations and increasing engagement with OpenAI GPT-3 Embeddings
- Building bridges, reflections on Scott Logic's Grad Week
- Reminiscence of a Scrum Master (Part 5)
- Disguising Podman as Docker Desktop on Windows
- Sustainability in Software
- NE:Tech - GitHub Copilot - Life with an AI-powered pair programmer
- Resilient systems and experimentation
- AI: Lessons from neuroscience
- Reminiscence of a Scrum Master (Part 4)
- NoJS - Creating a calculator with only pure HTML and CSS. No Javascript!
- Let's create a New Normal for leadership
- Managing Knowledge with the Zettelkasten Method
- A more inclusive future. Together.
2021 78
- Delivering Digital Transformation with the Scottish Government
- Open Source Sustainability through Corporate Social Responsibility
- Reminiscence of a Scrum Master (Part 3)
- Performance Testing with JMeter
- Creating personalised data stories with GPT-3
- Low Latency Java with the Disruptor
- Reminiscence of a Scrum Master (Part 2)
- Visualising API response with Postman
- Tips for a connected workforce in a remote world
- Removing the opportunity for confrontations in Code Reviews
- Prepping the Bar: Insights from cleaning and labelling a cocktail dataset
- GPT3 - Creativity from determinism
- Learning Resources for Rust
- On finding purpose, nurturing talent and building a sustainable future
- Enabling the Government Data Strategy
- Open source in financial services, bridging the contribution gap
- Reminiscence of a Scrum Master (Part 1)
- OSSF London 2021
- Efficiently loading massive D3 datasets using Apache Arrow
- Open Source Sustainability through Corporate Social Responsibility
- How VPCs help with security and compliance on your AWS networks
- Using TypeScript to Express Intent
- OSFF London - Open Source Sustainability and Our Corporate Social Responsibility
- Capitalism, Socialism, and Code Ownership
- Inclusive Design: How diversity is the key to building better technology
- The Computer Skills of Average Joe
- An introduction to resiliency in the cloud
- Cultivating Empathy
- How the OpenAI Codex JavaScript Sandbox works
- Covid-19 and the Internet
- Exploring 120 years of timezones
- How to write a custom ESLint rule
- A primer on the OpenAI API - Part 3
- A primer on the OpenAI API - Part 2
- A primer on the OpenAI API - Part 1
- Is there a need for speed in the Cloud?
- Copilot - Life with an AI-powered programming pair
- Better React Components with TypeScript Union Types
- UX Migration Strategy for Legacy Applications
- GitHub Copilot Experiences - a glimpse of an AI-assisted future
- Getting the most out of TypeScript - Union Types
- TypeScript: Interfaces or Types. What’s the Difference?
- The State of WebAssembly 2021
- Data Fetching in Redux Made Easy With RTK Query
- Panel: Digital Identity in Government
- Open Finance: Built it and they will come?
- Digital Government: Looking back, and looking forward
- Pride 2021: We’ve come a long way, baby... but we’re not there yet.
- What actually is a Data Mesh? And is it really a thing?
- Is Officeless to business agility what Serverless is to compute agility?
- Rob Smith Looks up from Lockdown
- How the New Normal is taking shape
- C++ for Java Programmers - Losing the Fear
- Starting out... remotely
- Blob, the Builder - A Step by Step Guide to SwiftUI Animation
- How to build mental health resilience
- NatWest Group's Wendy Redshaw Looks Up From Lockdown
- Panel: Open Energy - Lessons from Open banking
- The Inside Track: Six steps to Graduate Programme success
- The Inside Track: How established talent is recruited by Scott Logic
- Digital Identity in UK Government
- Data Mesh: What's different about it, what it means to DWP, and how you might approach it yourselves
- Setting up a multi-platform SwiftUI project
- Sustaining an Agile approach to platform development at Scottish Government
- Developing an API strategy
- Building modern Web APIs
- A fresh look at taking control of legacy
- Open APIs – compliance or opportunity
- APIs: Making GaaP a reality
- How to build mental health resilience
- You probably don’t need a micro-frontend
- Flutter: Just another mobile UI framework?
- On the importance of a Team Manifesto
- Panel: APIs as a value generator
- Banking on power for NetZero emissions
- The Philosophy of Svelte
- From Open Banking to Open Finance
- What happens if you await a Promise twice?
2020 114
- Alteryxing The Advent of Code 2020 - Week 4
- What the financial crash can teach us about open source
- Alteryxing The Advent of Code 2020 - Week 3
- Sense and Sustainability
- What the financial crash can teach us about open source?
- Alteryxing The Advent of Code 2020 - Week 2
- Finite State Machines: The Developer's Bug Spray
- On OpenFin and Interoperability
- Alteryxing The Advent of Code 2020 - Week 1
- Remote possibilities
- The Good, The Bad and the Easy?
- In-browser transcoding of video files with FFmpeg and WebAssembly
- The No-Excuses Guide to Innovation with APIs
- I spent 2 weeks making Narration.studio to save an hour writing this post
- Fixing the d3-zoom API... for my use-case
- Van Halen's rider and how it can help improve software development
- The oft-untapped business potential of APIs
- Down the ergonomic keyboard rabbit hole
- Weird Flex, but OK; Interactive Charts with Flexbox
- Let's Build Snake with Rust
- Bug Bashes
- Let machines talk to machines
- Better Redux Reducers with TypeScript Builders
- White Paper: Open your eyes to APIs
- Power Moves
- Seeing the road ahead — Catseyes and iterative design
- To quantum computing and beyond!
- Vue Components
- To Rival React: an OverVue
- TypeScript Builders: Improving your types one step at a time
- Open your eyes to APIs
- COVID - An emerging normal
- Realising the most value from legacy applications using desktop containers
- Deconstructing Dynamo
- Variable scopes in Postman
- Automating API tests with the power of Postman API
- Create, Test, Integrate and Deploy a React App in under 10 minutes!
- Code generating a WebAssembly 6502 emulator from specifications
- Microservices for Life
- The Energy Transition
- Think workflow, not app
- White Paper: Building an integrated desktop application ecosystem
- Building desktop applications with Finsemble
- Produce data for test and development systems quickly and reliably
- Building desktop applications with Glue42
- How to deliver a difficult message
- Svelte and TypeScript - Together at last!
- Web app or desktop app? Considering user needs in technical discussions
- 7 tips for transforming testing
- How to deliver a difficult message?
- Configuring Java applications at runtime with Spring Profiles
- Building desktop applications with OpenFin
- There's console.more where that came from! Make greater use of console in JS
- Big Data and the Testing Challenge
- The 6 Most Common Accessibility Problems (and How to Fix Them)
- How to assess a developers technical ability: A guide for interviewers
- Automated design handover - Why Zeplin can't solve all your problems
- The new normal for your desktop
- A gentle introduction to WebAssembly
- Demystifying Open Banking
- The future is not what it used to be.
- K-19 or How to not run a team
- Specs-travaganza!
- Creating a Cubic Spline in Python and Alteryx
- Beyond COVID
- Solving Matt Parker's Coin Puzzle in Alteryx
- Rendering One Million Datapoints with D3 and WebGL
- Demystifying React Redux
- Cross-window async iterators using Comlink
- Getting Started With Pulumi
- Not loving lockdown
- Which WebGL drawing call should I use?
- Spring Autowiring - It's a kind of magic - Part 2
- How to Connect Power BI with Azure DevOps and JIRA
- And Now For Something Completely Different: Creating A Social Environment Under Lockdown
- Testing in the DevOps World: Creating Continuous Testing
- Optimise your Micro:Bit code with Chrome DevTools
- Rendering charts with OffscreenCanvas
- Investigating Multi-Window Browser Applications
- White Paper: Think Small to Deliver Big
- How to Write a Ray Tracer Intuitively
- International Women’s Day 2020
- 3D Rendering on a Children's Toy
- Agile Progress and Quality Reporting
- Is Aeron a Good Choice for a Messaging Solution
- Fostering a DevOps culture
- Spring Autowiring - It's a kind of magic - Part 1
- GitHub is a free CI/CD/Hosting solution
- Slow Code HATES him! Optimising a web app from 1 to 60fps
- Technical agility vs. business agility
- 8 Out of 10 QATs Said They Prefer Cypress.
- Sprint Goals!
- Embrace your Obsessions!
- Continuous Testing – Creating a testable CI/CD pipeline.
- Exploring SwiftUI 4: Creating a Redux Library Supporting Data binding
- A Beginner's Guide to Automated API Testing (Postman/Newman)
- Adding Playwright to create-react-app generated projects
- TypeScript Pick 'n Mix
- Exploring SwiftUI 3: View Hierarchies and State Updates
- OK Google, what do you see? - Labelling images in Google Cloud
- When Automated Tests Fail...
- Adding Puppeteer to create-react-app generated projects
- A Beginner's Guide to Terraform and Serverless
- Planning 56 sprints per second with SAT4J
- Analysing and improving the performance of a D3FC-WebGL chart
- Mapping the cloud atlas
- Selenium vs Puppeteer: testing the testing tools
- Git rebasing: What is it and how can you use it?
- Creating a chart with D3FC and WebGL
- What the art of Improv can teach us about the craft of software
- Source control: The fundamental concepts
- Exploring SwiftUI Part 2: State management inspired by React
- A WebAssembly Powered Augmented Reality Sudoku Solver
- Rethinking the Java DTO
2019 118
- Sustainability in Software Development
- WebAssembly 2019 Year In Review
- When is the right time to commit or use a branch?
- Building performant large scale web applications
- Regular Expressions As Icebergs
- Edinburgh Open Source Meetup - Why I 🖤 open source
- Edinburgh Open Source in Fintech Event Series – Dec 2019
- Debunking Cloud Myths
- Source control: The basics
- Exploring SwiftUI Part 1 - A brief history of Apple UI development and Initial impressions
- Unit Test Your Architecture with ArchUnit
- Pros, Cons, Tips and Tricks when using Prettier in a large codebase
- Switching in Swift
- Generating SVG and PDF reports from Elasticsearch
- Email Digests with Elasticsearch via a Serverless Architecture
- Drawing Area Polygons with WebGL
- WebAssembly on the Blockchain and JavaScript Smart Contracts
- Now we're hooking: Redux catches on
- Building Microservices with Spring Boot - Part 2
- Why I'm talking to developers about Exploratory Testing
- Drawing Lines with WebGL
- Has your project hit the buffers?
- Creating A Quick Python AWS Lambda Using Visual Studio Online
- (Didn't) Nail Polish
- Building Microservices with Spring Boot - Part 1
- IR35 hits now: Don’t wait until April to act
- Popout Windows in React
- JVM numeric types - Integer types
- How we ran our first Design Sprint
- On the dangers of sending your testers to conferences
- Sculpting Shapes with a WebGL Fragment Shader
- .NET for Apache Spark
- Visual Studio Remotes: Simplifying developer environments
- How to Make 3D Charts for the Web Using D3 and X3DOM
- Agile Is Not a Solved Problem
- Designing with accessibility in mind
- Introducing: React Hooks for OpenFin
- SwiftUI: A new player in UI frameworks
- From university to industry – a small step or a giant leap?
- Test-driving tech consultancy as a career option
- X3D: Declarative 3D for the Modern Web
- “Keep getting better, because there’s no limit” – Grad Week 2019
- Entering the world of technology as a mathematician
- Working hard and playing hard: that’s a career in tech
- My three-year journey from grad to Senior Developer
- Looking At You - 2019 Edinburgh Intern Project
- An internship with friendly people who want you to do well
- Delta requests for frequently-updated application bundles: from 2002 to service workers
- Clear communication: the key to a career in tech
- Reactive Android
- Why we celebrated Pride Month at Scott Logic
- From Monolith to Serverless on AWS
- What Type of Tester are You?
- Testing WebSockets for beginners
- UX Scotland 2019
- Why Java Developers Should Learn C++
- What it’s like working in software development
- Swift: The Beautiful Language
- Elasticsearch - clustering on AWS with optional auto-scaling
- Consistency is key...But should it be?
- Faster Fractals with Multi-Threaded WebAssembly
- Getting To Grips With Spring Boot
- Thinking out loud
- Be inspired by Scott Logic
- Getting started with Amazon Web Services (AWS)
- Demystifying test automation
- Women of Silicon Roundabout
- What Brexit Can Teach Us About Software Development
- Adding a WebAssembly component to a React App
- Android in Style
- React vs Vue
- Hola vs Hello World
- Drawing 2D charts with WebGL
- Analysing multi-window Electron application performance using Chromium tracing
- Build your own WebAssembly Compiler
- Building a more flexible D3 chart
- Natural Language Processing in Cloud
- AWS Summit London
- By the Hook: A Practical Introduction to React Hooks
- Building a better D3 axis
- We’ve heard of clean code, it’s time for Clean Design
- Building a Serverless Comments System
- BCSWomen Lovelace Colloquium 2019
- Ten Commandments of Agile
- How to train your XCTest
- Toppling the Giant: Kotlin vs. Java
- Build Your Own WebAssembly Compiler - London Node User Group - April 2019
- FinTech Design Summit 2019: Designing for emotions and raising financial literacy
- Domain modelling and persistence with EF Core - Part 2
- Cross-Platform Design: A look at Challenger Bank Mobile Applications
- Perspective Plugin API - How to build a new plugin
- White Paper: Thinking differently - the cloud as a value driver
- Building a Perspective plugin with d3fc
- Agile in the City: London - My top take-aways
- Domain modelling and persistence with EF Core - Part 1
- Reflections from Build IT Right
- Jumping from Javascript to Java. How hard can it be?
- Upcoming WebHID API - access Bluetooth/USB HID devices in web applications
- Attending Tech(K)now London 2019
- AWS Builders Day 2019
- White Paper: The Journey to DevOps
- How to integrate end-to-end tests in CircleCI?
- Service Design in Government 2019
- A Tester's story of adapting to the new world of pipelines - CI/CD
- Understanding Agility and Process Optimisation
- Securing access to Firebase Test Lab
- (Not) Only Tools And Sources. You need more than know-how and technology to succeed. “You know it makes sense!”
- How to create a continuous colour range legend using D3 and d3fc
- Encouraging women in the tech industry
- Tips for effective issue tracker usage
- Retroactively applying Prettier formatting changes to existing branches
- Maintaining global state in AWS Lambda functions with Async Hooks
- How Diversity and Inclusion can improve testing
- What's quality got to do with IT?
- 4 things I learned to love about Swift
- A tester's guide to agile transition
- The curious case of disappearing buses
- Introduction to contract testing
2018 116
- So, you heard about testing…
- Getting out of academia: Joining Scott Logic with a PhD
- Introducing decent-code: A concise guide to writing better code
- Tools, Bots and Automation for better Open Source Projects
- Bridging UI libraries for decoupled, long-lived, widely-reusable components
- About DOM render utilities
- A Developer's Intro to Android
- OpenFin Layouts added to StockFlux
- Big Data London 2018
- What did I learn studying for AWS Solution Architect Associate Certification
- Default values in code and configuration
- Realtime crypto charting with JPM Perspective and d3fc
- Starting as a Graduate Developer at Scott Logic
- UX Poland 2018
- What to do when some of the team you’re working with aren’t as technically adept as you
- 7 Reasons I ❤️ Open Source
- A Developer's intro to TensorFlow and Keras
- Exploring Kubernetes on Google Cloud Platform
- Automating Terraform: Infrastructure as Code as a Service
- Ruining React's Performance with Redux
- Living in an accessible world
- Serverless Rust with AWS Lambda and WebAssembly
- Cutting development costs in AWS with Cloud Custodian
- Foyer Screen - 2018 Edinburgh Intern Project
- Infrastructure as Code - Getting Started with Terraform
- Date-Driven Delivery vs. Delivery-Driven Dates
- Thoughts from the Software Testing Conference North
- Building a Complex Financial Chart with D3 and d3fc
- Becoming a trusted adviser as a tester
- TensorFlow.js: Machine Learning in the Browser for Image Recognition
- My Internship at Scott Logic
- Finding your groove as they are (NOT) finding their shoes
- Good code practices with React and Redux
- The UX of Consent Models in Open Banking
- Is Test Driven Development Right for You?
- The Pitfalls of SIT
- Sharing our Experience - Migrating to Agile mid-Project
- Running VsTest with Cake
- Being a Technically Adept Scrum Master
- The future of WebAssembly - A look at upcoming features and proposals
- The £11k gas bill, customer satisfaction and improved interactions
- Achieving Cross Browser testing greatness
- Testers In A Pressure Cooker
- Comparing Apache Spark, Storm, Flink and Samza stream processing engines - Part 1
- Sketching tips to make you a better designer
- UX Scotland 2018
- How UX designers can help users protect their data
- Examples and definitions of the SOLID principles in Software Design
- The 3 types of minimum viable products
- Sleeping Lambdas and AWS Step Functions
- The pros and cons of Redux Form in managing a form state immutably
- We need to talk....
- Magical domain modelling with F#
- Avoiding, seeking, and solving source control conflicts
- Transpiling WebAssembly to support Multi Return Values
- Four Tips For Getting a Job Offer From a Careers Fair
- The Scaled Agile Framework – When it works, it works well. When it doesn’t work, it’s waterfall.
- The A word. The BAD A word.
- Website vulnerability scanning with ZAP
- DevOps as a key to success with the microservices approach
- Writing WebAssembly By Hand
- White Paper: The Web Assembles
- From the realms of the Katabasis
- Overlooked Aspects of Being a Tester
- A brief foray into the art (read: farce) of multitasking
- Comparing Apache Kafka, Amazon Kinesis, Microsoft Event Hubs and Google Pub/Sub
- BCSWomen Lovelace Colloquium 2018
- A hire standard
- QA, QA, who the funk are QA?
- How to use npx: the npm package runner
- Domain-Driven Design
- Test Bash Newbie Heads To Brighton
- When technology meets the arts
- Apache Spark - Performance
- Mock the Back-End with Node
- Agile Monsters
- Apache Spark - question everything
- Helping shape an effective DevOps Culture
- Machine Learning with TensorFlow
- An Organization's Journey to a DevOps Mindset and Culture
- Leadership Election with Apache Curator
- Testing: Confidence Engineering
- Evolving beyond the need for a sprint retrospective
- A week with prototyping tools
- Lean In, Speak Up, Shout Out
- International Women’s Day: Being a tester at Scott Logic
- Stock Watcher - Newcastle summer graduate project
- Guide: Don't Let Testing be a Bottleneck
- WebAssembly - and the Death of JavaScript?
- Incorporate security testing into exploratory testing
- Hunting typosquatters on npm
- Higher or Lower – ML in JS
- Deploying PR branches with Gitlab review apps and Elastic Beanstalk
- JavaScript Monorepos
- JavaScript Closure
- JVM Roundabout - Microservices
- Why Women Make Great Testers
- Testing with Cognitive Intelligence
- Generic Platforms - The Rule of Three
- How much does a story point cost?
- Machine Learning with Scikit Learn
- Interaction18
- Dealing with NPM shrinkwrap merges and conflicts
- (Multi-stage docker) in docker as CI Sledgehammer
- Three Steps to Improving Customer Experience Through Testing
- Another reason to use noopener - A deep dive into renderer process allocation
- How to use Java Optional correctly
- Rules and Values
- Looking At R
- Exploring Dynamic Programming
- Apache Storm Taster
- Evaluating Redux Saga Test Libraries
- Mapping currency strength changes with D3
- Soft Skills for Software Developer
- Playing with PostGIS
- Pros and cons of end to end testing tools
2017 78
- Difficult People
- White Paper: Optimising Data Lakes for Financial Services
- Introducing AWS Fargate
- Writing a CHIP-8 emulator with Rust and WebAssembly
- Newcastle Interns 2017: Desk Directory
- Developing Bristol Pound - An Open Source React Native App
- CodeMesh 2017
- First look at Polymer 3.0
- Agile Puzzle - Detailed planning and tracking in Agile
- Quick guide to webpack source map options
- Migrating D3 Force Layout to WebAssembly
- Serverless JavaScript
- Bugathon at Heriot-Watt University
- Exploring different approaches to building WebAssembly modules
- Using Kafka and Grafana to monitor meteorological conditions
- What's new in JUnit 5?
- An agile life in GDS projects
- Cassandra - Achieving high availability while maintaining consistency
- Mutation Testing - Who will test the tests themselves?
- How Big is a Story Point?
- Asynchronous Recursion with Callbacks, Promises and Async.
- Foyer Screen - 2017 Edinburgh Intern Project
- Scaling Agile in the Public Sector
- Thoughts on Jest Snapshots
- Chess data mining with Apache Spark and Lichess
- Team Building, Development, and Go-karting : My Induction Week at Scott Logic
- Adding WebDriver tests to create-react-app generated projects
- Creating a Market Profile Chart with D3
- Evolving the Agile Revolution
- Test meetups - could be your cup of tea!
- The Big Data technologies that saved BP $7bn
- Successful microservices architecture with the Twelve-Factor App
- cla-bot a GitHub bot for automating Contributor Licence Agreements
- Working with type: Sketch vs. Adobe Illustrator
- Change, Presented Two Ways
- A Continuous Change Culture
- Mapping UK place name endings (With command line cartography tools)
- Load testing Alteryx API with Gatling
- Towards a responsive desktop
- The ALF – Annual Summit 2017 and do Conferences really add value?
- Setting up a TypeScript Electron app in WebPack
- Does NPM 5 deprecate yarn?
- Creating a Parallel Particle Simulation in Go
- devtools@scale event
- Creating semantic components in Angular and React
- White-labelling using PostCSS path resolution
- gifbot - Building a GitHub App
- What it means to be Agile
- Insurance: A Customer's Perspective
- Developing a GitHub Bot with AWS Lambda
- Making agile teams more productive from the inside
- TypeScript compiler APIs revisited
- Help Your Testers Succeed in 8 Minutes
- Creating Simple Web Services in Go
- Interactive and Responsive Small Multiples with D3
- Working in a consultancy and working in-house – a view from the inside.
- Cassandra vs. MariaDB, Scaling
- Voxxed Days 2017: Learning from the best in tech
- React time travel: the store may not be enough
- #BeBoldForChange and beat the elephant in the room
- Keeping Secrets in Docker
- Cassandra vs. MariaDB
- Level-up your dependencies in React
- Visualising London Marathon Training Data From Strava
- Creating My First Web Application with Go
- StreamSets with Docker - an example HDFS integration
- Sharing styling specs with developers
- Initial impressions of Alteryx 11
- The Scott Logic Bugathon: what to expect
- The Rise of Big Data Streaming
- Visualising London Marathon Strava Data
- Our most popular Tech Blog posts of 2016
- Foreign Currency Trading Heuristic Testing Cheat Sheet
- Digital transformation: getting started and avoiding common pitfalls within the public sector
- Four tips for achieving successful UX workshops
- Efficient SVG layout with d3
- Consumer Driven Contracts using Pact
- Fiddler's Autoresponder to mock API Responses
2016 107
- Unaffordable Country In Apache Spark
- Semantic Versioning is not enough
- Once Upon A Time, There Was An App Store
- How are businesses using Big Data?
- A Journey Through Sound Synthesis with AudioKit
- Scottcoin, centralising the decentralised
- Using Rally to benchmark Elasticsearch queries
- Spring Boot and MongoDB - a perfect match!
- Testing is boring: How we can all help destroy the myth
- Digital transformation in partnership
- Deconstructing Test Bash with R - Twitter Mining and Sentiment Analysis
- Design, Data and Redux at Bristech
- The Hitchhiker's Guide to Redux
- Creating a Simple Particle Simulation with Go
- Test Bash Manchester 2016
- The ins and outs of Bitcoin
- White Paper: Unstoppable HTML5
- Let's have a conversation
- An Insight Into Our 2016 Intern Projects
- Learning to talk - Finding your voice and telling a story
- The Power of the Higher Order
- Highlights from the Inspire Europe Conference
- Creating a Pebble Watchface with JavaScript
- Why does no one agree on a definition of MVC?
- Software career? There is no such thing as the "wrong degree"
- Hosting .NET Core on Linux with Docker - A Noob's guide
- Do You Need A Conversational UI?
- Reading the Riot Act: Exploring a Lightweight React Alternative
- Using d3-force to control a massive tiny display
- Highlights from JSConf.IS
- Docker 1.12 swarm mode - round robin inside and out
- Interview Questions Explorer - Edinburgh Interns 2016
- Building the next generation of technology professionals
- Building Components with D3 Data Join
- Day by day - week one as a Scott Logic 2016 graduate
- Exploring Data - Creating Reactive Web Apps with R and Shiny
- Java Enums - how to use them smarter
- Euros 2016: how you can have a whole bot of fun at Scott Logic
- Time Travel and The Future of HTML5 Productivity
- Web Audio API Part 2: Moving to Electron
- A snapshot of software testers in 2016
- Grad Projects: How building a game was both galvanising and gratifying
- ES6 Iterators, RxJS, IxJS and the Async Iterators proposal
- Recursive Pattern Matching and Transformation of JavaScript AST
- Declarative CI / CD with Concourse
- UX Scotland 2016
- Service discovery with Docker Swarm
- The Catch 22 of Conversational UIs
- Bitcoin payments and the Lightning Network
- Code reuse in microservices architecture - with Spring Boot
- Six tips for cleaner javascript promises
- Chaining Custom Locators
- A study of software testers
- An update on Electron Security
- Writing a Docker Volume Plugin for S3
- Log-driven big data: The ELK stack
- The Defects Of Defect Density
- Body as Interface
- An animated chart with HTML5 Canvas
- Recommended Reading For Java Developers
- An experiment with Animation and UI
- Applying redux reducers to arrays
- Make Banking Talk
- Data visualisation and scale: leveraging the macro and the micro
- Software Testing at Scott Logic: An Insight into how we work
- Securing Web Applications, Part 4. Account and Session Management Features
- Using WebdriverIO Part 2
- Using WebdriverIO Part 1
- Mondo Bank webhook to Pebble Watch Timeline using AWS Lambda functions
- Kotlin: Practical Experience
- Jenny from the blockchain
- A Functional Front-End with React
- The 2016 BCSWomen Lovelace Colloquium - A Retrospective
- Automating Expenses With the Mondo API
- D3FC ❤ Canvas
- Bristech: story of a meetup
- Independent testers question
- Why the #pushforparity is a slow burn
- d3-path - what is it good for?
- The Lonely Tester's Survival Guide
- As It Stands - Electron Security
- Tackling the myths around a software testing career
- Interaction 16
- Deconstructing a tweet-sized D3 creation
- Modularizing Client Side Dependencies With jspm
- Securing Web Applications, Part 3. Cross Site Scripting Attacks
- Static Shock - Using Modern Static Site Generators
- D3v4 is on the way!
- Binding with Bond
- Securing Web Applications, Part 2. SQL (and other) Injection Attacks
- Data Mocking - A way to test the untestable
- A Lazy Isomorphic React Experiment
- Securing Web Applications Against Man In The Middle Attacks
- A Case for Hot-Reloading
- Playing with Docker Compose and Erlang
- Angular 2 Time Travel with Redux
- Why Apache Spark is getting so much momentum behind it
- ASP.NET 5 to ASP.NET Core 1.0
- Building a RESTful API with ASP.NET 5
- Helpers for automated checking
- Know your bugs
- Introduction to Hadoop and MapReduce
- A glimpse into our 2015 graduate projects
- Exploring the Web Audio API with D3
- Java Microservices - How to get started in minutes using Dropwizard
- Angular 2 with Immutable.JS
- Most popular Tech Blog posts of 2015
2015 68
- Creating an Angular 2 build with Gulp, TSLint and DefinitelyTyped
- Recommended Reading For Designers
- Developer Tools for Testers
- An Introduction to Continuous Delivery
- Protractor For Beginners Part 2
- Building a todo list application with Angular 2.0
- I don’t have a Computer Science degree - can I still work in software development?
- Generalizing OData
- OAuth2 with SAML2.0 Authentication
- Rendering ASCII Charts with D3
- Sampling Large Datasets in d3fc
- Creating a High Performance Stock Ticker Using Haskell
- Protractor For Beginners Part 1
- Improving D3 Performance by Embracing the Flux
- Destroying Monoliths at DDDNorth
- Fun and effective bug hunts
- Automating bacon sandwiches
- Geeking out about React Native
- White Paper: HTML5 Migration – Get started with a Little Bang
- Improving Grunt Performance
- A Master Detail layout for Ionic
- Building a Jump Scroll Marketing Page with Meteor and OrionJS
- Charting Bitcoin Prices with D3FC - 2015 Intern Project
- Building D3-inspired charts with React
- Day by day - week one as a Scott Logic graduate
- TypeScript projects in Visual Studio (Look ma, nolib)
- An Adventure in SVG Filter Land
- What Makes a Good CMS?
- Creating a Single Page App in Meteor
- Applying styles to parent elements before children in AngularJS
- Fixing an LDAP PermGen leak in JBoss
- Seven Surprising JavaScript 'Features'
- Aurelia, less2css and bundling
- UX Scotland 2015
- Creating less2css using Aurelia
- Making the leap from academia to industry
- Learn ES6 from Airbnb's coding standards
- Strictly Testing
- MVVM With ReactiveCocoa 3.0
- Introduction to ASP.NET 5
- White Paper: Making Technology Disappear
- The State Of In-Car UIs
- ReactiveCocoa 3.0 - Signal Producers and API clarity
- A First Look at ReactiveCocoa 3.0
- Generating Type-Safe Email Templates Using Single File Generators
- Introducing React Native
- Retrospective on Developing an application with React Native
- var, multi-var or anywhere var?
- A quick and dirty introduction to ZeroMQ
- Swift JSON Shoot-Out
- OAUTH2 Authentication with ADFS 3.0
- State of localisation on the web
- Introduction to Flight
- Implementing React.js in Swift
- WebdriverJS and Promises
- Blink
- Using Snapshot With Simulator Status Magic To Generate Perfect Ios Screenshots
- Making a RTL plugin in less
- RTL Support in Web Applications
- Exploring KVO alternatives with Swift
- Implementing Events in Swift
- SVG layout with Flexbox for simpler D3 charts
- JavaScript ES6 generators
- Exception Handling in Swift
- Investigating TypeScript compiler APIs
- 7 things to look for when testing with agility
- Why should a project have automated tests?
- Reimplementing Scala assignments in Clojure
2014 73
- ELK - 3 things I wish I'd known
- Hero transitions in AngularJS
- HTML5 Mobile - Optimising for older or slower devices
- Tearing Down Swift's Optional Pyramid of Doom
- Foyer Screen, continued.
- Agile Projects: A Case Study
- Introducing (Another) New Static Site Generator
- HTML5 Mobile - Long-press to re-order scrollable lists
- Introducing the MEAN stack
- Swift Initialization and the Pain of Optionals
- Testing Standards
- An RSI component for D3 charts
- Video Stitching with AVFoundation
- HTTP/2: A quick look
- Binding mutable arrays with ReactiveCocoa
- A Fibonacci fan component for D3
- Mandelbrot Generation With Concurrent Functional Swift
- A first foray into functional programming with Scala and Clojure
- Cross-platform mobile with Cordova and Ionic Framework
- How IE confuses JavaScript context when running in multiple windows
- Jekyll Pagination and Infinite Scroll
- An interactive crosshairs component for D3
- An interactive Stock Comparison Chart with D3
- Using Screenhero To Turbo-Charge Pair Programming!
- Swift and the curious case of AnyObject
- Functional Swift and Memoization
- Creating an interactive chart with D3
- D3 SVG chart performance
- The Agile Mindset
- Swift By Tutorials is Published
- Static or dynamic? d3js and Jekyll with PhantomJS
- Writing Desktop and Web-Based JavaScript Applications
- The Game of Life with Functional Swift
- Does Scrum make the Project Manager role redundant?
- Foyer Screen Slideshow - 2014 Intern Project
- A Bollinger Bands Component for D3 Charts
- Two Reusable Line Components for D3 Charts
- How does the nature of an engagement affect how we introduce Agile?
- Porting Scratch To HTML5 From Flash - 2014 Intern Project
- An OHLC Chart Component for D3
- Introducing Agile upfront
- Asp.Net bundling of Angular templates
- Using Akka and Scala to Render a Mandelbrot Set
- A piecemeal approach to introducing Agile
- Strong typing for SignalR
- Sharded Clusters in MongoDB - The Key Considerations
- End-to-End testing with Angular and Knockout
- MongoDB vs CouchDB
- Introducing Agile development to client projects
- Swift Adoption Statistics
- 5 things hip hop teaches us about UX Design
- Single Page Applications - Angular vs Knockout
- MVVM, Swift and ReactiveCocoa - It's all good!
- Functional Reactive Programming with Bacon.js and D3
- A Statistical Comparison of the iOS and Android Stores
- MVVM with ReactiveCocoa
- Schools of Testing
- Swift Sequences and Lazy Evaluation
- White Paper - HTML5 At Enterprise Scale
- Binding to a UITableView from a ReactiveCocoa ViewModel
- Rapid Software Testing
- A Colour Analysis of the Apple App Store
- A Statistical Analysis of the Apple App Store
- Simulating Accelerometer and Location data for iOS
- ReactiveCocoa - The Definitive Guide
- Native code + Emscripten + WebGL. Simmer gently.
- A Developer's intro to WebGL
- Developing large scale KnockoutJS applications
- Arrow functions in Knockout.js
- Intro to IxD: Affordance
- PropertyCross 1.3 Released
- iOS 7 By Tutorials In Print
- Understanding JavaScript Object Creation Patterns
2013 40
- Snooping WPF: Tips and PowerShell tricks
- An introduction to MVC frameworks
- Iterating while counting
- On Running a Code Club
- Understanding JavaScript Object Creation Patterns
- Getting Functional at DDDNorth
- Assessing Android Fragmentation
- An Interactive Tab Bar Controller Transition
- 2D Game Development with SpriteKit
- Creating a custom flip view controller transition
- iOS 7 by Tutorials - the first iOS 7 book - is published
- Typescript 0.9: Any improvement
- Eclipse Kepler and @Nullable
- ReversiEight - A Windows 8 Reversi Game
- TowTruck and HasteBin
- Interactive.NET (2 - C#)
- Windows Phone App Studio - Shows Potential ...
- The Science behind Data Visualisation
- Interactive.NET (1)
- Real-time data analysis using Spark
- Testing HTTP requests with Betamax in Scala
- UX Scotland 2013
- Adventures with Scala Macros - Part 4
- Adventures with Scala Macros - Part 3
- Isolated Scrum: Does Scrum need to be Complemented with eXtreme Programming to Succeed?
- Adventures with Scala Macros - Part 2
- Adventures with Scala Macros
- New iOS Article - How To Make a Custom Control
- ReversiEight - A Windows 8 Reversi Game
- HTML5 - It Just Got Real - Slides
- Clearer – A Gesture-Driven Windows 8 To-Do Application
- Enhanced Windows Phone 8 Map Gestures
- Comparing KendoUI and Knockout (with a bit of jQueryMobile on the side)
- HTML5 - It Just Got Real - A One-day Conference in London 14th May
- Less vs Sass vs Stylus
- Knockout.js + Node.js = What.js?
- Extends in less
- Illusions in CSS
- A Windows Phone 8 Run Tracking App in 100 Lines of Code
- Windows Phone 8 Running App Article wins CodeProject competition