Welcome to Willmo3's Website!

picture of me!

πŸ‘“ About Me

Hello! I'm Will Morris, a CS student at James Madison University.

I enjoy the finer things in life, like Minecraft, Freeciv, and Legos.

My high level research objective is to design programming tools that abstract the complexity of computer systems and enable developers to write high-performance code. To this end, I seek to design new parallel programming languages, compiler analyses, and verification techniques that detect race conditions or even automatically parallelize code!

Previously, I was a member of Carnegie Mellon University's REUSE program, where I designed new tools to enable software robustness analysis in the TLA+ specification language. Now I'm applying for Ph.D. programs in computer science.

Research

Chris Johnson helps students at James Madison University's summer refugee camp.

Dr. Chris Johnson's Twoville is an education programming language for generating and visualizing SVG shapes!

I examine avenues for performance improvements in Twoville, like upgrading its interpreter and web runtime.

An example state machine, similar to the LTSes used in my robustness research.

At CMU's SoDA lab, I formalized and prototyped software robustness analysis in the TLA+ modeling language.

The Frontier supercomputer

As a research capstone, I evaluated the effectiveness of LLNL's RAJA library, designed for large (~1mil LOC+) codebases, at porting small (~1k LOC) end-user programs across consumer-grade architectures.

Projects

The beautiful mountains of Williserver!

I run the Williserver Minecraft server, along with a suite of accompanying plugins and scripts.

As an aside, this website is named for the eponymous Minecraft server!

Freeciv gameplay

Over Covid, I started playing a Civ2 clone called Freeciv with my friends.

Now I've got a whole collection of Freeciv utilities called "Beeciv"!

A minimum energy seam through a canyon.

HPCarver is a C++ implementation of seam carving, a dynamic programming algorithm for image resizing.

This artifact compares LLNL's RAJA performance portability with other parallelization libraries, such as CUDA and OpenMP.

An example fault lattice

FaultCrosser is a tool for automatically calculating the robustness of fault-centered TLA+ libraries.

It reports the maximal combinations of faults a TLA+ model is robust against!

The TLA+ Logo

RobustNet models synchronous, partially synchronous, and asynchronous network channels in TLA+.

It includes faults for synchronous networks that are compatible with FaultCrosser!

A Huffman tree

Over winter break, I built a Huffman compressor in Rust. It was a bit of a journey!

A photo of a Minecraft world with a red worldborder, from the Worldborder plugin.

Tiers is a Minecraft plugin for dynamically expanding world borders in 'tiers'.

The Lego Logo

I built a tool to select a personal Lego set based on your name.

A simple makefile

When I was first learning C++, I got tired of "making" tiny makefiles all the time.

So I built FirstMake, a tool that does it for you!