Christian Heilmann

Author Archive

I was a guest on the inaugural DevRelShow and chatted about what DevRel is about, my new job at WeAreDevelopers and showed some cool tools

Friday, September 22nd, 2023

Yesterday evening my former colleague Fred Harper invited me to be his first guest on his new DevRelShow. For about 70 minutes we talked about all things Developer Relations, how to get started as a developer advocate and I showed some tools to make it easier for you.

I also covered how I wrote the Developer Advocacy Handbook and how it affected my career.

The tools I talked about were:

  • VideoTap which creates long-form data like blog posts and transcripts from videos as well as automated Tweets and short videos
  • Hemingway a text editor that tells you when your writing is too complex and offers AI generated alternatives
  • FFMPEG to batch convert videos to other formats on the command line

The 10 tools I install on every new Mac I get

Thursday, September 14th, 2023

Picture of tools - a hammer and a spanner

I am currently on a company trip with my brand new MacBook and here are the things I always install first to get started:

  • Homebrew – makes installing of low level stuff a breeze (free)
  • Node/NPM – many things rely on it (free)
  • Dropbox – still be best way to store and share content amongst machines, both Google Drive and Microsoft OneDrive drive me nuts with their file permission nonsense (paid)
  • VLC – plays everything, has excellent keyboard shortcuts and can in a pinch even record screens for you (free)
  • VS Code – coders gotta edit (free)
  • GitHub Desktop – much, much easier than installing and setting up Git yourself (free)
  • ImageOptim – file resizing and optimising images, even on the command line (free)
  • FFMPEG – converts anything to anything on the command line (free)
  • Handbrake – batch conversion of videos made easy (free)
  • Screenflow – my go-to screen recording and video editing tool (paid)

Other essentials are a VPN (I use Mullvad and ProtonVPN), but that’s about it.

Photo by iMattSmart on Unsplash

Podcast: AI solutions need good UX with Chris Heilmann

Wednesday, September 13th, 2023

Logrocket recorded a podcast with me talking about the need for good UX of AI solutions . It is amazing how much opportunities we miss out on by simply trying to copy ChatGPT, not understanding that a faux human chat interaction often only is a flash in the pan success.

I will also cover the same topic at Halfstack Vienna on the 15th of September and you can use my 10% off discount if you still want a ticket.

I will also talk about this in the closing keynote at React Live on the 28-29 of September in Amsterdam. You can use my discount code “chris20” for an additional 20% off there.

Adding sound wave overlays to videos and pictures using FFMPEG

Thursday, August 31st, 2023

In order to fix a broken video where the camera stopped recording, I wanted to replace the part with a video with a sound wave overlay. There are many services for that, and it is also a feature of video editing software. But I am stingy and a geek, so I wanted to use FFMPEG on the command line instead. This also allows for batch processing.

Note: I didn’t embed the videos in this post but GIFs instead. The real videos play the video and audio and the sound wave moves accordingly.

Let’s say this is our original video:

Video of me talking about public speaking

This is what it looked like in the end:

The same video with a sound wave on top of it

Here’s the command I used to create the above version:

ffmpeg -i Understandable.mp4 \
 -filter_complex "[0:a]showwaves=colors=0xff1646@0.3\
  -map "[outv]" -map 0:a -c:v libx264 -c:a copy \

OK, let’s unwrap this:

  • `Understandable.mp4` is the input file
  • `0xff1646@0.3` is the hexadecimal colour of the waves I want to create. The `@0.3` is the opacity, 30%.
  • The first `scale` is how the bars should be resized to stay in a certain range. I found squareroot to look the best. Other options are available in the documentation
  • `mode` is what soundwave you want. This version, `cline` is a centered, filled line. Other options are `point`, `line` and `p2p`.
  • `scale` is the size of the generated video of the wave, in this case 1280×400 pixels (as the video is 1280×1080)
  • The `overlay` defines where on the background video the wave should appear. In this case centred in the horizontal direction and on the bottom of the video.
  • `waveform-sqrt-cline.mp4` is the name of the final video.

Change location of the sound wave

You can also center the sound wave in both directions using `overlay=(W-w)/2:(H-h)/2`:

ffmpeg -i Understandable.mp4 \
 -filter_complex "[0:a]showwaves=colors=0xff1646@0.3\
  -map "[outv]" -map 0:a -c:v libx264 -c:a copy \

And the result looks like this:

Video showing the sound wave in the vertical center

Other sound wave styles

And you can change the output type to line and change the colour:

ffmpeg -i Understandable.mp4 \
 -filter_complex "[0:a]showwaves=colors=0xffffff@0.5\
  -map "[outv]" -map 0:a -c:v libx264 -c:a copy \

Video showing the sound wave as lines

This is what the point to point mode looks like:

ffmpeg -i Understandable.mp4 \
 -filter_complex "[0:a]showwaves=colors=0xffffff\    
  -map "[outv]" -map 0:a -c:v libx264 -c:a copy \

Video with point to point line

Adding a sound wave to a static image

If you only want the audio from a video and use a background image instead, this is what to use. This creates a 400×400 pixel video with the image as the background and the sound wave on top:

ffmpeg -i Understandable.mp4  -i chris.jpg\
 -filter_complex "[0:a]showwaves=colors=0xff1646@0.3\
  -map "[outv]" -map 0:a -c:v libx264 -c:a copy \

Soundwave on top of a static image

FFMPEG is amazing

Granted, the syntax of FFMPEG is pretty nuts, but it is also super powerful. Want to know for example how I created the GIFs of this post?

First, I resized all the MP4s in the folder to 1/3 of their size and saved them as small*:

for f in *.mp4 ; \
do ffmpeg -i "$f" -vf scale=w=iw/3:h=ih/3 "small-$f" ;\

Then I took those and created gifs

for f in small-*.mp4 ; \
do ffmpeg -i "$f" -sws_dither ed -ss 5 -t 1 "e-$f.gif" ; \

In English: Get all small-*.mp4s in the current folder, and create a GIF from second 5 of the video, one second long, using error diffusion.

Automate all the things!

Soundwave from transformers pressing a button

New feature in VideoTap: Clips – create short excerpt videos from bigger ones by highlighting text in the transcript

Saturday, August 26th, 2023

VideoTap keeps getting better and better. The latest version now has a new feature called Clips which allows you to create short excerpt videos from larger ones by selecting a part of the text in the transcript.

When you upload a video, VideoTap automatically creates a transcript, which is used to create the AI powered blog post, tweets and other social media texts. It now also detects interesting quotes in the video and creates short videos from them to use on Instagram, TikTok or other short video platforms to advertise the full version. You get a selection of those when you go to to the dashboard of your video and choose “clips”:

The clips part of the VideoTap menu shows several clips it generated automatically from the transcript for you to choose from. These already animate so you can see the result immediately.

The videos show the transcript part as a caption with highlight on the current word. You can customise this to your needs and even fix typos as necessary.

The clip preview shows the video and allows you to define how many words should be shown on the screen at any time, the colour highlight and provides a way to fix typos

Instead of using these automatically detected clips, you can also highlight a part of the text and generate a clip that way. To do this, activate the “Create a Clip” button on the clips page or highlight a different part of the transcript:

You can also highlight any part of the text and VideoTap will generate the video for you.

Once you’re happy with the result, activate the export clip button and after a while you can download your video.

I’m currently looking at all the videos of the WeAreDeveloper World Congress, and this will be a great tool to make the job of reusing those a lot easier.

Try VideoTap here .