Commented footage of the space shuttle launch

Ascent is a commented montage of carefully selected videos of the launch of space shuttle, made by the Glenn Research Center. A DVD and a Blu-ray were produced but are apparently yet to be distributed reliably, so meanwhile the DVD ISO can be downloaded on this unofficial website.

The document is 45mn long, and presents outstanding footage taken during launch of missions STS-114, STS-117, and STS-124, from some of the 125 cameras used to ensure vehicle safety. Views include close ups of the ignition and of the launchpad at 400 fps, mid range footage, and up to footage taken from over 30km away (with the equivalent of a 4000mm lens). The comments give abundant detail about what is happening on the picture as well as the camera involved (lens, film, speed…).

As mentioned this video is 45mn long, but I’ve found it so captivating that I hardly noticed the length. If you only have 8mn available though, this other montage shows the launch from the cameras attached to the solid rocket boosters (SRB) with the recorded sound, from ignition, up until separation, then down to landing in the sea.

Facebook’s iOS Infrastructure

In this talk from @Scale 2014, Adam Ernst and Ari Grant present some of the problems met during the development of the native Facebook mobile application, and the solutions developed.

The first part, starting at around 7’00, explains why the built-in data management library was ill-suited and how they designed a different system to better suit their needs. The second part, starting at around 24’30, shows how their implementation of MVC was becoming unmanageable and how they redesigned it. Interestingly enough, in both cases the solution was based on immutability.

On proper use of communication in development

The following links came to my attention in a relatively narrow span of time. There would be a lot to be said but I will keep it brief.

Last month someone explained their reasons for leaving the Linux Kernel development team in an article that consequently got quite some attention. Apparently a toxic culture is encouraged there, under the motive of promoting open, direct discussion that doesn’t shy away from tackling issues.

Whether the motive is genuine or rationalized could be meat for debate by the way but, moving on. Last week this mail was posted by Linus Torvalds on the LKML, painfully illustrating the problem. Warning: (im)mature language.

Then, someone proposed this rephrased version, which is the reason of me posting today.

This here, is not just a joke, a funny contrast or Linus getting schooled; this is a lesson for anyone and an example to follow, this is what you want and the standard you should promote and expect from yourself and others in any development team you belong to. Especially so if you are a lead.

Series of articles on noise generation

I discovered last year these tutorials by Jasper Flick on how to make and use noise in Unity, and a couple of terrain and particle use examples. They present the difference between value noise and gradient noise, how Perlin noise and simplex noise work, and among others how to use curl noise to control the flow of particles.

The order information is presented is well thought, although the intention might not be clear at first. Don’t let the beginner’s tutorial tone (“You’ll learn to: create and fill a texture;”, etc.) turn you away, as the series do a great job at detailing the concepts and algorithms in a simple manner yet without cutting corners like so many articles on the topic do (when they’re not blatantly wrong and go ahead calling a blurred noise “Perlin noise”). I thought I had a pretty good grasp of gradient noise already, but reading it gave me an even better understanding.

Pushing particles around with Simplex curl noise.

While at it, other resources on the topic include Ken Perlin’s GDC 1999 talk and his two pages paper Improving noise explaining why use a 5th order polynomial for interpolation (a function I’ve sometimes seen called “smootherStep”).

PVRTC2 compression quality

Christophe Riccio posted on his twitter feed some pictures comparing the quality of different texture compression formats, including the PowerVR’s native compression format, PVRTC2. In the light of his tests, it seems to me the new compression is a lot better than before (unfortunately they are not compared).

Last year at my work, in a context of trying to reduce loading time, memory consumption and application size, we gave a try at PVRTC and in our use case it was a clear no go. The quality was so badly impacted that the texture size we’d need for the artists to be happy was well beyond the weight of a PNG of equivalent quality. In the end we settled with WebP.

Here it is interesting to see that even at 2bpp, PVRTC2 seems to retain a lot of detail and texture. The edge tend to be muddy but this is still very good for the price.

Book review: The Martian

Published in early 2014, it is a book written by a programmer, Andy Weir, and it is his first book. As any first book, and as any book written by someone whose day job is not being a writer, it’s not perfect. The style is so so, and sometimes even poor. But it is good enough. It is written with an engineer’s attention to technical detail though, and that makes reading a very fun experience for technical people, even if at moments it gets long and hard to follow.

