This site is under active development. Mobile experience is currently not optimised.
Picture of Yeyao taken in front of The Bayes Centre

Hey, I'm Yeyao

Hi there! I'm Yeyao, a curious Computer Science graduate from The University of Edinburgh. I'm passionate about exploring the digital world and creating innovative solutions to everyday problems. Follow me to see how my mind travels through this digital reality.

My Journey

Extraordinary Managed Services
Student Junior System Administrator
February 2021 - Present
It's thrilling as a junior tech wizard who tinkers with enterprise-grade technology while we work to maintain the stability of the organisation.

Throughout this role, I've learned the fundamentals of managing infrastructure for providing services to the public. These include management of the underlying hardware, where we build, deploy and repair servers in our datacentres. However, hardware is not the be-all and end-all, while it is important, software defines the outcome of the final project.

During my time here, we’ve had the opportunity to play with many industry-leading software. Some were great, others weren't so much. I’ve personally got to play with Cisco networking equipment, Juniper networking equipment, various virtualization hypervisors (VMWare, Hyper-V), various Linux distributions (Ubuntu, Debian, RHEL, Centos) and variety of applications (such as Nginx, Apache HTTP Server, Veeam and more!).
Skills:
  • Linux System Administration
  • Windows System Administration
  • Network Administration
  • Customer Service
  • Agile Environment
  • Scripting in various languages
Distant image of Arthur Seat.
The University of Edinburgh
BSc Computer Science
September 2019 - July 2023
At The University of Edinburgh, my four-year journey in Computer Science was a transformative experience. Guided by dedicated professors, I delved into a comprehensive curriculum covering computation, algebra, software engineering, and data science. Engaging in hands-on projects like the Informatics Large Practical and the 'Balancing Gateway traffic' honours project refined my technical expertise and problem-solving skills, providing a solid foundation for real-world applications.

Beyond the classroom, my involvement in tech and innovation initiatives at the university, including active participation in the autonomous hyperloop prototype development with the university society 'HYPED,' fuelled my passion for applying theoretical knowledge to practical challenges. Coupled with coursework in computer security, system design, and software testing during the third year, this blend of academic rigor and hands-on experience within the university setting has not only shaped my proficiency in computer science but has also instilled a mindset of continuous learning and adaptability, essential qualities for success in the ever-evolving landscape of technology.
Relevant Courses:
  • Bioinformatics
  • Calculus and its Applications
  • Compiling Techniques
  • Computer Communication and Networks
  • Computer Graphics
  • Computer Security
  • Computer Simulation
  • Foundations of Data Science
  • Fundamentals of Algebra and Calculus
  • Informatics Large Practical
  • Introduction to Algorithms and Data Structures
  • Introduction to Computation
  • Introduction to Computer Systems
  • Introduction to Databases
  • Machine Learning
  • Object-Oriented Programming
  • Principles and Design of IoT Systems
  • Professional Issues
  • Software Design and Modelling
  • Software Engineering and Professional Practice
  • Software Testing
  • System Design Project
University of Edinburgh McEwan Hall by Jake P.

My Projects

RecyclEd - UoE
RecyclEd comes from a group project during Year 3 where we were tasked with designing a robot. The task did not have predefined requirements that we had to fufill thus, we created RecyclEd. This is a small robot that had a simple task of sorting different kinds of recycling using AI image recognition.

The physical design of the prototype was simple, we used a simple moving platform where the user would place their recyclable object into our machine. It then takes a picture and using our AI model, we can determine the type of material. Finally, the moving platform moves the correct bin and drops in the object.

Our implementation used Google Cloud Platform (GCP) to host our AI model. The image taken earlier is uploaded via our secure API where it will determine the type of recycling and respond to the request. In the long term, this increases the maintainability of keeping the AI model up to date as well as lower the manufacturing costs of the physical individual machines as less compute hardware is required.

While this idea does feel similar to the light bulb recycling in IKEA, it gives people an incentive to use our machine. For example, after each recycling session, the user would be printed a coupon for a supermarket or something similar to promote the idea of recycling.
  • Google Cloud Platform
  • Electron
  • Python
  • HTML
  • CSS
Principles and Design of IoT Systems - UoE
This was part of a joint project from the third year of university. It involves creating an Android application that can track the users activities using bluetooth sensors. The idea is that the user would wear our sensors on their body (one on the chest and one in their front right pocket region) and then using their phone to determine which activity they are performing.

The mobile app is relatively simple, it connects to the sensors and does using the sensor data, calculate the activity the user is performing. We added an user system where the end users can log into the app and view their activity history and other personalised data.

We have a predefined list of activities from sitting or lying down to walking up or down stairs, totalling to 14 activities. Each activity is calculated using a custom nural network that was trained using data that we collected ourselves. The final result achieved a 98% accuracy across all 14 activities.

Additionally, we implemented a remote server hosting a larger AI model that gives higher confidence in each activity. This model was too large for us to deploy with our android application, thus the cloud was the right move for us. This in turn allowed the user to use the more performant model in the cloud while preserving an low power model when they are off the grid.
  • Android
  • Java
  • Kotlin
  • Python
  • IoT
  • Google Cloud Platform
Home Lab
I began tinkering with a home lab sometime during university where I used virtual machines for different courses as they are had different environments to compile the coursework. During that time, I was still rather unfamiliar with development environments on my local computer, so I kept them in different "machines". This began the self-hosting adventure (also r/selfhosted on Reddit contributed).

Currently, I have a highly available kubernetes cluster (K3s) running a variety of applications (including this site you are reading) as well as various VMs running applications not suitable to be on kubernetes. This is a 7 node cluster (running on virtual machines) with 3 management and 4 agents.

All of my personal projects are version controlled in a Gitea environment with Jenkins as the automation server for CI/CD. This allows for automated testing to be done and easily build container images to be deployed to the cluster.
  • Virtualization
  • Kubernetes
  • Jenkins
  • Ansible
  • PostgresSQL
  • MariaDB (mysql)
  • Bash Scripting
  • NextJS
  • S3
HYPED - Sensors Sub-module - UoE
HYPED is a student led society at the University of Edinburgh. We worked towards developing a hyperloop system that could potentially be the future of high-speed travel. A hyperloop consists of a network of near vacuum tubes that will transport passengers or cargo using magnetic levitation.

Being part of the sensors submodule in software involves the development and maintenance drivers between the pod’s sensors and the onboard computer (BeagleBone Black). The sensors use a variety of serial communication protocols (SPI, I2C, UART and GPIO) and we have custom drivers that translate them into something we can use.

We're also responsible for building the "fake" system. This system is designed to feed simulated data into the sensor drivers where other teams can test their system without needing to wire up a physical sensor or connect to the prototype pod.
  • C++
  • I2C
  • SPI
  • GPIO
  • Linux

Find me here