Cover photo
Charles Strahan
Worked at LivingSocial
Lives in Washington, DC


Charles Strahan

commented on a post on Blogger.
Shared publicly  - 
(Note that I'm not the author of Cap'n Proto, just a person who appreciates the design, and the author of a nascent implementation for Haskell.)

>> Immediately after each struct are a series of "fix-ups" or "field population instructions" that are basically a sequence of (field number, data type, data length, data) tuples.

Without fixed offsets, you'll have to pay for deserializing everything up front. With Cap'n Proto, you only pay for what you use. In something like what you describe, you'll have to hydrate a bunch of objects, which requires twice as much effort: the reads/writes from/to the buffer, and the reads/writes to the fields of your objects/structs/whatever your language decides to call them. With Cap'n Proto, the generated code directly read/writes from/to the buffer - half as much IO.

>> Basically if a programming language does not use raw struct layout in memory, then it won't be able to take advantage of the Cap'n Proto styled encoding

This is not true. In fact, Cap'n Proto's C++ implementation does not use struct layout, it generates classes that wrap a pointer and provides getters and setters. If your language supports arrays and a means of pulling-out/pushing-in primitives (ints, floats, strings, etc), you're set. That means Cap'n Proto can easily be implemented in C/C++, Rust, Python, JavaScript (see ArrayBuffer), Java (see ByteBuffer), C#, Haskell (I'm writing an implementation right now), etc - practically any relatively mainstream language you can think of.

>> and having a compact wire format is probably better.

What you describe would actually require more data on the wire - you include type metadata and field number, which Cap'n Proto does not. After packing (, Cap'n Proto messages will be much, much smaller.
I guess the fact that Kenton Varda, a principle author of Protocol Buffer and the guy who built the ultimate LAN party house, came up with Cap'n Proto specifically to address the problem of serialization and deserialization o...
Add a comment...

Charles Strahan

commented on a video on YouTube.
Shared publicly  - 

Charles Strahan

commented on a video on YouTube.
Shared publicly  - 
For the curious, the illusion is achieved through forced perspective. A Honda commercial uses the same technique to great effect, explained here:

Official Honda - An impossible made possible - Behind the Scenes

Another behind the scenes video, this time about Lord of the Rings:

How Lord of the Rings used forced perspective shots with a moving camera VIDEO]

Charles Strahan

commented on a post on Blogger.
Shared publicly  - 
Looks neat, but I'm not having any luck finding the source code. It looks like the code was previously available on Launchpad, but no longer.

What's the deal? Is Canonical thinking about keeping this closed source? Is there some embarrassment about the code quality? Seems strange that it would just disappear. It's a shame, because I'd love to play around with it.
A thing of beauty If you read my last post, perhaps you followed the embedded instructions and ran hundreds of LXD system containers on your own Ubuntu machine. Or perhaps you're already a Docker enthusiast and your super sav...
Dustin Kirkland's profile photoCharles Strahan's profile photo
Awesome - thanks for the info, and impressive work!

For what it's worth, I'm working on enabling Ubuntu's Fan Networking in NIxOS:

`fanctl' looks like it's working (it creates the bridge), though I still need to test pushing traffic through it. Exciting times ahead!
Add a comment...

Charles Strahan

commented on a video on YouTube.
Shared publicly  - 
This is incredibly awesome - looking forward to integrating Ariadne into my workflow. Thanks!

Charles Strahan

Shared publicly  - 
An excellent presentation on Shadow DOM.
Tj Holowaychuk's profile photo
looking forward to that stuff. "onBecome" is lame though haha
Add a comment...
Software Developer
  • LivingSocial
    Software Developer
  • Atlantic Aviation
Basic Information
Speaker & programmer extraordinaire.
Map of the places this user has livedMap of the places this user has livedMap of the places this user has lived
Washington, DC
Dallas, TX
Charles Strahan's +1's are the things they like, agree with, or want to recommend.
Running Emacs as a Server (Emacs Reboot #15) | Virtuous Code

Unlike more lightweight editors, it doesn't really make sense to run a new instance of Emacs whenever editing a file. Emacs is at its best

Yale West Apartments | Home

Yale West Apartments, where DC living comes to life. Sink into a new kind of atmosphere where you can kick it up a notch or kick back at you

Taking the Emmys by Storm

00:00 Introduction and live coding in Storm 55:00 The Emmys. Final results. Please enable JavaScript to view the comments powered by Disqus.

Google Groups - {:keys [jayq waltz fetch crate monet]} pinot

{:keys [jayq waltz fetch crate monet]} pinot, Chris Granger, 2/4/12 2:15 PM, Hey folks, By popular request I've finally broken pinot

Apache Ant - Welcome

Welcome. Apache Ant™. Apache Ant is a Java library and command-line tool whose mission is to drive processes described in build files as tar

Reeder for Chrome (Unofficial)

Blog dedicated for my "Reeder for Chrome (Unofficial)" extension. @DazChong Tweet

Thaddeus FordFan

Thaddeus Ford Music, Lyrics, Songs, and Videos by Thaddeus Ford at ReverbNation

.:: General Purpose Hash Function Algorithms - By Arash Partow ::.

The General Hash Function Algorithm library contains implementations for a series of commonly used additive and rotative string hashing algo