Saturday, January 7

the Butler (Project) - Part 0 - Idea


The History

Over time I have developed many little utilities to help me with my day to day activities. And recently ( last couple months) I have been spending more of my free time experimenting with "chatbots."

What started out as a single chatbot for a twitch stream I was interested in adding some humour to, has grown into quite a different beast. Now consisting of a main host program with many sibling programs to handle different parts of the stream interaction. It has been through this process that I have come to realize I could be doing so much more.

When I say "more" I mean, a lot of the framework that I have developed to manage my ever growing "bot" could be put to use in other places as well.



The Idea

Modify, or completely rewrite my existing framework to be the basis of a "helper" bot for myself. I already use a browser for the front-end and NodeJS for the back-end, making it easy to run on either my Windows desktop, Mac Desktop, or one of my Raspberry Pi or C.H.I.P. computers. So why not make a bot that I interact with that runs on a C.H.I.P. that I leave on 24/7. When it out grows the C.H.I.P. it will be very easy to move it to a Raspberry Pi 2b, and if the power is need Raspberry Pi 3b in the future.

Still using the modular setup I use for the existing chat bot, I could have the "helper" bot "learn" new capabilities purely by adding additional modules to it.



Possible Names

None of these names may end up being the one I use, but so I do not forget them I have included a list of possible names to use.
  • Alfred (Pennyworth)
    Bruce Wayne's butler in the Batman universe
  • Belvedere (Lynn)
    from the novel Belvedere, the adapted feature film and its sequels, and the TV series Mr. Belvedere
  • Brewster
    the Cranleighs’ butler in Doctor Who – Black Orchid
  • the Butler
    butler to No. 2 in The Prisoner
  • Cavendish
    butler to Sir Hugo Drax in James Bond movie Moonraker
  • Coleman
    from Trading Places
  • Colins
    Marcus Scarman’s ill-fated butler in Doctor Who: Pyramids of Mars
  • Didit
    Buttler from the Clue DVD Game
  • Duckworth
    Scrooge McDuck's butler/chauffeur on Ducktales
  • Geoffrey
    from The Fresh Prince of Bel-Air
  • Hargreaves
    butler to Harrison Chase in the Doctor Who serial The Seeds of Doom
  • Jeeves
    from the Jeeves stories by P. G. Wodehouse
  • LurchIn the Addams Family
  • Mr. HomnLwaxana Troi's manservant in Star Trek: The Next Generation
  • RosieFrom The Jetsons
  • Rochesterbutler to Jack Benny on the Jack Benny Show
  • Samantha
    The Movie Her
  • Thomasbutler to the Lord family in The Philadelphia Story
  • Smithers (Waylon)The Simpsons



The Initial bare project ( Directory Tree )


  • Butler.js
    The initial NodeJS "main" application
    • /Gibson/Where the data for all the modules is stored
    • /MU-TH-R/
      MU-TH-R 182 model 2.1 ( Ship computer aboard Nostromo in the movie Alien)
      • Also where the sub modules are located
    • /Pedigree/
      The directory where previous versions of the main Butler program are located
      • Alfred.js
        Alpha version of the Butler main program
      • Belvedere.jsSecond version of the Butler main program
    • /Samantha/The HTML, CSS, JAVASCRIPT front end for Butler


The initial bare idea for Butler.js


  1. butler.js
  2. check if parameter is name of a version in the /Pedigree/ folder
    1. If yes then load that version
    2. if no then load most recent version
  3. load ALL modules provided in /MU-TH-R/
  4. launch express
  5. launch socket.io
  6. listen on port 80 or supplied port



Interesting Links