Welcome

Hi, I’m Rob Spencer, a visually impaired software engineer building high-performance systems. I specialize in networking, C++, and modern web development. Check out my projects, experience, and skills below.

Experience

Research Software Developer. University of Surrey

Developed high-performance networking components in C++20 and Boost.Asio, for a custom 5G core network.

  • Boost::asio HTTP/2 server
  • NGAP protocol
  • NAS protocol
  • 5G network functions including AMF, AUSF, UDM, UDR

Skills

  • C++20, Boost.Asio, multithreading
  • HTTP/2, nghttp2, WebSockets
  • 5G Core: PFCP, NGAP, SMF, AMF
  • Git, CI/CD, testing frameworks
  • VitePress, GitHub Pages, Markdown

Research

PhD

Understanding Configuration History in Domestic Networks

Supervisors: Professor Tom Rodden and Dr Richard Mortier

Description

Networks are now a common feature in homes. Although networks are commonplace, householders still face difficulty in maintaining their networks.

Previous research has shown that often network management is the responsibility of one householder. There is often difficulty understanding the components in a network and how the network is configured for householders who do not manage the network. Where householders were asked to draw their network, the level of understanding demonstrated by the details in the diagrams reflects the effect that not managing the network has on the ability to understand it.

The work presented in this thesis attempts to provide a greater degree of information about how the network evolves. Presenting network changes in a timeline was intended to make it easier for others to manage their network when necessary.

Networks have also increased in complexity, both in terms of the number of devices, but the types of devices that are connected. Managing devices when changes occur can also be a challenge, so I attempted to address this by creating a new network when changes were made to configuration. By creating a new network, devices are not disconnected, and they can be reconfigured individually, and potentially at different times.

Research Interests

  • HCI
  • UX
  • Networking
  • Undo Methods

Homework

The homework project built a router based on user studies ‘in the wild’. The homework router uses OpenVSwitch and NOX to provide novel interaction methods for home routers.

My contribution to the project was a notification system. Source code for the notification system is available in Github in two projects, a Google App Engine app and a server running on the router.

PhD Notification system

The router I built for my PhD is based on the Homework Router. The App Engine App required additional features to support the features I created for my PhD. The source code for this is forked from the original.

Network Manager

Network Manager is a set of router scripts and an Android application which displays network status information. It is possible to see how much bandwidth each device on the network is using, and what websites were visited on each device. It was developed for my BSc dissertation.