Skip to content

Instantly share code, notes, and snippets.

View jeremyckahn's full-sized avatar

Jeremy Kahn jeremyckahn

View GitHub Profile
@jeremyckahn
jeremyckahn / system-design-interview-prep-resources.md
Last active September 1, 2024 03:34
System Design Interview Prep Resources
@jeremyckahn
jeremyckahn / hash-table.js
Last active January 21, 2020 17:32
A bucketed hash table implementation with pure JavaScript and arrays
class BucketNode {
_previous = null;
_next = null;
constructor (key, value) {
this.key = key;
this.value = value;
}
}
@jeremyckahn
jeremyckahn / questions.md
Created January 17, 2020 02:31
My go-to interview questions (as a candidate)
  1. What are your biggest goals/initiatives right now?
  2. What are some of your biggest risks for the next year?
  3. What is your approach to managing technical debt?
  4. How is service availability managed and monitored? Is there overnight on-call?
  5. How do you manage sustainable pacing for the team during high-stress periods?
  6. How are engineering-focused initiatives balanced against business-focused initiatives?
  7. What is a competency you’re particularly keen on building here?
  8. What's your favorite thing about working at this company? What's something you hope to help improve?
  9. What is something that is really exciting you now, either in the industry or at this company?
  10. What process or compliance initiatives are you working towards or operating in?
const points = ["v1x", "v1y", "v1z", "v2x", "v2y", "v2z", "v3x", "v3y", "v3z"];
class Trie {
children = {};
insert(triangle, order = 0) {
if (order === points.length) {
return;
}
[{"v1":{"x":0.360463,"y":0,"z":2.525},"v2":{"x":0,"y":0,"z":2.98309},"v3":{"x":0.360463,"y":0.2,"z":2.525}},{"v1":{"x":0,"y":0,"z":2.98309},"v2":{"x":0,"y":0.2,"z":2.98309},"v3":{"x":0.360463,"y":0.2,"z":2.525}},{"v1":{"x":0,"y":0,"z":2.98309},"v2":{"x":0.128412,"y":0,"z":3},"v3":{"x":0,"y":0.2,"z":2.98309}},{"v1":{"x":0.128412,"y":0,"z":3},"v2":{"x":0.128412,"y":0.2,"z":3},"v3":{"x":0,"y":0.2,"z":2.98309}},{"v1":{"x":0.516641,"y":0,"z":2.94889},"v2":{"x":0.516641,"y":0.2,"z":2.94889},"v3":{"x":0.128412,"y":0,"z":3}},{"v1":{"x":0.128412,"y":0,"z":3},"v2":{"x":0.516641,"y":0.2,"z":2.94889},"v3":{"x":0.128412,"y":0.2,"z":3}},{"v1":{"x":0.878412,"y":0,"z":2.79904},"v2":{"x":0.878412,"y":0.2,"z":2.79904},"v3":{"x":0.516641,"y":0,"z":2.94889}},{"v1":{"x":0.516641,"y":0,"z":2.94889},"v2":{"x":0.878412,"y":0.2,"z":2.79904},"v3":{"x":0.516641,"y":0.2,"z":2.94889}},{"v1":{"x":1.18907,"y":0,"z":2.56066},"v2":{"x":1.18907,"y":0.2,"z":2.56066},"v3":{"x":0.878412,"y":0,"z":2.79904}},{"v1":{"x":0.878412,"y":0,"z":2.79904},
@jeremyckahn
jeremyckahn / Trie.js
Last active October 4, 2019 14:16 — forked from deadlocked247/Trie.js
Trie implementation in ES6, good for string autocomplete
/* Class representing a Trie data structure */
export default class Trie {
/**
* Creates a Trie
* @return {Object} Trie
*/
constructor() {
this.words = 0;
this.prefixes = 0;
@jeremyckahn
jeremyckahn / farmhand-overview.md
Last active September 23, 2019 15:14
Farmhand and the case for open source games

Farmhand and the case for open source games

For as long as I can remember, I've always hide a hobby side project. For a long time I focused on open source animation tools, but more recently I've shifted my focus back to my true passion: Game development.

I've taken what I've learned as an open source web developer and applied it to an idea that I've been interested in for years.


@jeremyckahn
jeremyckahn / inheritance.js
Last active August 23, 2019 18:47
Refresher on prototypal inheritance
function Parent () { console.log('parent') }
Parent.prototype.parentMethod = function () {
console.log('this is a method on the parent object')
}
function Child () { console.log('child') }
Child.prototype = new Parent()
var child = new Child()
child.parentMethod()
@jeremyckahn
jeremyckahn / inheritance.js
Created August 23, 2019 18:38
Refresher on prototypal inheritance
function Parent () { console.log('parent') }
Parent.prototype.parentMethod = function () { console.log('this is a method on the parent object') }
function Child () { console.log('child') }
Child.prototype = new Parent()
var child = new Child()
child.parentMethod()
@jeremyckahn
jeremyckahn / getChangedProperties.js
Created April 24, 2019 15:41
Compute keys that are different between two JS objects
/**
* @param {Object} oldData
* @param {Object} newData
* @returns {Array.<string>} A list of key names that are different between
* oldData and newData.
*/
export const getChangedProperties = (oldData, newData) =>
Object.keys(oldData).reduce(
(acc, key) => (oldData[key] !== newData[key] ? [...acc, key] : acc),
[]