npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

playlet

v0.1.0

Published

Playlet =======

Downloads

4

Readme

Playlet

A NodeJS + ccjson based playground for playing with declared software systems. Even the smallest program or snippet of code can grow into an expansive system over time. As code grows it becomes rigid and looses potential, something declarative system composition can potentially address by ensuring it is easy to swap out any component or aspect at any time.

The problem is that creating systems built from vast declarations can be very hard if you actually want them to stand up to this lofty goal without becoming enormously abstract and heavy.

Playlets provide the perfect venue for experimenting with how to build systems declaratively as each new playlet is a fresh minimally-structured space full of potential that can be expanded in any direction you see fit to try out a new approach or application.

You may have never heard of the concept of declaring software systems before. That is likely because it has taken until now for the needed open source software concepts and implementations as well as communities and understanding to evolve sufficiently.

In playlet speak, a Playlet (Declared Software System) is code that:

  1. Downloads, Provisions and boots itself using only one command and a private key.
  2. Touches no path outside its root unless it is a spcific feature.
  3. Manages its own runtime lifecycle and data completely privately.
  4. Declares all external resources interacted with
  5. Is reconfigurable and patchable 100% by overlaying configurations prior to runtime.
  6. Respects namespaces and does not conflict, block or expose without permission.
  7. Prompts for credentials via an encrypted API as needed.
  8. Exposes its internal workings via a conditional log stream.

You don't need to worry about how to build a system to meet the above criteria because playlets come pre-seeded as complete mini systems that meet all the above criteria in the form of a reference implementation with adapters.

You just start with the basic seed and take it any direction you want while sticking to the rules above. The rules are critical to keep your playlet alive, sharable and extensible by machine logic and human thought.

As for time allocation, replace all time you spend on repetitive code production overhead (documenting, tasking, communicating, training) with time spent on building playlets to automate these tasks and re-use them in a configurable way in other playlets. (i.e. generate all kinds of assets from the same dense source logic and use APIs to orchestrate all information and events surrounding the codebase)

Do not worry about breaking API backwards compatibility when charging ahead as long as you use a continuous data model. The whole point of playlets is to drop prior investments into structures and start in new directions. Playlets are stabilized through continuous testing on every change which means all expectations must be clearly declared and will thus become available to tooling. Playlets broken after changes should be repaired until they eventually become obsolete and age out.

Notes

Paradigms

Defines list of possible properties and provide protable utility libs.

  • NodeJS Application

Stages

Each stage has different properties and capabilities needed for different kinds of scenes.

Each stage has an adapter:

  • Heroku
  • Circle CI
  • Browser Page Component
  • Browser Extension Component
  • OSX Desktop

Scenes

Scenes hold source logic that orchestrates characters into a continuous dance. Unlike in real life, many scenes can run at the same time.

Source Logic is ideally devoid of imperative instructions (other than in portable formats without wrappers) and instead maps acts into a cohesive whole.

Light virtual config layer.

Characters

Characters embody performers based on given specific properties, capabilities and own relative positioning in the character and feed them adapted source logic that was generated with other performers.

Characters react to events in Scenes.

Light virtual config layer pointing to assets and can all be bundled up.

Each input and output for each act is a static asset.

  • 16.01 - HTML5 code to desktop app
  • 16.01 - HTML5 code to browser app
  • 16.01 - Express style middleware responder

Performers

Performers bring to life plays by traslating and transacting source logic into different languages and movements.

  • NodeJS to Docker converter & runtime shim
  • Babel Translator
  • git wrapper

An actor may be a playlet itself.

Performers react to events in Characters.

Performers declare:

  • Code dependencies
  • Required and optional usable properties
  • Required and optional usable capabilities

Props

Anything needed for a Performer to do its work.

Recordings

Assets created while playlet is running.

Provenance

Original source logic under Free Public License by Christoph Dorn