Nick Desaulniers

The enemy's gate is down

Aug 14, 2015 - 5 minute read - Comments - SIGGRAPH graphics VR

My SIGGRAPH 2015 Experience

I was recently lucky enough to get to attend my first SIGGRAPH conference this year. While I didn’t attend any talks, I did spend some time in the expo. Here is a collection of some of the neat things I saw at SIGGRAPH 2015. Sorry it’s not more collected; I didn’t have the intention of writing a blog post until after folks kept asking me “how was it?” VR Most booths had demos on VR headsets.

Jul 23, 2015 - 6 minute read - Comments - C C++ clang llvm toolchain

Additional C/C++ Tooling

21st Century C by Ben Klemens was a great read. It had a section with an intro to autotools, git, and gdb. There are a few other useful tools that came to mind that I’ve used when working with C and C++ codebases. These tools are a great way to start contributing to Open Source C & C++ codebases; running these tools on the code or adding them to the codebases.

May 25, 2015 - 21 minute read - Comments - interpreter compiler just in time JIT Brainfuck C

Interpreter Compiler JIT

Interpreters and compilers are interesting programs, themselves used to run or translate other programs, respectively. Those other programs that might be interpreted might be languages like JavaScript, Ruby, Python, PHP, and Perl. The other programs that might be compiled are C, C++, and to some extent Java and C#. Taking the time to do translation to native machine code ahead of time can result in better performance at runtime, but an interpreter can get to work right away without spending any time translating.

Feb 22, 2015 - 8 minute read - Comments - crypto javascript security

Hidden in Plain Sight - Public Key Crypto

How is it possible for us to communicate securely when there’s the possibility of a third party eavesdropping on us? How can we communicate private secrets through public channels? How do such techniques enable us to bank online and carry out other sensitive transactions on the Internet while trusting numerous relays? In this post, I hope to explain public key cryptography, with actual code examples, so that the concepts are a little more concrete.

Jan 25, 2015 - 7 minute read - Comments - webgl emscripten asm.js

Writing My First Technical Book Chapter

It’s a feeling of immense satisfaction when we complete a major achievement. Being able to say “it’s done” is such a great stress relief. Recently, I completed work on my first publication, a chapter about Emscripten for the upcoming book WebGL Insights to be published by CRC Press in time for SIGGRAPH 2015. One of the life goals I’ve had for a while is writing a book. A romantic idea it seems to have your ideas transcribed to a medium that will outlast your bones.

Apr 18, 2014 - 22 minute read - Comments - asm x86

Let's Write Some X86-64

…"‘Our speech interposes itself between apprehension and truth like a dusty pane or warped mirror. The tongue of Eden was like a flawless glass; a light of total understanding streamed through it. Thus Babel was a second Fall.’ And Isaac the Blind, an early Kabbalist, said that, to quote Gershom Scholem’s translation, ‘The speech of men is connected with divine speech and all language whether heavenly or human derives from one source: the Divine Name.

Mar 1, 2014 - 5 minute read - Comments - testing bugs

Write a Test Case

Your application just broke, oh no! It couldn’t have been your code, right? I’ve always had trouble spotting mistakes in my own work such as spelling, grammar, mathematical, or even in programming. With spelling or grammar, office applications quickly pick up on my mistakes and underline them for me, but most of my mistakes come from my own hubris. I’m confident in what I do, and that gets me in trouble when I make little mistakes.

Sep 26, 2013 - 6 minute read - Comments - partial function application javascript

Function.prototype.bind Edge Cases

ECMAScript 5’s Function.prototype.bind is a great tool that’s implemented in all modern browser JavaScript engines. It allows you to modify the context, this, of a function when it is evaluated in the future. Knowing what this refers to in various contexts is key to being a professional JavaScript developer; don’t show up to an interview without knowing all about it. Here’s a common use case that developers need to watch for.

Aug 28, 2013 - 14 minute read - Comments - coffeescript javascript module node.js

Making Great Node.js Modules With Coffeescript

Node.js is a great runtime for writing applications in JavaScript, the language I primarily develop in. CoffeeScript is a programming language that compiles to JavaScript. Why would we write a reusable piece of code, a module , in CoffeeScript? CoffeeScript is a very high level language and beautifully brings together my favorite aspects of JavaScript, Ruby, and Python. In this tutorial, I’ll show you how I create reusable open source modules for Node.

Jul 25, 2013 - 5 minute read - Comments - C syntax

Designated Initialization With Compound Literals in C

Just a quick post on something I just discovered and found neat (I always find obscure C syntax interesting). I was trying to figure out how to use a C designated initializer, where a member was a pointer to another designated initializer. At this point, you need a compound literal. Just a quick background on C initialization: // verbosely create an array with a known size int arr [3]; arr[0] = 1; arr[1] = 2; arr[2] = 3; // => [1, 2, 3] // concisely create an array with a known size int arr [3] = { 1, 2, 3 }; // => [1, 2, 3] // creates an array with unspecified values initialized to 0 int arr [4] = { 1, 2, 3 }; // => [1, 2, 3, 0] // truncates declaration int arr [1] = { 1, 2, 3 }; // => [1] // based on number of initializers int arr [] = { 1, 2, 3 }; // => [1, 2, 3] Let’s look at how we might have initialized a struct in C89.