Portrait

Simon DeBevoise

I'm a musician turned anthropologist turned software engineer. I love playing chess, listening to music, and biking in new cities. Talk to me about Gödel, Escher, Bach.

color

random
reset
text
accent
background
highlight

cycling

Biking

projects

Tilda

live source

TILDA, a fullstack clone of Spotify

Tilda is an online music streaming platform modeled after Spotify.

Users can search for new music, add songs, artists, and albums to their libraries, and create and edit playlists, all while enjoying uninterrupted audio playback.

Tilda is built with a Ruby on Rails and PostgreSQL backend and uses React/Redux to deliver a dynamic frontend user experience.

Spellcaster

live source

spellcaster

Cast spells with words! In Spellcaster, a user can chain sequences of keywords that effects the properties of a 'spell'. These spells move about and effect a grid of cells that contain either a character or nothing at all.

The spell 'upfooupleftredbar' contains the keywords 'up', 'up', 'left', 'red', which determines that the spell will have a red background and will move up 2 spaces and left 1 space per animation frame. By pressing space, a user releases that spell and can start a new one.

Easter eggs include a Typing Test mode that calculates users' typed words per minute and a colorful take on Snake.

Splat

live source

splat drum sequencer

Splat is an interactive, easy-to-use audio sampler and sequencer. Users can create beats by simply pressing keys or clicking.

Customize your sound by selecting one of Splat's many diverse sound banks. The sequencer allows users to layer samples over a four measure loop to dynamically create songs.

Built on a MongoDB, Express.js, React / Redux, and Node.js (MERN) stack. Splat uses Tone.js to control swing and ensure sample-accurate timing for audio-sequencer playback.

Portefeuille

live source

portefeuille

A stock portfolio web app. Sign up to Portefeuille to buy stocks with fake money, keep track of your transactions, and follow the ups and downs of market prices.

API requests to IEX Cloud provide real-time market data. Built on a Ruby on Rails, PostgreSQL, React / Redux stack and a winning submission to the NYC Tech Talent Pipeline coding challenge.

experience

Resilience Engineering

Software Engineer

July 2020 - July 2022

Preaching the chaos engineering gospel at Bloomberg LP.

Built and maintained a chaos engineering web platform that enables developers across Bloomberg’s ecosystem to track their team’s chaos activity, run experiments across deployments, and assess impact with integrated data reports.

Tech Lead

March 2020 - June 2020

Founding engineer and tech lead to a team of four volunteer software engineers at The Giving Grape, a 501(c)(3) non-profit that built a network of hundreds of donors and distributed $45,000 of groceries to families impacted by the pandemic.

Built a Ruby on Rails API with token-based authentication from the ground up and ensured backend data compliance with the site’s legal requirements.

Oversaw project development and Git workflow with frequent code reviews. Launched site in June 2020.

The NoMad Restaurant

Assistant Server

Sep 2018 - August 2019

Managed a section of 40+ diners per evening at high volume, Michelin-starred restaurant and coordinated with the kitchen and server teams to guarantee stunning service with an emphasis on hospitality.

coding

                
// JavaScript

function frame() {
    this.trimSpells();
    this.spells.forEach(spell => spell.move());
    this.currentSpell.move();

    if (this.typetest) this.typetest.render();
}

function setColor(name, value, store=true) {
    const cssVar = `--${name}`;
    root.style.setProperty(cssVar, value);
    if (store) localStorage.setItem(name, value);
}
            
                
# Python

def indices(string, pattern):
    idx = 0
    while True:
        try:
            yield (idx := string.index(pattern, idx))
            idx += 1
        except ValueError:
            break

def rule3(theorem):
    return (
        theorem[:idx] + U + theorem[idx+3:] 
        for idx in indices(theorem, III)
        )
            
                
# Ruby

def gcd(a, b)
    b == 0 ? a : gcd(b, a % b)
end

def least_common_multiple(a, b)
    a * b / gcd(a, b)
end
            
                
# Ruby on Rails

belongs_to :album

has_one_attached :song_file, dependent: :destroy
has_one :artist, through: :album
has_many :likes, as: :likeable
has_many :playlist_songs
has_many :playlists, through: :playlist_songs
            
                
// React.js

const Counter = () => {
    let [count, setCount] = useState(0);
    const increment = () => setCount(count + 1);

    return (
        <main>
            Count is {count}. 
            <button onClick={increment}>
                Increment
            </button>
        </main>
    )
}
            
                
// Redux.js

const mapStateProps = ({ entities, session }) => {
    const currentUser = entities.users[session.id];
    const likes = currentUser ? 
            currentUser.likes.songs : null;

    return {
        likes, type: 'Song'
    }
}

const mapDispatchProps = dispatch => ({
    like: id => dispatch(like('songs', id))
})
            
                
// Node.js

router.get('/:id', (req, res) => {
    const { id } = req.params;
    Sample.findById(id)
        .then(sample => res.json(sample))
        .catch(err => {
            res.status(404).json({ 
                nosamplefound: `404: ${id}` 
            })
        });
});
            
                
/* CSS */

.css-example {
    background-color: var(--highlight-color);
    box-shadow: -10px -10px 5px var(--text-color);
    border: 10px double var(--accent-color);
    border-radius: 20px;
}
            
                
<!-- HTML -->

<pre class='code-block'>
    <code class='language-html'>
    &lt;pre class='code-block'&gt;
        &lt;code class='language-html'&gt;
        &lt;/code&gt;
    &lt;/pre&gt;
    </code>
</pre>
            
                
# and more...

* SQL (PostgreSQL, SQLite) 
* NoSQL (Cassandra, MongoDB)
* Flask, Express.js
* Kafka
* Git, Github 
* Max/MSP, Pure Data

~ One day, a C++ wizard...
            

music