Wednesday, October 15, 2014

It's raining fusion projects

This week, three press releases came out about separate nuclear fusion initiatives.  First up was the University of Washington, who announced on October 8 that they will present their "dynomak" concept at the upcoming Fusion Energy Conference in St. Petersburg, Florida Russia.  Next up was Sandia Labs on October 14, who announced new results from their "Z-machine", including significant neutron production.  Finally, we have Lockheed-Martin, who announced on October 15  that they had made a breakthrough in some sort of cylindrical-confinement fusion configuration, and are working toward building a 100Mw reactor in the next decade that would fit in a semi trailer.

These follow on the heels of prior announcements from:

And, of course, ITER keeps plodding along, projecting that they might have something interesting by 2027, after consuming about $20 billion.

I've seen some speculation that Lockheed-Martin's concept might be related to EMC2 Fusion's results, although I don't see evidence from the available information.  At any rate, three announcements from three different groups within a week leads me to wonder whether something is afoot.  For one thing, there is the October 13-18 International Atomic Energy Agency Fusion Energy Conference.  But I also suspect that there is some grant or venture funding cycle that the three are going to compete for.

Interesting times for fusion research...

Thursday, July 31, 2014

EPA: Please regulate carbon dioxide emssions

Text of my testimony before the EPA yesterday (July 30, 2014):

Good afternoon.  My name is Ross Cunniff.  I am a Fort Collins City Council member, but I am speaking only on my own behalf today.

My father was born and raised in Colorado.  Although he left Colorado to serve in the US Army, we returned frequently in the 1960s and 1970s to visit our family here.  I have vivid memories of Colorado from those days.  I remember startling blue skies, fast-running mountain streams, tree-covered hillsides, and snow-capped mountain-tops.  My wife and I moved to Colorado in 1987 to raise our family.  Although many more people lived here by then, the character of the state was much the same as I remembered, and we delighted in sharing it with our daughters as they grew up.

However, the past decade has seen significant change for the worse.  Colorado is not the same as it was when I was growing up.  The view of the Front Range is frequently obscured by haze.  The mountains are not snow-capped nearly as often as they used to be.  Glaciers in Rocky Mountain National Park have receded.  The forests have been devastated, first by the infestation of pine beetles, and then by wildfires.  Drought has alternated with severe flooding, the impacts of which are made worse by the newly barren hillsides.  And diseases like West Nile are now present in Colorado, where they never were before.

All of these impacts are related to the significantly warmer climate.  The proof is in the numbers.  The frequency and duration of record-breaking heat waves has increased dramatically.  Not only that, but the intensity and length of cold spells has decreased.  This has directly impacted our watershed, and has led to the spread of warmer-weather insects, parasites, and diseases which would not have survived the winters of the past.

This is not a natural disaster, or something that is “just happening” to us.  People are the direct cause of this rapid climate change.  Our carbon dioxide emissions continue to increase, creating an invisible blanket around the planet which keeps heat from escaping into space.

On the Fort Collins City Council, we spend significant time and money dealing with the effects of climate change.  We had to add new water treatment stages to deal with ash from the 2012 High Park fire.  We, along with most communities in Larimer County, are still working to recover from the 2013 flash floods.  We spend time, energy, and money on policies and procedures regarding West Nile Virus in our community.  Although we have an aggressive climate action plan, we understand that we only control a small part of the United States’ carbon dioxide production.

This is why we need the federal government to help.  We need to act together as a united country, and rapidly and dramatically reduce our production of carbon dioxide.  Coal-fired power plants are the biggest single producers of CO2.  The proposed EPA regulations are a necessary start to our action.

My wife and I recently discovered that we are soon to become grandparents.  This has made my resolve to address climate change that much more passionate.  I want my grandchildren - and all our grandchildren - to enjoy the same beautiful Earth that we enjoyed.  Please act to help make that happen.

Saturday, November 30, 2013

Time-correlated animated GIF of ISON from NASA/STEREO

Thursday, November 28, comet C/2012 S1 (ISON) went through perihelion.  It's not clear what happened to it, yet, but the world had a ringside view thanks to NASA's STEREO spacecraft.  These spacecraft orbit the Sun.  Right now, they are opposite the Sun from Earth:

I took the animated GIFs I found at and time-correlated them into a single animated GIF, which you may find here:

[Original image credit: NRL/NASA]

If ISON does emerge somewhat intact, expect a plethora of images from amateur astronomers around the world.  Stay tuned...

Friday, January 11, 2013

Running for City Council

Today, I announced my bid for Fort Collins City Council, in District 5 (the current councilmember, Kelly Ohlson, is term-limited).  You can read all about it at - it should be a great adventure!

Sunday, December 16, 2012

GoPro Hero3 Black Multi-Camera Timing

In the previous post, I explored the field-of-view of a GoPro Hero3 Black camera.  In this post, I explore the timing of two cameras, both paired with the same remote.  I set the cameras to 848x480 240Hz video, pointed them at a kitchen timer that has an LED blink once per second, and recorded.  Here are four images from each camera, composed together so you can see how the timing varies:

