• AI, Global Scaling, Regulatory Compliance, and Multi-Tenancy in Two Distinct Domains

    TL;DR: This blog post compares dental practice management software and food delivery platforms, highlighting shared engineering challenges such as AI-driven scheduling, global scaling, regulatory compliance, data privacy, and multi-tenancy. It explores how AI optimises both dental appointments and rider dispatch, the need for adaptable and scalable cloud architectures, and the importance of designing systems that address efficiency, fairness, and local regulatory requirements across both B2B and consumer applications.

    Introduction

    Three months have flown by at Henry Schein On (Dentally). I decided to do a little reflection.  Changing business domain has shown me that the same challenges and discussions exist – it’s still software. Engineers worry about technical debt; product managers worry about how quickly the new functionality can get to mark.  I thought I would focus on design challenges and AI though, it’s neutral territory.

    Oh, and a side note. I’ve been enjoying coding again using Python, Cursor and/or GitHub Copilot and here’s how my GitHub profile looks:

    I’ll share more about my experience about building a DORA tool and writing a game in Python later.

    Anyway……

    In the evolving world of software engineering, cross-industry comparisons often yield valuable insights into system design, scalability, and regulatory considerations. Dental practice management software and food delivery platforms may appear unrelated at first glance, yet both domains share underlying engineering challenges—particularly in scheduling, compliance, data management, and privacy. This blog post explores these parallels, focusing on how artificial intelligence (AI) enhances scheduling, the complexities of scaling systems globally, navigating diverse regulatory landscapes, managing customer data, and implementing robust multi-tenancy for privacy and security. The aim is to support software engineers and architects seeking to design resilient, compliant, and scalable platforms for business-to-business (B2B) and consumer applications.

    AI in Scheduling: Dental Appointments vs Delivery Rider Dispatch

    Efficient scheduling is the backbone of both dental practices and food delivery services. In dental software, AI-driven scheduling tools analyse practitioner availability, patient preferences, treatment durations, and equipment constraints to optimise appointment slots. These systems must handle recurring visits, cancellations, and emergency bookings with minimal manual intervention, improving both clinic efficiency and patient satisfaction.

    Conversely, food delivery platforms use AI to dispatch riders, factoring in real-time traffic, restaurant preparation times, rider locations, and delivery windows. The system must dynamically adjust to fluctuating demand and unforeseen disruptions, such as weather or road closures. The underlying optimisation algorithms—be they constraint satisfaction, reinforcement learning, or predictive analytics—share common principles but are tailored to the domain’s unique operational needs.

    In both scenarios, AI not only automates complex scheduling decisions but also learns from historical data to improve future outcomes. For engineers, the challenge lies in designing models that balance efficiency, fairness, and user experience while remaining transparent and explainable.

    Scaling for Global Usage: Challenges and Solutions

    Scaling software for global reach introduces myriad technical and operational hurdles. Dental practice systems expanding internationally must support local languages, currencies, and healthcare standards, while accommodating varying appointment lengths, insurance protocols, and patient record formats. Similarly, food delivery platforms must adapt to diverse payment methods, local cuisines, and logistical infrastructures.

    Both domains require robust cloud architectures capable of elastic scaling, regional data storage, and high availability. Geo-distributed microservices, content delivery networks, and edge computing are commonly employed to reduce latency and ensure compliance with data residency requirements. Engineers must also design for peak-load scenarios—such as lunch hours for food delivery or seasonal spikes in dental bookings—without compromising system performance.

    Moreover, global scaling necessitates a modular approach, allowing for rapid localisation and integration with third-party providers, from insurance databases to restaurant point-of-sale systems. Feature flags, configuration-as-code, and continuous deployment pipelines further streamline the rollout of region-specific features.

    Regulatory Compliance: Tax, Food Safety, and Dental Treatment Regulations

    Regulation is a significant differentiator between dental and food delivery platforms. Dental software must comply with medical privacy laws (such as GDPR and HIPAA), clinical safety standards, and often complex billing rules involving government or private insurers. Food delivery platforms, meanwhile, contend with food safety regulations, hygiene certifications, and tax compliance across multiple jurisdictions.

    For engineers, this means designing systems with configurable compliance modules. Rule engines can automate the application of local tax rates or verify practitioner credentials, while audit logging and access controls safeguard sensitive data. Compliance as code—embedding regulatory logic within the software—enables rapid adaptation to new laws and minimises legal risk.

    Proactive compliance monitoring and automated alerting further ensure that the platform remains up to date with evolving standards. Regular security assessments and third-party audits are essential for maintaining trust and avoiding costly breaches or fines.

    Customer Management: Data Handling and User Experience

    Both dental and food delivery platforms manage sensitive customer data, from personal details and payment information to health records or dietary preferences. Ensuring data integrity, security, and privacy is paramount, not only to comply with regulations but also to foster user trust.

    User experience (UX) considerations vary: dental systems must support long-term patient relationships, recurring treatments, and detailed record-keeping, while food delivery apps prioritise speed, convenience, and seamless ordering. In both cases, clear consent flows, robust authentication, and transparent data usage policies are essential. Engineers should employ encryption in transit and at rest, alongside fine-grained access controls to limit data exposure.

    Additionally, effective customer support tooling—such as chatbots, appointment reminders, or order tracking—can be powered by AI to enhance UX and reduce operational overhead.

    Multi-Tenancy and Privacy: Ensuring B2B and Customer Data Isolation

    Multi-tenancy—the ability to host multiple clients (dental practices or restaurants) on a single platform—presents unique engineering challenges. Each tenant requires strict data isolation to prevent cross-client access while sharing core infrastructure for efficiency.

    In dental practice management, this might mean segregating patient records, appointment logs, and billing data by clinic. In food delivery, restaurants, delivery partners, and end customers must have their data securely partitioned. Approaches include database-per-tenant, schema-based isolation, or row-level security, each with trade-offs in complexity and scalability.

    To further protect privacy, engineers should implement tenant-aware authentication, encryption keys per tenant, and comprehensive monitoring for unauthorised access attempts. Regulatory requirements often mandate detailed audit trails and rapid incident response capabilities, which must be baked into the platform from the outset.

    Conclusion: Key Engineering Takeaways and Future Directions

    Despite their differences, dental practice management systems and food delivery platforms share a core set of engineering challenges: optimising scheduling with AI, scaling reliably across regions, navigating regulatory complexity, safeguarding customer data, and ensuring robust multi-tenancy. Success in either domain depends on a thoughtful blend of domain expertise, technical architecture, and a proactive approach to compliance and privacy.

    Looking ahead, advances in AI explainability, edge computing, and privacy-preserving technologies (such as differential privacy and confidential computing) promise to further align best practices across industries. For engineers and architects, embracing cross-domain lessons can inspire innovative solutions and foster more resilient, user-centric platforms.

  • It’s been a busy summer with changes to my plans. 

    The biggest change being that I have joined Henry Schein One.  Back in May I did a blog post where I mentioned I was planning to take a year out. As with most plans, they change.

    I’ll answer two questions that might be on your mind. What changed my plan? How did the self-sufficiency work out?

    What changed?

    I wasn’t looking for a new role, not just yet, but a request to chat about a role caught my attention.  I enjoy helping grow and develop organisations, especially when it means working with great people. The opportunity for a role leading global software teams met my criteria.

    So I am pivoting to another business domain, building dental practice management software, focusing on challenges such as appointment scheduling and administrative automation to ultimately allow dentists to treat more patients. The potential social impact—leveraging AI to detect dental decay earlier and optimise scheduling for both patients and practitioners—was particularly compelling. I recognised multiple avenues where my experience at Amazon and Deliveroo could be highly relevant.

    What stood out most during the interview process was meeting the CPTO and one of the company’s founders; their commitment to meaningful innovation was truly inspiring. The atmosphere reminded me of Deliveroo during 2019/2020 (and beyond, Deliveroo is always innovating) — but 2019/202 was a period defined by vision, necessity, and palpable excitement.

    As a result, I have now completed three weeks in my new position as Director of Engineering at Dentally, having officially joined on August 4th. While this update is slightly overdue, I am eager to contribute to the organisation’s mission.

    What happened to being self-sufficient?

    When priorities shifted, I found myself weighing the needs of my home against the ambitions I had for the garden. I realized that the house repairs were more important, so I had to shift my focus from the garden to ensure the home was ready. This meant fitting new windows in July, even though I had originally planned for August. The increased urgency left less time for tending to fruit and vegetables, and as a result, I ended up with batches of the wrong things at the wrong time—too much lettuce, but no cucumbers or tomatoes. The timing was off, and my plans for a balanced harvest fell short.

    Reflecting on the experience, I see that the decisions I made were guided by immediate necessity, but lacked the strategic planning required for successful crop timing. Next year, I plan to create a detailed planting calendar to better coordinate sowing and harvesting times. It’s all a learning process and hopefully next year I will have a more consistent yield across the season.

    Some crops did surprisingly well despite the lack of attention—courgettes, cucumber, and lettuce thrived, and our apple and plum trees continued to produce their usual bounty. The excess produce is shared with the village, a tradition that I’ve come to appreciate more each year. Neighbours often stop by to pick up fresh apples and plums, which has helped foster a sense of connection in our community. Seeing how the shared harvest brings people together is a highlight of the season and a reminder that resourcefulness benefits everyone.

    With the house repairs handled and the garden’s lessons in mind, I’m now back to relying on help for gardening, and using weekends to plan for another year—this time with an eye toward better coordination and community spirit.

  • AI generate image for this article.

    Imagine a world where AI not only drives technological advancements but also transforms our daily lives. In my journey towards self-sufficiency, I’ve had numerous discussions about the impact of technology on society. While I won’t delve into AI’s role in farming today, let’s explore its broader implications.

    What the discussions have done is started me thinking about technology change and the impact on society and the environment. In this post I’m writing mostly about technology leadership with some of my thoughts on other significant technology changes that impact society, farming in particular.

    Software engineering is at an inflection point. This year AI has begun to shift from a tool supporting software development to a driving force as to how software systems are built. Further, it’s reshaping how companies strategize and build new products, with productivity being a central theme.

    Just as farmers faced uncertainty during the industrial revolution, software engineers today are grappling with questions about their job security. Will AI make their roles obsolete?

    In my opinion, while the traditional role of a software engineer will evolve, it won’t disappear overnight. AI, though powerful, is still a sophisticated pattern-matching tool that excels with clear instructions. This makes it an excellent aid for coding.

    I firmly believe that AI presents immense opportunities. It allows software development managers to return to coding and solving business problems. Product managers can quickly build prototypes, and startups can scale their software development with fewer resources. 

    In May, I used AI to start building a computer game prototype. It exceeded my expectations by producing the first code. It wasn’t perfect working software though. I’ll share more about this journey in a future post, but some first observations are shared below. 

    But first, some technology leadership thoughts.

    Technology Leadership in the Age of AI

    I’m excited to think that AI will result in less meetings and more time spent solving business problems. Meetings will still be required, for coordinating the organisation, discussing strategy, making decisions, and discuss complex problems. The real improvement will be in communication – setting expectations for software teams. Rather than trying to explain a problem or idea, you can use AI to communicate it. AI can build the outline of a software solution to solve the problem.  You can even use AI to explain the software written. The code and explanation can be shared with the engineers. They will use this information to build out the final solution that is a Likeable Product – appreciated by users and software engineers alike. 

    I firmly believe production ready software solutions will be built at pace, far faster than imagined even 2 years ago.  This is already being talked about online and by industry leaders.

    One key observation is that AI is not perfect. It requires significant guidance and a human partner with domain expertise to discover when something is amiss. For instance, while building a game, I encountered several issues that needed manual intervention.

    AI solutions aren’t perfect – they still need lots of testing

    I experienced problems with AI when building the game, I mentioned earlier.  It’s a hexagonal board game; I asked GitHub Co-pilot (GPT-4.1) to create the UI and the ability to move pieces on the UI. It did this for me but introduced some bugs in its own code and even the unit tests it generated.

    The problem was that the AI copilot used axial rather than cube coordinate logic.  The result was that it was possible to move playing pieces further than allowed. Annoying in a game but costly if there had been software for a delivery service calculating optimal delivery routes.

    I attempted multiple different prompts and explanations to Copilot. However, all of them failed to solve the problem. I had to fall back to traditional research and reading articles. This helped me understand the problem and fix the code as well as the unit tests.

    The choice of AI assistance, using of GPT, over say Claude AI, could be the reason for the issue. If that were the case this highlights a strong need to understand how AI will behave. So right now, the ability to do problem solving and research are still an essential skill for software developers.

    Some interesting links

    Back to my starting point, my thoughts on the impact of technology on society (farming and AI).

    Farming, the Industrial Revolution, and AI: Just Some Thoughts

    Here’s my comparison of the industrial revolution to the technology inflection happening now.


    Farming: Mechanization of Agriculture
    Technology: Automation of mundane tasks

    • Introduction of machinery such as tractors, ploughs, and harvesters.
    • Increased efficiency and productivity in farming.
    • Reduction in manual labour and time required for farming tasks.

    In the 1990’s I see the shift from paper-based ticket systems in telecoms companies to software.  This change increased productivity among individuals. It allowed them to focus on higher value and more interesting activities. Some people transitioned from administrative work to engineering roles. This was all positive for companies and individuals.

    As I mentioned above AI will make software engineers more productive and efficient. But more importantly, it will automate mundane business activities. This automation will enable business people to be more creative. One area I can see this happening is in accounting. It will make it easier and faster to analyze accounts. The key here is ensuring complete, accurate, data is the input to the automation and this is not easy. Legacy software systems and delivering new products quickly make robust tracking of money movements a difficult problem to solve well.


    Technological Advancements

    Farming:

    • Development of irrigation systems and techniques.
    • Use of fertilizers and pesticides to enhance crop yield.
    • Genetic modification and selective breeding for better crop varieties.

    Advancements in technology enables more to be produced at a higher quality with less effort. But, what about the environment?


    Economic Impact

    • Shift from subsistence farming to commercial agriculture.
    • Growth of agribusiness and large-scale farming operations.
    • Changes in the rural economy and employment patterns.

    Positives and negatives here. It was essential to be able to produce more to support growing populations. In some ways, this had a flywheel effect. Having more dependable food meant less famine. This led to a greater population, which demanded more food. The cycle continues – demand and supply grows each year.

    Being capable of producing software solutions faster will put pressure on engineering teams and technology companies to produce faster.  The pace of change may well be hard for society to cope with, impacting mental health. The health issues will cause negative economic impact.

    I’m not even going to try to predict the economic impact of AI on society. My view is people will be far more productive. I’m not sure people will have more free time because of AI though.


    Environmental Impact

    • Effects of industrial farming on soil health and fertility.
    • Impact on biodiversity and ecosystems.
    • Issues related to pollution and sustainability.

    I’ve read comments on how using OpenAI/ChatGPT consumes water and electricity, with an impact on the environment. The discussions seem to vary in opinion on the costs.  Example articles are: The Environmental Impact of ChatGPT | Earth.Org, What your ChatGPT use is doing to the environment.

    It’s a difficult topic, where I am sure many strong opinions can be heard.  Should engineers be considering not just the monetary cost of implementing software solutions but also the environmental impact?


    Social Impact

    • Changes in rural communities and lifestyles.
    • Migration from rural to urban areas.
    • Impact on traditional farming practices and knowledge.

    A good summary of the AI inflection point can be found in this LinkedIn post by Stanislav Beliaev

    Conclusion

    The impact of technology on society is, and has been, profound and far-reaching. As we navigate this AI-driven evolution, it’s crucial to embrace the opportunities while being mindful of the challenges. What are your thoughts on the future of AI and technology leadership? Share your insights in the comments below

  • In April, we decided to reinforce our bedroom floor, which had been creaky and worryingly moved when walked on.  Even our dogs caused the floor to bounce when walking on it. Along with replacing the floor, we considered restoring the original fireplace in the bedroom. However, as with most projects on our house, things didn’t go as planned.

    The first step was to cut a hole in the plasterboard covering the back of the fireplace. We discovered that the metal flue would be an obstacle to our plans. Because of this, we abandoned the idea of a working fireplace. Instead, we opted for Plan B: using brick slips and roof tiles that came from a property in Hungary. This post covers my experience with lime cement, brick slips, and floor tiles, an entirely new DIY experience for me. Like other posts, I’ll also give a comparison to building software solutions.

    Comparison to software system projects

    You’re probably asking yourself – how can you compare a fireplace restoration to building software solutions. It’s a stretch. But, it relates to setting goals and understanding what the requirements are to achieve those goals. It also involves understanding the cost/benefit to decide on what can be achieved.

    The goal was to restore to working order, the master bedroom fireplace while keeping the cost to less than £1,000. Like software systems this gave an understanding of the expected outcome and budget – the definition of success. When thinking about software project priorities and impact, consider the Cost of Delay. It is also important to evaluate the Return on Investment. Determine if a project is mandatory as well.

    Cost of delay

    This concept refers to the potential negative consequences and financial impacts that result from postponing a project or decision. In project planning, the cost of delay can include lost revenue, missed opportunities, and increased expenses. For example, delaying a product launch can mean losing market share to competitors. It could also mean failing to capitalize on a seasonal demand. In maintaining a house, the cost of delay can be seen in the escalation of minor issues into major repairs. For instance, not fixing a small roof leak promptly could result in extensive water damage, ultimately leading to more expensive repairs.

    Understanding the cost of delay is crucial for prioritizing projects effectively. It helps in assessing the urgency and importance of a project and in making informed decisions about resource allocation. By calculating the cost of delay, project managers and business leaders can balance risk and reward to optimize project outcomes.

    Maintaining a house can be compared to this; for instance, not fixing the roof promptly could result in leaks that are more expensive to repair later. The fireplace project had no significant cost of delay. It was simply more convenient to complete before new carpets were installed.

    Return on investment

    In the context of our fireplace restoration project, “return on investment” (ROI) refers to the potential benefits that could be gained from the expenses incurred. For instance, making the fireplace functional and aesthetically pleasing could increase the value of our property, enhancing its appeal to potential buyers. However, since we have no plans to sell the house soon, the immediate tangible financial ROI is minimal.

    In software projects, ROI is a crucial metric. It evaluates the profitability or value generated from an investment. This evaluation is in relation to its cost. This could relate to various factors. These include productivity improvements, the creation of new products or features, or enhanced customer satisfaction. For example, investing in a new software feature might lead to increased sales, higher customer retention, or reduced operational costs.

    ROI is often observed over a span of years, leading project managers to consider the payback period – the time it takes for an investment to generate enough profit to cover its initial cost. This period is significant in determining the viability and prioritization of projects.

    In recent times, particularly post-COVID, many companies have shifted their focus from mere growth to profitability. Prior to this, many growth-focused companies prioritized scaling and market share over immediate profits, often relying on external investments to fuel their expansion. However, the pandemic-induced economic challenges have necessitated a pivot towards achieving profitability and sustainable business models.

    Understanding ROI is essential for making informed decisions about resource allocation and project prioritization. It aids in balancing the risks and rewards associated with various initiatives, ensuring that investments align with organizational goals and deliver value over time.

    Just do it (mandatory projects)

    Mandatory projects are often non-negotiable and driven by regulatory requirements, security needs, or necessary system upgrades. These projects must be completed to ensure compliance, safeguard data, or maintain operational continuity. Although they might not directly contribute to business growth or profitability in the short term, failing to execute them can result in severe penalties, security breaches, or system failures that could jeopardize the entire business.

    Understanding and managing mandatory projects is crucial for businesses. These projects often necessitate reallocating resources and adjusting timelines for other initiatives, impacting overall business plans. However, their successful completion ensures the organization remains compliant, secure, and operational, ultimately supporting long-term business stability and success.

    My fireplace project decision

    In the case of the fireplace restoration project, an initial assessment revealed that achieving full functionality within the set budget was unfeasible, particularly due to the high costs associated with modifying the flue system. Consequently, the project’s focus shifted to enhancing the fireplace’s aesthetic appeal rather than restoring its functionality. By adhering to the budget, the project still added value to the property, albeit in a different manner than initially intended.

    I’d be interested to know if anyone wants to hear my thoughts on the different leadership thinking required for growth and profit-driven organizations. I can also share how that impacts project planning and prioritization.

    Our Fireplaces

    If you’re interested here’s a quick rundown on the fireplaces in the house. There are four of them, with only one in working order.

    The first, and most interesting fireplace is the original untouched 1620’ish fireplace. It has the original bricks, including soot stains and the original oak beam.  This would have been used for cooking as well as heating.

    The second fireplace is a rebuild done in the 1980’s. This fireplace prevented the restoration of the bedroom fireplace. It is a working open fire. The oak beam is old; it has wooden pegs, which indicate the age and used to construct our house. I doubt the oak bean is original to the fireplace though.  It does make for a cosy winter evening as the fire tends to warm up multiple rooms.

    The master bedroom update did require some work and careful planning for how to lay out the bricks and tiles.  I did the whole project, laying out the brick slips, lime cement mixing and the pointing of the bricks. I didn’t realise how physically hard it would be. I was in a stress position, bent over in a awkward space for about 4 hours when pointing the bricks.  Laying and pointing the tiles was slightly easier on the back but not the knees.

    I spent a significant amount of time measuring and laying out the position of the brick slips. I also did trial layout of the floor tiles. This was to ensure a layout that would reduce waste and also give a look that reflects the history of the house.

    Overall, including time to allow cement to dry, this project took 3 days was completed well within the allocated budget.

    The final result being….

    The next posts

    • Using AI to translate instructions from a retro board game into a computer game.  I want to see if this can be done in Python and Go and then scale this to a multi player solution.
    • Building Financial Systems – specific solutions vs abstract extensible platform solutions. This is likely to be a series of posts, covering some of my experience of building financial software solutions for collateral management, video accounting treatments, FX trading, anti-money laundering and food delivery.

    Other blog posts that have caught my eye

    Interestingly, a couple of other blog posts have recently appeared recently which touch on tech, farming and gardening.

    • The Last Commit: How Programmers Engineered Their Own Unemployment . I need to give my thoughts and reply to this post.
    • It’s Not Debt, It’s a Garden . Thought provoking, and I definitely need to reply to this one as it is a good discussion topic. I will reply to the post in the next few days. I don’t agree with the analogy as debt is a business risk. Tech debt, and functional debt, should also be a business decision. Weeds growing in your garden isn’t always a choice, it just happens. I do agree with ongoing upkeep and maintenance but cost/benefit must be considered.
  • I’m still catching up on post for March. In this post, I’m proving updates on the vegetable garden progress and my experience in learning to paint and draw. I experimented with using artificial intelligence to assist me in painting trees and a woodland scene after completing an initial draft.

    March. The start of the vegetable garden

    Slightly late in preparing the vegetable garden. I’m adopting a combination of no-dig gardening and traditional vegetable beds this year. No-dig gardening, popularized by Charles Dowding (see Charles Dowding YouTube), involves layering compost or organic matter on the soil surface without disturbing it through digging. This method helps maintain soil structure, retains moisture, reduces weed growth, and promotes biodiversity. Additionally, no-dig gardening minimizes soil erosion, enhances carbon sequestration, and reduces the release of stored carbon into the atmosphere, contributing positively to the environment.

    In April and May, I’ll be planting a variety of vegetables. Potatoes and carrots will go directly into the soil. For the raised beds, which are filled with two-year-old compost made from leaves and grass cuttings, I’m planning to plant leafy greens like lettuce and spinach, as well as root vegetables such as beets and radishes. Other suitable vegetables for this time of year include broccoli, cabbages, and peas. These choices should ensure a bountiful harvest throughout the growing season.

    How does growing vegetables compare to building software?

    Preparation, timing and keeping to budgets. Surprisingly, there are notable similarities between starting a vegetable garden and building a software system. Both begin with a set of requirements and goals that you aim to achieve within a budget. In gardening, you plan how you will prepare the soil, much like designing a software solution. Additionally, you must plan the growing cycle to know what needs to be planted and when to achieve the best crop yields. For instance, I plan to plant 2-3 crops of carrots and potatoes as well as salad greens, staggering the planting in two-week intervals. In software development, you would have a project plan outlining when teams need to begin their work to ensure the development completes on schedule, aligning with the planned go-live date.

    Design thinking – scale, reliability and performance. In software development, system design is crucial. It plays a significant role in interviews when hiring software engineers. Similarly, in the vegetable garden, not all plants grow well together, so careful design of the planting plan is needed to determine which crops to grow together and which to keep apart. Proper planning ensures one crop does not hinder the growth of another. Moreover, you need to consider the scale of your crop yield and how often you want to harvest. In software development, system design addresses scalability, ensuring the system can handle increased loads, reliability to maintain consistent performance, and overall system performance to meet user expectations efficiently.

    For example, certain vegetables should not be grown together due to their incompatible growing requirements or potential to hinder each other’s growth. One classic example is planting carrots and dill together. Dill can attract pests that are harmful to carrots and may also inhibit their growth. Similarly, planting onions or garlic near beans can stunt the growth of the beans. This principle of companion planting ensures that one crop does not hinder the growth of another, much like how certain software components must be carefully designed to work harmoniously in a larger system.

    In the context of software architecture, consider a scenario where one part of the system uses a relational database for transaction-heavy operations, requiring ACID (Atomicity, Consistency, Isolation, Durability) properties, while another part depends on a NoSQL database optimized for eventual consistency and scalable performance. These two components might fail to work harmoniously because the transactional integrity expected by the relational database might be compromised by the eventual consistency model of the NoSQL database, leading to data integrity issues.

    Additionally, the concept of sacrificial planting can be employed to protect more valuable crops. By planting a less precious crop that attracts pests away from the main crop, you can reduce the damage to the latter. For instance, planting radishes near cucumbers can lure pests away from the cucumbers, allowing them to thrive. This strategy is akin to deploying microservices in software architecture to handle less critical tasks, thereby safeguarding the core functionalities of the system.

    Art – pastels and water colour and using Chat GPT AI as a guide

    I tried out using pastels in March. Pastels are maybe not my favourite art medium; I find it harder than water colours.  I will keep practicing alongside water colours as that’s the only way to improve and learn.  I’m going to give acrylic paints a try in May and then oil. Below the two pastels done in March.

    Water colour

    Below is my first try at a woodland watercolour scene. I realized trees are not easy, I’ve been using a combination of books and now I’m starting to us ChatGPT (AI) to guide me as well.  My thoughts on AI in this field are that it is great for helping with the basics and I am sure it can help explain techniques. My best learning experience so far is a combination of AI, books and human interaction.  I need to learn to slow down and take my time, I tend to complete a picture in about 2 hours.

    Here’s a Microsoft co-pilot (AI) explanation of how to paint trees with watercolour. Painting trees with watercolour involves a few key techniques:

    First, start with a light sketch to outline the shape and position of the trees. Next, begin with a wash of light green or brown to establish the basic form. Use a wet-on-wet technique to blend colours and create a natural gradient.
    
    As you build up layers, use a dry brush to add texture and detail to the bark and foliage. Remember to vary your brush strokes to mimic the organic patterns found in nature. Finally, add shadows and highlights to give depth and dimension to your trees.
    
    With practice and patience, you can create beautiful and realistic trees in your watercolour paintings.

    Chat GPT generated art

    Using ChatGPT prompt: “generate a woodland image using water colour techniques”, generates the image

    Extending the AI chat with the prompt – “add blue bell flowers to the image”, the result is

    And here is the Chat GPT instructions

    Prompt: Provide step by step instructions for how to create this image


    Here’s a step-by-step guide to creating a watercolour woodland scene with bluebells, like the image you requested:
    
    ### 🎨 **Materials Needed**
    - Watercolor paper (cold press, 140 lb)
    - Watercolor paints (greens, blues, browns, yellows)- Brushes (round brushes in various sizes, flat brush for washes)
    - Pencil and eraser (for light sketching)
    - Water, mixing palette, paper towel
    
    ### 🖼️ **Step-by-Step Instructions**
    
    #### **1. Light Sketch (Optional but Helpful)**
    - Lightly sketch the basic layout:
      - A curving path leading into the distance (use perspective).
      - Vertical lines for tree trunks.
      - Rough zones where the bluebells will go (foreground and midground).
    
    #### **2. Background Wash**
    - **Sky & Atmosphere:**
    
      - Wet the top half of the paper.
      - Drop in diluted blues and a touch of green to suggest distant foliage and mist.
      - Keep it light and let it fade as it comes downward.
    
    #### **3. Trees in the Distance**
    
    - Use a mix of blue-green with more water to paint faint trees that recede into the background.
    - Keep edges soft using the wet-on-wet technique.
    - Let this layer dry fully.
    
    #### **4. Midground Trees and Foliage**
    
    - Mix greens (sap green + ultramarine or lemon yellow) and start adding trees with more defined shapes.
    - Use a drier brush for tree trunks to add slight texture.
    - Add some canopy foliage by dabbing with a sponge or brush tip, letting light peek through.
    
    #### **5. Foreground Trees and Path**
    - Use darker, richer colors for the trees closer to the viewer (burnt sienna + ultramarine for bark).
    - Paint the path using warm earth tones (yellow ochre, burnt umber), adding shadows with a touch of blue or grey.
    - Layer shadow areas where the path curves or trees cast light.
    
    #### **6. Bluebells**
    - Once the greenery is dry, mix a vibrant blue-violet (like cobalt blue + alizarin crimson).
    - Use a small round brush to dab clusters of tiny bell shapes in the grass area.
    - Vary tones to show depth: lighter shades in the distance, bolder in the foreground.
    - Add dark green leaves and stems around them for contrast.
    
    #### **7. Final Details**
    - Deepen shadows using a bluish-grey to enhance realism.
    - Dry brush texture on tree bark or fallen leaves.
    - Soften any hard edges with a damp brush if needed to keep the watercolor feel.
    - Optional: Add tiny details like birds, butterflies, or light rays.
    
    #### **8. Let Dry & Evaluate**
    - Step back and check for balance in composition and color.
    - Make final touches only if necessary—watercolor is best when it’s loose and expressive.

    https://chatgpt.com/share/67fe2c72-164c-8012-a613-e504e5690f72

    The AI image cost about $0.10 to produce. Not quite as enjoyable as actually painting my own image, it is another form of creativity though and does enable fast experimentation with different styles. The same principle being applied in software development – creating MVPs in days rather than weeks or even months.

    The next posts

    • Restoring the cosmetics of a fireplace (pointing bricks and new tiles), catch-up post for March.
    • Using AI to translate instructions from a retro board game into a computer game.  I want to see if this can be done in Python and Go and then scale this to a multi player solution.
    • Building Financial Systems – specific solutions vs abstract extensible platform solutions. This is likely to be a series of posts, covering some of my experience of building financial software solutions for collateral management, video accounting treatments, FX trading, anti-money laundering and food delivery.
  • This post is a thought stream comparing the building of a “temporary” shed to MVP software development. Yes, an odd comparison. For those not in tech, MVP means Minimum Viable Product. I originally started the shed as a temporary replacement. By the time I finished the build, I am now hoping it will last a little longer than my planned 1-2 years.

    The aim when replacing the old shed was to keep the costs to a minimum and have as little impact to the environment as possible. I also needed it quickly.

    How did I start?
    I gathered materials from the garden, such as timber from the old garage roof, which was replaced last year, and cement blocks from an old wall. I sketched a rough plan and started building without a detailed diagram. I did also did some research on shed construction to ensure I understood how commercial sheds were constructed.

    The build. 
    The first step was to clear brambles from the area, about a 3.5 x 4 metres area. I then fixed in place concrete blocks, ensuring a solid base, but no new concrete just yet. The main timbers were 18 cm x 5 cm. This provided the foundations.

    The next step was the frame. I wanted enough height to be able to comfortably stand and to also build a platform inside, so it’s 2.4 meters at the highest point to stay within UK planning rules.

    Sticking to the theme of MVP and moving quickly to complete the project, I focused on the verticals and horizontals, would everything be square. I used fence post cement to fix in place the 4 corner uprights. Some of the moving fast without a detailed diagram, and no previous experience did result in errors which became apparent later. 

    At this stage I had the frame for the walls and roof, and still no real idea how successful this would be.  My wife (Karen) was beginning to think this might really be a thing.  I was also more confident as the structure was very solid. I tested it by pushing the sides with all my weight. But now I needed to spend money for a roof and walls!

    The walls – and using a nail gun (management intervention)
    I decided to go with feather edge boarding as this is closest to traditional barns in Norfolk (UK), and that cost me £600, ouch!  I was also going to attach these using hammer and nails.  I soon decided a nail gun would be faster.  Borrowing the nail gun, I started work at pace again, but was halted by management (the wife), I needed safety equipment, goggles and ear defenders (more expense – £40). Work began again!

    One thing that really helped was building a jig so that the spacing for the boards was consistent. I used this YouTube video here. But that still didn’t save me from a couple of problems with even spacing for the doors.

    The roof – help needed! It’s a 2-person job.
    More costs, OSB boards required for the roof. Couldn’t do this one by myself, so management team (wife) had to help.  It was also at this stage that I realised the frame was not square. The back was wider than the front by 10 cm.  That caused me to scatch my head, as I felt my measurements and use of a set square would prevent this. Unlike software, there was no quick fix for the walls, I couldn’t quickly tweak things. So, I used the circular saw to trim the roof to run in line with the walls.

    Then it was a case of felting it. Messy job – bitumen is sticky and messy.  Felt for the roof is also expensive, another £120 spent.

    The doors. Now it gets complicated and needs a little more thinking.
    To have doors that sit straight and open properly you need the frame to be square. Mine wasn’t. No problem, add a bit more wood to square off the entrance.  Still following the MVP software approach and it’s working – who needs architecture diagrams!

    However, building doors needs research.  Thank you to YouTube handymen videos (I used easy garden gates) .  I learnt some new wood working skills, how to make half lap joints with a circular saw.

    And to quote Jeremy Clarkson on “Clarkson’s Farm” – I made a thing! Well actually, two shed doors. One minor issue was even spacing of the boards on one of the doors which I only noticed after they were all nailed on. They were not even and so this gave me a very traditional old barn look, nothing was perfectly straight.

    The shed!  No windows, no thrills, but very practical.

    Costs!
    I’m pleased with the results of the project. I made a lot of use of material that was lying around, i.e. paving slabs for the floor and timber of the structure.

    Effort and duration. I didn’t work on this every day, total time spent on it was probably 8 days, working 8 hours a day. Total duration was one month, I started the project on the 12-Feb and finished on the 8-March. With the total cost being about £800, at a guess the equivalent, maybe more extravagant, with windows, shed would cost £2-3k. This meant I was pleased with the overall cost.

    How does building a shed compare to building software?
    If I were to do this again, I would pay more attention to the saying “measure twice, cut once”, so that I didn’t have to figure out how to correct minor, but annoying issues, e.g. front and back for the shed being different widths.  I was probably lucky; the cost of correcting issues was not costly. Like the 450-year-old house we live in, the shed was built on compacted earth, so I am optimistic on stability of the walls, but it will be interesting to find out in a year or two if lack of concrete foundations will be the undoing of the project. I’m working on the basis that I have stability because of the concrete blocks supporting the walls, and cement used for the posts on each corner.

    Anyway, reflecting on developing software and building a shed:

    • Design & Planning.  In software engineering, and specifically for start=ups, over thinking the design and spending weeks in detailed planning can be wasteful, but it’s important to keep in mind that architecture errors can be very costly in production. So, getting the right balance between time to market and having just enough design thinking is crucial.

      Also, in fast paced, competitive environments, perfection is the enemy of progress.  I had a similar dilemma with my shed, I needed to build something relatively quickly and within a budget.   I spent just enough time sketching an outline design and did research into how to build sheds using YouTube as well as visiting garden centres. 

      If I were building a new software system I would do just the same – do enough research to build confidence in what will make a cost-effective solution for the problem. It is only when you start and begin building do you really learn.
    • Construction. Building the shed was physical and therapeutic. There was a sense of achievement from doing something myself. 

      I learnt something from building the shed that applies to tech leadership, don’t be a hands-off leader, even when leading a group of over 100 people. Over the past few years I somewhat lost touch with the engineering aspect of software development. I could still design a system, but could I code it. Why is doing the code important? It keeps you in touch with the challenges faced by those you lead. It also gives you a greater sense of achievement. Make time for yourself and not just the teams you lead.

      As a software development leader, I achieved outcomes through others by providing guidance and direction through goals and objectives – mentoring and coaching also played an important part of this. Without coaching and mentoring you are not setting others up for success.

      When building software systems I applied a lot of “trust and verify” – empower and trust people to do the right thing, but ask challenging questions to verify. This compliments mentoring and coaching.

      When I go back to the tech world, I plan to ensure I spend more time doing and not just leading.
    • Testing. Unlike software, you can’t really test a shed. You either build something that works, or it doesn’t. Errors with software can more easily be changed.  That said getting something wrong in software is still expensive, especially when in production and financial loss is involved.

      When building the shed, the extent of my testing was pushing on the sides of shed to see if there was any movement, I did this when there was a just a frame, then when there were walls and finally with the roof attached.

      However, I did find that you can still make adjustments and tweaks to a shed to improve it, or correct errors. You just have to problem solve. The main similarities between software and construction are that you can apply lessons learnt to the next project.  I’ll be far more confident in my next garden/house projects.

    Adapting and improving with each iteration of what you do is important.  If you don’t commit to doing it, you will never learn!

    The next posts

    The next few posts will focus upon the house and garden, but I am planning to do some posts on developing software systems – finance, fraud prevention and customer care.

    The next few will be:

    • Building a paddock gate.
    • Restoring the cosmetics of a fireplace (pointing bricks and new tiles)
    • Vegetable garden – preparation and seeding
  • I’m going to post updates about what I am doing and my thoughts on software development trends, and insights on leadership, software engineering and taking a break from work. With a focus on my experience of moving to the countryside from a city.

    Taking a break from work

    Last year, I discussed with the Deliveroo leadership team the possibility of stepping away from my role at Deliveroo. We explored part-time and other options, ultimately deciding that my last day would be 29 April 2025. Working at Deliveroo for five years has been an incredible experience, allowing me to develop my adaptability and resilience in a intense and exciting environment. It was truly an experience I do not regret, but I felt the need to pursue something new and step out of my comfort zone. Therefore, I decided to take a break from work and dedicate myself to activities I had been neglecting.

     What were these things (goals)?

    • I’ve done the food delivery, now it’s time to grow that food.  I was fortunate to move to Norfolk in 2021 with 3 acres of land. I wanted to find out how self-sufficient I could become.  In theory the first easy step is to grow vegetables and fruit. I already had some success with potatoes and am fortunate to have an orchard.  Write a blog or book. This article is the start of this goal.  I’ll post more each month.
    • Brew my own beer. Lucky me, the village has the Grain Brewery as my local tap house and brewery.  I meant to start something in March, aim is to now do this in April (assuming I have time, as it’s seed sowing time).
    • Be musical.  Learn to play the piano or guitar.  Anyone that knows me will realize this is very ambition. I have no musical talent, so this will certainly challenge me.
    • Develop myself. While at Deliveroo I worked with some very talented data science, AI and software engineers and I missed being hands on. So, I am going to go back to doing some self-studying.
    • Arts and crafts. The last time I did more than a quick sketch was 35 years ago. I plan to take up art as a hobby and learn to use water, acrylic and oil paints (I’ve already started with a local art group).  This is my mindfulness and relaxation goal

    How am I achieving this?

    I’ve saved enough to take a year off, and that is what I will do.

     What have I done in February and March.

    I was fortunate to take time off over from in February, March and April.  I have been really surprised by how busy I became.  My family thought I would get bored after a month!

    • February. I began clearing the hedges in a paddock. The brambles were tough and scratchy, and their growth was deeper than I had expected. I cleared about 5 to 10 meters of depth, covering approximately 500 square meters. I then started demolishing some of the old sheds that were falling down.  Then built new ones. Another post will follow on how I went about building a bespoke shed and what I learnt. Applying software delivery techniques when building something (success and failures).
    • March.  Preparing the land for vegetables.  Pointing a fireplace, building gates and painting a bath, yes, you read that correctly, I painted a bath, gold!  I’ll do another post on each of these topics.

     Mindfulness….. One thing I realised over the past few months is that I spend more time listening and watching.  I listen to and watch wildlife more. Spring is a great time for this. I’m also fortunate to have deer living in the woodlands by my house,  waking to look out of the window at deer, rabbits, pheasants walking across the fields is a wonderful experience.  You don’t have to live in the country, or give up work, to experience this, just take a holiday in the UK.  Where I live there are lots of farms that have shepherds huts (Friends FarmChoo Choo Moo) and Airbnb homes (Tranquil Cottage, Sunset Barn, The Dove Inn).  The Grain Brewery is open Friday and Saturday until 7pm and the bar in Alburgh (Village Hall) is open every Friday until late ( I do some shifts behind the bar).

    What am I looking forward to in April.

    Working on the vegetable garden and doing some focused study time. I should have really been dedicating one day a week to study and writing blogs. This just didn’t happen.