ASCII presentations in terminal are real

Eugene Obrezkov
Eugene Obrezkov
Published in
4 min readJul 17, 2016

Today, I want to tell you about one interesting project, called Kittik. The main idea behind this project is to create and show presentations which support shapes, animations, embedding code, etc… right in your terminal. Can you believe this? Ok, let’s start digging.

Why do we need this?

The picture above said more than need to say. We are all hackers, if you are a geek, if you want to impress your auditory with amazing slides in your speech or just for fun — there are many use-cases you can imagine.

Personally, I’m using it in some of my speeches, light-talks. And, you know, it looks impressive. Let me show you a simple presentation with a three slides. It’s not so beautiful as you can create it, but the main purpose of a demo below is to show you all the shapes\animations, you can use, in few slides.

NOTE: since it’s a gif file with low FPS, you can notice some gaps, it’s normal. In reality, it works without any gaps.

It looks amazing, doesn’t? Remember, all of it renders in terminal!

I’m impressed. What’s next?

Next, I’m going to tell you about the process of creating presentations. Kittik is a bundle of separated modules which are combined together in a package called kittik. It exposes all the API you need to use, so, in general, I can say that kittik is an SDK you can use for creating a presentation.

Since kittik is written with NodeJS, SDK it provides is an npm module you can install. But, there is a little improvement from me so you don’t need to install npm modules and write code.

I’ve created a CLI tool for running your presentations crafted in YAML format. Here is how it looks like:

shapes:
- name: "Hello, Kittik"
type: "FigText"
options:
text: "Hello, Kittik"
x: "center"
y: "middle"
foreground: "red"
animations:
- name: "Print"
type: "Print"
options:
duration: 2000
slides:
- order:
- "Hello, Kittik::Print"

That was a first slide from our complex example above. You see, it’s just a simple YAML file you can declare and then use CLI tool for running it:

$: kittik start my-presentation.yml

I’ve wrote a little guide where I’m describing the process in more detail. If you are interested in this project, you definitely need to read it through. When you done, you’ll be more comfortable with understanding of Kittik and how to create presentation for your next talk.

Any help?

For now, I’m done with a stable versions of all Kittik submodules and its core. You can use it without any risks of breaking your presentation in future or getting error when speaking on some conferences.

But, I have a lot of plans how we can improve it all together. It’s really hard for me to support all the 12 modules alone. So, I’m looking for anyone who is interested in things like this and wants to help. We can get in touch via Skype, Gitter, Twitter and I’ll be your mentor in this project.

Short list of things I would like to improve\create here:

  • GUI editor in terminal, it can be blessed package or our own implementation. At the moment, you need to declare presentations by hand, we can simplify it by creating editor which will output these declarations automatically based on your choices.
  • Improve existing shapes and animations with more options, review code and improve code style (if needed), write regression tests.
  • Implement some kind of parsers. We have a spec you need to follow, when passing it in Kittik SDK, but it’s hard to write declaration by hand. Better to write Markdown file, for instance, and parse it with some kind of Kittik parsers which will return declaration for Kittik SDK.

I think, that’s enough for now. I truly believe that we can create something valuable together, so let’s do it.

Share it with your friends, maybe some of them want to join a team. Recommend it to others. Share your thoughts and feedback in responses. Thanks!

Eugene Obrezkov aka ghaiklor, Developer Advocate, Kirovohrad, Ukraine.

--

--

Eugene Obrezkov
Eugene Obrezkov

Software Engineer · elastic.io · JavaScript · DevOps · Developer Tools · SDKs · Compilers · Operating Systems