<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title/><link>https://gleiria.github.io/</link><description>Recent content on</description><generator>Hugo -- gohugo.io</generator><language>en-gb</language><lastBuildDate>Sat, 22 Aug 2026 07:15:06 +0100</lastBuildDate><atom:link href="https://gleiria.github.io/index.xml" rel="self" type="application/rss+xml"/><item><title>"Hello world" version of an AI-data-analyst</title><link>https://gleiria.github.io/blog/pydantic/</link><pubDate>Mon, 10 Aug 2026 18:36:58 +0100</pubDate><author>Gonçalo Leiria</author><guid>https://gleiria.github.io/blog/pydantic/</guid><description>&lt;p>I am developing an LLM-powered data analyst for a fictional SaaS company. The idea is that a user can ask questions about the business in natural language, and the agent can use the database to answer them if needed. I am using Pydantic-AI to connect the agent to Google&amp;rsquo;s Gemini models and Django to handle the application and data layer.&lt;/p>
&lt;p>&lt;strong>The SaaS Company&lt;/strong>&lt;/p>
&lt;p>I created a fictional SaaS company and generated synthetic data for it. The goal is not to create a perfect simulation of a real business but to create a small coherent world that I can use to explore the AI-agent architecture and that the agent can reason about. As the project evolves, I will gradually add more data and relationships. This is literally just me putting the pieces together.&lt;/p></description></item><item><title>Django + Data Pipeline Deployment</title><link>https://gleiria.github.io/blog/django_integration/</link><pubDate>Wed, 22 Jul 2026 14:39:50 +0100</pubDate><author>Gonçalo Leiria</author><guid>https://gleiria.github.io/blog/django_integration/</guid><description>&lt;h2 id="goal-of-the-project">Goal of the project&lt;/h2>
&lt;p>In my previous article I described how I built and deployed a Dockerised data pipeline to Microsoft Azure. Every day, Azure Data Factory orchestrates the execution of a container that collects weather data from the OpenWeather API and stores it as a Parquet file in Azure Blob Storage.&lt;/p>
&lt;p>The next step was to build a lightweight Django application that reads the latest dataset directly from Blob Storage and presents it through an interactive Plotly dashboard.&lt;/p></description></item><item><title>Blob Storage vs Azure Data Lake Storage Gen2</title><link>https://gleiria.github.io/blog/blob_storage_vs_adlsgen2/</link><pubDate>Mon, 20 Jul 2026 07:03:06 +0100</pubDate><author>Gonçalo Leiria</author><guid>https://gleiria.github.io/blog/blob_storage_vs_adlsgen2/</guid><description>&lt;p>Recently, while deploying a &lt;a href="https://github.com/gleiria/data-engineering-pipeline">data engineering project&lt;/a> to Azure, I found myself asking a question: &lt;strong>when should I use Blob Storage and when should I use Azure Data Lake Storage Gen2 (ADLS Gen2)?&lt;/strong> Here I share how things clicked for me.&lt;/p>
&lt;h2 id="blob-storage">Blob Storage&lt;/h2>
&lt;p>Blob stands for &lt;strong>Binary Large Object&lt;/strong>. A blob is simply a sequence of bytes. From the perspective of Azure Blob Storage, a JPEG image, a PDF, an MP4 video, a Parquet dataset, a CSV, or JSON file are all treated exactly the same: they are just blobs. Blob Storage is therefore Microsoft&amp;rsquo;s object storage service. It provides a highly scalable and inexpensive way of storing files in the cloud without caring about their internal structure.&lt;/p></description></item><item><title>A Simple Azure Deployment</title><link>https://gleiria.github.io/blog/deployment/</link><pubDate>Thu, 16 Jul 2026 14:30:53 +0100</pubDate><author>Gonçalo Leiria</author><guid>https://gleiria.github.io/blog/deployment/</guid><description>&lt;p>This project started as a take-home assignment for a data engineering role. After, as part of my learning journey into cloud computing, and after completing Azure AZ-900 and DP-900 certifications, I wanted to get hands-on practice so I deployed the pipeline to Microsoft Azure. Here, I share the main steps I took to make that happen.&lt;/p>
&lt;p>A hypothetical team of data scientists asks me, as part of the data engineering team, to a build Dockerised data pipeline in Python to collect daily meteorological data from the publicly available OpenWeather API (&lt;a href="https://openweathermap.org/)">https://openweathermap.org/)&lt;/a>. The GitHub repository for the project can be found &lt;a href="https://github.com/gleiria/data-engineering-pipeline">here&lt;/a>. There you can find a detailed README describing the project&amp;rsquo;s architecture, design decisions, implementation, and instructions on how to run it locally. This post focuses exclusively on the deployment to Microsoft Azure.&lt;/p></description></item><item><title>Distributed Computing for Health Data - 10 - Kafka Basic Usage</title><link>https://gleiria.github.io/blog/distributed-computing-course/distributed_computing_for_health_data_10/</link><pubDate>Fri, 30 Jan 2026 06:29:24 +0000</pubDate><author>Gonçalo Leiria</author><guid>https://gleiria.github.io/blog/distributed-computing-course/distributed_computing_for_health_data_10/</guid><description>&lt;p>These are my personal notes related to the course Distributed Computing for Health Data provided by Health Data Research UK.
I use this space to consolidate concepts and revisit material over time.&lt;/p>
&lt;h3 id="lesson-10---kafka-basic-usage">Lesson 10 - Kafka Basic Usage&lt;/h3>
&lt;p>In the first half of the lesson, they follow Kafkas&amp;rsquo;s &lt;a href="https://kafka.apache.org/quickstart/">quickstart tutorial&lt;/a> so I won&amp;rsquo;t be copying and pasting it here. Instead, since I had the need to simplify core concepts and build a mental model of how Kafka actually works I slightly deviated from the the first half of the lesson.&lt;/p></description></item><item><title>Distributed Computing for Health Data - 9 - Kafka</title><link>https://gleiria.github.io/blog/distributed-computing-course/distributed_computing_for_health_data_9/</link><pubDate>Wed, 28 Jan 2026 14:50:29 +0000</pubDate><author>Gonçalo Leiria</author><guid>https://gleiria.github.io/blog/distributed-computing-course/distributed_computing_for_health_data_9/</guid><description>&lt;p>These are my personal notes related to the course Distributed Computing for Health Data provided by Health Data Research UK.
I use this space to consolidate concepts and revisit material over time.&lt;/p>
&lt;h3 id="lesson-9---kafka">Lesson 9 - Kafka&lt;/h3>
&lt;p>So far we spent the course learning how to process data at rest. Kafka is about &lt;strong>data in motion&lt;/strong>. Here we look into Kafka&amp;rsquo;s architecture and interface.&lt;/p>
&lt;hr>
&lt;h2 id="concepts">Concepts&lt;/h2>
&lt;p>&lt;strong>Event Streaming - characteristics&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>Event:&lt;/strong> an immutable object or fact of interest&lt;/p></description></item><item><title>Distributed Computing for Health Data - 8 - Spark Basic Usage</title><link>https://gleiria.github.io/blog/distributed-computing-course/distributed_computing_for_health_data_8/</link><pubDate>Thu, 22 Jan 2026 07:42:49 +0000</pubDate><author>Gonçalo Leiria</author><guid>https://gleiria.github.io/blog/distributed-computing-course/distributed_computing_for_health_data_8/</guid><description>&lt;p>These are my personal notes related to the course Distributed Computing for Health Data provided by Health Data Research UK.
I use this space to consolidate concepts and revisit material over time.&lt;/p>
&lt;h3 id="lesson-8---spark-basic-usage">Lesson 8 - Spark Basic Usage&lt;/h3>
&lt;p>In this lesson I follow the main core ideas of the course, but I deviate a bit from the way it is taught. The instructors use a pre-written PySpark Jupyter notebook and execute the workflow cell by cell. I prefer to work from VScode + terminal so created the following file strucutre:&lt;/p></description></item><item><title>Distributed Computing for Health Data - 7 - Spark SQL and DataFrames</title><link>https://gleiria.github.io/blog/distributed-computing-course/distributed_computing_for_health_data_7/</link><pubDate>Tue, 20 Jan 2026 18:09:47 +0000</pubDate><author>Gonçalo Leiria</author><guid>https://gleiria.github.io/blog/distributed-computing-course/distributed_computing_for_health_data_7/</guid><description>&lt;p>These are my personal notes related to the course Distributed Computing for Health Data provided by Health Data Research UK.
I use this space to consolidate concepts and revisit material over time.&lt;/p>
&lt;h3 id="lesson-7---spark-sql-and-dataframes">Lesson 7 - Spark SQL and DataFrames&lt;/h3>
&lt;p>In this lesson, we advance to higher level interfaces - SparkSQL and DataFrames - which allow for structured data manipulation in Spark. Remember that structured data is data that fits into a table. So structured data manipulation means filtering, selecting, grouping, joining, (etc) and aggregating data that is organised in rows and columns. Also, Spark turns every input data (for example JSON) into a DataFrame so it can optimises.&lt;/p></description></item><item><title>Distributed Computing for Health Data - 6 - Spark and Spark Components</title><link>https://gleiria.github.io/blog/distributed-computing-course/distributed_computing_for_health_data_6/</link><pubDate>Sun, 18 Jan 2026 10:08:56 +0000</pubDate><author>Gonçalo Leiria</author><guid>https://gleiria.github.io/blog/distributed-computing-course/distributed_computing_for_health_data_6/</guid><description>&lt;p>These are my personal notes related to the course Distributed Computing for Health Data provided by Health Data Research UK.
I use this space to consolidate concepts and revisit material over time.&lt;/p>
&lt;h3 id="lesson-6---spark-and-spark-components">Lesson 6 - Spark and Spark Components&lt;/h3>
&lt;p>&lt;strong>What is Spark&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Software platform for data engineering, data science, and machine learninng&lt;/li>
&lt;li>Designed to be fast and general purpose&lt;/li>
&lt;li>Multi-language: Python, R, SQL, Java, Scala.&lt;/li>
&lt;/ul>
&lt;hr>
&lt;p>&lt;strong>Spark vs Hadoop&lt;/strong>&lt;/p>
&lt;p>&lt;a href="https://gleiria.github.io/blog/distributed-computing-course/distributed_computing_for_health_data_5/#dist-comp-rationale">See paragraph relevant section on lesson 5&lt;/a>&lt;/p></description></item><item><title>Distributed Computing for Health Data - 5 - Hadoop Basic Usage</title><link>https://gleiria.github.io/blog/distributed-computing-course/distributed_computing_for_health_data_5/</link><pubDate>Tue, 13 Jan 2026 07:25:55 +0000</pubDate><author>Gonçalo Leiria</author><guid>https://gleiria.github.io/blog/distributed-computing-course/distributed_computing_for_health_data_5/</guid><description>&lt;p>These are my personal notes related to the course Distributed Computing for Health Data provided by Health Data Research UK.
I use this space to consolidate concepts and revisit material over time.&lt;/p>
&lt;h3 id="lesson-5---hadoop-basic-usage">Lesson 5 - Hadoop Basic Usage&lt;/h3>
&lt;p>In this lesson there is a lot of information on different options for installing Hadoop, how to navigate the GUI, and how to connect to a remote master node via SSH. Here, I’ll simply put down some notes that I think are important to retain and keep in mind. In the next lessons there will be more hands-on data manipulation using Spark and Hadoop.&lt;/p></description></item><item><title>Distributed Computing for Health Data - 4 - Hadoop</title><link>https://gleiria.github.io/blog/distributed-computing-course/distributed_computing_for_health_data_4/</link><pubDate>Mon, 12 Jan 2026 06:41:44 +0000</pubDate><author>Gonçalo Leiria</author><guid>https://gleiria.github.io/blog/distributed-computing-course/distributed_computing_for_health_data_4/</guid><description>&lt;p>These are my personal notes related to the course Distributed Computing for Health Data provided by Health Data Research UK.
I use this space to consolidate concepts and revisit material over time.&lt;/p>
&lt;h3 id="lesson-4---big-data-processing-tools-hadoop">Lesson 4 - Big Data Processing Tools: Hadoop&lt;/h3>
&lt;hr>
&lt;p>&lt;strong>Hadoop&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Framework for distributed processing of large datasets&lt;/li>
&lt;li>Allows an application to scale up from a single computer to thousands of machines while implementing data distribution and fault tolerance&lt;/li>
&lt;li>Primarily intended for batch processing&lt;/li>
&lt;li>Hadoop is an &amp;rsquo;ecosystem&amp;rsquo; comprised of core and specific modules, each providing a different service&lt;/li>
&lt;li>At its core, Hadoop has a distributed file system and a distributed processing layer, HDFS and MapReduce&lt;/li>
&lt;/ul>
&lt;p>Fault tolerance is the capability to continue operating smoothly despite failures or errors in one or more components of a distributed system. This resilience is crucial for maintaining system reliability, availability, and consistency.&lt;/p></description></item><item><title>Distributed Computing for Health Data - 3 - Distributed Computing</title><link>https://gleiria.github.io/blog/distributed-computing-course/distributed_computing_for_health_data_3/</link><pubDate>Thu, 08 Jan 2026 14:05:28 +0000</pubDate><author>Gonçalo Leiria</author><guid>https://gleiria.github.io/blog/distributed-computing-course/distributed_computing_for_health_data_3/</guid><description>&lt;p>These are my personal notes related to the course Distributed Computing for Health Data provided by Health Data Research UK.
I use this space to consolidate concepts and revisit material over time.&lt;/p>
&lt;h3 id="lesson-3---distributed-computing">Lesson 3 - Distributed Computing&lt;/h3>
&lt;hr>
&lt;p>&lt;strong>Distributed Computing&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Use of autonomous networked machines (nodes) for solving a single problem&lt;/li>
&lt;li>Autonomous as each node only has access to its memory, processor and storage&lt;/li>
&lt;li>No shared memory across nodes so they communicate via messages and carrying data&lt;/li>
&lt;li>Data and processing tasks are distributed across nodes&lt;/li>
&lt;/ul>
&lt;hr>
&lt;p>&lt;strong>Data Parallelism&lt;/strong>&lt;/p></description></item><item><title>Distributed Computing for Health Data - 2 - Big Data Sources</title><link>https://gleiria.github.io/blog/distributed-computing-course/distributed_computing_for_health_data_2/</link><pubDate>Tue, 06 Jan 2026 15:03:10 +0000</pubDate><author>Gonçalo Leiria</author><guid>https://gleiria.github.io/blog/distributed-computing-course/distributed_computing_for_health_data_2/</guid><description>&lt;p>These are my personal notes related to the course Distributed Computing for Health Data provided by Health Data Research UK. I use this space to consolidate concepts and revisit material over time.&lt;/p>
&lt;h3 id="lesson-2---big-data-sources">Lesson 2 - Big Data Sources&lt;/h3>
&lt;hr>
&lt;p>&lt;strong>Data Types and Data Sources&lt;/strong>&lt;/p>
&lt;p>There are 5 data types:&lt;/p>
&lt;ul>
&lt;li>Structured (e.g. Electronic Health Records)&lt;/li>
&lt;li>Semi-structured ( e.g. EHR and vital-signs for a patien but not vital-signs for a second patient)&lt;/li>
&lt;li>Unstructured (CT scan)&lt;/li>
&lt;li>Time-series (ECG)&lt;/li>
&lt;li>Sequence data (RNA or DNA sequencing for example)&lt;/li>
&lt;/ul>
&lt;hr>
&lt;p>&lt;strong>Structured Data:&lt;/strong>&lt;/p></description></item><item><title>Distributed Computing for Health Data - 1 - Key Concepts</title><link>https://gleiria.github.io/blog/distributed-computing-course/distributed_computing_for_health_data_1/</link><pubDate>Mon, 05 Jan 2026 13:31:45 +0000</pubDate><author>Gonçalo Leiria</author><guid>https://gleiria.github.io/blog/distributed-computing-course/distributed_computing_for_health_data_1/</guid><description>&lt;p>These are my personal notes related to the course Distributed Computing for Health Data provided by Health Data Research UK.
I use this space to consolidate concepts and revisit material over time.&lt;/p>
&lt;h3 id="lesson-1---key-concepts">Lesson 1 - Key Concepts&lt;/h3>
&lt;hr>
&lt;p>&lt;strong>The 3 Vs of Big Data&lt;/strong>&lt;/p>
&lt;p>A classic way to understand big data is through the 3 Vs:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Volume&lt;/strong> - how much data we have&lt;/li>
&lt;li>&lt;strong>Velocity&lt;/strong> - how fast data is generated and needs to be processed&lt;/li>
&lt;li>&lt;strong>Variety&lt;/strong> - how many different forms the data takes&lt;/li>
&lt;/ul>
&lt;p>In healthcare, all three Vs show up at once and that’s what makes the domain both challenging and powerful.&lt;/p></description></item><item><title>Microsimulations - Digital Twins</title><link>https://gleiria.github.io/blog/microsimulations/</link><pubDate>Sat, 01 Nov 2025 11:43:42 +0000</pubDate><author>Gonçalo Leiria</author><guid>https://gleiria.github.io/blog/microsimulations/</guid><description>&lt;p>The idea of using computers to simulate real-world systems has been around for many decades. However, in recent years, with the democratisation and significant cost reductions of computational power, increased data availability, and advancements in artificial inteligence, computational simulations have reached new levels of sophistication and their applications, particularly in the healthcare care domain, are expanding very rapidly. This blog post provides a very brief overview on microsimulations and how integrating machine learning and multi-objective optimisation into these systems can help us to tackle a concrete healthcare challenge: optimising type 1 diabetes screening strategies while minimizing costs associated.&lt;/p></description></item><item><title>Genetic_algorithms</title><link>https://gleiria.github.io/posts/genetic_algorithms/</link><pubDate>Mon, 03 Mar 2025 18:17:58 +0000</pubDate><author>Gonçalo Leiria</author><guid>https://gleiria.github.io/posts/genetic_algorithms/</guid><description>&lt;p>Adding test here vdvdffdgflw;gjrelkw;gjrefklwghjnkrfngnfdlksn&lt;/p></description></item><item><title/><link>https://gleiria.github.io/contact/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>Gonçalo Leiria</author><guid>https://gleiria.github.io/contact/</guid><description>&lt;p>Please do get in touch if you have any questions or comments.&lt;/p>
&lt;p>Email: &lt;a href="mailto:gleiria.dev@outlook.com">gleiria.dev@outlook.com&lt;/a>&lt;/p></description></item><item><title/><link>https://gleiria.github.io/home/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>Gonçalo Leiria</author><guid>https://gleiria.github.io/home/</guid><description>&lt;p>Hi, I&amp;rsquo;m Gonçalo, welcome to my personal website &amp;#x1f680;.&lt;/p>
&lt;p>I&amp;rsquo;m a Data and Software Engineer at the University of Exeter in the United Kingdom. Currently, I&amp;rsquo;m working at the intersection of software engineering, the development of digital twins, and building Django web applications, with a particular focus on decision suport systems in health care. Prior to this, I have worked as a bioinformatician, mainly involded in projects using single-cell RNA sequencing data analysis to explore the underlying molecular mechanisms of health, development and disease. I am passionate about software engineering, data engineering, and continuous learning. I use this website as a place to document things I am learning and interested in.&lt;/p></description></item></channel></rss>