Nefarious Pomegranate Magnate

    puddlenuts

    0.2.6 • Public • Published

    puddlenuts

    CLI to help create custom classifiers for visual recognition systems

    Requirements

    Usage

    Show help:

    $ puddlenuts --help

    You should define a PUDDLENUTS_API_KEY env var corresponding to your Visual Recognition API key.

    You can also place this in an .env file in your current working directory.

    Any option can be specified in the .env file using the mask PUDDLENUTS_SCREAMING_SNAKE_CASE; e.g. PUDDLENUTS_LOGLEVEL=error

    Installation

    It can be invoked via npx:

    $ npx puddlenuts --help

    Or installed "permanently":

    $ npm install -g puddlenuts

    Sub-Commands

    shoot

    Take a bunch of photos with the camera, put them into .zip files corresponding to classes, and upload them into a classifier for training. See puddlenuts shoot --help for details.

    train

    Upload .zip file(s) to a new or existing classifier for training or retraining. See puddlenuts train --help for details.

    classify

    Take a photo with the camera or use an on-disk image to classify against a previously-trained classifier. See puddlenuts classify --help for details.

    Development

    • Yes, this needs tests.
    • @types/* packages included in this project's devDependencies are for IDE type inference; this is not a TypeScript project.
    • The command definitions live in lib/commands/ and are loaded by yargs, with the exception of lib/commands/common-opts.js. See the advanced Yargs usage guide for more info.
    • ES6 modules provided by the magic of @std/esm.

    Style

    • The FP variant of Lodash is used exclusively. This is enforced by ESLint.

    • Avoid the function keyword; use arrow functions. Not enforced (yet)

    • Plain objects containing functions shouldn't use the "method" shorthand, but probably do; e.g.:

      const foo = {
        bar() {
          // stuff
        }
      };

      Avoid. Instead:

      const foo = {
        bar: () => {
          // stuff
        }
      };

      Not enforced (yet)

    • Use async / await in lieu of Promise chains.

    • Add JSdoc docstrings. As of this writing, these are mostly missing

    • Use ternary operators wherever possible, but do not nest them.

    • Favor template strings over string concatenation

    • Use currying where it makes sense

    • Leverage util.promisify() or promwrap instead of Node.js-style callbacks

    • Code will be formatted automatically upon commit via prettier

    Roadmap

    • Make non-RPi-specific
    • Support alternative APIs

    Notes & Meanderings

    • "Puddlenuts" is a made-up word from Roald Dahl's The BFG. In the book, it seems to mean "inconsequential". I'm using it here because I like the word.

    License

    Copyright 2017 Christopher Hiller. Licensed Apache-2.0

    Install

    npm i puddlenuts

    DownloadsWeekly Downloads

    8

    Version

    0.2.6

    License

    Apache-2.0

    Unpacked Size

    35 kB

    Total Files

    21

    Last publish

    Collaborators

    • boneskull