A blog on software engineering by Trevor Brown

Syntax Highlighting in PowerPoint

screenshot of PowerPoint with code highlighting

Back in 2014 I wrote a blog post on inserting code samples into PowerPoint slides with syntax highlighting. It’s been about 8 years and things have changed. Using GitHub Gist no longer works for me.

I’ve found a better way to apply syntax highlighting to code for PowerPoint that also works for LibreOffice Impress with no differences. Both applications expect code in Rich Text Format. The only downside to this approach is you’ll need to have Python and a Python package installed for this to work.

Introducing eFlambé

I recently published an article on the Code for RentPath blog about a new tool I created during SpawnFest this year.

SpawnFest is an annual 48 hour online contest where teams try to build the best BEAM-based application, as determined by the judges based on certain criteria. In this blog post I am going to introduce the new tool I created during SpawnFest.

eFlambé is a tool for rapidly profiling Erlang and Elixir code. It is intended to be one of the first tools you reach for when debugging a performance issue in your Elixir or Erlang application. With a single command you can visualize your code’s performance as an interactive flame graph in your flame graph viewer of choice. It’s written in Erlang and published to

Read the rest of the article on

screenshot of speedscope gui

Guide to Tracing in Erlang

I’ve spent a lot of time debugging Elixir and Erlang applications over the last 5 years and decided to share what I’ve learned here. I started writing this blog post in April of 2017 and wasn’t inspired to finish it until watching Jeffery Utter’s Debugging Live Systems on the BEAM talk about a month ago. If you’d prefer a more concise presentation of Erlang tracing I suggest you watch that talk instead of reading this.

The first thing to understand when debugging Erlang applications is that Erlang’s concurrency greatly influences how debugging is done. While Erlang does have a traditional debugger its breakpoints pause process execution and may cause other processes in the system to crash if they are waiting on a message from the process that has been paused. Tracing on the other hand can be done under any circumstances and provides just as much information as a typical debugger. Tracing is also significantly more flexible than breakpoint debugging as it doesn’t interfere with process execution and can gather data from multiple processes at once.