Wednesday, December 5, 2012

Heartbeat

The purpose of this post is to create continued activity to ensure I don't lose this blog. As mentioned a year ago, all activity continues on http://akerr.net/andrew/blog.

On my personally hosted site, you may be interested in progress I've made in modeling rigid body dynamics.

I also visited the Tennessee Valley Railroad Museum.

In an effort to better document several aspects of my personal interests. Visit my Development page for a list of past, ongoing, and planned software development projects. I've also made an effort to record and summarize various outdoor adventures.

Look around. Look forward. Look back.

Tuesday, December 13, 2011

On to WordPress

As a demonstration, I followed WordPress's five-minute installation process and the results are fairly gratifying. Thus, I plan on ceasing future updates to this blog (I write about 30 posts a year and publish 20 of them; it's not like they're that frequent).

Look for future updates at http://akerr.net/andrew/blog/.

See you there.

Thursday, September 1, 2011

Software Rasterization

The previous post awakened the part of me that is somewhat passionate about graphics programming. In the last three nights, I threw together a software rasterizer that is now capable of perspective-correct texture mapping in addition to point lights.

Here is a screenshot:

Rotating cube

And here is a video that VLC should have no trouble playing.

Some details:

The rasterization algorithm is very primitive. Triangle setup first ensures clockwise vertex ordering (cross product of the two edge vectors followed by a sign comparison) and culls backfaces. Next, a transformation to Barycentric coordinates is computed, and blocks of pixels in the render target are transformed and compared. If their Barycentric coordinates are found to lie within the triangle, they are used to interpolate vertex color and texture samples.

It is not yet GPU accelerated, though expect a CUDA implementation to follow.

Friday, July 22, 2011

ASCII Torus

Inspired by this guy's 3D torus rendered to an ASCII palette, I decided to spend an hour last night implementing something similar. Here's the source, and here's the result. It was a fun exercise:


@@@@@@@
@@@@$##*!!!===!!!*##$@@@@
@@@$$#*!=;;:~~-~~-~~~:~:;==!*#$$@@@
$@$$$#*!=;:~~~-~-----~~~~~~:::;=!!*#$$$@$
$$$$$##*=;~~~-----~~~~:::::::::~::;=!**#$$$$$
*$$$$$#*!=:~~------~~~~~::::::::::::::;!**#$$$$$#
*#$$$$$#*=:~--,,,-- ~:::::::=!*##$$$$#*
!*#$$$$$#*=~-,,, ~:~::!*#$$$$$#*!
;!*#$$$$$#*=,. ~~!*#$$$$$#*!;
-;!*#$$$$$$#!, ~*#$$$$$$#*!;,
~:;==**#$$$@@@$ #@@@$$$#**!=;~,
~~~:;=!*###$$@@@@ @@@@$$###*!=;:~-,
~~~::;=!***#$$$@@@@@@ @@@@@@$$$#***!=;:~~--
:~~~~~::;=!!**###$$$$@@@@@@@@@@@@@$$$$###**!!=;;:~~---,
::~~~~~~~:;;==!!****#############****!!==;;;:~~-----,
::~~~~-~~~~::;;=====!!!!!!!!!=====;;:::~---------
:::~~~~~~~-----~~:::::::::::::~~~-------------,
:::::~~~~~-~------------------------------,
:::::~~~~~~~~-----------------------,
:::::::~~~~~~~~~~~~~-----------
:::::::~~~~~~~~~~~~~-


And here it is rendered by the same utility to a higher resolution.

Wednesday, July 20, 2011

Screencapture Utility

I wrote a quick'n'dirty alternative to Skitch for Linux because Shutter was always so crappy. It's a simple Python script that enables on-the-fly cropping and immediate upload to the configured server. Took about ten minutes to research, write, and debug.

Here's a sample:
Sample screenshot

Wednesday, June 8, 2011

Alpine Ascents Successful Climb of Mount Everest

