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.
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.
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.
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.
// 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'>
<pre class='code-block'>
<code class='language-html'>
</code>
</pre>
</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...