text:
Ever wanted to have your own C/C++ preprocessor? Or maybe you are curious
about how this invisible everyday helper of your toolbox works? If yes, you may
want to read further. If no - before hitting the 'back' button of your browser
consider to learn something new and read further too :-).
The C++ preprocessor is a macro processor that under normal circumstances is
used automatically by your C++ compiler to transform your program before the
actual compilation. It is called a macro processor because it allows you to
define macros, which are brief abbreviations for longer constructs. The C++
preprocessor provides four separate facilities that you can use as you see fit:
These features are greatly underestimated today, even more, the preprocessor
has been frowned on for so long that its usage just hasn't been effectively
pushed until the Boost preprocessor library [1]
came into being a few years ago. Only today we begin to understand, that
preprocessor generative metaprogramming combined with template metaprogramming
in C++ is by far one of the most powerful compile-time
reflection/metaprogramming facilities that any language has ever supported.
The C++ Standard [2]
was adopted back in 1998, but there is still no (known to me) C++ compiler,
which has a bug free implementation of the rather simple preprocessor
requirements mandated therein. This may be a result of the mentioned
underestimation or even banning of the preprocessor from good programming style
during the last few years or may stem from the somewhat awkward standardized
dialect of English used to describe it.
So the Wave preprocessor library is an attempt to:
To simplify the parsing task of the input stream (which is most of the time,
but not restricted to, a file) the Spirit parser construction library [4]
is used.
The Wave C++ preprocessor is not a monolithic application, it's rather
a modular library, which exposes mainly a context object and an iterator
interface. The context object helps to configure the actual preprocessing
process (as search path's, predefined macros, etc.). The exposed iterators are
generated by this context object too. Iterating over the sequence defined by
these two iterators will return the preprocessed tokens, which are to be built
on the fly from the given input stream.
The C++ preprocessor iterator itself is feeded by a C++ lexer iterator, which
implements an unified interface. By the way, the C++ lexers contained within the
Wave library may be used standalone too and are not tied to the C++
preprocessor iterator at all. As a lexer I'll understand a piece of code, which
combines several consecutive characters in the input stream into a stream of
objects (called tokens) more suitable for subsequent parsing. These tokens carry
around not only the information about the matched character sequence, but
additionally the position in the input stream, where a particular token was
found. In other words the lexer removes all this so-needed-by-human garbage like
spaces, newlines, etc. (i.e. performs some lexical transformation) leaving the
structural transformation for parser.
To make the Wave C++ preprocessing library modular, the C++ lexer is
held completely separate and independent from the preprocessor. To proof this
concept, there are two different C++ lexers implemented and contained within the
library by now, which are functionally completely identical. The C++ lexers
expose the mentioned unified interface, so that the C++ preprocessor iterator
may be used with both of them. The abstraction of the C++ lexer from the C++
preprocessor iterator library was done to allow to plug in different other C++
lexers too, without the need to re-implement the preprocessor. This will allow
for benchmarking and specific finetuning of the process of preprocessing
During the last weeks Wave got another field of application: testing
the usability and applicability of different Standards proposals. A new C++0x
mode was implemented, which allows to try out and help to establish some ideas,
which are designed to overcome some of the known limitations of the C++
The actual preprocessing is a highly configurable process, so obviously you
have to define a couple of parameters to control this process, such as:
#include <...>
#include "..."
You can access all these processing parameters through the
wave::context object. So you have to instantiate at least one
object of this type to use the Wave library. For more information about
the context template please refer to the class reference as included in the
downloadable file or as may be found here.
The context object is a template class, for which you have to supply at least
two template parameters: the iterator type of the underlying input stream to use
and the type of the token to be returned from the preprocessing engine. The type
of the used input stream is defined by you, so may the token type, but as a
starting point I would recommend to use the token type predefined as the default
inside the Wave library - the wave::cpplexer::lex_token<>
template class. A full reference of this class you can find inside the
downloadable file or here.
The main preprocessing iterators are not to be instantiated directly, but
should be generated through this context object too. The following code snippet
preprocesses a given input file and outputs the generated text into
// Open the file and read it into a string variable
std::ifstream instream("input.cpp");
std::string input(
// The template wave::cpplexer::lex_token<> is the default
// token type to be used by the Wave library.
// This token type is one of the central types throughout
// the library, because it is a template parameter to many
// of the public classes and templates and it is returned
// from the iterators itself.
typedef wave::context<std::string::iterator,
wave::cpplexer::lex_token<> >
// The C++ preprocessor iterators shouldn't be constructed
// directly. These are to be generated through a
// wave::context<> object. Additionally this wave::context<>
// object is to be used to initialize and define different
// parameters of the actual preprocessing.
context_t ctx(input.begin(), input.end(), "input.cpp");
context_t::iterator_t first = ctx.begin();
context_t::iterator_t last = ctx.end();
// The preprocessing of the input stream is done on the fly
// behind the scenes during the iteration over the
// context_t::iterator_t based stream.
while (first != last) {
std::cout << (*first).get_value();
This sample shows, how the input may be read into a string variable, from
where it is fed into the preprocessor. But the parameters to the constructor
of the wave::context<> object are not restricted to this type
of input stream. It can take a pair of arbitrary iterator types (conceptually at
least forward_iterator type iterators) to the input stream, from
where the data to be preprocessed should be read. The third parameter supplies a
filename, which is subsequently accessible from inside the preprocessed tokens
returned from the preprocessing to indicate the token position inside the
underlying input stream. Note though, that this filename is used only as long no
#include or #line directives are encountered, which in
turn will alter the current filename.
The iteration over the preprocessed tokens is relatively straight forward.
Just get the starting and the ending iterators from the context object (maybe
after initializing some include search paths) and you are done! The
dereferencing of the iterator will return the preprocessed tokens, which are
generated on the fly from the input stream.
As you may have seen, the complete library resides in a C++
using namespace
If you ever had the need to debug a macro expansion you had to discover, that
your tools provide only little or no support for this task. For this reason the
Wave library got a tracing facility, which allows to get selectively some
information about the expansion of a certain macro or several macros.
The tracing of macro expansions generates a possibly huge amount of
information, so it is recommended, that you explicitly enable/disable the
tracing for the macro in question only. This may be done with the help of a
special #pragma:
#pragma wave trace(enable) // enable the tracing
// the macro expansions here will be traced
// ...
#pragma wave trace(disable) // disable the tracing
To see, what the Wave driver generates while expanding a simple macro,
I suggest, that you try to compile the following with 'wave -t test.trace
// test.cpp
#define X(x) x
#define Y() 2
#define CONCAT_(x, y) x ## y
#define CONCAT(x, y) CONCAT_(x, y)
#pragma wave trace(enable)
// this macro expansion is to be traced
CONCAT(X(1), Y()) // should expand to 12
#pragma wave trace(disable)
After executing this command the file test.trace will contain the generated
trace output. The generated output is relatively straightforward to understand,
but you can find a thorough description of the trace output format in the
documentation included with the downloadable file.
In order to prepare and support a proposal for the C++ Standards committee,
which will describe certain new and enhanced preprocessor facilities, the
Wave preprocessor library has implemented experimental support for the
following features:
Variadic macros and placemarker tokens are known already from the C99
Standard. Its addition to the C++ Standard would help to make C99 and C++ less
Token-pasting of unrelated tokens (i.e. token-pasting resulting in multiple
preprocessing tokens) is currently undefined behaviour for no substantial
reason. It is not dependent on architecture nor is it difficult for an
implementation to diagnose. Furthermore, retokenization is what most, if not
all, preprocessors already do and what most programmers already expect the
preprocessor to do. Well-defined behavior is simply standardizing existing
practice and removing an arbitrary and unnecessary undefined behavior from the
One of the major problems of the preprocessor is that macro definitions do
not respect any of the scoping mechanisms of the core language. As history has
shown, this is a major inconvenience and drastically increases the likelihood of
name clashes within a translation unit. The solution is to add both a named and
unnamed scoping mechanism to the C++ preprocessor. This limits the scope of
macro definitions without limiting its accessibility.
The proposed scoping mechanism is implemented with the help of three new
preprocessor directives: #region, #endregion and
#import (note that the actual names for the directives may change
during the standardization process). Additionally it changes minor details of
some of the existing preprocessor directives: #ifdef,
#ifndef and the operator defined().
operator defined()
To avoid overly detailed descriptions of the new features in this article, a
simple example is provided here (taken from the experimental version of the
preprocessor library written by Paul
Mensonides), which demonstrates the proposed extensions:
# ifndef ::CHAOS_PREPROCESSOR::chaos::WSTRINGIZE_HPP
# region ::CHAOS_PREPROCESSOR::chaos
# define WSTRINGIZE_HPP
# include <chaos/experimental/cat.hpp>
# // wstringize
# define wstringize(...) \
chaos::primitive_wstringize(__VA_ARGS__) \
# // primitive_wstringize
# define primitive_wstringize(...) \
chaos::primitive_cat(L, #__VA_ARGS__) \
# endregion
# endif
# import ::CHAOS_PREPROCESSOR
chaos::wstringize(a,b,c) // expands to: L"a,b,c"
The macro scope syntax is resembled after the namespace scoping already known
from the core C++ language. There is a significant difference though. The
#region and #endregion directives are opaque for any
macro definition from outside or inside the spanned region, respective. This way
macros defined inside a specific region are visible from outside this region
only, if these are imported (by the #import directive) or if these
are qualified (as for instance the argument to the #ifndef
directive above).
For more details about the new experimental features please refer to the
documentation included with the downloadable file.
The described features are enabled by the --c++0x command line
option of the Wave driver. Alternatively you can enable these features by
calling the wave::context<>::set_language() function with the
wave::support_cpp0x value.
To see, how you may write a full blown preprocessor, you may refer to the
Wave driver sample, included in the downloadable file. This Wave
driver program fully utilizes the capabilities of the library. It is usable as a
preprocessor executable on top of any other C++ compiler. It outputs the textual
representation of the preprocessed tokens generated from a given input file.
This driver program has the following command line syntax:
Usage: wave [options] [@config-file(s)] file:
Options allowed on the command line only:
-h [--help]: print out program usage (this message)
-v [--version]: print the version number
-c [--copyright]: print out the copyright statement
--config-file filepath: specify a config file (alternatively: @filepath)
Options allowed additionally in a config file:
-o [--output] path: specify a file to use for output instead of
-I [--include] path: specify an additional include directory
-S [--sysinclude] syspath: specify an additional system include directory
-F [--forceinclude] file: force inclusion of the given file
-D [--define] macro[=[value]]: specify a macro to define
-P [--predefine] macro[=[value]]: specify a macro to predefine
-U [--undefine] macro: specify a macro to undefine
-n [--nesting] depth: specify a new maximal include nesting depth
Extended options (allowed everywhere)
-t [--traceto] path: output trace info to a file [path] or to stderr [-]
--timer: output overall elapsed computing time to stderr
--variadics: enable variadics and placemarkers in C++ mode
--c99: enable C99 mode (implies variadics)
--c++0x: enable experimental C++0x support (implies
To allow the tracing output, the Wave driver now has a special command
line option -t (--trace), which should be used to specify a file, to which the
generated trace information will be put. If you use a single dash ('-') as the
file name, the output goes to the std::cerr stream.
There is left one caveat to mention. To use the Wave library or to
compile the Wave driver yourself you will need at least the VC7.1
compiler (the C++ compiler included in the VS.NET 2003 release). Alternatively
you may compile it with a recent version of the gcc compiler (GNU Compiler
Collection) or the Intel V7.0 C++ complier. Sorry, for now no VC6 and no VC7 -
these are to far away from C++ Standard conformance. But I will eventually try
to alter parts of the Wave library to make it compilable with this
compilers too - it depends on your response.
Wave depends on the Boost library (at least V1.30.2) and the Program Options library from Vladimir Prus (at least rev. 160, recently adopted to Boost, but not included yet) , so please be sure to install these libraries, before trying to recompile Wave.
Despite the fact, that the Wave library is quite complex and heaviliy
uses advanced C++ idioms, as templates and template based metaprogramming, it is
farely simple to be used in a broad spectrum of applications. It nicely fits
into well known paradigms used over years by the C++ Standard Template Library
The Wave driver program is the only known to me C++ preprocessor,
therefore it may be an invaluable tool for the development of modern C++
As recent developments like the Boost Preprocessor Library show [1],
we will see in the future a lot of applications for advanced preprocessor
techniques. But these need a solid base - a Standard conformant preprocessor. As
long as the widely available compilers do not fit into these needs, the
Wave library may fill this gap.
operator _Pragma()
_Pragma wave system()
This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.
A list of licenses authors might use can be found here
#define COMMENT_MACRO /##/
void test() {
COMMENT_MACRO comment
void test() {
// comment
void test() {
Evgeniy Ryzhkov wrote:If I pass "--c99" or "—variadics" parameters to wave then I have this problem.
Evgeniy Ryzhkov wrote:P.S. Where is a good place for questions like this?
pj1000 wrote:I'm evaluating wave as a cpp replacement. I'm having a problem at the moment in that the #line output shows the name of the source file as an absolute path, and my regressions are expecting a gcc-style relative path.
Before I have a go at hacking this, can anyone tell me if there's some configuration that can be set to output relative paths? Or to make the output more gcc/cpp-compatible?
pj1000 wrote:Or to make the output more gcc/cpp-compatible? There are a couple of other minor differences to gcc and mcpp: wave produces '#line n', for example, and the others produce '# n'.
Rowan S-B wrote:1. I don't need/want #line directives - they confuse my assembler, and I don't want to have to run another pass with some other sort of processor to remove them. MCPP has an option to turn these off.
Rowan S-B wrote:2. I would like to preserve white space, since the code is pretty illegible without it, and this code may have to be maintained manually. MCPP has an option for this.
Rowan S-B wrote:3. Wave inserts a space inside tokens like 20d or 5ah (meaning decimal or hex constants), converting these to 20 d and 5 ah. Can I prevent this happening? MCPP doesn't do this...
Vincent_RICHOMME wrote:First I have created a config file (wave.cfg) with my system include but it seems wave doesn't know how to interpret windows PATH.
Vincent_RICHOMME wrote:and when I execute wave.exe I got nothing.
talewisx wrote:I found that include statements which include relative paths (such as "..\..\INCLUDE\PlatformBinding.h" generates an error such as:
(1): exception caught: boost::filesystem::path: invalid name "..\..\INCLUDE\PlatformBinding.h" in path: "..\..\INCLUDE\PlatformBinding.h"
This seems to be a problem with Boost's path parsing code. However, this passes other preprocessors that I have. Any thoughts?
General News Suggestion Question Bug Answer Joke Praise Rant Admin
Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.


text:
Tuesday, February 23, 2010
Two Suicidally Spicy Salsas
So when I say these salsas are spicy, I am not kidding around. I suggest you start by making my super spicy salsas, and only attempt these if you think you can handle nearly twice as much heat. The first is just a twist on the Taqueria Cancun-inspired salsa verde recipe from that post. I eat it on pretty much a weekly basis (it's fabulous on eggs) and wasn't really thinking that it needed improvement. But then I found some intriguingly unfamiliar green peppers at my local produce market. They were in an unmarked box, and no one in the store could tell me their name in either English or Spanish. In the case of chilis, smaller is better, and these were some of the tiniest peppers I've seen for sale in the U.S. I grabbed about a cupful—for the bargain price of $2!—and quickly came home to pickle my peppers. Pickling intensifies the spicy flavor of the peppers and helps them last a lot longer without spoiling.
Explosive Salsa Verde with Pickled Mystery Peppers
Momofuku cookbook. I cut down the sugar because after cooking four or five recipes from the book, I've decided that David Chang has a much bigger sweet tooth than I do. In an airtight container, combine a cup of hot water (from the tap, not boiling) with half a cup of rice vinegar, two tablespoons of sugar and just over two tablespoons of kosher salt. Mix all those ingredients together until the sugar is dissolved. Put your peppers in. They should be ready to eat in a couple of days and last forever.
To make the new and improved green salsa, I simply added three of these super spicy pickled peppers to the usual ingredients, which have been tweaked a tiny bit since I last posted the recipe (one ripe avocado, handful of cilantro, pinch of salt, six serranos, juice of two limes) and blended it all to a smooth paste. Best batch yet.
For the second salsa, I turned to another Mission restaurant for inspiration. I'm obsessed with the super sour salsa at Poc Chuc (a Mayan eatery), and I've been dying to recreate it at home. Unfortunately, I couldn't figure out how to get my hands on the magic ingredient, "sour oranges." I tried some bottled sour orange juice that I found in one of the nearby Mexican markets and it wasn't even close. Then, I happened to be browsing Epicurious for habanero salsa recipes and they connected the dots for me. Sour orange = Seville orange. Fortuitously, we happen to be in the middle of citrus season, so I ran down to Bi-Rite and bought a bagful of these beauties. Seville oranges, by the way, also make a fantastically tart dressing that stands up well to strong salad greens like arugula and peppercress.
Once I found the magic ingredient, the recipe came together very quickly. This salsa will be incredibly spicy when you first make it, but if you let the mixture sit for about fifteen minutes, it starts to mellow out (and the onions take on a lovely pickled quality).
Mayan Salsa (inspired by Poc Chuc)
1 white onion, cut into extremely fine dice
1 teaspoon dried Mexican oregano
2 habanero peppers
Pinch of salt
1. Place the stemmed habanero peppers and the juice from your Seville oranges into a blender or food processor and blend until habaneros are basically liquified. Add oregano and salt and pulse briefly to mix.
2. Place white onion in a fine-mesh colander and rinse briefly. Then add it to a bowl with the habanero-orange mixture.
3. Let salsa stand for about 15 minutes at room temperature to allow flavors to meld.
6 comments:
Oh that Mayan salsa looks so unusual! My mouth is watering just looking at it ...ReplyDelete
This is the kind of heat I like! :)ReplyDelete
What a great twist on regular salsa. Can you use this salsa like a regular salsa on tacos and chips?ReplyDelete
@Fried Wontons - do you mean the Mayan salsa? Yes, just use it exactly as you would use a normal salsa. We had ours over tacos, but with chips would be fine too. We also had it over grilled pork chops the next night. It is really fantastic with everything!ReplyDelete
Those clearly look like large thai chili peppers.
The photo messes with the scale a bit, but the mystery peppers are both firmer and smaller than the bird's eyes I've bought in the U.S. (closer in size to the ones we saw in Thailand, which are a different varietal). Eaten raw, they were also significantly hotter than the bird's eyes I normally buy.ReplyDelete

subset: commoncrawl


text:
Tuesday, March 17, 2009
Timberjack Walking Machine
When I designed the walking vehicles for the Dinotopia prequel universe in First Flight (1999), I scarcely could have imagined the actual machines that were already emerging from engineers' drawing boards.
The PlusTech Oy company, a division of John Deere, unveiled a prototype for a walking timber harvester called the Timberjack. It may be a little slow, but it has adjustable ground clearance, automatic leveling, and the ability to walk sideways, never mind what it does to trees.
Thanks, Art! Previous GJ Posts:
Walking Vehicles, part 1, link.
Walking Vehicles, part 2, link.
Sultan's Elephant, link.
14 comments:
- Erik Bongers said...
Anyone who has walked through a forest that had been visited by timberjacks' tractors knows the devastating effect these wheels have on the ground and roots of trees, resulting in tracks several feet deep, not to mention the higher risk for erosion.
In that sense this masjiene is far more gentile. But I wonder what it's energy consumption is in comp. to a traditional tractor.
- March 17, 2009 at 6:58 AM
- Andrew said...
I imagine it might be comparable, maybe a little higher. At the very least, it might be more of an investment of time since it can't trudge through a forest yet.
This thing though doesn't give me the willies like that robot mule walker designed to carry military gear...
- March 17, 2009 at 8:03 AM
- Random York said...
Wow! What a neat machine! I'd like to have a giant inchworm cycle myself!
- March 17, 2009 at 9:24 AM
- Dan Gurney said...
Can't nevermind the trees.
--The Lorax
- March 17, 2009 at 9:34 AM
- Sean Craven said...
There's a machine pretty much like this in a short story in Dean Ing's collection Firefight 2000...
- March 17, 2009 at 10:34 AM
- Unknown said...
Just a matter of time before someone will post that you are promoting THE ultimate raping machine of Endangered RainForests. :v)
Not I.
- March 17, 2009 at 11:26 AM
- James Gurney said...
Frank and Dan, I'll leave the judgment about whether these machines are good or evil to someone else. I don't know enough about them, really, and I'm certainly not promoting them. Like most people, I suppose I'm simultaneously fascinated and repelled by such mechanical marvels.
- March 17, 2009 at 12:12 PM
- Unknown said...
You've expressed my views on much modernism. 'Fascinated and Repelled"
- March 17, 2009 at 12:17 PM
- Unknown said...
man, this is too exciting. I love it when life imitates art. A very cool machine. Your is better though.
- March 17, 2009 at 12:39 PM
- Trish said...
Frank, "Can't you feel it's PAIN???" XD
Honestly, a machine that can pick it's way through the forest and take down one carefully selected tree at a time looks like it'd be far kinder, ecology-wise, than, say, the usual fleet of bulldozers.
- March 17, 2009 at 3:33 PM
- Patrick Waugh said...
It's really interesting, but it's only a matter of time before it's turned into a military vehicle.
- March 17, 2009 at 4:22 PM
I don't see any other use for this anyway, other than military. Or may be amusement parks.Joy
- March 17, 2009 at 5:14 PM
- Jennifer G. Oliver said...
It is awesome yet somehow creepy...though not as downright unnerving as this is: http://www.danbartlett.net/pics/bucketwheel/bagger2.jpg
I much prefer the Dinotopia machines!
- March 17, 2009 at 5:35 PM
- Unknown said...
As a forester, I see these machines as an excellent prospect for minimal impact harvesting of what is our planets' ultimate renewable resource.
Contrary to populist opinion, forestry is not and need not be about the rape and pillage of forests.
- September 23, 2010 at 7:20 AM


text: This is the Cathedral Parish of the Diocese of St. Mark the Evangelist, situated in the City of Polokwane, Limpopo Province, South Africa. Mission Statement: Christ Church Cathedral strives to be a Church of excellence and resource to the Diocese of St. Mark the Evangelist providing kingdom ministry and sanctuary to the city through active participation of all parishioners. Vision: Christ Church Cathedral: in the city, for the city.


text:
This is an unofficial 8 wire status page
8 wire's website is at eight-wire.com and their official Twitter account is @eightwiredata
Check out our list of 8 wire alternatives
Check out our list of 8 wire alternatives
Community feedback on 8 wire's status
SaaSHub's Down Detector checks the status of services automatically and regularly. However, we cannot promise 100% accuracy. That is why we depend on user reported issues as well. The 8 wire status here can help you determine if there is a global outage and 8 wire is down for everyone or it is just you that is experiencing problems. Please report any issues to help others know the current status.


text:
The AMD Radeon R9 290X Reviewby Ryan Smith on October 24, 2013 12:01 AM EST
- Posted in
- GPUs
- Radeon
- Hawaii
- Radeon 200
PowerTune: Improved Flexibility & Fan Speed Throttling
The final new technology being introduced with Hawaii and 290X is the latest iteration of AMD's PowerTune technology. Although not being given a formal name to differentiate it from previous incarnations of PowerTune, the latest iteration brings with it a number of important changes that will significantly alter how the 290X and future cards will behave and how those behaviors can be adjusted.
In a nutshell, with the latest iteration of PowerTune AMD is gaining the necessary hardware monitoring and adjustment abilities to modernize PowerTune, bringing it functionally up to par with NVIDIA's GPU Boost 2.0, which itself was introduced earlier this year. This includes not only the ability to do fine grained clockspeed/voltage stepping, that alone being a major improvement over what Tahiti could do, but also far more flexible control over the video card to control it by power consumption, temperature, or even fan speeds/noise.
Diving right into matters, to once again use Tahiti as a baseline for comparison here, PowerTune as implemented on pre-GCN 1.1 cards like Tahiti has 3 (non-boost) or 4 (boost) power management clockspeed/voltage states. These are idle, intermediate (low-3D), high (full-3D), and for the cards that use it, boost. When for whatever reason PowerTune needed to clamp down on power usage to stay within the card's designated limits, it could either jump states or merely turn down the clockspeed within a state, depending on how far over the throttle point the card was operating at. In practice state jumps were rare – it's a big gap between high and intermediate – so for non-boost cards it would merely turn down the GPU clockspeed within the high state until power consumption was where it needed to be, while boost cards would either do the same within the boost state, or less frequently drop to the high state and then modulate.
Power States Available In Tahiti & Other GCN 1.0 GPUs
Modulating clockspeeds in such a manner is a relatively easy thing to implement, but it's not without its drawbacks. That drawback being that semiconductor power consumption scales at a far greater rate with voltage than it does with clockspeed. So although turning down clockspeeds does reduce power consumption, it doesn't do so by a large degree. If you want big power savings, you need to turn down the voltage too, and to do so in a fine grained manner.
Now given the limitations of Tahiti and other pre-GCN 1.1 cards, in order to implement fine grained power states significant changes needed to be made to both the GPU and the card, which is why AMD has not been able to bring this about until Hawaii and Bonaire. As power management is primarily handled by an external controller, the GPU needs to have a telemetry interface to provide the necessary data to the external controller and the ability/programming to quickly jump between states. Meanwhile the external controller needs to capable enough to handle the telemetry data (it's a lot of data) and able to quickly switch between states (the faster the better).
With that in mind, for GCN 1.1 AMD set out to solve those problems by giving GCN 1.1 parts the necessary telemetry interface to be paired with equally capable 3rd party voltage controllers. Dubbed the Serial VID Interface (SVI2), the interface is the lynchpin of AMD's latest iteration of PowerTune. In short, by adding this interface and thereby providing the necessary data to the external controller AMD finally has the ability to support a large number of states and to rapidly switch between them.
For the 290X and 260X, when combined with the IR 3567B controller AMD is currently using, this means translates into the ability to switch voltages as frequently as every 10 microseconds, and to do so by switching between upwards of 255 voltage steps. This massive increase in flexibility in turn allows AMD to control for power consumption, temperature, and even noise in ways that weren't practical with the coarse grained power management features of GCN 1.0 cards.
With this level of flexibility in hand, AMD has significantly overhauled PowerTune, both with respect to how PowerTune operates and how the user can manipulate it. Starting under the hood, the inferred states used Tahiti and other GCN 1.0 GPUs are gone, replaced with a wide number of real power states, thereby giving AMD the ability to reduce power consumption in a fine grained manner with real voltage changes as opposed to resorting to ineffective clock speed modulation. Coupled with that is a new, relaxed ("fuzzy") fan control scheme, which is based around the concept of slowing down the fan speed response time in order to avoid rapid changes in noise and pitch, and thereby avoiding drawing attention to the card (this being very similar to NVIDIA's adaptive fan controller).
Equally significant however are the changes to the actual system management algorithms used by PowerTune. Taking a page from GPU Boost 2, now that AMD can properly step between a large number of voltage stages they're also giving 290X cards the ability to throttle based on a larger number of conditions. On top of traditional power limit throttling, 290X in particular gains the ability to throttle based on explicit temperature limits, and even explicit fan speed limits.
Bringing this all together, for the first card to feature the full suite of these new capabilities AMD has set some very interesting throttle points that's unlike anything they or NVIDIA have ever quite done before. Out of the box, in the card's default "quiet" mode (more on modes later), the 290X has a 95C temperature throttle, a 40% fan speed throttle, and an unofficially estimated 300W power throttle. Meanwhile in the card's alternative "uber" mode, those throttle points are 95C, 55% fan speed, and 300W respectively.
|AMD Radeon R9 290X Throttle Points
|Quiet Mode (Default)
|Uber Mode
|Fan Speed
|Power (Estimated)
The addition of the fan speed throttle in turn is very much an X factor that changes how the entire system operates. Whereas previous AMD cards are primarily throttled by power and implicit temperature limits, and more recent NVIDIA cards are throttled by power and explicit temperature limits (with temperature serving as a proxy for fan speeds and noise) AMD takes this one step further by making the fan speed its own throttle, creating a new relationship between temperature and fan speeds that doesn't exist in the old power management paradigms.
The end result of having the fan speed throttle is that for the 290X (and presumably future cards) the temperature throttle become a joint clause where both conditions have to be met to trigger throttling. So long as power limits are being met (you can never violate the power limit) a 290X will not throttle unless both the fan speed throttle point and the temperature throttle point is reached. And even then, the temperature throttle point has a direct impact on the behavior of the fan, with the GPU temperature (relative to the throttle point) being used as one of the principle inputs on fan speed. In that sense the temperature throttle point becomes a simple abstraction for the underlying fan curve itself.
Boost Throttle Priority: Power = Fan Speed + Temperature
Now there is one exception to this that's worth pointing out. The above is applicable to the 290X's boost states, which is where it should be spending all of its time under load. However if for whatever reason the card has to drop out of the boost states and revert to the base clockspeed state of 727MHz, then the relationship between fan speed and temperature becomes reversed, and the card will outright violate fan speed throttles in order to maintain the target temperature while also staying at the base clockspeed.
Base Throttle Priority: Power = Temperature > Fan Speed
The end result of this scheme is that for the bulk of gaming scenarios the 290X will be throttled not on power consumption or even by temperature alone (since you will eventually always hit 95C in Quiet mode), but rather on fan speed/noise, a method unlike anything NVIDIA or AMD have done previously. By doing this AMD has established a direct, simple relationship between performance and noise. If a card is too loud, it can be turned down at the cost of performance. Or if a card needs more performance, then it can be increased (to a point) at the cost of noise. And as noise is going to be the most visible aspect of the power/temp/noise triumvirate to the end user, this in turn gives the end user a high level of control over what's usually the biggest drawback to running a high power, high performance video card. It really is that much better than any of the management paradigms that have come before it, and it is something we'd fully expect NVIDIA to copy in due time.
Before moving on from the subject of throttling however, let's briefly touch on what's undoubtedly going to prove to be a controversial element to the 290X's power tune implementation: AMD's 95C temperature throttle. Simply put, no desktop 28nm card thus far has been designed/intended to operate at such a high sustained temperature by default. NVIDIA's explicit throttle point for the 700 series is 80C, and AMD's implicit throttle point for Tahiti cards is also in the 80C range, putting both cards well below 95C under regular operation. Now to be clear both are spec'ed to allow temperatures up to 95C (i.e. TjMax), however that 95C throttle point is not the point where either party has previously designed their equilibrium points around.
So why the sudden change on AMD's behalf? There are a few reasons for it. But first and foremost, let's talk about the physical costs of higher temperatures. All other elements being held equal, temperatures affect silicon devices in 3 important ways: longevity, power consumption (leakage), and attainable clockspeeds. For longevity there's a direct relationship between temperature and the electromigration effect, with higher temperatures causing electromigration and ultimately ASIC failure to occur sooner than lower temperatures. For power consumption there is a direct relationship between temperature and power consumption, such that higher temperatures will increase static transistor leakage and therefore increase power consumption, even under identical workloads. And finally, there is a weak relationship between temperature and attainable clockspeeds, such that the switching performance of silicon transistors drop as they become warmer, making it harder to attain high clockspeeds (which is part of the reason why record setting overclocks are with GPUs well into the negative Celsius range).
An example of the temperature versus power consumption principle on an Intel Core i7-2600K. Image Credit: AT Forums User "Idontcare"
The important part to take away from all of this however is that these relationships occur across the entire range of temperatures a product is rated to operate under, and more importantly that all of these factors are taken into consideration in product planning. The 95C maximum operating temperature that most 28nm devices operate under is well understood by engineering teams, along with the impact to longevity, power consumption, and clockspeeds when operating both far from it and near it. In other words, there's nothing inherently wrong with letting an ASIC go up to 95C so long as it's appropriately planned for. And this, more than anything else, is what has changed for 290X and Hawaii.
As a second wind product, one of the biggest low-level changes AMD has made to Hawaii relative to Tahiti is that they have been able to significantly clamp down on their leakage. Not that Tahiti was a particularly leaky chip (and not that it was particularly leakless either), but as the first GPU to roll out of TSMC it was very conservatively designed and had to be able to deal with the leakage and other nagging issues that come with an immature fabrication process. Hawaii in turn is designed against a very mature 28nm process, and designed in such a way that AMD doesn't have to be conservative. As a result Hawaii's leakage, though not quantified, is said to be notably reduced versus Tahiti.
What this means for 290X in turn is that one of the biggest reasons for keeping temperatures below 95C has been brought under control. AMD no longer needs to keep temperatures below 95C in order to avoid losing significant amounts of performance to leakage. From a performance perspective it has become "safe" to operate at 95C.
Meanwhile from a longevity perspective, while the underlying silicon hasn't necessarily changed AMD's understanding of ASIC longevity on TSMC's 28nm process has. Nearly two years of experience in shipping 28nm GPUs means that AMD has hard evidence for how long a GPU can last at various temperatures, and the maturation of the 28nm process in turn has extended that longevity by improving both the quality and consistency of the GPUs that come out of it. Ultimately there is always going to be a longevity cost to increasing temperatures – and only AMD knows what that cost is – but as the entity ultimately responsible for warrantying their GPUs, at this point AMD is telling us that Hawaii will meet all of their longevity requirements even with the higher operating temperatures.
With that in mind, why would AMD even want to increase their operating temperatures to 95C? In short, to take full advantage of Newton's Law of Cooling. Newton's Law of Cooling dictates that the greater the gradient between a heat source and its environment, the more heat energy can be transferred. Or in other words, AMD is able to remove more heat energy from the GPU with the same cooling apparatus simply by operating at a higher temperature. Ergo a 290X operating at 95C can consume more power (operate at greater performance levels) while requiring no increase in cooling (noise) over what a 290X that operates at a lower temperature would require.
Now admittedly none of this makes 95C any less unsettling when first looking at temperatures, as we have become accustomed to 80C range temperatures over the years. But so long as the longevity of Hawaii matches AMD's claims then this ultimately won't be an issue. 95C will just be a number, and high ASIC temperatures will be another tool to maximize cooling performance. With that in mind, it will be interesting to see what AMD's board partners do with their eventual custom Hawaii designs, assuming that they follow the same cooling paradigm as AMD. How much quieter would a Gigabyte Windforce or Asus DirectCU II based Hawaii card be able to operate if it was allowed to (and capable of) operating at 95C sustained? The answer to that, we expect, should prove to be a lot of fun.
Having established in detail how the latest iteration of PowerTune works, let's finally talk about how this iteration of PowerTune will affect end-user tweaking and overclocking.
As to be expected, AMD has opted to expose all of their new PowerTune power controls via their Overdrive control panel, and as such users have full control over both overclocking and throttle controls. On the throttle side this includes both the traditional power limit controls, and new controls to set the target GPU temperature and the maximum fan speed. These follow the rules we noted earlier, so adjusting the GPU temperature target for example causes the fan speed to ramp up more quickly, or bringing down the maximum fan speed will result in a greater throttle on overall performance.
Meanwhile overclocking controls have also received a facelift, and unlike the throttle controls we've having a harder time getting behind these changes. In short, Overdrive now adjusts the GPU and memory clockspeed on a relative percentage basis rather than an absolute frequency basis. On the one hand this brings consistency with how power adjustments have always worked, and yet on the other hand we can't help but feel that percentage based overclocking is decidedly unhelpful and unintuitive. 10% is far less meaningful than 100MHz in this context, and it's going to get even worse once we see factory overclocked cards and multiple tiers of Hawaii cards. Consequently we'd really rather have the original absolute frequency basis controls back. AMD is simply abstracting clockspeeds by too much.
Finally, along with the traditional sliders and settings boxes, AMD has introduced one final graphical element into Overdrive, and that is a 2D heatmap for overclocking. Placing the power limit on the X axis and the GPU clockspeed on the Y axis, the heatmap provides a simple graphical representation of the impact is of adjusting those values. The heatmap is a bit imprecise, and I suspect most seasoned overclockers will stick to punching in numbers directly, but otherwise it's a nifty simplification of overclocking.
With the above in mind, the last factor we're waiting to see play out is how 3rd party utilities such as MSI's Afterburner choose to implement these new controls. AMD meets and exceeds GPU Boost 2.0 with respect to flexibility, but monitoring/reporting was never a strong suit for Overdrive. Just based on our own experiences in putting this article together, an equivalent to NVIDIA's "reason" throttling flags would be incredibly helpful as it's not always obvious why the 290X is throttling, especially if it's throttling for power reasons. If AMD can provide that data to 3rd party utilities, then combined with the rest of the functionality we've seen they would have an unquestionable claim to bragging rights on whose power management technology is better.
396 Comments
View All Comments
itchyartist - Thursday, October 24, 2013 - linkIncredible performance and value from AMD!
The fastest single chip video card in the world. Overall it is faster than the nvidia Titan and only $549! Almost half the price!
Truly great to see the best performance around at a cost that is not bending you over. Battlefield 4 with AMD Mantle just around the corner. These new 290X GPUs are going to be uncontested Kings of the Hill for the Battlefield 4 game. Free battlefield game with the 290X too.Must buy.
Berzerker7 - Thursday, October 24, 2013 - link...really? The card is $600. You reek of AMD PR.
Novulux - Thursday, October 24, 2013 - linkIt says $549 in this very review?
Berzerker7 - Thursday, October 24, 2013 - linkIt does indeed. His article still smells like pre-written script.
siliconwizard - Thursday, October 24, 2013 - linkLike all the reviews state GTX Titan is now irrelevant. 290X took the crown and saved the wallet.
siliconwizard - Thursday, October 24, 2013 - linkThinking that sphere toucher' s comment is accurate. Bit of salt here over amd taking over the high end slot and ridiculing the titan card. Only going to get worse once the Mantle enabled games are rleased. Nvidia is finished for battlefield 4. Crushed by amd, 290x and mantle.
MousE007 - Thursday, October 24, 2013 - linkMantle.....lol , nvidia Gsync just killed AMD
ninjaquick - Thursday, October 24, 2013 - linklol? a G-Sync type solution is a good candidate for being integrated into a VESA standard, and make it part of the Display's Information that is exchanged though DP/HDMI/DVI, so all AMD would need to do is make sure their drivers are aware that they can send frames to the screen as soon as they are finished. The best part would be that, with the whole Mantle deal, AMD would probably expose this to the developer, allowing them to determine when frames are 'G-Sync'd' and when they are not.
MousE007 - Thursday, October 24, 2013 - linkNo, there is a "hand- shake" between GPU and the monitor or tv, will not be supported with any other brand.
inighthawki - Thursday, October 24, 2013 - linkYou do realize that it can still be put into the VESA standard, right? Then only GPUs supporting the standard can take advantage of it. Also ANYONE who believes that GSync OR Mantle is going to "kill the other" is just an idiot.


text:
The Devil on Paradise Road
It started as a bluebird New Year's Day in Mount Rainier National Park. But when a gunman murdered a ranger and then fled back into the park's frozen backcountry, every climber, skier, and camper became a suspect—and a potential victim.
Heading out the door? Read this article on the new Outside+ app available now on iOS devices for members! Download the app.
Thirteen miles of two-lane blacktop connect the fir-and-cedar forests of Longmire, Mount Rainier National Park's ranger headquarters, to Paradise, the mountain's 5,400-foot subalpine playground. Technically, it's a section of Washington's State Route 706, but locals know it as the Paradise road. Beautiful and treacherous, the road winds its way up the mountain's lower flanks, offering visitors views of misty waterfalls and glacial river valleys—and, when the clouds part, a spooky glimpse of Rainier's 14,410-foot ice-clad summit.
January 1, 2012, looked like it would be a busy day at the mountain. The holiday always draws a crowd to the park, and the Paradise snow-play area, with its long, rolling sled runs, would finally open for the season.
Margaret Anderson, a 34-year-old park ranger, crossed into Rainier a few minutes after 7 a.m. The forest around her was still night dim and frozen. It hadn't been easy to rise in the winter darkness and leave her husband, Eric, and their sleeping girls—one nearly four and the other 18 months—at home in Eatonville, a charming burg 22 miles west of the park. But Eric, also a ranger at Rainier, would be working the second shift. He'd be coming on at 11. Maybe she'd see him.
In the meantime, she had a lot to manage—she'd hired four new seasonals, and this was their first day working the sledding hill. Anderson was a law-enforcement (LE) ranger. By custom, National Park Service rangers are jacks-of-all-trades, but today they follow several distinct career tracks: law-enforcement ranger, interpretation ranger, or, in mountain parks like Rainier and Yosemite, climbing ranger. Interpretive rangers are often wildlife specialists or cultural-resource experts, while climbing rangers rescue stranded mountaineers. LE rangers undergo extensive training at the Federal Law Enforcement Training Center in Glynco, Georgia, but with budgets tight they are tasked with a growing list of handyman chores. Anderson drove patrol, organized the park's EMT training, and dug road signs out of the snow when necessary.
Anderson passed by Longmire, where the two other LE rangers on the early shift, Dan Camiccia and Kraig Snure, were stationed. The road to Paradise had iced overnight, so Camiccia was setting up a tire-chain checkpoint. Anderson continued on up to Paradise.
She had spent New Year's Eve with her family. After they put the girls to bed, she and Eric talked about the coming year. The couple had met in 2002 at Bryce Canyon National Park—two young seasonals working the rim roads of southern Utah—but it wasn't until they left for other postings that they realized they'd fallen in love. Since then, Eric had punched his ticket at four parks, Margaret at two. Finding openings for a married couple at any national park is rare, so when two positions came up at Mount Rainier in late 2008, the Andersons jumped at them.
Now, three years later, they were talking about getting out. The burdens of a two-child, two-ranger family were heavy. The couple played tag-team with their shifts, and they often saw each other only on weekends. Margaret was working toward her nursing degree. Eric, who had been a firefighter before joining the Park Service full-time, loved being a cop, but an LE ranger's day can often feel like only 51 percent law enforcement—or less. He wanted more LE in his LE ranger's job. Margaret, who had a master's in biology, enjoyed the resource-management aspects of her work, but she shared some of Eric's frustrations.
The Andersons were looking at 2012 as their last year at Mount Rainier National Park. The girls' grandparents lived back east. It was time for a change.
AT PARADISE, ANDERSON EXCHANGED greetings with the interpretive rangers opening the Jackson Visitor Center (JVC). Although the snow had arrived late this year, it was piling up. Paradise usually got around 650 inches, enough to bury the historic Paradise Inn—which closes for the winter—up to its gabled dormers. It looked like a tough day ahead. The parking lot was sheet slick. One interp was fighting the flu, and Anderson wasn't feeling so hot herself. She told a friend she might knock off at eleven, when Eric and the other second-shifters came on.
At 9:30 a.m., Camiccia began waving chain-equipped vehicles up the mountain. The first visitors arrived in Paradise a little before ten. Anderson worked the parking lot, giving directions, moving signs.
At 10:20, a car drove past the chain checkpoint without stopping. A blue Impala.
Camiccia discussed the blow-by with Snure. It wasn't a big deal. Foreigners visited the park every day. The driver might have been confused. Was it worth going after the guy? Probably so, they decided. Better to stop him now than tow him out of the snow later.
Camiccia jumped into his NPS pickup. He called in the plate as he accelerated: Washington 791XZL. Dispatch called back. The plate was clean, which meant the car hadn't been reported stolen. Owner: Barnes, Benjamin Colton. White male, five-nine, 160 pounds, 24 years old.
The ranger caught up to the Impala about two minutes later. He rolled his lights. No response. He hit the siren. Nothing.
Camiccia let the Impala gap him on the hairpin. Then he gunned it and caught up, lights still flashing. But the Impala kept on.
He called for backup as the two cars wound their way up the icy hill, locked in a low-speed switchback chase.
At Paradise, Camiccia's voice squawked out of the radio on Anderson's hip. She took a quick situational inventory. There were a few dozen cars in the parking lot. That meant upwards of a hundred visitors.
Camiccia and the Impala would reach her in about 15 minutes. During summer the road continues into the Gifford Pinchot National Forest. But in winter it dead-ends at Paradise, blocked by a wall of snow. Anderson wanted to stop the driver before he got that far. She was, in a way, the perfect ranger for the job. She had a cop's knack for reading people and solving problems. She could cool a hot situation with a few words and a disarming smile, but the use of handcuffs and force were not foreign to her experience.
Anderson jumped into her white Chevy Tahoe and roared down to Barn Flats, where the road unkinks into a 250-yard straightaway. It took her a little over a minute to get there.
At the Flats she parked sideways, blocking both lanes.
Then she waited.
COMING UP THE HILL in the Impala was Benjamin Barnes, an Iraq war veteran. Troubled since high school, the newspapers would later report, he was the son of a Marine, a California kid who'd found a home in the military—and then managed to get himself booted out for drinking and driving. Barnes embraced warrior culture. He kept his hair in a jarhead shave, inked his body with words that evoked the epic. A neck tattoo listed four of the seven deadly sins: Pride Envy Gluttony Lust. The skin over his heart read ODIN, the Norse god of battle, victory, and death.
Of course, none of this was known to Margaret Anderson. Barnes was just a suspect leading her colleague in a two-car parade.
At 10:42 a.m., 14 minutes after she arrived at the Flats, the blue sedan came into view.
Immediately in front of him, Barnes saw Anderson's SUV blocking the road. Behind him, a ranger on his tail. Beside him sat a loaded AR-15 assault rifle, the civilian version of the M16 he carried in Iraq.
Barnes braked, swung open his door, aimed, and fired at Anderson. The gun went off in bursts. Anderson slumped at the wheel.
When Camiccia rounded the corner, Barnes wheeled on him and squeezed off four quick rounds. The bullets pierced the ranger's windshield in a four-corners pattern that outlined a box around Camiccia's head. One tore through his seat belt just above the shoulder. But he wasn't hit. He jammed his truck into reverse and retreated.
Anderson, bleeding badly, backed her Tahoe into the snowbank so hard the tailgate crumpled. Executing a two-point turn, she moved her vehicle about 100 yards up-mountain—still in the Flats straightaway but blocking the downhill lane. Camiccia spit into the radio: "Shots fired, one officer struck."
Camiccia's attempts to rescue Anderson were met with gunfire. Barnes had a semi-automatic assault rifle, battlefield firepower.
The park dispatcher called Anderson's number over the radio. "Seven-four-one, come in."
There was no response.
AT PARADISE, THE INTERPRETIVE rangers working at the Jackson Visitor Center had been following the Impala's progress closely. Within seconds of the shooting, they and members of the park's road crew began herding visitors inside.
Interpretive rangers carry no weapons. They're trained to remove themselves and visitors from dangerous situations, not to confront the threat. So the Paradise interps decided their best strategy was to turn the JVC into a fortress. "We've got to do a lockdown," said one.
Out in the parking lot, Lisa Hill, a 51-year-old dental hygienist from nearby Graham, was eager to hit the trail and try out her new Jetboil stove. She'd talked her boyfriend, Brian Hess, a 40-year-old electrician, into a New Year's Day snowshoe trip.
Then Hill heard a voice. "This is an emergency! Everybody into the building!"
Instinctively, she looked up-mountain. If an avalanche was coming, she wanted to know which way to run.
Once Hill and Hess entered the visitor center, a ranger radioed the Rainier dispatcher: "JVC is in lockdown." Hess glanced at a clock. It was 10:48 a.m. Most visitors at the JVC didn't know what was going on. But Hess stayed close to the door so he could overhear the rangers' radio traffic. "It didn't take me long to figure out a couple of things," he said later. "Somebody had been shot. The guy was still on the loose. And the staff at the visitor center were unarmed."
The JVC rangers hatched a plan. Rebecca Roland, a 44-year-old interpretive ranger, huddled with a few colleagues. They asked ranger Gavin Wilson to take charge. Wilson had been trained in ICS, the Incident Command System, which prevents federal, state, and local cops, firefighters, and EMTs from working at cross-purposes. A handful of visitors were still out on the mountain, oblivious to the emergency. Longmire park volunteer Jim Miltimore—who, with his wife, Carol, has logged more than 12,000 hours of service at the park—strapped on his snowshoes and charged up the cross-country trail to warn any skiers.
When stragglers approached the visitor center, a ranger searched them for weapons. Paradise was a short 15-minute hike from Barn Flats. Anybody could have been the shooter. Could he be in the JVC already? Could this be some sort of holiday terrorist strike? The most maddening, hateful acts of our era are known by their geographic location. Columbine. Virginia Tech. Norway's Utøya Island. That Mount Rainier would be added to the list remained a frightening possibility.
ERIC ANDERSON KISSED HIS daughters goodbye and dropped them at a babysitter's around 10 a.m. on New Year's Day. Mama will pick you up soon, he told them. Margaret's shift ended at three, but she'd told her husband she might knock off early. As Eric made his way up the Mountain Highway, the main artery to Rainier, a Pierce County sheriff's cruiser roared past him. Anderson called the Rainier dispatcher to see what was going on. The dispatcher asked him to report directly to park headquarters at Tahoma Woods, 17 miles west of Longmire. There'd been a shooting, he was told.
Park superintendent Randy King arrived at headquarters a few minutes before Anderson. Soft-spoken and solidly built, King had assumed the park's top job only eight weeks earlier, but he'd been Rainier's deputy superintendent for eight years. He knew the park and its people. "There's been a shooting near Paradise," he told Anderson, confirming what Eric had already heard. "Margaret was involved." Nobody knew much more than that, King said. He asked Anderson to sit tight.
The next few minutes and hours: what they were for Anderson, only he knows. It's not a memory he cares to relive.
HALF AN HOUR AFTER the first shots, Margaret Anderson remained in her Tahoe. Her radio was silent, and the suspect—Barnes or whoever was driving his car—continued to fire on anyone approaching.
From the Canadian border to northern Oregon, word flashed over law-enforcement wires: officer down, shooter loose. The Pierce County Sheriff's Department—which is headquartered in Tacoma but maintains a mountain detachment in Eatonville—was the first to respond. A ranger flagged down Deputy Frank Brown near Longmire, handed him a park radio, and pointed him up the road. A few minutes later, Brown raced past two empty Park Service vehicles and nearly reached the Flats when he heard the radio call him back. Rangers Camiccia and Snure had briefly abandoned their trucks, but when they saw Brown drive by they scrambled back to stop him from stumbling into the shooting alley.
Up at Paradise, a group of rangers and maintenance workers debated mounting a rescue effort. They had an ambulance and a sanding truck they thought they could use to reach Anderson.
She was so close. One minute away. And yet the risks were enormous. The shooter was still squeezing off rounds. The folks at Paradise had no weapons and no protection, not even a service vest. It's still not clear who made the call, but in the end the mission was deemed too dangerous.
"It was the right decision," Superintendent King would later tell me. "A tough one, but the right one. Not responding, that's the hardest thing in the world. Because all you want to do is help."
That didn't make it any easier for Anderson's colleagues. She sat just a few hundred yards from Paradise, wounded and possibly dying. Another 20 minutes went by.
AT 11:42 A.M., RANGERS Camiccia and Snure met with a group of Pierce County deputies at a turnoff called the Stevens Canyon Y, about 500 yards south of the shooting site. In addition to Deputy Brown, Sergeant Nick Hausner and deputies Brian Coburn, Kevin Reding, and Ara Steben had answered the call-out. An hour had passed since Anderson's last radio contact. Shooter or no shooter, they decided they had to go in.
The team gathered what gear they had. Brown had an armor-plated vest. Hausner found a ballistic shield in his SUV.
The deputies strapped on helmets and piled into the back of Camiccia's bullet-pocked pickup. Each held a rifle. "If the suspect engages," Hausner told the team, "immediate return fire is authorized."
The men jammed the armored vest into the truck's bullet-shot windshield and stuffed the shield along the driver's door. Kraig Snure volunteered to drive. As the truck rolled toward the Flats, shots rang out. The shooter was alive and active.
The deputies crouched in the flatbed, eyes sweeping the hillside. The high snowbank gave the shooter a massive tactical advantage. With an assault rifle, he could let off five rounds before the cops had time to react. "It was one of those moments," Coburn later told Tacoma's News Tribune, "where you prayed that you survived this call."
At the Flats, they passed the Impala. The driver-side door hung open. The shooter was nowhere in sight.
Anderson's SUV was nosed into the snowbank about 100 yards up the road. Engine still running, transmission in drive. She was upright at the wheel, buckled in, her body still. A radio microphone sat in her lap. Coburn and Brown quickly moved her to the back of the pickup.
"We have her," Coburn told dispatchers.
As the truck tore off down the hill, Hausner put two fingers to the fallen ranger's neck. He found no pulse.
"She's gone," one of the deputies said.
The team relayed the information to park headquarters. At Tahoma Woods, despair washed over the eyes of Superintendent King. He straightened his shoulders and delivered the news to Eric Anderson.
UP AT PARADISE, RANGER Rebecca Roland entertained visitors' kids with Junior Ranger workbooks. When one finished, she'd stage a small ceremony, pronouncing the youngster an official Mount Rainier Junior Ranger. The locked-down visitors applauded each one.
Lisa Hill and Brian Hess sat at a picnic table by the door. Hess wanted to be there in case something happened. He had a card that had not been played: In his back pocket was a permit to carry a concealed handgun. In his front pocket was a .380 Ruger LCP.
At 12:20, one of the rangers guarding the door crossed the main foyer to the information desk. "He looked like he might throw up," recalled Hess. Anderson had not survived the shooting, the ranger told his colleagues. They absorbed the shock and held back tears.
A few minutes later, another child achieved Junior Ranger status. Roland gave him his due. Applause all around.
ALL AFTERNOON COPS AND armored vehicles streamed into the park. The FBI, the Pierce County Sheriff's Department, Tacoma police, and the U.S. Forest Service scrambled their SWAT teams to Longmire, where rangers had set up an incident command center. Game wardens and state troopers responded. One veteran ranger, Uwe Nehring, had retired from a 29-year Park Service career on December 31. When news of Anderson's shooting flashed on the radio, he suited up and reported in. By midafternoon, so many officers had responded—there would be close to 200 at Longmire in the end—that Rick Adamson, incident commander for the Pierce County Sheriff's Department, had to broadcast a hold-your-horses message to agencies across the Puget Sound region. "Do not self-deploy," he said.
A series of incident commanders—Adamson of Pierce County, chief ranger Chuck Young of the Park Service, Steven Dean of the FBI, and others—oversaw the mission as the day wore on. Each of them sought answers. Was Barnes the shooter? What were his intentions? Hour by hour, detectives worked up a profile. A routine check of court records revealed an ugly custody battle and a restraining order from Barnes' girlfriend. Her affidavit mentioned his military service. Calls to Joint Base Lewis-McChord, just south of Tacoma, confirmed that. Did he have specialized survival training? JBLM officials didn't know.
That remained one of the critical unknowns. Mountaineering district ranger Stefan Lofgren, Rainier's lead climbing ranger, has spent 20 years moving in the park in the toughest winter conditions. "If I'd bailed out of my car at the Flats," he told me, "I could make it to Longmire in an hour or two. I'd be out of the park by nightfall." But Lofgren knew the terrain, and he could survive a freezing night in a snow cave. Could Barnes?
Nobody knew how fast or how far he could travel, but he had options. He could kill a snowshoer and walk out in the victim's gear, so the cops took no chances with anyone emerging from the backcountry. At Narada Falls, a trailhead half a mile below Barn Flats, a group of snowshoers returning from an overnighter were greeted at the parking lot by a SWAT team, guns drawn. "Keep coming out one at a time," the officers told the shocked visitors. "Slowly. Hands in the air." They asked the snowshoers to stand like birds on a wire while the SWAT team retrieved everyone's ID from their van. A Pierce County deputy then told the group to stand by the van. "If something happens," he told Robert Conrad, the group's guide, "get down and stay down."
THE MORE THE COPS dug, the more dangerous their shooter appeared to be. Barnes wasn't some two-strikes car thief. Uncle Sam had taken him on as a raw recruit in 2007, molded him into a soldier—a communications specialist—and posted him to one of Joint Base Lewis-McChord's Stryker brigades, the ground units that lived on the point of the spear in Iraq and Afghanistan.
His unit served a yearlong deployment in Iraq in 2007–08. Upon his return, Barnes did not adjust well. A DUI arrest and a weapons charge led to his discharge in 2009. He drank too much, made few friends, and spent his money on tattoos and guns.
In late 2010, Barnes' girlfriend, 22-year-old Nicole Santos, gave birth to a girl named Aubrey. Fatherhood did not suit Barnes, who, according to Santos, found the baby an annoyance. She left him and took Aubrey on January 1, 2011. Barnes responded with a text: "If you come home don't be surprised to find my brains splattered all over the walls."
The next 12 months played out in a flurry of court papers. Santos filed for legal custody of Aubrey and for a restraining order against Barnes. In affidavits taken last summer, she described him as a violent, unstable man with "possible PTSD issues." A close reading of the documents revealed a character who, PTSD or not, had plain old asshole issues: Santos' statement alleges that Barnes played cruel mind games with her and screamed at and abused the baby.
Despite Barnes' domestic problems, motive remained a puzzle. Why would he head to the mountain with an assault rifle? Suicide was a possibility: suicide by self, by cop, or after taking a whole lot of people with him. Throughout the early afternoon, it remained unclear whether the shooter was seeking more victims or trying to flee. "We had to prepare for both," said Pierce County sheriff's detective Ed Troyer. "The thought was to keep him trapped up there on the mountain. Keep him on foot. Keep the area contained."
AT 2:19 p.m., A deputy standing watch on the Nisqually River Bridge, about a half-mile west of the Flats, reported seeing a head pop up over a snowy ridge and duck back down.
At the incident command center, Ranger Lofgren told his colleagues what he knew of the terrain. To be spotted from the bridge, the shooter would have had to move west from the Flats along the road's shoulder.
That wasn't good news for the 125 visitors locked down at the Jackson Visitor Center. Commanders in Longmire couldn't send in reinforcements as long as the suspect remained on the road's high snow berms. Fortunately, the Pierce County Sheriff's Department had its armored BearCat rolling toward the mountain. The vehicle, which looks like a cross between a Hummer and a Brinks truck, has heavy plating capable of stopping any high-caliber-rifle or assault-weapon round.
When the BearCat reached the rangers and deputies at the Stevens Canyon Y, the group hustled up a plan. Ian Canaan, a Forest Service law-enforcement officer, would lead a small team of rangers, including the just-retired Uwe Nehring, into the visitor center. Pierce County sergeant Mark Berry wanted Rainier rangers on the inside because they knew the building and the interps working it.
Eleven officers pressed into the back of the BearCat. It was a tight fit and a hushed ride. A few minutes later, they arrived at the Paradise parking lot.
The doors of the visitor center flew open just after 3 p.m. "Everybody down on the floor! Put your hands on your head!"
Brian Hess counted five or six SWAT team members. They moved quickly through the JVC, assault rifles drawn.
Do not move, Ian Canaan told the visitors. He asked Rainier LE ranger Ken Worstell to verify the identities of each interpretive ranger, one by one.
A chill from the concrete floor worked into Lisa Hill's body. She realized for the first time that the gunman might be among them. She shivered. A woman nearby reached out and asked if Hill was OK. It was a simple gesture, but she took great comfort in it.
Brian Hess had other concerns. Son of a bitch, he thought. These guys are looking for an armed man, and I've got a gun in my pocket. This will not go well.
Canaan spoke up.
"Is anyone here armed?"
Hess and another man slowly raised their hands. The other man spoke first. "I'm an off-duty police officer," he said.
Hess didn't have time to get any words out. An assault rifle was trained on his face. "You touch your gun," the SWAT team member told him, "and we're going to shoot you."
"Understood," Hess replied.
"Where is it?"
The officer removed Hess' Ruger and told him that the gun would be returned to him before he left the park.
With the JVC secured, Canaan briefed the visitors. An evacuation would happen, but probably not anytime soon.
"We're all going to be spending some time together here," he said.
A FEW HUNDRED YARDS down-mountain, an active manhunt was under way. Ted Holden, a veteran game warden with the Washington Department of Fish and Wildlife, had spotted some tracks off the road, below the Stevens Canyon Y. Holden has years of experience tracking poachers across snow. "You get a lot of divots made by snow plopping from trees, but those divots are random," he told me. "What I do is cue in on patterns."
The SWAT guys found climbing notches in the roadside berm and postholes leading into the trees. No innocent park visitor would continue to posthole up to his crotch. This had to be their guy.
Heads swiveled. The Y had been a forward tactical post for the past three hours. All that time, it was now clear, the shooter had been moving above them, below them, all around. The team strapped on snowshoes and followed the holes.
Around the next bend, a second SWAT team searched Barnes' Impala. One officer cut the car's distributor-cap wires to disable it. From the trunk, deputy John Delgado removed a lever-action rifle, several packs of AR-15 ammunition, and heavy body armor. Another officer pulled an AK-47 and several .223 magazines from the passenger seat.
Meanwhile, calls were coming in from cops throughout Washington and Oregon wondering whether the Rainier shooter might be involved in unsolved crimes in their jurisdictions. This wasn't uncommon. One cop was especially insistent. Detective Mike Mellis, from King County, which encompasses Seattle, kept calling back. A Pierce County dispatcher finally conveyed the urgency to Longmire. The King County guys were saying that Barnes had shot four people just the night before.
Pierce County sergeant Trent Stephens radioed Mark Berry, who was up-mountain overseeing the SWAT trackers. "Barnes is a confirmed shooter in a quad shooting incident early this morning in King County," he said. The picture became clearer. And more tragic.
New Year's Eve had found Barnes drinking at a house party in a low-rent suburb in South Seattle. Some of the drunken young men began bragging about their guns. The clock moved to 2 a.m. The gun talk turned to show-and-tell. Argument ensued.
Booze, honor, young men, pride.
Sometime around 3 a.m., King County sheriff's deputies rolled up to find four people shot. They would all survive, and they fingered Barnes. He'd stolen a car, they said, and fled.
In the wee hours, Barnes returned to his North Seattle apartment and loaded his own car with weapons. He told friends he was heading to California.
Nobody knows why he drove to the mountain instead of the state line. But it wasn't a simple errant turn. You don't just end up at Mount Rainier. It's a two-and-a-half-hour drive from Seattle, down lonely country roads. A man who drives to the mountain has the intention of driving to the mountain.
When trouble finds people, sometimes that's where they go. An old friend of mine, a former ranger at Mount Rainier, once told me that one of the toughest parts of his job was finding suicides. "People come up here for a lot of different reasons," he said. "Sometimes they want it to be the last place they see."
DARKNESS COMES EARLY TO the Cascades in winter. Dusk at 4:30, lights out by five.
East of the Paradise road, two Pierce County SWAT units used the failing light to track Barnes. One set of tracks led up from the shooting site, toward Paradise, and circled around a sewage-treatment building—just a few hundred yards below the JVC. They followed the fall line west, to the ridge where the deputy had spotted a head at 2:19 p.m. With cops covering the Nisqually River drainage, he took off east, crossing and recrossing the road, and headed toward Paradise Valley.
The teams moved slowly, not knowing whether Barnes might be waiting to ambush them. They watched his divots disappear down a bank into the Paradise River.
A Black Hawk helicopter, courtesy of the U.S. Customs and Border Protection Air and Marine unit 150 miles away in Bellingham, Washington, circled overhead. A chopper does triple duty in any manhunt. In addition to scanning for the suspect and providing intelligence for ground-based trackers, it has a little-known third purpose. "You put a helicopter overhead, anybody who's running tends to stop running," customs pilot Chris Rosen told me. "They don't want to be seen by the helicopter. That gives the ground team time to catch up."
But at around 5 p.m., the ground teams were forced to halt. Darkness gave Barnes the drop on his trackers. Now it became a question of survival. The temperature had fallen into the twenties. If Barnes was dressed for the weather and knew what he was doing, he could dig a snow cave and shelter overnight. If he didn't, his chances were slim. It's not uncommon for lost climbers and campers to die of exposure in the Rainier backcountry. Tracks leading into the Paradise River were a telling sign. Surviving overnight was tough enough; wading into the river put a man's chances near zero.
As officers equipped with night vision took up posts along the river and armored vehicles patrolled the roads, a veteran wilderness tracker—who has not been identified by law enforcement—leaned over a map in the incident command center, letting his eye fall into the natural V's of the topo lines. By this time, detectives had determined that Barnes probably didn't possess advanced survival skills. They figured he must be exhausted. But the moment he went into the creek, the tracker knew Barnes had cut his survival time from hours to minutes. The tracker put his finger on a spot northeast of Narada Falls. "This," he said, "is where we'll find him."
UP AT THE JACKSON Visitor Center, staffers raided the closed Paradise Inn for blankets and pillows. Parents dashed out to their cars under armed escort to find diapers and medicine. A couple of SWAT members retrieved some Disney DVDs from a car for the kids.
Finally, at around midnight, a ranger whispered to Lisa Hill and Brian Hess. "Are you guys ready to go?"
An armed ranger escorted Hess to his Jeep. He brought it around to the door of the visitor center, behind a Washington State Patrol cruiser. In front of the cruiser was a sanding truck. An armed SWAT member rode shotgun in both vehicles. Four other visitors eased their cars into the queue. Another trooper pulled in at the end of the convoy.
Quickly, the passengers moved from the JVC into the cars. A police officer returned Hess's pistol. "Please don't load it until you get in the vehicle," he said.
"The drive down was nerve-racking," Lisa Hill recalled. "We thought about Brian's kids, about my 84-year-old mother, who lives with me. About what if something happened to us." They passed Margaret Anderson's SUV and the suspect's Impala. Hill realized how close the scene was to Paradise. How she would have been standing there in the open when the shooter arrived. She thought about how Anderson had risked her life to keep that from happening.
"Keep your eyes peeled on the ridges," Hess told her. So she did. And she prayed.
THE FINAL CONVOY OF Paradise visitors exited the park at around 3:30 a.m.
Half an hour later, customs pilot Chris Rosen reported to work in Bellingham. He was eager to get a helicopter down to Rainier at first light. His copilot, Dave Simeur, had navigated the Black Hawk in the previous day's manhunt and thought they'd do better in an AStar helicopter. The AStar is a smaller, nimbler craft, and customs' unit had an infrared camera system.
As the Cascade foothills rushed beneath them, Rosen and Simeur had a discussion about contingencies. "If I get shot," Rosen told his partner, "your only way of knowing might be that the AStar starts acting screwy. Be sure and take the controls."
The pilots checked the shooting site, then moved to nearby campsites. "Our concern was that this guy would find some campers, kill them, and take their gear," Rosen said.
They found two tents on the edge of Reflection Lakes. Infrared sensors turned up two warm bodies in each. Good sign. Rosen hovered above the tents until one of the campers, a Web designer named Brian Vogt, emerged. The pilot tried to communicate via a loudspeaker, but the noise from the blades was too loud. The camper held his hands up in the universal "can't understand" gesture.
Rosen looked around. The only place to land was on the frozen lake, which might not be frozen enough. He couldn't chance it.
"Hand me your coffee cup," Simeur told Rosen.
On both pilots' paper cups, Simeur wrote a message. He poured water into the cups to make sure they didn't fly up into the whirling blades. Then he dropped them.
Vogt raced over to the cups.
"A ranger has been shot," the note said. "Shooter at large. Take road to falls and sheriff. We will keep an eye on you. Do not drive from Paradise w/o armed escort."
Vogt gave a thumbs-up. He began breaking camp.
AT 9:30 A.M. ON January 2, three SWAT teams moved east on foot from the Paradise road. Two Pierce County units had followed Barnes' posthole tracks for about 200 yards before coming within sight of the berms sloping into the Paradise River. They held their position while the AStar overflew the river. No sign of the shooter.
The SWAT teams proceeded ahead. As the river itself came into view, someone spotted a piece of blue clothing in the water. He called out. "Suspect." Everyone froze. They radioed their location to the chopper.
Rosen hovered over the site. His copilot ran the infrared camera up and down the river. Any warm-blooded life would show up as a white blotch. "Man, there is nothing hot in that riverbed," said Simeur.
"We're not getting any clear signature," Rosen radioed the ground team. "Whatever is in that river is cold."
The SWAT team approached cautiously. One by one, they peered over the snowbank into the river. A body, facedown in the shallow riffles. Like a rock in the stream. White male, gray pants, blue T-shirt, one sneaker missing. No bullet wound. If this was the shooter, the mountain alone had killed him.
About 50 yards upstream, an AR-15 assault rifle rested under a few inches of water. In the front pocket of the man's pants was a Glock .45 magazine. In his back pocket, a cell phone minus its battery pack. Barnes knew enough to disable the tracking abilities of his phone.
Barnes' body was about 250 yards from where the tracker had predicted he would be found—and less than 100 yards from the Narada Falls trailhead, where Brian Vogt's group was headed and where Robert Conrad's campers had exited the previous afternoon.
As they documented the scene, one of the deputies pulled the collar of the suspect's shirt down to expose his neck. He saw a word tattooed on his skin: PRIDE.
MARGARET ANDERSON RECEIVED A hero's funeral. Thousands of family members, friends, and law-enforcement officers packed the Olson Auditorium on the campus of Pacific Lutheran University in Tacoma. Interior Secretary Ken Salazar, Washington State Governor Christine Gregoire, National Park Service Director Jon Jarvis, and Randy King delivered tributes.
"Find yourself on Mount Rainier injured, lost, or threatened, Margaret Anderson would help," King said. "Find the park threatened, she would intervene."
Rob Danno, Anderson's first boss at Bryce Canyon National Park, recalled her extraordinary integrity and character, "her internal compass." Rangers wearing crisp uniforms ceremonially folded an American flag. Interior Secretary Salazar presented it to Eric Anderson, sitting in the front row.
Mount Rainier National Park remained closed for five days. When it reopened, visitors poured in to offer flowers, cards, and sympathy. Some employees couldn't bring themselves to return to work for days and weeks, and rangers from Olympic, North Cascades, Glacier, and other national parks volunteered to fill in. For weeks, Rainier officials held a daily call-in session for staff to talk over their recovery.
Still, the park has not been the same for many of those who punch in every morning. Something will come up during a conversation, the talk will turn to Anderson, and every-one will go silent. Some rangers have a hard time sleeping. One keeps a book, Emotional Survival for Law Enforcement, next to his desk. Others have considered transfers, wondering if the best way to put New Year's Day behind them is to put the mountain in their rearview mirror.
Time heals. It can also bring fresh trauma. On June 21, climbing ranger Nick Hall died during a rescue mission on the mountain's Emmons Glacier. The memorials continue.
ERIC ANDERSON AND HIS daughters will be dealing with January 1 for the rest of their lives. I reached him in early May, four months after his wife was killed. He was, understandably, still torn up. And angry. He believes the New Year's Day shooting was an incident that had been long coming—and that the park's law-enforcement unit was unprepared for.
"There's a lot of disturbed people out there who see this mountain shining at them," he told me. "How long before some nut says, 'I can go to that mountain and slay a shitload of people and be on the news in a matter of minutes'? We're close enough to the metro area. There are plenty of opportunities to run into any type of crime."
"In terms of law enforcement, we were stretched way too thin and have been for years," Anderson said.
Compassion demands that his complaint be heard. And the Park Service is listening. In May, a board of review heard his testimony, along with others', as part of an effort to determine how to prevent similar incidents.
It's a dicey thing, discussing the murder of a ranger in the context of staffing and training. It is true that Randy King, like other park superintendents, is expecting more cuts to his budget this year. Do more with less: it's become a standard marching order in a service perennially starved by Congress. In 1980, the Park Service employed 1,841 full-time rangers to protect 220 million annual visitors. By 2010, the number of rangers had declined to 1,417—a loss of nearly a quarter of the force—while visits surged to 281 million.
Hiring more law-enforcement rangers and giving them sufficient tools would make our parks safer. But a malevolent individual like Benjamin Barnes is a bolt from the sky. Anyone with a gun, ill will, and the element of surprise can murder a law-enforcement officer. Better training and backup do not give a ranger the power to read minds or predict the future.
"We still don't know what Barnes was going to do up there," Pierce County detective Ed Troyer told me. "Kill himself? Take people out? Go survivalist and hide? The only person who knows what he was going to do was him. If Margaret Anderson hadn't stopped him, who knows what would have happened. What we do know is, he had the means and ammunition to kill a lot of people."
Anderson and his daughters will be leaving the mountain soon. The Park Service has found him a posting at the National Interagency Fire Center in Idaho. The former firefighter will work as a training specialist in structural fires. "The Park Service has been trying to do well by me," he said. He sounded genuinely appreciative.
I wish I had your job. Rangers hear it so often, it's like white noise. While most of us understand the drawbacks—low pay, working holidays, bureaucratic hassles—we still have a pang of envy when we see a ranger out on the trail on a bluebird day. What a life!
It is all that, some days. And most rangers join the National Park Service for the same reasons the rest of us visit them. They love the scenic beauty, the chance to work outdoors, the sense of positive mission. But they also absorb the bad acts that go on in the parks. They seek the negative so the rest of us can pitch our tents and hike in our snowshoes without having to worry about who's driving past the tire-chain checkpoint. Rangers see those glaciers and old-growth forests stained with violence, with ugliness and tragedy and loss. They absorb it, they deflect it, they capture it. Rangers like Margaret Anderson run to it and stand in its path.


text:
Product DetailsProduct Number: S1002766
Product DescriptionOur labels have a professional look that provides clear messages to customers. These self-adhesive decals adhere to all surfaces including letters, boxes, and shipping containers. This is an inexpensive and time-saving alternative to handwriting messages onto parcels or letters.
The postal labels read, "Delayed mail due to improper zip code, apartment #, mailing address"
Quantity Pricing
- @ $0.00
26+ @ $35.00


text:
Stimulus Accounting Still Meaningless
Via Hit and Run, this can't be said too many times
according to the CBO's top official, the figures in this report and previous mandatory stimulus don't actually tell us whether or not the stimulus created jobs. That's because, as I'venotedsomanytimesbefore, the reports rerun slightly updated versions of the same models of that were used to estimate that the stimulus would create jobs prior to the law's passage. And lo and behold, if you create a model that predicts the law will create jobs, and then you rerun a mild variation of that model a few years later using updated figures about what money was actually spent, it still reports that the stimulus created jobs. But there's no counting here, no real-world attempt to assess the reality of the stimulus—just a model that assumes that stimulus spending will create jobs and therefore reports that stimulus spending has in fact created jobs. As CBO director Douglas Elmendorf confirmed on the record last year in response to a question, "if the stimulus bill did not do what it was originally forecast to do, then that would not have been detected by the subsequent analysis."
Further, the fact that we can count individual jobs in stimulus programs (of which there are all too few, which is why the Administration doesn't do this), we still have to take into account an offset effect. The trillion dollars came from somewhere, and in effect were diverted from private to public hands. To justify the stimulus, one needs to be able to argue that the public use of these funds created more jobs than the private use of these funds. Good luck with that.


text:
Affiliate News
[M] Fractal ARC MINI R2 Computer Case Review
Swedish case manufacturer Fractal Design, know for its stylish, high quality, yet affordable cases surprised friend and foe at the last CeBIT 2014 Messe. Their latest creation the Node 804, again a stunning looking and no frills design, might be one of the hot selling case products once it will hit the retail shelves; however till then we have to be happy with the current line up and review some of their more common looking enclosures. Today we review the micro ITX/ATX compatible ARC Mini R2, a mini sized tower case with tremendous storage and cooling capacity.
via [M] Fractal ARC MINI R2 Computer Case Review.


text:
Celebrating illustration, design, cartoon and comic art of the mid-20th century.
Wednesday, April 10, 2013
Robert J. Lee: "There must be a constant probing of one's mind to paint something meaningful"
Here is the 4th and final excerpt:
"Most of my children's books are done in mixed media."
"Tales of the Arabian Nights, published by Whitman, is a good example of this. It was created in a mixture of charcoal, designer's colors, casein, watercolor, pecil, and pastel, bleeding through and over and around each other."
"In both oil and mixed media I paint with sable brushes, but from different paint pots, naturally."
"I am not fond of hard edged painting usually, but I hadn't given it much thought till, in talking to an editor, he pointed out to me how all of my edges were quite feathery in paintings done a few years ago."
"David with a Sling" and the newer paintings, Holy Men and Puerto Rican Landscape, were not as "smokey" or "feathery."
"I feel the newer paintings to be a bit more solid as they rely less on technique, style, or mannerisms which can often be short lived."
"Possibly one of the reasons for painting in a rather looser manner is that I have done so much really tight rendering over the years..."
"... that when I get a chance to paint in any manner I wish, I like painting wet with slow drying linseed oil that can be pushed around, feathered and smeared with the hand."
"Much of my painting is actually done with the fingers."
"I am becoming more and more involved in a love for good drawing. One of the things concerning drawing I have observed in students over the years: they separate drawing and painting into two different sections of their mental attitude towards an art problem. They often think in terms of "doing a drawing" and then filling it in with color, which they think of as painting."
"Drawing with the paint while painting, I feel, makes for greater solidity in picture making. A mountain has anatomy just as much as a mammal, as does a tree or a building, but to feel that inner structure, one must paint with draughtsmanship rather than simply covering over a fine drawing with color."
"There is a dangerous tendency, when one becomes technically proficient, to work sort of automatically with 'the mind in neutral.' Strangely enough, while I do not know any real intellectuals who are top-flight artists, most of the artists I know are involved in intellectual endeavors. There must be a constant probing of one's mind to paint something meaningful, aided by research which goes on year after year involving so many possible subjects."
Tomorrow: an addendum
6 comments:
Those are great quotes! I love the way he talks about drawing being the essence of good painting, not a separate act. Yes! Thanks for sharing this in a wonderfully organized post.ReplyDelete
Excellent article! I own a copy of that edition of "Arabian Nights" and didn't know the back story on the illustrator. I just bought it because I loved the illustrations!ReplyDelete
Thanks for shedding some light on the talent behind those wonderful images.
Hello, my name is Victoria,ReplyDelete
I am writing to the artist to inquire about a painting I cannot find and was wondering how much it is. It is a painting of a clown on a uni-cycle, he wears a green jacket and plaid paints with a blue-green hat. There are many details of tiny circus scenes all around. There is a carrousel on the upper left hand corner, clown on right, man with child, giraffe and monkey.
Thanks for your time,
Our Professional College Essay Services cut across the entire spectrum of the scholarly disciplines. Hire online Dissertation Writers that is there with you every step of the way.ReplyDelete
Very Nice And Interesting Post, thank you for sharingReplyDelete
Own Inspirational Quotes
Quality Excellence Quotes
Powerful World Quotes
Train Hard Gym Quotes
اقوال ممتازة
Future Oriented Quotes
Gain Independent Quotes
Gain Success Quotes
Good Exam Quotes
Belle Famose Citazioni


text:
Tuesday, October 22, 2013
Thursday, October 3, 2013
Sneak Peek of The Art of Jeff Victor
For those of you who pre-ordered my book on Kickstarter, here's an update about my upcoming art book, and a brief flip through of the book itself. Please note: This is just the proof. It's not bound yet, and this video is really just to give you an idea of the content. The ugly fold on the cover is NOT going to be part of the book. It's just part of the mock up. Questions? Please write me at email@example.com
Posted by Jeff Victor at 1:04 AM No comments:
Subscribe to: Posts (Atom)