Ed Schiebel

I'm a passionate and experienced software engineer with a wide range of professional experience. I'm an advocate for accessibility, a capable teacher, and a fast learner. I'm a problem solver who quickly delivers quality solutions to any type of problem, the harder, the better.

I love what I do. I’m someone who still has a blast creating software and loves watching users use it.

I'm an engineer 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 resume is here.

Clavistry

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

I’ve been looking forward to building this for a while. With AI’s help I had a working app by the end of the day, something fairly polished within three, and in its current state within a week. I wouldn't say it was easy, but it certainly was fast. AI wrote most of the code, and while I understand what’s going on under the hood, I don’t know it as deeply as I would’ve if I’d built it solo. I guess 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.