The story is fairly well exposed by the trailer of the upcoming Matt Damon starring blockbuster movie: in a near future, a Mars exploration mission is aborted and the crew leaves the base, leaving one dead crew member behind. Except he’s not dead, and as he wakes up, he realizes he’s alone, without means of communication, forsaken on a lifeless planet, with a month worth of food, and about four years until a potential rescue mission reaches him.

From there, the author tells the story of how his character tries to survive with what he has at hand, while maliciously throwing at him all sorts of traps, accidents and set backs: “haha, today while working you create a short circuit and kill an essential piece of circuit”. It is all story told with care for realism that turns some parts into challenging puzzles (wait, you just killed him there! How can he make it out of that? Oh, nice, that’s clever! – or on the contrary – Ha! I know, he can use this and that, haha, I’m so smart) and includes some parts that rank pretty well on the adventure scale, like when he decides he’s gonna fetch an exploration rover 800km away to use its communication system.

Most of the book is narrated as logbook entries on the Mars side, and from a spectator’s point of view on the NASA side. It makes the reader aware of both sides while appreciating how each side tries to understand and anticipate what the other is doing. So this narration works very well for suspense.

I have never seen a work of fiction so perfectly capture the out-of-nowhere shock of discovering that you've just bricked something important because you didn't pay enough attention to a loose wire.

xkcd alt text: “I have never seen a work of fiction so perfectly capture the out-of-nowhere shock of discovering that you’ve just bricked something important because you didn’t pay enough attention to a loose wire.”
Funny coincidence: at the time of writing I didn’t realize I chose the exact same example as the xkcd alt text.

But on the down side, as I was saying, there are weaknesses in style. Essentially, I’d say there are mainly two of them. One is the fact that most of the story is told by shiplog entries, and those entries contain details to serve exposition that would never be logged in real life, like an astronaut explaining how the base works. The other one is the tone of the book, upbeat, casual and funny, conveyed by the tone of the character’s log entries and meant to show his personality in the face of adversity and dire situations. This would be all good if it didn’t prevent log entries from being on par with the strictness and ethics one would expect from an engineer sent to Mars. But of course, that would also make the book reading a much more dry experience, so the author’s choice is understandable.

As a conclusion, I recommend this book, I had a lot of fun reading it and learned a couple of things about practical space exploration along the way which is pretty cool for a novel.

In this 45mn talk, the author Andy Weir presents the book, reads the first chapter, then present a tool he wrote to compute the trajectory of the ship:

Various links on ray tracing

Here are some links related to ray tracing, and more specifically, path tracing.

Some ray tracing related projects or blogs:

Some major publications:

  • The rendering equation, SIGGRAPH 1986, James T. Kajiya. From the paper:

    We present an integral equation which generalizes a variety of known rendering algorithms.
    We mention that the idea behind the rendering equation is hardly new.
    However, the form in which we present this equation is well suited for computer graphics, and we believe that this form has not appeared before.

  • Bi-directional path tracing, Compugraphics 1993, Eric P. Lafortune and Yves D. Willems. From the paper:

    The basic idea is that particles are shot at the same time from a selected light source and from the viewing point, in much the same way. All hit points on respective particle paths are then connected using shadow rays and the appropriate contributions are added to the flux of pixel  in question.

  • Optimally Combining Sampling Techniques for Monte Carlo Rendering, SIGGRAPH 1995, Eric Veach and Leonidas J. Guibas. From the abstract:

    We present a powerful alternative for constructing robust Monte Carlo estimators, by combining samples from several distributions in a way that is provably good.

  • Metropolis Light Transport, SIGGRAPH 1997, Eric Veach and Leonidas J. Guibas. From the abstract:

    To render an image, we generate a sequence of light transport paths by randomly mutating a single current path (e.g. adding a new vertex to the path).

  • Robust Monte Carlo methods for light transport simulation, 1998, Erich Veach PhD thesis (432 pages pdf): it presents bidirectional path tracing, and introduces Metropolis Light Transport and Multiple Importance Sampling. From the abstract:

    Our statistical contributions include a new technique called multiple importance sampling, which can greatly increase the robustness of Monte Carlo integration. It uses more than one sampling technique to evaluate an integral, and then combines these samples in a way that is provably close to optimal. This leads to estimators that have low variance for a broad class of integrands. We also describe a new variance reduction technique called efficiency-optimized Russian roulette.


    The second algorithm we describe is Metropolis light transport, inspired by the Metropolis sampling method from computational physics. Paths are generated by following a random walk through path space, such that the probability density of visiting each path is proportional to the contribution it makes to the ideal image.


On a slightly different topic, fxguide had a great series of articles on the state of rendering in the film industry, which I previously mentioned.