Skills

Through several different personal projects, I have self-taught many different Software Development skills. Working on these projects has enhanced my abilities and improved my understanding of the different languages and techniques.

Interface Design 12

The ability to design an effective user interface relies on the ability to tailor the design to human factors, common design principles, and the nature of the program. User interfaces must be easy-to-use and must actually complete the task the user set out to complete. Choosing the right design is made much easier with experience designing user interfaces for various tasks.

My experience is demonstrated by...

Algorithms 10

Designing efficient algorithms is critical to compute the proper results and in a reasonable timeframe. This skill is essential to nearly all programming tasks.

My experience is demonstrated by...

  • Verse -- Oh yay, yet another wordle-like game!
  • OEIS -- The ongoing quest to program the OEIS database.
  • Cliques -- Finding words with unique letters in a word list!
  • Tic-Tac-Toe -- Tic-Tac-Toe written using React
  • Num2Words -- Converts any number to its English representation
  • Rosalind -- Algorithms for problems from Rosalind
  • Project Euler -- Solving problems from Project Euler
  • GoSort Benchmark -- Benchmarks many different sorting algorithms in Go
  • GoSort -- Sorting algorithms written in Go
  • CSort -- Sorting algorithms written in C++

Web Development 8

Developing on the web involves the ability to utilize HTML, CSS, and JavaScript at the bare minimum. Adding additional toolsets like Bootstrap or D3js can enhance the website. There are tons of different skills that are consolidated under web development, such as dynamic content, event listeners, and much more.

My experience is demonstrated by...

  • Sudoku -- Cross-platform Sudoku Game Written in Flutter
  • Verse -- Oh yay, yet another wordle-like game!
  • Math Book -- A comprehensive mathematics textbook, free for all!
  • R6S Roulette -- A companion app to Tom Clancy's Rainbow Six Siege
  • Geography Quiz -- Test your geography skills!
  • Unit Converter -- A clean and simple unit converter
  • Homepage -- My resume page (the one you're looking at!)
  • WebGL Demos -- The landing page for my WebGL demos

Mathematics 6

An essential skill for engineering is the ability to model situations utilizing mathematics. It is essential for runtime analysis, modeling the particular problem, designing algorithms, and more.

My experience is demonstrated by...

  • Math Book -- A comprehensive mathematics textbook, free for all!
  • OEIS -- The ongoing quest to program the OEIS database.
  • GoBigger -- A Go file to expand upon Go's arbitrary precision package, math/big.
  • Rosalind -- Algorithms for problems from Rosalind
  • Project Euler -- Solving problems from Project Euler
  • GoBig -- A simple Go package to make using arbitrary precision a bit easier

Big-O Analysis 5

Whether an algorithm is efficient depends on its runtime compared to its inputs. This is modeled via Big-O Analysis, which is a necessary skill for all software engineering tasks.

My experience is demonstrated by...

  • OEIS -- The ongoing quest to program the OEIS database.
  • Rosalind -- Algorithms for problems from Rosalind
  • Project Euler -- Solving problems from Project Euler
  • GoSort Benchmark -- Benchmarks many different sorting algorithms in Go
  • libcds -- Data structures written in C++

Memory Management 4

A program is only as good as its memory management. Poor memory management leads to poor programs leads to poor computing. It is required for programs to be efficient in their memory management, including properly allocating memory, covering memory leaks, and handling large data effectively.

My experience is demonstrated by...

  • OEIS -- The ongoing quest to program the OEIS database.
  • Cliques -- Finding words with unique letters in a word list!
  • CSort -- Sorting algorithms written in C++
  • libcds -- Data structures written in C++

Packaging Code 4

The ability to publish code into public stores of code packages is quite useful to allow others to utilize your code. The ability to create packages requires different techniques (tailored to the package manager) and their effectiveness relies on essential programming techniques like public / private APIs, proper architecture, decoupling, and more.

My experience is demonstrated by...

  • Num2Words -- Converts any number to its English representation
  • GoBigger -- A Go file to expand upon Go's arbitrary precision package, math/big.
  • GoSort -- Sorting algorithms written in Go
  • GoBig -- A simple Go package to make using arbitrary precision a bit easier

Data Types 3

My experience is demonstrated by...

  • OEIS -- The ongoing quest to program the OEIS database.
  • GoBigger -- A Go file to expand upon Go's arbitrary precision package, math/big.
  • GoBig -- A simple Go package to make using arbitrary precision a bit easier

Desktop Development 3

My experience is demonstrated by...

  • Sudoku -- Cross-platform Sudoku Game Written in Flutter
  • Java Sudoku -- An implementation of Sudoku in Java
  • Java Tic Tac Toe -- An implementation of Tic-Tac-Toe in Java

Object-Oriented Programming 3

My experience is demonstrated by...

  • Sudoku -- Cross-platform Sudoku Game Written in Flutter
  • Java Sudoku -- An implementation of Sudoku in Java
  • Java Tic Tac Toe -- An implementation of Tic-Tac-Toe in Java

Sorting 3

My experience is demonstrated by...

  • GoSort Benchmark -- Benchmarks many different sorting algorithms in Go
  • GoSort -- Sorting algorithms written in Go
  • CSort -- Sorting algorithms written in C++

Concurrency 2

My experience is demonstrated by...

  • GoSort Benchmark -- Benchmarks many different sorting algorithms in Go
  • libcds -- Data structures written in C++

Data Structures 2

My experience is demonstrated by...

  • GoSort Benchmark -- Benchmarks many different sorting algorithms in Go
  • libcds -- Data structures written in C++

Problem Solving 2

My experience is demonstrated by...

Stateful Management 2

My experience is demonstrated by...

  • Sudoku -- Cross-platform Sudoku Game Written in Flutter
  • Tic-Tac-Toe -- Tic-Tac-Toe written using React

Static Site Generation 2

My experience is demonstrated by...

  • Math Book -- A comprehensive mathematics textbook, free for all!
  • Homepage -- My resume page (the one you're looking at!)

String manipulation 2

My experience is demonstrated by...

  • Cliques -- Finding words with unique letters in a word list!
  • Num2Words -- Converts any number to its English representation

VSCode Extensions 2

My experience is demonstrated by...

Color Design 1

My experience is demonstrated by...

Communication 1

My experience is demonstrated by...

  • Math Book -- A comprehensive mathematics textbook, free for all!

Critical Thinking 1

My experience is demonstrated by...

Cross-Platform Development 1

My experience is demonstrated by...

  • Sudoku -- Cross-platform Sudoku Game Written in Flutter

GeoJSON 1

My experience is demonstrated by...

Goroutines 1

My experience is demonstrated by...

Graphics 1

My experience is demonstrated by...

Graphs 1

My experience is demonstrated by...

  • Cliques -- Finding words with unique letters in a word list!

Interaction 1

My experience is demonstrated by...

Polymorphism 1

My experience is demonstrated by...

  • Sudoku -- Cross-platform Sudoku Game Written in Flutter

Recursion 1

My experience is demonstrated by...

  • Num2Words -- Converts any number to its English representation

Teaching 1

My experience is demonstrated by...

  • Math Book -- A comprehensive mathematics textbook, free for all!