Selected work

The problems, the tools and the results.

Explore how I reduced network energy use, automated incident assignment and brought fragmented information into one workspace. Then inspect the public code or the story of a team-led MVP.

Professional case studies

What changed in the operation.

Each case study covers the problem, constraints, my responsibility, the approach and the result.

01

Vodafone · Atlantic NOC · Vodafone Spain

Energy usereduced through RAN automation

I reduced energy use in Vodafone Spain’s RAN.

While supporting Vodafone Spain’s RAN from the Atlantic NOC, I designed, developed and implemented the Python and ISSTAR automation. I also coordinated the team resources and planned and executed the production change requests (CRQs) needed for rollout.

Python · ISSTAR · Production rollout

Read case studyClose case study

Problem

The opportunity was to reduce RAN energy use without disrupting live network operations.

Constraints

The rollout required controlled production changes, operational checks and coordination of the people available to deliver them.

My responsibility

I led the work from concept to rollout: I designed, developed and implemented the automation, coordinated team resources and planned and executed the required CRQs.

Approach

I used Python and ISSTAR to automate the energy-saving workflow, then introduced it through controlled production changes.

Impact

The automation reduced network energy consumption and operating costs. I delivered it through planned production changes and coordinated rollout activities.

What this shows

The result depended on both the automation and the operational planning needed to deploy it safely.

02

Vodafone · Atlantic NOC · Vodafone UK

Assignmentautomated around team availability

Automated BMC Remedy ticket assignment for my team.

I built a Python workflow that read our daily Excel roster, assigned tickets to available team members, sent email alerts for higher-priority tickets and recorded ticket metrics.

Python · BMC Remedy · Excel · Ticket metrics

Read case studyClose case study

Problem

Ticket assignment was manual and had to account for who was available each day and which tickets had the highest priority.

Constraints

The workflow had to use the team’s existing Excel roster and BMC Remedy process, while alerting higher-priority work and retaining useful metrics.

My responsibility

I designed and built the workflow for my team around its existing roster and ticket process.

Approach

The Python workflow read the daily Excel roster, assigned BMC Remedy tickets to available people, sent priority alerts by email and recorded ticket metrics.

Impact

The team gained an automated assignment workflow integrated with its existing plan, with priority alerts, assignment history and operational reporting.

What this shows

Designing it around the team’s existing roster and workflow made it practical to use.

03

Vodafone · Atlantic NOC · Vodafone UK

RAN portalseveral data sources in one planning view

One workspace for fragmented RAN information.

I conceived, developed, deployed and maintained Phoenix, a PHP, Python and MySQL portal bringing multi-vendor RAN information, checks and reporting into one operational workspace.

PHP · Python · MySQL · Development through operational support

Read case studyClose case study

Problem

The RAN information used to prepare network projects was spread across several operational data sources.

Constraints

The portal had to integrate existing operational data sources and a proprietary environment. A sanitised source archive is public; production data, configuration and internal endpoints remain private.

My responsibility

I built the portal for the team I worked in, based on the information we needed to prepare network projects.

Approach

I used PHP, Python and MySQL to combine RAN information, searches, consistency checks and reporting in one web application.

Impact

The team could consult the RAN information needed for project planning in one place.

What this shows

The portal was useful because it presented the data in the same context in which the team planned network projects.

Selected authorised source archives are linked below. Production data, credentials and internal configuration remain private.

Selected professional archives

Systems I built for real operational work.

These repositories preserve authorised, sanitised code from retired workflows. They show how I translated operational problems into tools used by the teams where I worked.

Professional archive · Individual project

Incident Assignment Orchestrator (GIL)

A sanitised archive of the system I built to assign Remedy incidents and tasks from the team plan, record the distribution and alert the team to higher-priority work.

SharePoint plan · Power Automate ingestion · MySQL history · Grafana reporting

  • Python
  • Selenium
  • MySQL
  • Grafana
View repository

Professional archive · Individual project

Phoenix — RAN Operations Portal

The sanitised archive of an internal portal I owned from idea to operation, bringing fragmented multi-vendor RAN information, checks and reporting into one workspace.

Sanitised high-level system view
RAN sourcesFragmented multi-vendor information
Shared workspacePHP · Python · MySQL
Operational useSearch · consistency checks · reporting

Requirements · Full-stack development · Deployment · Operational support

  • PHP
  • Python
  • MySQL
  • JavaScript
View repository

Professional archive · Individual project

RAN Cutover Preparation Tool

A Python desktop application that automated the workbook preparation required to move 2G and 3G sites between BSCs or RNCs.

Transformation reduced from hours or days to minutes once the source data was ready

  • Python
  • pandas
  • openpyxl
  • CustomTkinter
View repository

Professional archive · Individual project

RAN Topology Change Automation

A Flask application that replaced hours of manual find-and-replace work when preparing LTE control-plane and user-plane IP changes.

Working LTE flow · Synthetic end-to-end demo · Automated tests

  • Python
  • Flask
  • Socket.IO
  • openpyxl
View repository

The archives exclude production credentials, operational data, internal endpoints and proprietary inputs. Their READMEs state the authorship, historical scope and validation boundary.

Product case study · Team project

Apollo Med Tech

ApolloMed Tech: leading and building a health-data wallet MVP.

A six-person project that grew from a degree assignment into a working web and mobile MVP, competition pitches and a business plan. I led the team and contributed directly to the Go web application, microservices and Fabric integration.

  • Go
  • Hyperledger Fabric
  • PostgreSQL
  • Kotlin Multiplatform
Read the ApolloMed Tech case study →

Current public projects

Code I continue to develop and maintain.

These independent repositories include the code, tests and documentation and are separate from the historical professional archives.

Independent project · Active development

VS Code VSIX Picker

A Python CLI I built to select and download VS Code extension packages compatible with the version and platform of air-gapped VMs.

Compatibility filtering · SHA-256 · Archive validation · CI

  • Python
  • CLI
  • VSIX
  • Testing
View repository

Independent project · Operations tooling

Proxmox Service Notes

A Bash tool that updates Proxmox service notes from configuration files. It includes a dry-run mode, input validation, HTML escaping and TLS certificate verification.

18 automated tests · ShellCheck · GitHub Actions

  • Bash
  • Proxmox
  • Testing
  • CI
View repository

Academic archive

Coursework kept separate from professional work.

These archived group projects cover web development, distributed systems, concurrency and testing. Each README identifies the contributors and records how the work was validated.

Academic archive · Group project

Distributed Experiment Monitoring Platform

A Java and PHP group project that receives sensor data through MQTT, stores it in MongoDB and MariaDB/MySQL, coordinates experiments and displays alerts in a monitoring interface.

Java build passed · PHP syntax checks passed · Original submission had no automated tests

  • Java 17
  • MQTT
  • MongoDB
  • MariaDB
View repository

Academic archive · Two-person project

Concurrent and Distributed Game

A two-person Java 17 project that uses locks, concurrent tasks and a TCP client/server protocol. The Swing interface was adapted from material supplied by the lecturer.

14 automated tests · JaCoCo · GitHub Actions

  • Java 17
  • Concurrency
  • TCP
  • Maven
View repository

Academic archive · Group project

Personalized Schedule Builder

A group Java web application that imports WebCal data, builds personalised timetables and detects timetable overlaps and room-capacity conflicts.

55 automated tests · JaCoCo · GitHub Actions

  • Java
  • Web
  • Maven
  • Testing
View repository

These university assignments are archived and read-only. Private data and course-only material were removed before publication.

BaluLabs

My personal infrastructure and automation lab.

BaluLabs documents how I run, monitor and recover self-hosted services in my Proxmox environment.