{"id":13680275,"url":"https://github.com/howardabrams/demo-it","last_synced_at":"2025-04-07T07:16:44.206Z","repository":{"id":19218833,"uuid":"22453013","full_name":"howardabrams/demo-it","owner":"howardabrams","description":"An Emacs package for running demonstrations, screencasts and presentations from within Emacs.","archived":false,"fork":false,"pushed_at":"2021-12-22T00:45:54.000Z","size":232,"stargazers_count":326,"open_issues_count":3,"forks_count":32,"subscribers_count":14,"default_branch":"main","last_synced_at":"2025-03-31T06:04:54.191Z","etag":null,"topics":["demonstrations","emacs","presentation-slides","presentations","screencast","screencasts"],"latest_commit_sha":null,"homepage":"","language":"Emacs Lisp","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/howardabrams.png","metadata":{"files":{"readme":"README.org","changelog":null,"contributing":"CONTRIBUTING.org","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-07-31T02:22:50.000Z","updated_at":"2025-02-16T06:34:21.000Z","dependencies_parsed_at":"2022-09-10T23:13:04.117Z","dependency_job_id":null,"html_url":"https://github.com/howardabrams/demo-it","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/howardabrams%2Fdemo-it","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/howardabrams%2Fdemo-it/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/howardabrams%2Fdemo-it/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/howardabrams%2Fdemo-it/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/howardabrams","download_url":"https://codeload.github.com/howardabrams/demo-it/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247608154,"owners_count":20965952,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["demonstrations","emacs","presentation-slides","presentations","screencast","screencasts"],"created_at":"2024-08-02T13:01:15.124Z","updated_at":"2025-04-07T07:16:44.160Z","avatar_url":"https://github.com/howardabrams.png","language":"Emacs Lisp","funding_links":[],"categories":["Emacs Lisp","emacs"],"sub_categories":[],"readme":"At the end of each sprint, each of us demonstrate accomplishments.\nThese reviews often incorporate the following trifecta:\n\n  * Presentations explaining the technology and other frobnications\n  * Source code, correctly highlighted and perhaps interactive\n  * Executing the code, preferably in a shell to maintain nerd cred\n\nDuring my sprint reviews, I noticed I used my org-mode-formatted\nfiles, eshell and source code buffers... always in Emacs.\nHowever, fat-fingering or mentally burping delayed the\ngratification for my audience while I laboriously typed.\nI solved this problem by predefining each \"step\" as an Emacs Lisp\nfunction, and had another function execute each /step function/ when I\nhit an /advance/ key (=F12=).\n\nAfter I had amassed a small army of /helper functions/, I packaged it as\n=demo-it=, because I lack the imagination to come up with anything more\nclever.\n\nSee the following videos as examples of what can be done:\n\n  * [[http://www.youtube.com/watch?v=B6jfrrwR10k][Emacs: An Introduction for the Curious]]\n  * [[https://www.youtube.com/watch?v=dljNabciEGg][Literate DevOps Programming]]\n  * [[https://www.youtube.com/watch?v=_l1oj5CEh7k][Learn You Some Lisp for Great Good]]\n\nClick the following image for a quicker example:\n\n#+HTML: \u003ca href=\"http://www.youtube.com/watch?v=TSprQzowhAQ\"\u003e\u003cimg src=\"http://img.youtube.com/vi/TSprQzowhAQ/0.jpg\" alt=\"Example and Demonstration\"/\u003e\u003c/a\u003e\n\nUsing this project is a four step process:\n\n  1. Load the library in your own Elisp source code file\n  2. Create zero or more helper functions that \"do things\", or use the\n     functions provided by this project.\n  3. Order the functions by calling =(demo-it-create step-1 step-2 ...)=\n  4. Call =demo-it-start= to kick off the fun.\n\nPress space for each step, or call =demo-it-end= to end earlier.\n\nFor instance:\n\n#+BEGIN_SRC elisp\n  (require 'demo-it)   ;; Load this library of functions\n\n  (defun my-demo-step/show-code ()\n    \"Helper demo function that displays some source code and\n  advances the presentation at one time.\"\n    (demo-it-load-file \"example/example.py\" :right)\n    (demo-it-presentation-advance))\n\n  ;; Order the functions and forms for this presentation:\n  (demo-it-create (demo-it-presentation \"example/example.org\")\n                   my-demo-step/show-code\n                   demo-it-presentation-return ; close file and advance\n                  (demo-it-run-in-eshell \"python example/example.py\"))\n\n  (demo-it-start)\n#+END_SRC\n\nEach \"step\" given to =demo-it-create= can be one of the following:\n\n  - an expression typically calling a helper function\n  - a name of a function to call that does multiple actions\n  - a string referring to a key-binding to run\n  - a property that affects demonstration behavior\n\nThis package has a collection of helping functions, that can either be\ncalled directly as part of an expression, or embedded in a\ndemonstration /step function/. For a more complete example, see\n[[file:example/example.el][example.el]] or the other examples in the [[file:example][example directory]].\n\nFinally, read the [[file:demo-it.org][documentation]] (which is available as an Info manual).\n\n* Historical Record\n\n  The initial release, while published on MELPA, was rather an ad hoc\n  collection of functions, poorly organized and barely documented.\n  Sorry about that. I really didn't think any one would care enough to\n  use it.\n\n  *Version 2* of this project attempted to remedy those shortcomings,\n  cleaning and standardizing the /interface/ of functions. Also included\n  is the following features:\n\n  - Simplification of a demonstration's construction. Originally\n    each step essentially required a helper function, but now, we can\n    specify full expressions directly into =demo-it-create=.\n\n  - Default behavior is now based on customized preferences instead of\n    hard-coded values. Functions still accept optional values to\n    override those defaults. Also the =demo-it-create= macro accepts\n    demo-level overrides of the customized preferences.\n\n  - Described every function [[file:demo-it.org][both online]] and as an Info manual, with\n    lots of examples for the step functions.\n\n  *Version 3* is a plan to have each step more repeatable. Currently,\n  each step assumes a state built by the previous steps, which makes\n  developing, debugging, and reversing difficult.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhowardabrams%2Fdemo-it","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhowardabrams%2Fdemo-it","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhowardabrams%2Fdemo-it/lists"}