Projects

Protomatter.js

Protomatter.js is an object creation and inheritance library for JavaScript, featuring private instance properties and private methods. It is my exploration of how to achieve privacy for objects in JavaScript, a feature that the language is sorely missing. Protomatter allows you to define object types with private methods. When creating an instance from a type, no code outside that instance's own public methods can invoke its private methods. Additionally, no outside code can access the instance's properties. For more on what Protomatter can do and how privacy is implemented, see its README.

Protomatter is more of a realization of a thought experiment than a really practical invention, as these days I prefer ES6 classes for their standardization. But I've still made it available via npm for those who want true object privacy for their JS codebases.

Key Features:

  • Protect instance properties and private methods from outside access.
  • Invoke super class methods with callSuper().
  • Support for mixins.

ember-component-focus

Ember Component Focus is an Ember addon I created that provides a mixin you can use to add methods to your Ember components for managing the currently focused element. Focus management is an important aspect of making a web app usable for users of screen readers and other assistive technologies. This addon makes it easy for the developer to programmatically move focus as the UI updates, handling issues like setting tabindex on elements that aren't focusable by default and removing tabindex="-1" on blur. For example, if a user deletes an item in a list, you can move focus to the next item in the list.

Originally released as a LinkedIn open source project, it has since moved to the Ember A11y GitHub organization to join other tools that support creating accessible Ember applications.