
Technology Tussles
Managing complexity in an ever changing world
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 needed and it has been working ever since. I’ve had a few warnings from AWS about code relying on versions of node that are end-of-life but it was still working when I… (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 to include Just Audio in the project as follows. Once this was done I created a simple object to play an audio file from a URL as follows The audio length variable… (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 using the Theme parameter under MaterialApp. In the following snippet the indicator size changes the underline for the selected tab to span the whole width of the tab, whilst the label style… (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 using a media query to get the screen width. Dividing the screen width by the minimum width of a panel and its margins gives us how many panels to display for a… (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, as is often the case the readme there is written from the perspective of assuming that you already know what to do. As of today there is more text telling you how… (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 don’t even realise you will need to do) turn out to be a bit more complicated. A case in point is the behaviour of the keyboard on iOS when interacting with scrollable… (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, we rely on past experience to gauge the complexity and hence time needed for individual tasks. A smart developer then adds a factor to this to give a margin. My experience with… (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 does and it is not hard to learn. CSS is even better – and frankly the way that WordPress forces you to engage (or not) with CSS is a dog’s breakfast. The… (more)
Updating CocoaPods to run Flutter Apps on iOS
Having successfully run a couple of Flutter Apps on Android devices and the iOS Simulator (from AndroidStudio), I was not expecting there to be much of a problem getting my App running on iOS. Unfortunately as soon as I tried to run my code from XCode I hit an error A quick search revealed a large number of possible solutions most of them either not obviously relevant or not applicable to Flutter. Looking into the XCode error I found that it was located in a generated source… (more)
Styling PopupMenuItem with Flutter themes
In my previous post I looked at creating a reusable popup menu in flutter and applying a flexible theme from ThemeData. After a bit of testing I’ve uncovered two minor wrinkles. The first is that the icons in my PopupMenuItem don’t take their style from iconTheme as I had anticipated. Instead, for some unknown reason they seem to inherit their colour from the foregroundColor attribute of AppBarTheme. I don’t know if this is a bug or an intentional decision – but it is slightly frustrating. Fortunately it… (more)
Previous Posts
- March 2026 (1)
- February 2026 (1)
- September 2025 (4)
- August 2025 (2)
- May 2025 (2)
- April 2025 (2)
- March 2025 (1)
- December 2024 (2)
- November 2024 (1)
- July 2024 (2)
- June 2024 (4)
- May 2024 (6)
- April 2024 (3)
Categories

