CoreCLR 3.0 Intrinsics

(Are they any good?)

(Or: is it worth my time to memorize how to spell this word?)

getent passwd $(whoami)

damageboy:*:666:666:Dan Shechter:/home/dmg:/usr/bin/zsh

I’m a CTO of a high-frequency trading* firm that trades global markets from inside exchanges

Also, *nix programmer that really likes low-level & perf and whose been around the block: Windows/Linux kernel programming, Hypervisors

damageboy / twitter

What is this?

adjective belonging to a thing by its very nature

In programming

From Wikipedia (Intrinsic function)

“…an intrinsic function (or builtin function) is a function (subroutine) available for use in a given programming language which implementation is handled specially by the compiler.

Traditionally, used to expose processor functionality that doesn’t map well to the language:

In C#

Why should I care?

We’re live in an age of ever shrinking performance gains flowing from silicon:

Worse, In real terms, CPU perf has actually been going back, due to 2018- discovered CPU bugs (Meltdown,Spectre,Zombieland):

When all else fails, we look for alternative sources for perf gains; intrinsics provides an answer…
This includes CoreCLR developers themselves:

“Further, .NET Core 3.0 includes new hardware intrinsics that allow a properly-motivated developer to eke out the best possible performance on supporting hardware, utilizing extensions like AVX or SSE that can compare well more than 8 bytes at a time. Many of the improvements in .NET Core 3.0 come from utilizing these techniques.


reveal.js comes with a few themes built in: Black (default) - White - League - Sky - Beige - Simple
Serif - Blood - Night - Moon - Solarized

Slide Backgrounds

Set data-background="#dddddd" on a slide to change the background color. All CSS color formats are supported. Down arrow

Image Backgrounds

<!-- .slide: data-background="" -->


<!-- .slide: data-background="" data-background-repeat="repeat" data-background-size="100px" -->

Video Backgrounds

<!-- .slide: data-background-video="," data-background-color="#000000" -->

… and GIFs!

<!-- .slide: data-background="" -->

Background Transitions

Different background transitions are available via the backgroundTransition option. This one’s called “zoom”.

Background Transitions

You can override background transitions per-slide.

Pretty Code

function linkify( selector ) {
  if( supports3DTransforms ) {

    var nodes = document.querySelectorAll( selector );

    for( var i = 0, len = nodes.length; i &lt; len; i++ ) {
      var node = nodes[i];

      if( !node.className ) {
        node.className += ' roll';

Code syntax highlighting courtesy of highlight.js.

Marvelous List

Fantastic Ordered List

  1. One is smaller than…
  2. Two is smaller than…
  3. Three!

Tabular Tables

| Tables | Are | Cool | | ————- | :———–: | —-: | | col 3 is | right-aligned | $1600 | | col 2 is | centered | $12 | | zebra stripes | are neat | $1 |

Clever Quotes

These guys come in two forms, inline: “The nice thing about standards is that there are so many to choose from” and block:

“For years there has been a theory that millions of monkeys typing at random on millions of typewriters would reproduce the entire works of Shakespeare. The Internet has proven this theory to be untrue.”

Intergalactic Interconnections

You can link between slides internally, like this.

Speaker View

There’s a speaker view. It includes a timer, preview of the upcoming slide as well as your speaker notes.

Press the S key to try it out.

Export to PDF

Presentations can be exported to PDF, here’s an example:

Global State

Set data-state="something" on a slide and "something" will be added as a class to the document element when the slide is open. This lets you apply broader style changes, like switching the page background.

State Events

Additionally custom events can be triggered on a per slide basis by binding to the data-state name.

Reveal.addEventListener( 'customevent', function() {
	console.log( '"customevent" has fired' );
} );

Take a Moment

Press B or . on your keyboard to pause the presentation. This is helpful when you’re on stage and want to take distracting slides off the screen.

Much more


Handles finding a text string anywhere in the slides and showing the next occurrence to the user by navigatating to that slide and highlighting it.

Shortcut : CTRL + SHIFT + F


Zoom anywhere on your presentation

Shortcut : alt + click: Zoom in. Repeat to zoom back out.


Add note to speaker view.

Default markdown syntaxe is

note: a custom note here


Have you ever missed the traditional classroom experience where you can quickly sketch something on a chalkboard?

Just press ‘b’ or click on the pencil button to open and close your chalkboard.



Did you notice the button?

By pressing ‘c’ or clicking the button you can start and stop the notes taking mode allowing you to write comments and notes directly on the slide.


Add chart from simple string

Line chart from JSON string

Line chart with CSV data and JSON configuration

My first dataset, 65, 59, 80, 81, 56, 55, 40 My second dataset, 28, 48, 40, 19, 86, 27, 90

Bar chart with CSV data

,January, February, March, April, May, June, July My first dataset, 65, 59, 80, 81, 56, 55, 40 My second dataset, 28, 48, 40, 19, 86, 27, 90

Stacked bar chart from CSV file with JSON configuration

Pie chart

,Black, Red, Green, Yellow My first dataset, 40, 40, 20, 6 My second dataset, 45, 40, 25, 4


To embed a tweet, simply determine its URL and include the following code in your slides:

<div class="tweet" data-src="TWEET_URL"></div>


See the in the corner?

Click it and the menu will open from the side.

Click anywhere on the slide to return to the presentation, or use the close button in the menu.

If you don’t like the menu button, you can use the slide number instead.

Go on, give it a go.

The menu button can be hidden using the options, but you need to enable the slide number link.

Or you can open the menu by pressing the m key.

You can navigate the menu with the keyboard as well. Just use the arrow keys and or to change slides.

You can disable the keyboard for the menu in the options if you wish.


You can configure the menu to slide in from the left or right


The slide markers in the menu can be useful to show you the progress through the presentation.

You can hide them if you want.

You can also show/hide slide numbers.


The menu uses the first heading to label each slide but you can specify another label if you want.

Use a data-menu-title attribute in the section element to give the slide a custom label, or add a menu-title class to any element in the slide you wish.

You can change the titleSelector option and use any elements you like as the default for labelling each slide.


An extension of the math.js plugin allowing to render LaTeX in SVG.

The Lorenz Equations

[\begin{aligned} \dot{x} & = \sigma(y-x)
\dot{y} & = \rho x - y - xz
\dot{z} & = -\beta z + xy \end{aligned} ]

The Cauchy-Schwarz Inequality

Includes a footer in all the slides of a Reveal.js presentation (with optional exclusion of some slides) that will show the title of the presentation.


A plugin that allows focusing on specific lines of code blocks.

Code Focus Demo

// Useless comment.

Present code found within any repository source file. Without ever leaving your slideshow.