Technology Tussles

Managing complexity in an ever changing world


  • AWS Lambda function billed for longer than execution time

    Over the last few weeks I have been updating a number of old AWS Lambda functions to bring them up to date with Node 22. In doing so I came across a curious anomaly in one of my new functions. Under most use cases the Lambda took less than two seconds to return a value. […] (more)


  • Making multiple async https calls from AWS Lambda

    Following on from my last post, I needed to update another old AWS Lambda to Node 22. This required me to make several https calls from an external API and then combine them together to create my result. Using https.get to make an asynchronous http request The first step was to include the https library, […] (more)


  • Updating AWS S3 get object Lambda function to Node 22

    One of the annoying things about software engineering is that working code doesn’t necessarily stay working. About eight years ago I wrote an Amazon Web Services Lambda Function using Node JS (I think version 10). Five years ago when the node version was end of life I updated it to Node 12 with no changes […] (more)


  • Building an Audio Player in Flutter with Just Audio

    I recently needed to create a reusable Audio Player for a Flutter App I was working on. After a bit of research I decided to use the Just Audio plugin. As is often the case I found that the documentation was useful for standalone implementations, but not entirely helpful for reusability. The first step is […] (more)


  • Styling Tab Bar in Flutter

    Recently I decided to add a default tab bar to my app in flutter. This is relatively straightforward to achieve using the following And this yields a tab bar with two pages which looks like this: Following on from my posts about using Themes in Flutter, we can now start to style the tab bar […] (more)


  • Building a ListView which scrolls neatly by item

    Recently I wanted to horizontally scrolling ListView to display a number of panels. This is relatively easy to achieve, but there were two things that I did not like about it. As it turns out both of these issues are also very easy to fix. First up, calculating the panel dimensions can be done by […] (more)


  • Using Provider to Share State Between Widgets

    Today I needed to share a timer between two widgets. A quick search revealed that the way to go was to use Provider. So, as usual I looked for a good example of how to go about it. I didn’t actually find one, so instead I took a look at the official documentation (https://pub.dev/packages/provider). Unfortunately, […] (more)


  • Contents of UICollectionView hidden by keyboard (in Swift)

    As I am sure I have said before, one of the frustrations of modern software engineering is that some things you think will be complex turn out to be very simple because the language does it for you with little or no work at all, and other things that you think will be easy (or […] (more)


  • Why Software Projects Overrun

    Last week saw the launch of Squbes onto the Google Play store. Something to celebrate – but it was nearly a month overdue – and the iOS release was a week later. So what went wrong and why do software projects overrun? Underestimating complexity When estimating how long a software project will take to deliver, […] (more)


  • Creating lightweight web sites with PHP

    Back to basics So I’ve had a couple of months of using WordPress now, and I have to say for blogging, site which are going to grow rapidly or for multi-editor sites, I would definitely recommend it. I still believe, however, it is overkill for many uses cases. HTML is very good at what it […] (more)