Skip to content

Instantly share code, notes, and snippets.

View chriskrycho's full-sized avatar
🚀
Hire me! https://v5.chriskrycho.com/journal/next/role/

Chris Krycho chriskrycho

🚀
Hire me! https://v5.chriskrycho.com/journal/next/role/
View GitHub Profile
@chriskrycho
chriskrycho / components.not-good.js
Last active September 29, 2017 17:47
New Twiddle
import Ember from 'ember';
export default class NotGood extends Ember.Component {
init() {
Ember.set(this, 'tagName', '');
super.init(...arguments);
}
}
@chriskrycho
chriskrycho / need-HKTs.ts
Last active October 28, 2017 19:18
Discovering the need/desire for higher-kinded types in TypeScript…
import Maybe from './maybe';
import Result from './result';
// This isn't valid: you can't parameterize one type with another like I do here
// with M<T>, M<U> in TypeScript.
type Mappable<M, T, U> = {
map(this: M<T>, mapFn: (t: T) => U): M<U>;
};
export const map = <T, U>(mapFn: (t: T) => U, item: Mappable<typeof item, T, U>) => item.map(mapFn);

Keybase proof

I hereby claim:

  • I am chriskrycho on github.
  • I am chriskrycho (https://keybase.io/chriskrycho) on keybase.
  • I have a public key ASD3n2vhtR3y1qvDZG9H-MMywyLDRf9z2Zv5Jf5kQ3-D3go

To claim this, I am signing this object:

@chriskrycho
chriskrycho / ben-writeup.md
Last active December 9, 2017 15:58
BEM in Ember

We just wrote a very simple library (which I hope to open-source by the end of the year) and we write our components like this:

import bem from 'our-app/lib/bem';

// so we can easily grab it in tests
export default block = 'some-component';

export default Component.extend({
  classNameBindings: ['tagClass'],
@chriskrycho
chriskrycho / ember-concurrency.d.ts
Created December 11, 2017 18:23
Ember Concurrency basic type defs
import ComputedProperty from '@ember/object/computed';
import RSVP from 'rsvp';
export enum TaskInstanceState {
Dropped = 'dropped',
Canceled = 'canceled',
Finished = 'finished',
Running = 'running',
Waiting = 'waiting',
}
import Ember from 'ember';
export default Ember.Controller.extend({
appName: 'Ember Twiddle',
foo: new Map(),
init() {
this.get('foo').set('a', 'b')
}
});
import Ember from 'ember';
export default Ember.Component.extend({
init() {
this._super(...arguments);
this.set('foo', 'yay');
}
});
import Ember from 'ember';
const { computed } = Ember;
export default class MyComponent extends Ember.Component{
// model
constructor() {
super();
this.prop = computed('model', function() {
return this.model.length;
});
@chriskrycho
chriskrycho / controllers.application.js
Created January 16, 2018 19:35
init-and-constructor
import Ember from 'ember';
export default class extends Ember.Controller.extend({
appName: 'Ember Twiddle',
init() {
this._super(...arguments);
console.log('extends init');
}
}) {
constructor() {
import Ember from 'ember';
export default class extends Ember.Controller.extend({
appName: 'Ember Twiddle',
init() {
this._super(...arguments);
console.log('.extend init');
},
}) {