Ed Schiebel

I'm a developer by day and hand drummer by night (or I was, the band broke up). I am also Maker's Mark Ambassador #1726391. Now if that doesn't impress you, I don't know what will. As you can tell from this stunning page, my design sensibilities are pretty much Google circa 2000.

Here are some samples of my work. The source can be found on GitHub. My CV is on Stack Overflow.

Clavistry

Clavistry is a web drum machine that plays Afro-Caribbean rhythms. It's a React app built with vite and using Elementary Audio for the audio engine. The rhythms are repreented as tablature in json files. You can mute individual parts and play along!

FWIW, AI wrote almost all of the code. I have mixed emotions about this. I've been looking forward to working on this project for some time, but with AI's help I got a working app in an afternoon and in a fairly polished state in three days. It wasn't easy, but certainly faster than doing it by hand. I know what's going on, but not nearly to a depth if I had done it alone. I guesss this is what it means to be a software engineer now.

Clavistry is still very much a work in progress. Keep checking back and see what's new. Some plans include:

Breakout

In a previous job I was building a pretty complex single page app using React, and was pleased with its performance. I was curious though. Could React be used to build an arcade game, albeit a simple one. Breakout is a classic old school game I liked back in the day, and with limited moving parts there was a reasonable chance both React and I would be successful.

Along with React, I'm using Alt for my Flux actions and stores implementation, (remember when Flux was a thing?) and I'm keeping all the game's state in Immutable data structures. The game pieces are all divs absolutely positioned on the court. Game play is handled by calculating the position of the ball, paddle, and the state of the bricks in the wall every tick of requestAnimationFrame, which GameStore saves away in its state. The top-level component, Breakout, listens for GameStore changes, and renders the field of play.

The verdict is, yes, React's virtual DOM can mostly keep up. The game plays pretty well.

By now, I bet you're curious. You can play it right here. Game play is dead simple, and there are a zillion things I could do to make it more interesting as a game, but that wasn't the point.

Romanizer

A solution to the Roman Numerals Agile Kata, built as part of a job interview. Try it here.