Joshua Barretto

Plymouth, UK · joshu-remove-a@jsbarretto.com

About Me

My name is Joshua. I’m a 22 year-old software developer with a degree in Computer Science living in Bristol, UK. I have a strong interest in software safety, system design and programming language theory. I’m proficient in several programming languages and have experience working on large codebases.

What I’ve Done

I have experience working in the maritime industry writing software for unmanned underwater vehicles. I maintain and contribute to a variety of open source projects. My personal projects are all released under open-source licenses and tend to revolve around topics such as programming language theory, embedded systems, software architecture and rendering. Find out more.

Services

I’m available for freelance work. If you’re interested in hiring me, you can contact me here.

Also, I colourise monochrome photographs in my spare time.

Skills

Languages
  • C++
  • C
  • Rust
  • x86 Assembly
  • Python
  • Java
  • C#
  • JavaScript
  • Zig
  • Vala
Operating Systems & Tools
  • Linux
  • Git
  • BASH
  • CMake
  • Make
Technologies
  • x86
  • OpenGL
  • GLSL
  • POSIX
  • HTML/CSS
  • SFML
  • GTK
  • MBed
Platform Administration
  • Wordpress

Tupai

Operating system

Tupai is a multitasking operating system written in Rust targeting i386, amd64 and armv7 architectures. It focusses on safety, stability, portability and correctness. It is not designed with a specific application in mind, but rather to act as a base for future experiments in software safety. Tupai does not conform to an existing operating system API (i.e: POSIX) but instead aims to implement a new and innovative design.

You can find more information about Tupai here.

Tupai

Bread

Functional programming language

Bread is a statically-typed functional programming language with a compiler written in Rust. It features Hindley-Milner type inference, complex types, currying, a bytecode compiler backend, and beautiful error messages.

def len of (List Num) -> Num = l ->
	if l = []
	then 0
	else 1 + len(list:tail)

You can find out more about Bread and see more example code here

Forge

Dynamically-typed imperative programming language

Forge is a dynamically-typed programming language inspired by JavaScript, Rust, and Python. It aspires to be ‘JavaScript, but less shit’.

var basket = ["apple", "banana", "pineapple", "kiwi"];

var display = |item| {
	print("I have a" + item);
};

for item in basket {
	display(item);
}

You can try Forge online here.

You can find out more about Forge here.

Forge also has an (incomplete) successor, Leon

Euc

Software rendering library

Euc is a versatile, simple to use library that allows 3D rendering on the CPU. It has a portable, compact design that makes it perfect for prototyping ideas, unit testing, or even simple realtime applications.

You can find out more about Euc here.

Funki Crab

Optimising BrainFuck compiler

Funki Crab is an optimising Brainfuck compiler written in Rust. It’s capable of a large number of Brainfuck optimisation techniques and produces a significant speedup compared to naive compilation.

I created Funki Crab as an exercise in learning about compiler development, Immediate Representation (IR) techniques and optimisation. Brainfuck struck me as a sensible language for such a project given its simplicity, Turing-completeness and wealth of potential optimisations.

Funki Crab is an anagram of Brainfuck. ‘Crab’ is a reference to Ferris, the Rust mascot.

You can find out more about Funki Crab here.

Vulcan

Veloren

Open-world, open-source voxel RPG and engine

Veloren is a multiplayer voxel RPG written in Rust. Veloren takes inspiration from games such as Cube World, Minecraft and Dwarf Fortress. The game is currently under heavy development, but is playable. At the moment you can explore the procedurally generated world in multiplayer mode and use basic text chat.

You can find out more about Veloren here.

Emul8

CHIP-8 emulator

Emul8 is an emulator for the CHIP-8 game system. It can run a variety of CHIP-8 ROMs including pong, space invaders, snake and tetris. Emul8 supports various debugging features such as instruction disassembly and step-through execution.

You can find out more about Emul8 here.

Emul8or running Pong

Experience

Software Developer

Cambium Networks

Developing an in-house file store and administration web application with frontend and backend web technology.

June 2018 - September 2018

Software Developer

MSubs Ltd

Designing and developing unmanned underwater vehicle control systems, guidance and navigation systems, graphical control interfaces, embedded network synchronisation and more.

June 2013 - September 2017

Education

University of Plymouth

Bachelor of Science
Computer Science
2015 - 2018

Devonport High School for Boys

A-Levels
Computer Science, Mathematics and Economics.
2013 - 2015

Contact

Email

joshua [at] jsbarretto [dot] com

Facebook Messenger

jsbarretto

Discord

zesterer#3131

Contact Me Now

Alternatively, you can contact me here

Based on the hugo-resume theme by Eddie Webb. Nifty tech tag lists from Wouter Beeftink | Page content generated from commit: 8374adf