Hacker News new | past | comments | ask | show | jobs | submit login
Show HN: Markdeck – author cool slides, text-only, offline-ready, collaborative (github.com/arnehilmann)
235 points by tcc_42 on Jan 9, 2019 | hide | past | favorite | 89 comments

I love that "offline-ready" is a feature that's becoming more and more supported and prominent. I don't know anyone else in the power user community who doesn't have home internet, but since getting rid of ours, I've made that feature a high priority of all apps I've been dreaming up and selling.

I've even gone so far as to remove the concept of "live data sync" from all my apps, partially because it's so incredibly error prone and hard to get right, partially because it tends to make software seem laggy and slow since it shows stale data while loading live data in the background, and partially because usually it's unneeded as a built-in feature if you're just using files, which can then be synced with any of the many file syncing service (iCloud, Dropbox, OneDrive, Box).

Although it's very doubtful other power users will adopt internet-less lives, if more of us did, not only would we be more productive, but we'd all have more incentive to make "offline-ready" a much better experience and even move to "offline-first" like I aim to.

This prompted me to wonder when online ready became offline ready.

Your attitude is mildly depressing, not because its wrong, just that it's coming from a place where 'offline' is niche.

Are you on Scuttlebutt[0]? It's an offline-friendly social network, and some users are completely off-grid.

[0]: https://www.scuttlebutt.nz/

I've never heard of that, thanks for sharing it. I'm much too busy with interesting projects and client work to join yet another online social network, even one that's offline-friendly, but it's still really interesting to know it exists :)

This looks cool. Looking forward to give it a try.

For years I've been using Deckset[0] for all my presentations. Being able to just edit a text file to write and update slides is a massive advantage. I usually export them as pdf, which 99% of conferences are happy with.

A big bonus is that you can now version control your slides, allow them to get forked, etc.

If you're curious to see what those slides look like, check any of my previous talks [1].

[0]: https://www.deckset.com/

[1]: http://jobv.gitlab.io/talks/

Looking forward to your feedback.

And: yes, deckset (as I learned today) sounds a lot like markdeck, feature-wise... I will have a closer look on that and compare these tools.

I love Deckset-- using it is like having presentation creation superpowers. But since it's OSX-only, I've moved to GitPitch, which is cross-platform and has the added benefit of hosting the slides.


I had to use gitpitch for one presentation only, so correct me if I am wrong, but with gitpitch you cannot see the resulting slides before you push them to the repo, right?

We had more than 200 commits at the end of one day, 150 of them to solve minor layout problems... with a (feeled) round-trip-time of 10-20seconds, that became frustrating quite fast...

If you pay for GitPitch Pro, you see your slides right away via GitPitch Desktop. (Plus the support from David is unparalleled.)

you could squash those commits, but i agree it would be better not to have them.

can you commit with --amend instead to avoid creating new commits every time?

That wouldnt help, I am afraid: the web hook of gitpitch starts on push to the github repo, so you _really have_ to push your change...

right, good point. didn't think of that. you can push after --amend but gitpitch may not work with that.

I am huge fan of Deckset and use it for team internal presentations. Unfortunately, corporate identity is not something I could get working with Deckset. :(

Deckset looks really nice. Wish they had a Linux version.

When I looked at it, I was like, "huh .. it's a lot like reveal.js" and then I looked carefully at the README and it is reveal.js, with extensions/mods.

I've used reveal.js for a while. I found it most useful when I did presentations for multiple meetups on the same open source project. I created a little build tool that let me re-use slides for Ruby, Scala and Python meetups (the service was written in Scala, client in Python and devops was all Ruby, but that's since been migrated to Docker):



Tools like this are great if you have several similar presentations. Some of the additions in Markdeck are things I've kinda hacked in (like terminal output players). Still with a recent presentation where I did everything from scratch, I used the same build process and found it felt a bit much for something that didn't require the shared-slides use case and I wondered if I would have just saved time writing it in a GUI/WYSIWYG tool like OpenOffice or Powerpoint.