In brighter news, Seattle-based Alpine Ascents is currently wrapping up a successful summit assault on both Everest and nearby Lhotse a day later. A topological map illustrates the incredible vertical and horizontal distances covered.

Alpine Ascents May 2011 successful summit assaults of Mount Everest and Lhotse

This shows the route from base camp, traversal to Camp I across the Khumbu Icefall, Advanced Base Camp II at 21,000 ft, Camp III at 24,000 ft, Lhotse High Camp, and finally Camp IV at 26,000ft. From Camp IV, the route to the summit ascends 3,000 ft during a grueling 12 hour climb requiring a 9pm departure time to reach the summit by the next morning. The elevation profile shows the several returns to base camp from Camp II during the acclimatization period. It also shows the ascent of Lhotse by three of the climbers from the Everest group prior to the group's descent.

Alpine Ascents does a pretty thorough job listing their itinerary and equipment recommendations. Check it out, particularly the group electronics gear.

Into Thin Air

I recently finished reading Into Thin Air, Jon Krakauer's incredible description of his summit attempt on Mount Everest during what became the 1996 Mount Everest Disaster. The narrative describes Krakauer's experience during the heyday of commercial mountaineering guide services. As a journalist writing for Outside magazine, Krakauer described what was hoped to be a routine climb along Mount Everest's South Col summit route used by Hillary and Norgay during their record-setting first summit in 1953, now the standard route.

During summit day, slow progress by inexperienced climbers and judgment errors by guides set the stage for tragedy when a storm quickly materialized along the southern ridge. Blowing 40 knots and producing incredible wind chills, many tardy climbers including the leader of Krakauer's expedition were trapped high on the upper mountain. By this time, Krakauer himself had nearly made it to high camp in the col and narrowly escaped incredible amounts of exposure in the high winds. Lack of visibility thwarted rescue attempts, and by the next day eight members from two expeditions had perished while others suffered extreme frost bite.

An expedition filming the IMAX documentary Everest offered assistance and supplies such as additional bottled oxygen in addition to arranging a helicopter evacuation of two frost bitten climbers. This film hauntingly documents their perspective of the disaster.

One of the most striking components of this story is how altitude clouded the judgments of the people involved. Several times, someone attempting to adjust their oxygen regulators would get it wrong and either turn off the flow of O2 entirely or drain the tank in minutes. Tragically, one of the guides who had reached high camp during the storm incorrectly stated that all of the oxygen bottles were empty when, in fact, at least two were not. Krakauer speculates this incorrect information changed the plans of Rob Hall, the lead climber, who elected to stay with a client near Hillary Step, just below the summit, where both he and his client perished.

The 1996 Everest Disaster demonstrates the consequences of hubris high on a mountain. One of the guides from an American expedition wasn't climbing with oxygen. While this might be a personal challenge to overcome at other times, doing so while employed to take care of others is exceedingly dangerous. When disaster struck, he was unable to assist; he couldn't even wait around with a distressed climber, for the lack of oxygen slows human metabolism such that the only substantial source of internal heat is produced from muscles as they are operating. Additionally, the many climbers from multiple commercial expeditions created bottlenecks that delayed summit times and increased exposure to weather-related hazards; if the storm had struck even an hour later, many more people are likely to have made it to [limited] shelter in the South Col. Finally, turn around times were ignored at great peril.

One of the other lessons here is no climb is guaranteed, and achieving the summit is only the half-way point. Mountaineering is inherently quite dangerous, particularly above 8000m where oxygen levels are so low that it's virtually impossible to carry someone. Anyone considering undertaking such a venture should come to terms with the fact that rescue is nearly impossible; doubts in one's abilities, fitness levels, and weather conditions should be headed. Underscoring this point, most of the climbing along the upper mountain is done without ropes linking the climbers; falls are so perilous on the steep slopes that doing so would simply increase the scope of one person's tragedy.