Technology Tussles

Managing complexity in an ever changing world


  • Reusable overflow menu in Flutter

    One of the problems of learning new languages is that the majority of example code shows only the simplest use cases. With Flutter particularly I have found that the samples in the documentation and answers available on Stack Overflow are built to solve specific single widget needs rather than being coded for reusability. When you are building a larger app, however, you need to be thinking not just about how to get the job done, but how maintainable it will be in the long haul. As we… (more)


  • Styling Flutter (Part 2)

    As part of my flutter journey I have been updating an app I wrote a few years ago, and applying some dynamic themes to it. In part one (Styling Flutter – Nightmare in Themesville) we looked at how to use the ThemeData object to apply a dynamic dark theme to light theme switch. In this post I will explore a few changes that have come along with Material 3 and a couple of gotchas that I have encountered in the process. The first and most obvious change… (more)


  • Flexible Themes in Flutter

    Following on from my last post about the potential pitfalls of Flutter themes, let’s look at some of the benefits. Looking at articles on Medium and answers on StackOverflow it seems that a lot of people fail to grasp the power of themes, and apply styles in an ad-hoc fashion at the widget or property level. This is fine for simple apps, but as app complexity grows it reduces code readability becomes increasingly difficult to maintain. What happens if you decide that all of your headings are… (more)


  • Post Office Horizon Scandal

    Organisational Culture It is nothing to do with me, but I have been thinking a lot in the last few days about the Post Office Horizon scandal, and the ability of large software systems to ruin people’s lives. As I write, Paula Vennells is finishing her wholly inadequate testimony to the independent inquiry. I was never employed by the Post Office, but I did work a former subsidiary company which had inherited much of its management culture. I can’t say I’m very surprised by her comments or… (more)


  • Styling Flutter – Nightmare in Themesville

    One of the great things about Flutter is how quickly you can progress with a project. Everyone says it. Flutter development is fast. Except when it isn’t. Where it comes unravelled for me is when I try and apply themes to my project. I’m a big fan of generic code. Declare something once, use it everywhere. On the face of it that is what themes are supposed to do. I can create an entry to decide the colour, or size of an icon by declaring it once… (more)


  • Creating reusable patterns for WordPress Themes

    As I’ve hinted at before one of the advantages of writing websites from scratch is that you get to be in control of everything. Of course as a site grows in complexity that can become a disadvantage too. Control, however, is addictive – and now I am using WordPress I am working hard at bending it to my will. One of the big issues with WordPress is knowing where to start. There are literally thousands of themes and plugins available to do all manner of things. This… (more)

    ,

  • Moving WordPress blog posts off the home page

    TL;DR – skip to the bottom. When I set up my blog a couple of weeks ago my plan was for the blog to be on a subdomain managed by WordPress and the main website to be a simple HTML page with a link to it. Not long after I completed my set-up I realised that I would be better off using WordPress to manage the whole site. I also concluded that having the blog on a subdomain was counter-productive for the purposes of Search Engine Optimisation… (more)


  • Sliding Timer Widget in Flutter (Part 2)

    In my previous post I created a sliding number widget using Flutter CustomPainter. In order to use this widget in action, there are two more remaining tasks. The first is to group several of the NumberSlideWidgets together in a single widget and the second is to add the timer. Firstly we’re going to create a new widget called NumberSlideGroupWidget and pass in several parameters. Three of the these parameters you will recognise as being the same ones we passed in to the NumberSlideWidget: magnitude, color and contents.… (more)


  • Sliding Timer Widget in Flutter

    I’ve been experimenting a bit with Flutter animations and wanted to create a timer widget which displays the time in seconds, and updates by rolling up or down. Extending Custom Painter After a bit of research I decided to extend the CustomPainter object to draw the number elements for the timer. The first step is to pass in some parameters to the custom painter which we will use to calculate the dimension, position, colour and contents of the square. Next we can create a method to draw… (more)


  • Wrestling with WordPress

    I’ve a confession to make. I’ve never really liked using other people’s software for web development. It’s probably because I’m a dinosaur. I wrote my first website in raw HTML using Notepad, and since then I’ve not looked back. My tool of choice has moved on to Sublime Text, and my websites are a mix of HTML, PHP, Javascript and JSON – but I have never seen the need of Content Management Systems for small sites. My first foray into WordPress has done little to convince me.… (more)