My only feedback is to commend the author on including a "Similar projects" section in the README file. I love when authors are not afraid to compare their projects to other similar pieces of work.

In fact, there already is such a (okay, rather short) section in the README [0]. But I plan to incorporate the other tools mentioned here. Only the feature comparison table with all of these tools against all of the features mentioned here will have to wait, I am afraid...

[0]: https://github.com/arnehilmann/markdeck#similar-projects

> In fact, there already is such a [...] section in the README

GP knows. You were being commended for it. :-)

I've been using Backslide [0] for all my lecture slides for a couple years now, seems quite similar. Backslide doesn't use pandoc though.

[0]: https://github.com/sinedied/backslide

I tried Backslide for a recent presentation, but I'm not sure I can recommend it. Exporting things properly turned out to be quite hard.

This is really nice, especially all the integrations. I've been using slides.com for a while, and I may switch to this. But, one feature that would be amazing would be the ability to upload to an S3 bucket. Bonus points for creating a public bucket configured correctly to view the slides. It's annoying to have to carry every possible type of dongle and fight with A/V issues at random places when you need to show a deck on hardware that you don't control. I always make sure that the content I need to show is available on any machine with an internet connection, but it takes a lot of effort sometimes.

A sync to S3 is a nice idea. And it is completely independent from the generator you use... so I would see that functionality as a utility command, called when everything else is finished.

btw: with markdeck, I tried the completely different approach: do not dependent on an uplink, neither when authoring, nor when presenting...

I use https://surge.sh/ to host my reveal.js presentations for free, images and all.

Examples: https://marketing-slides.surge.sh

That looks really interesting.

slides.com uses their own s3 bucket to upload. But you can't add images or videos from your own s3 buckets / imgur / etc.

So Markdeck lets you use ascii art via pandoc, as well as generating slides from text with titles, background images and background colors. It can also generate slides with "hand-written sketches" as in the complete slideshow: https://arnehilmann.github.io/markdeck/showcase/#/example-te...

I tried to help by putting in a change request, but couldn't exactly figure out where the slides were coming from.

Ahh, that should probably go into the documentation...

but for now: the `showcase`[0] gets rendered from the `examples` folder, here[1].

[0]: https://arnehilmann.github.io/markdeck/showcase/

[1]: https://github.com/arnehilmann/markdeck/tree/master/example

Can it really not include images in the output though? I didn't see an example in the showcase.

The word cloud and the stick figure are taken from the `assets/img` folder; you can reference ANY file you want, as long as it is located somewhere within the `assets` folder.

That sounds great, thanks! I'll try it right away.

I'm definitely going to look into that one. As a blind user who needs to do presentations sometimes, I hate wysiwyg and I always use text-based tools. My favorite is Spectacle [1], as it apparently looks pretty good and I can upload presentations to now with a nice, simple, memorable URL. It's amazing when you can just open up a browser, point it to an URL you remember and the presentation just opens.

[1] https://github.com/FormidableLabs/spectacle

Remark.js looks similar but less complex I think.

FYI: Slideshow (S9) is another free (open source) alternative offering themes / template packs for reveal.js, bespoke.js, impress.js ("prezi-style"), s5, s6, shower, and more. See http://slideshow-s9.github.io and https://github.com/slideshow-templates

Golang has a similar tool called 'present' [0]. Sample presentation: https://talks.golang.org/2017/state-of-go-may.slide

[0] https://godoc.org/golang.org/x/tools/cmd/present

The reason I use Markdeck for all presentations is the care that the author has lavished on the many, many integrations. Anyone can render to PDF, but few tools produce pixel perfect PDF you can hand to your audience afterwards. Not to forget CSS3 backgrounds, Vega Lite charts mixed with TeX formulas and DITAA - full support for anything the browser will put up with.

How is this better than https://pandoc.org/MANUAL.html#producing-slide-shows-with-pa... ? Oh! You've got other yummy things rolled in there like graphviz and more. Thanks! I've got an important presentation coming up on Thursday, I'll give this a go!