So, accurate to within 2 frames at 240 Hz - only about 8 milliseconds or so of difference.  Should be good enough for my purposes.  The bigger concern is the color shift apparent between them.  Note that the bottom image seems a little more saturated than the top.  Probably correctable, but annoying.

GoPro Hero3 Black Field of View

I got two GoPro Hero3 Black cameras and am planning a panoramic project with them.  However, to do the project correctly and accurately, I need a good read on their field-of-view.  So, I set up a tripod and a grid and a tape measure, and took a few photos.  Here they are, desaturated and contrast-enhanced, with central red dots and some annotations.  First, measuring the diagonal FOV:

Next, the horizontal FOV:

Finally, the vertical FOV:

The front of the camera lens was almost exactly 17 inches from the grid.  The camera body started about 17.25 inches from the grid.  Assuming the sensor is embedded some distance into the body, I used an estimated field-to-sensor distance of 17.5 inches.  This yields the following field-of-view, in degrees:

Diagonal: 146
Horizontal: 121
Vertical: 93

Doing a little interval math on the field-to-sensor distance shows these angles are accurate to about plus or minus 1.5 degrees.

Interestingly, Photoshop seems unable to correct the barrel distortion of the GoPro's built-in lens.  The EXIF information says it is a 2.77mm f/2.8.  I suspect it is some sort of a non-linear distortion (i.e. stronger toward the corners than in the middle).  I'll do a little math and see what I can figure out...

Edit - Dec 29 2012
I wrote a program to account for the spherical projection the lens uses.  It is a very straightforward projection, and works out to a horizontal field-of-view of roughly 114 degrees (i.e. a little smaller than I calculated, probably due to the difficulty of reading the tape measure numbers as they get squished toward the edge).  Basically, you can reproject the pixels to a flat plane by scaling the distance of each pixel from the center of the image proportional to the atan of that distance, divided by the constant which comes out to half the horizontal field-of-view:

r = atan(r) * (180 / (WIDTH_HALF_ANGLE*M_PI)) * (w/2);

Using this correction, here is the diagonal FOV image, reprojected:

The keystoning of the sewing board is due to the fact that the camera was not facing directly perpendicular to it, so there is a perspective distortion.  Two things show that this is the correct projection:

1. The left and right edges of the sewing board, reasonably straight in reality, are straight in this image
2. The tape measure is a consistent width across the entire image.

Edit 2 - Mar 28, 2013
To make it absolutely clear how I did this, here is a code fragment from the C program I hacked together for this.  Strictly point-sampled (no interpolation) but good enough to demonstrate the math.

/* Half of the horizontal field-of-view, in degrees */
#define WIDTH_HALF_ANGLE        57

int i, j; // loop counters
int w, h, c; // input: image width & height & # of components (typically 3 or 4)
int nw, nh; // Expanded width-height range to pick up all the pixels
double x, y, r, ang; // temporary floating point variables
int ix, iy; // calculated indices
unsigned char *img, *dst;  // Source and destination raster images

    nw = w * 2.5;
    nh = h * 2.5;

    for (i = 0; i < nh; i++) {
        for (j = 0; j < nw; j++) {
            // Calculate fractional x/y coords - (0,0) is the center of the image
            x = (j - nw*0.5) / (0.5 * w);
            y = (nh*0.5 - i) / (0.5 * w);

            // Calculate distance from center, and normalize to a unit vector
            r = sqrt(x*x + y*y);
            if (r > 0.0) { x /= r; y /= r; }

            // Calculate the angle of this unit vector from
            // horizontal-to-the-right
            ang = atan(r) * 180 / (WIDTH_HALF_ANGLE*M_PI);

            // Calculate adjusted distance this pixel really was
            r = ang * w/2;

            // Figure out where in the image that distance is
            // (nearest neighbor sampling)
            ix = x*r + w/2 + 0.5;
            iy = h/2 - y*r + 0.5;

            // If that source pixel is within the image bounds...
            if ((ix >= 0) && (iy >= 0) && (ix < w) && (iy < h)) {
                // ... then copy it over
                for (n = 0; n < c; n++) {
                    dst[c*(i*nw + j) + n] = img[c*(iy*w + ix) + n];

Sunday, August 26, 2012

Apollo Inception

I found out this weekend (Aug 25/26) that everything goes better with Inception. So, in honor of Neil Armstrong's passing, I made this montage of Apollo 11 footage from NASA footage ( ) and the music Mind Heist by Zack Hemsey ( ) The only concession to timing was that I cut a few seconds of Walter Cronkeit's face out to match the length.

Everything *does* go better with Inception!

Saturday, August 25, 2012

Neil Armstrong, 1930-2012

July 20, 1969.  I was 5, and my father had just returned from Vietnam.  He took me outside that night to see the Moon.  It was not quite this full - 6 days instead of 8 as pictured here - but still stunning.  A person was walking on the moon!  The Apollo program had a huge impact on my childhood, and strongly influenced my choice of engineering as a career.

There will be plenty of tributes to Neil Armstrong today, but for me, it is enough to say that a giant of American history has passed.

I took this photo this evening in memory of Neil.  May we honor his memory by continuing to explore the Universe.