maybe important/interesting for you: the pdf export.

pandoc can do pdfs too (via beamer)

Yes, but markdeck uses decktape and chrome headless... so your PDF is in fact a near pixel-perfect version of your HTML slides.

Yep! I just wasn't willing to run "curl ... | bash" on a corporate computer to install markdeck. I made a note to circle back to it, I still want to try it, the slides look slicker than those generated by pandoc with beamer which is what I use now to generate PDF presentations. my first choice was GitPitch but rendering PDFs doesn't work without using their web service and this content has got to stay on the private network.

So how would you like to install such a tool on a corporate device? Is docker an option In your case? Is downloading and reviewing the scaffold script sufficient (before actually starting it)?

yeah, that would be fine -- what stopped me actually (now that I'm circling back to it) was the requirement for docker-compose which my sandbox VM didn't have. and still doesn't (some dependency is broken). sigh. that's all the time I have for it now.

I actually narrowed it down a bit further and reached out to someone internally that can help me work through this. thanks!

I tried this at home on Ubuntu 16 LTS and discovered my Docker is too old.

ERROR: Version in "./docker-compose.yaml" is unsupported. ... specify a version of "2" (or "2.0") ...

markdeck uses version 3.2

I guess it's time to finally upgrade to Ubuntu 18 LTS. I just needed a reason. =)

Shameless plug: Being a lecturer, I wrote something similar years ago: https://github.com/munen/p_slides

p_slides doesn’t have any dependency that doesn’t run in the browser and its files can be checked into SCM which makes collaboration easy.

What advantage does this have over just using reveal.js's support for external markdown document for slides?

markdeck can create diagrams and charts on-the-fly (graphviz, ditaa, plantuml, a2s, Vega-lite). And it can export the slides as PDF or as standalone HTML file. Plus out-of-the-box auto-reloading the slides on change, emojis, font-awesome, math-jax, and some other stuff helpful when authoring slides...

But when you don't need any of the above, then markdeck in fact has no advantage over plain reveal.js and markdown.

Thanks for the reply, I might look into this for my next presentation (the graphviz could be pretty useful for me)

This is super awesome!! I wish it didn't spam the hell out of my browser history though.

Are there plans to enable remote control functionality, such as https://github.com/jpsim/DeckRocket ?

I use a simple presenter with simple forward/backward keys...

DeckRocket looks cool, but unfortunately I cannot build it on my machine (to convert the app from swift 2.4 to swift 3 or even higher, xcode8 or so is needed... and that is not a priority at the moment)

What I always miss in Markdown-ish mathjax-enabled tools is the ability to define symbols globally. E.g. in latex I always do "\renewcommand{\d}{\mathrm d} \newcommand{\re}{\mathbb R}" etc.

Do you mean something like this? http://docs.mathjax.org/en/latest/tex.html#tex-macros

Okay, that made me curious and I gave it a try: please have a look at the slides.md and the resulting pdf



Are there plans for Linux / Windows support? I don't own any Apple hardware, so I can't even try this, but if it works well I'd be happy to pay for it.

It gets developed on MacOS, and is tested also on Linux. It should run with docker on Windows, too; although that wasn't tested yet...

The title says collaborative, but the about says: "easy to collaborate-n-reuse: text-only, so bring your own VCS"

If it requires a VCS isn't everything collaborative?

It does not _require_ a VCS, but you can bring/use your own quite easily. Why? because most of the slide sources are in text format, so working with them under version control is easy compared to the big binary blobs known from powerpoint/pages/...

Thanks, I understand that.

It's just that I would expect it to be built in if you're mentioning it in the title of the submission like that.

Merging text-based markup is a lot easier than e.g. PowerPoint files.

"text-only" is a good description of bad slides to me. Why do people do that? The are plenty of Markdown slides tools so there seems to be a need.

Text heavy slide creation tools (such as LaTeX and Markdown based ones) are aimed to make slide creation easier, not actually watching the resulting presentation. It's not to say that you cannot make nice slides with those tools, but using systems that make it much easier to write text than to visualize really promotes the wrong thing for presentations.

People don't tend to notice this as much though, and they are more concerned with familiarity or speed-of-production of the slides rather than make the slides effective for the audience. But hey, that same issue can be raised for most PowerPoint presentations, too. People just don't know how to make good slides and just take whatever is easiest for them.

This does allow you to embed images and diagrams. I think they rather mean the slide description language is text-only.

But even embedded images implies uninspiring slides to me.

For example they have a system that allows you to add source code to a slide, but then don't you want to be annotating that code? Adding arrows, lines, highlighting bits, breaking it apart, etc?

For a recent presentation I also tried reveal.js again and I really liked it overall (compared to LO Impress). I do science, so I'm not that into annotating source code, but this total lack of presentation "spice" also really bugged me and I basically ended up writing html with semitransparent overlays over key graphics (more of an explorative presentation)...

As to this: I just don't get what's so special about this. I especially don't get, what this could do, what plainly putting your presentation into git doesn't do already? Apparently behind the curtains (which probably does not concern people who do `curl <url> | bash` stuff...) it's using pandoc to convert md to a reveal-js presentation and using a node-based live-server for display. Not even sure if speaker notes work (or if you have to use the reveal.js internal server for that)...

Also, this is a security nightmare, as a ton of boilerplate-dockercode/npm-packages/random-binaries is necessary for just about nothing, as in the end it's just downloading the pandoc-binary from github to a docker-container (well, building pandoc was to hard apparently). I'm scrambling my head, what this means for security in applications developed by people lead by the poster if he goes forward like this.

This is something that I've been intrigued about too. Most of the cli/text based creation tools out there focus on text based content as well. But, for many people myself included, the desire is really for a text based creation tool that focuses on image or diagram based output. Features like auto tiling (with priority) of images on a slide would be useful.

So many people end up writing what should be their presentation notes as their slide content. Personally I think you're better off with a holding image and move your content to the presenter notes section.

I've used revealjs.com and hovercraft [1] in the past but usually end up on GSuite Slides to throw things together quickly. Slides (like PowerPoint) can't do branching presentation paths though :(

[1] https://github.com/regebro/hovercraft

"text-only" here means, that the _source_ of the slides is text-based (in contrast to the classic graphical tools like powerpoint or pages).

the resulting slides can be as colourful (and text-less) as you want...

How does it ASCII to sketch work? (I am particularly interested in this "sketchy" example.)

It is based on another tool I have written, a2sketch[0]: that uses asciitosvg (still the php-variant[1]), generates a svg and feeds that into rough.js[2] (converts svg in sketchy svg)

[0]: https://github.com/arnehilmann/a2sketch

[1]: https://github.com/dhobsd/asciitosvg

[2]: https://github.com/pshihn/rough

Thank you a lot, especially for this rough one.

i love how topics like these not only bring out a review of the tool in question, but also suggest other related tools for comparison.

for convenience, here is a list of all alternatives mentioned (in no particular order):

(i added a quick but incomplete review of key aspects of each tool. almost all are using markdown and support pdf export)

https://arnehilmann.github.io/markdeck/ (reveal.js docker)

https://pandoc.org/MANUAL.html#producing-slide-shows-with-pa... (export-to: S5 DZSlides Slidy Slideous reveal.js pdf ppt)

https://github.com/munen/p_slides (slidy2)

https://godoc.org/golang.org/x/tools/cmd/present (go-present-markup local-go-server "can't find documentation of how to actually use it")

http://slideshow-s9.github.io/ (commandline-tool browser-preview many-templates)

https://github.com/FormidableLabs/spectacle (react-based presenter-mode local-node-server)

https://github.com/sinedied/backslide (docker)

https://gitpitch.com/ (online-service 'desktop version is docker based and not free')

https://yhatt.github.io/marp/ (electron-app live-preview)

https://github.com/jxnblk/mdx-deck (browser-preview)

https://www.deckset.com/ (osx-only not-free)


Does this support LaTeX? Or can support be added via a plugin?

What kind of support do you have in mind? Converting a whole document, a couple of slides, or embedding latex code within a single slide?

technical detail: markdeck uses pandoc[0] as converter; and, yes, there is a LaTeX-Importer available, too (besides the Markdown-Importer used now by markdeck). So, on a per-file basis, it should be quite easy to support other input formats than markdown (restructerdText might be another candidate).

Embedding LaTeX in markdown might be a little bit more trickier, because we already use html-tags where markdown is not expressive enough... sigh

[0]: https://pandoc.org

For my personal use case, embedding latex in a slide would be the best: I'd like to include equations alongside text and images, but I prefer writing markdown to latex where possible.

markdeck supports mathjax[0], might that be enough for your use case? An example can be found in the showcase[1]...

[0]: https://www.mathjax.org [1]: https://arnehilmann.github.io/markdeck/showcase/#/example-ma...

It might, I'll give it a shot. Thanks!

why use this over marp?


Or mdx-deck? https://github.com/jxnblk/mdx-deck

I'm not trying to poo on the OP or Marp. I'm actually interested in using a project like these and would be keen to see some kind of "why x over y" section in the readme.

i have been using marp lately.

i really liked the live preview and the output to pdf.

i do prefer pdf over web-based presentations because they are easier to share without a webbrowser (just send a document) (and they can still be viewed in a browser).

most irritating was the fact that i could not use my preferred editor. i haven't checked all the recommendations here, but i'll be looking for a combination if something like markdown in vim with live preview in a browser or pdf viewer

I am using markdeck with vim. Markdeck has an auto-reload, that means, every time you save your markdown or change something in your assets-folder, the web view gets reloaded automatically; so not really live preview, but auto-reload on save...

And markdeck has a standalone-exporter: it generates a single html file with all resources embedded (url-data, base64, ...); one file to send/open/view, but with working animations and the like (even the terminal session works)

marp looks great, but I just tried to use it and the $size directive does nothing, there are no docs on how to write themes (which is the first thing I want to do, customize the layout) and generally looks underdocumented.

It's too bad, because these tools are fantastically useful, but it doesn't look like any one managed to gather enough adoption to get critical mass around it.


This comment breaks the Show HN guidelines. Please read them and follow them when posting here.


The site guidelines too: https://news.ycombinator.com/newsguidelines.html

(Your comment would be much better without the first sentence.)

This is a classic HN comment. Contempt which turns out to be grounded in "I have an esoteric priority which is different from that of the author."

Anyway, it exports pdf.

> Contempt which turns out to be grounded in "I have an esoteric priority which is different from that of the author."

Not contempt. Instead of a lukewarm indifference-couched-in-praise, I'm giving you real feedback. People should cherish that. (I know I do.)

My priority isn't esoteric, it's the priority of 99.9% of those doing slide presentations. For the vast majority of people the problem they need solved is "will this work on their junk setup I first saw five minutes ago", not graphviz integration.

> Anyway, it exports pdf.

If so, this should be point #1 on your README, in big bold letters. In reality, of course, there's caveats, and the exported PDF will mostly fail in real-world conditions.

This is not surprising: the priorities are off, the features tested aren't the ones that need testing, and so the tool isn't solving the problem that really needs to be solved.

Again, please don't take this as contempt. Best wishes and I hope you set your priorities in order.

real feedback, based on not even reading the Readme fully but being sure it's "extremely low quality"?

And of course ignoring the fact that your "first concern" might not be so important for other people, who either seldom need export or can use HTML as an export format.

> it's the priority of 99.9% of those doing slide presentations

No, it's definitely not. Most people I see (I see a lot) are presenting from their own laptops.

For the record I'm not involved in this project.

Out of interest, why will the exported PDF fail?

because otherwise he'd have to admit he's been an irrationally harsh critic /s

Well this is based on reveal.js, which has been around for years, used by tons of people, and has a commercial product based around it (slides.com).

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact