We’ve been hearing for years that the NFL is a quarterback-driven league. We’ve assumed this means you need a star QB in order to compete for a title. But what if the other end is also true? What if competing for a title can turn a modest quarterback into a star?

With the rules and nature of the pro game favoring passing attacks, coaches can now tailor their systems to highlight a quarterback’s strengths and/or hide his weaknesses. The square-peg, round-hole thing has become borderline moot; the holes are now so large that anyone can fit in. So in this quarterback-driven league, wouldn’t that mean more opportunities for all quarterbacks to succeed, including the mediocre ones?

Look at the quarterbacks likely to be in this year’s AFC playoff bracket: Ryan Fitzpatrick; Alex Smith; Brandon Weeden (or journeyman Brian Hoyer, depending on his health); AJ McCarron (assuming his wrist is healthy enough, he’s in for an injured Andy Dalton, who had been the poster child of “decent but limited” quarterbacking); Brock Osweiler; Tom Brady (the exception to this group, though as we’ll see shortly, much less of an exception than you might guess).

The quarterbacks likely out of this AFC postseason: Philip Rivers, Ben Roethlisberger, Andrew Luck, Joe Flacco (the latter two were on the fringe even before injuries). Star passers did not carry the show this year.

There will always be a place for big-bodied, strong-armed passers who make full-field progression reads from the pocket. Each NFL game still presents multiple scenarios that demand this type of play. But the game has opened up and evolved to the point where this classic style of quarterbacking is no longer mandatory on every series.

There are numerous ways to tailor an offense for a quarterback. Let’s go through the prime example from each of this year’s likely AFC playoff teams.

• THE FINE FIFTEEN: A new team sits atop Peter King’s power rankings, plus what the Broncos’ Monday night defeat of the Bengals means for the playoff picture

* * *

New York Jets (No. 6 seed)

When Chan Gailey coached Ryan Fitzpatrick in Buffalo, he quickly understood what the journeyman QB was and what he was not. Fitzpatrick had an OK arm that he at times treated like a great arm, rifling balls into too-tight windows. With erratic mechanics, Fitzpatrick’s ball could also get away at times—all the more problematic when you consider the defensive traffic surrounding those “too-tight windows.” Instead of trying to change his quarterback’s makeup (which almost never works in the NFL), Gailey structured a system that would minimize Fitzpatrick’s damages. The Bills spread out. This spread the defense as well, minimizing the traffic and better clarifying the passing lanes. Because of the spacing, your route combinations from a spread can be limited. But that was not a huge problem because Fitzpatrick didn’t always play within the timing and structure of route combinations anyway.

Reunited with Gailey in New York, the 33-year-old Fitzpatrick has been tamed into less of a wild stallion, though not enough for Gailey to change his approach. The Jets are a bona fide spread offense. To capitalize on this (and also hide the fact that they have nothing at tight end), they instill as much receiving speed and athleticism into their spreads as possible. More than 30 percent of their snaps this season have come with four wide receivers on the field—by far the highest margin in the NFL. Here’s an illustration of their template.

Another benefit for Fitzpatrick in a four-receiver spread is that it leaves minimal bodies in pass protection. This compels the QB to get rid of the ball quickly. That’s why the Jets, despite an average offensive line, have given up only 21 sacks this season, second fewest in the league.

• MAKING TODD BOWLES: Bruce Arians, Joe Gibbs and Bill Parcells each had a hand in molding Todd Bowles, who is now remaking the Jets in his own image

* * *

Kansas City Chiefs (No. 5 seed)

Not everyone likes to hear this, but it’s true: Alex Smith is the consummate game manager. He doesn’t throw interceptions because he doesn’t take chances. In the system Andy Reid has built for him, that’s fine. The Chiefs manufacture a passing game through pre-snap motion and shifts, and intertwined route combinations that create defined reads for the quarterback, usually at the shorter intermediate levels. Here’s a classic example:

• Q&A WITH JAMAAL CHARLES: The Chiefs star on his rehab, his status for 2016 and what it’s been like to watch his team’s hot streak

* * *

Houston Texans (No. 4 seed)

Brandon Weeden has been stellar if not spectacular in his six quarters as Houston’s signal-caller. Bill O’Brien, one of the trendier offensive innovators in football, has not asked Weeden to do too much. It helps that O’Brien wasn’t asking Weeden’s predecessor, Brian Hoyer, to do too much either. (Hoyer will likely be healthy for the Wild-Card Round.) The Texans this season have not had to amend much of their system despite starting four different quarterbacks. Here’s an illustration of that system.

• Q&A WITH CECIL SHORTS: The Texans receiver (and sometimes quarterback) on how Houston turned things around

* * *

Cincinnati Bengals (No. 3 seed)

The Andy Dalton injury was a critical blow to the Bengals. Dalton had become very adroit in Hue Jackson’s scheme, which took advantage of the quarterback’s high pre-snap awareness. That said, Dalton’s injury was not a death blow. Jackson’s scheme can also simplify things in the post-snap phase, as long as the QB reads the safeties properly. Two things the Bengals have done well with Dalton: attacking the seams in the red zone and stretching the field outside, often with A.J. Green. Two weeks ago at San Francisco, in AJ McCarron’s first NFL start, Cincy still got huge plays from these concepts.

• WATCHING FILM WITH… A.J. GREEN: The Bengals superstar wideout breaks down the nuances of his game

* * *

Denver Broncos (No. 2 seed)

Since leading the Broncos to a snowy Sunday night upset over the Patriots, Brock Osweiler has been asked to mostly just manage games. Many of Osweiler’s throws have been on simplified route concepts at the short-intermediate levels. The results have been good and bad. Ultimately, if Denver is to advance this postseason, Gary Kubiak will have to lengthen his 25-year-old quarterback’s leash. Fortunately, Kubiak’s system is already equipped to do that, thanks to its heavy emphasis on zone play action. This approach naturally slices the field in half, which helps any QB.

* * *

New England Patriots (No. 1 seed)

Tom Brady is the obvious outlier among this year’s AFC playoff quarterbacks. Fans marvel at the way he wins no matter how bland his supporting cast might be. What’s not asked often enough is how does he win? Brady has full power to adjust plays at the line of scrimmage, and his pocket mobility, pinpoint accuracy and underrated arm strength make him a lethal full-field progression passer. But with a makeshift offensive line, average wide receivers and a mediocre ground game, Brady lacks the surrounding resources to play this way down in and down out. So he and offensive coordinator Josh McDaniels have constructed a quick-strike passing attack that sustains drives through small chunks and yards-after-catch.

* * *

Big-time quarterbacking still carries the day in the NFL. This year’s NFC playoff bracket shows as much. Carson Palmer has been the prototype. Cam Newton has evolved into an elite pocket passer (among other things). Aaron Rodgers has kept Green Bay’s utterly ineffective aerial attack above water. And in Seattle, Russell Wilson has learned to play from the pocket without sacrificing his sandlot prowess. The other two playoff teams, however, Minnesota and Washington, both fit in the AFC mold. That means seven of this year’s 12 finalists have quarterbacks who must be aided and camouflaged by their offensive system. With the nature of today’s pro game, those seven teams all still have a shot.


This post is about making functional decomposition from perspective of Aspect Oriented Programming using C++11. If you are not familiar with ideas of AOP don’t be afraid – it’s rather simple concept, and by the end of this post you will understand the benefits of it.

You also can treat this post just as example how to use high-order functions in C++11.

In short – AOP tries to perform decomposition of every business function into orthogonal parts called aspects such as security, logging, error handling, etc. The separation of crosscutting concerns. It looks like:

Since C++11 supports high-order functions now we can implement factorization without any additional tools and frameworks (like PostSharp for C#).

You can scroll down to ‘what for’ chapter to check out the result to get more motivated.

PART 1 – TRIVIAL SAMPLE

Let’s start from something simple – one aspect and one function.

Here is simple lambda with trivial computation inside:

auto plus = [](int a, int b) { LOG << a + b << NL; }; 1 auto plus = [ ] ( int a , int b ) { LOG << a + b << NL ; } ;

I want to add some logging before and after computation. Instead of just adding this boilerplate code into function body let’s go other way. In C++11 we just can write high-order function which will take function as argument and return new function as result:

template <typename ...Args> std::function<void(Args...)> wrapLog(std::function<void(Args...)> f) { return [f](Args... args){ LOG << "start" << NL; f(args...); LOG << "finish" << NL; }; } 1 2 3 4 5 6 7 8 9 template < typename . . . Args > std :: function < void ( Args . . . ) > wrapLog ( std :: function < void ( Args . . . ) > f ) { return [ f ] ( Args . . . args ) { LOG << "start" << NL ; f ( args . . . ) ; LOG << "finish" << NL ; } ; }

Here we used std::function, variadic templates and lambda as result. (LOG, NL – my own logging stream and you can just change it with std::cout , std::endl or your another logging lib).

As i hoped to achieve the most simple and compact solution, i expected to use it like this:

auto loggedPlus = wrapLog(plus); 1 auto loggedPlus = wrapLog ( plus ) ;

Unfortunately this will not compile. ‘no matching function to call ….’ The reason is that lambda is not std::function and automatic type conversion can’t be done. Of cause we can write something like this:

auto loggedPlus = wrapLog(static_cast<std::function<void(int,int)>>(plus)); 1 auto loggedPlus = wrapLog ( static_cast < std :: function < void ( int , int ) >> ( plus ) ) ;

This line will compile, but this is ugly… I hope cpp committee will fix this casting issue. Meanwhile, the best solution i found so far is the following:

template <typename Function> struct function_traits : public function_traits<decltype(&Function::operator())> {}; template <typename ClassType, typename ReturnType, typename... Args> struct function_traits<ReturnType(ClassType::*)(Args...) const> { typedef ReturnType (*pointer)(Args...); typedef std::function<ReturnType(Args...)> function; }; template <typename Function> typename function_traits<Function>::function to_function (Function& lambda) { return typename function_traits<Function>::function(lambda); } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 template < typename Function > struct function_traits : public function_traits < decltype ( & Function :: operator ( ) ) > { } ; template < typename ClassType , typename ReturnType , typename . . . Args > struct function_traits < ReturnType ( ClassType :: * ) ( Args . . . ) const > { typedef ReturnType ( * pointer ) ( Args . . . ) ; typedef std :: function < ReturnType ( Args . . . ) > function ; } ; template < typename Function > typename function_traits < Function > :: function to_function ( Function & lambda ) { return typename function_traits < Function > :: function ( lambda ) ; }

This code is using type traits to convert anonymous lambda into std::function of same type. We can use it like this:

auto loggedPlus = wrapLog(to_function(plus)); 1 auto loggedPlus = wrapLog ( to_function ( plus ) ) ;

Not perfect but much better. Finally we can call functional composition and get the result.

loggedPlus(2,3); // Result: // start // 5 // finish 1 2 3 4 5 6 loggedPlus ( 2 , 3 ) ; // Result: // start // 5 // finish

Note: if we had declared aspect function without variadic template we could compose functions without to_function() conversion, but this would kill the benefit from writing universal aspects discussed further.

PART 2 – REALISTIC EXAMPLE

Introduction is over, let’s start some more real-life coding here. Let’s assume we want to find some user inside database by id. And while doing that we also want log the process duration, check that requesting party is authorised to perform such request (security check), check for database request fail, and, finally, check in local cache for instant results.

And one more thing – i don’t want to rewrite such additional aspects for every function type. So let’s write them using variadic templates and get as universal methods as possible.

Ok, let’s start. I will create some dummy implementation for additional classes like User, etc. Such classes are only for example and actual production classes might be completely different, like user id should not be int, etc.

Sample User class as immutable data:

// Simple immutable data class UserData { public: const int id; const string name; UserData(int id, string name) : id(id), name(name) {} }; // Shared pointer to immutable data using User = std::shared_ptr<UserData>; 1 2 3 4 5 6 7 8 9 10 // Simple immutable data class UserData { public : const int id ; const string name ; UserData ( int id , string name ) : id ( id ) , name ( name ) { } } ; // Shared pointer to immutable data using User = std :: shared_ptr < UserData > ;

Let’s emulate database as simple vector of users and create one method to work with it (find user by id):

vector<User> users {make<User>(1, "John"), make<User>(2, "Bob"), make<User>(3, "Max")}; auto findUser = [&users](int id) -> Maybe<User> { for (User user : users) { if (user->id == id) return user; } return nullptr; }; 1 2 3 4 5 6 7 8 9 vector < User > users { make < User > ( 1 , "John" ) , make < User > ( 2 , "Bob" ) , make < User > ( 3 , "Max" ) } ; auto findUser = [ & users ] ( int id ) -> Maybe < User > { for ( User user : users ) { if ( user -> id == id ) return user ; } return nullptr ; } ;

make<> here is just shortcut for make_shared<>, nothing special.

Maybe<> monad

You, probably, noticed that return type of request function contains something called Maybe<T>. This class is inspired by Haskell maybe monad, with one major addition. Instead of just saving Nothing state and Content state, it also might contain Error state.

At first, here is sample type for error description:

/// Error type - int code + description class Error { public: Error(int code, string message) : code(code), message(message) {} Error(const Error& e) : code(e.code), message(e.message) {} const int code; const string message; }; 1 2 3 4 5 6 7 8 9 /// Error type - int code + description class Error { public : Error ( int code , string message ) : code ( code ) , message ( message ) { } Error ( const Error & e ) : code ( e . code ) , message ( e . message ) { } const int code ; const string message ; } ;

Here is minimalistic implementation of Maybe:

template < typename T > class Maybe { private: const T data; const shared_ptr<Error> error; public: Maybe(T data) : data(std::forward<T>(data)), error(nullptr) {} Maybe() : data(nullptr), error(nullptr) {} Maybe(decltype(nullptr) nothing) : data(nullptr), error(nullptr) {} Maybe(Error&& error) : data(nullptr), error(make_shared<Error>(error)) {} bool isEmpty() { return (data == nullptr); }; bool hasError() { return (error != nullptr); }; T operator()(){ return data; }; shared_ptr<Error> getError(){ return error; }; }; template <class T> Maybe<T> just(T t) { return Maybe<T>(t); } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 template < typename T > class Maybe { private : const T data ; const shared_ptr < Error > error ; public : Maybe ( T data ) : data ( std :: forward < T > ( data ) ) , error ( nullptr ) { } Maybe ( ) : data ( nullptr ) , error ( nullptr ) { } Maybe ( decltype ( nullptr ) nothing ) : data ( nullptr ) , error ( nullptr ) { } Maybe ( Error && error ) : data ( nullptr ) , error ( make_shared < Error > ( error ) ) { } bool isEmpty ( ) { return ( data == nullptr ) ; } ; bool hasError ( ) { return ( error != nullptr ) ; } ; T operator ( ) ( ) { return data ; } ; shared_ptr < Error > getError ( ) { return error ; } ; } ; template < class T > Maybe < T > just ( T t ) { return Maybe < T > ( t ) ; }

Note, that you don’t have to use Maybe<> and here it’s used only for example.

Here we also use the fact that nullptr in C++11 has it’s own type. Maybe has defined constructor from that type producing nothing state. So when you return result from findUser function, there is no need for explicit conversion into Maybe<> – you can just return User or nullptr, and proper constructor will be called.

Operator () returns possible value without any checks, and getError() returns possible error.

Function just() is used for explicit Maybe<T> construction (this is standard name).

Logging aspect

First, let’s rewrite log aspect so it will calculate execution time using std::chrono. Also let’s add new string parameter as name for called function which will be printed to log.

template <typename R, typename ...Args> std::function<R(Args...)> logged(string name, std::function<R(Args...)> f) { return [f,name](Args... args){ LOG << name << " start" << NL; auto start = std::chrono::high_resolution_clock::now(); R result = f(std::forward<Args>(args)...); auto end = std::chrono::high_resolution_clock::now(); auto total = std::chrono::duration_cast<std::chrono::microseconds>(end - start).count(); LOG << "Elapsed: " << total << "us" << NL; return result; }; } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 template < typename R , typename . . . Args > std :: function < R ( Args . . . ) > logged ( string name , std :: function < R ( Args . . . ) > f ) { return [ f , name ] ( Args . . . args ) { LOG << name << " start" << NL ; auto start = std :: chrono :: high_resolution_clock :: now ( ) ; R result = f ( std :: forward < Args > ( args ) . . . ) ; auto end = std :: chrono :: high_resolution_clock :: now ( ) ; auto total = std :: chrono :: duration_cast < std :: chrono :: microseconds > ( end - start ) . count ( ) ; LOG << "Elapsed: " << total << "us" << NL ; return result ; } ; }

Note std::forward here for passing arguments more clean way. We don’t need to specify return type as Maybe<R> because we don’t need to perform any specific action like error checking here.

‘Try again’ aspect

What if we have failed to get data (for example, in case of disconnect). Let’s create aspect which will in case of error perform same query one more time to be sure.

// If there was error - try again template <typename R, typename ...Args> std::function<Maybe<R>(Args...)> triesTwice(std::function<Maybe<R>(Args...)> f) { return [f](Args... args){ Maybe<R> result = f(std::forward<Args>(args)...); if (result.hasError()) return f(std::forward<Args>(args)...); return result; }; } 1 2 3 4 5 6 7 8 9 10 11 // If there was error - try again template < typename R , typename . . . Args > std :: function < Maybe < R > ( Args . . . ) > triesTwice ( std :: function < Maybe < R > ( Args . . . ) > f ) { return [ f ] ( Args . . . args ) { Maybe < R > result = f ( std :: forward < Args > ( args ) . . . ) ; if ( result . hasError ( ) ) return f ( std :: forward < Args > ( args ) . . . ) ; return result ; } ; }

Maybe<> is used here to identify error state. This method can be extended – we could check error code and decide is there any sense to perform second request (was it network problem or database reported some format error).

Cache aspect

Next thing – let’s add client side cache and check inside it before performing actual server-side request (in functional world this is called memoization). To emulate cache here we can just use std::map:

map<int,User> userCache; // Use local cache (memoize) template <typename R, typename C, typename K, typename ...Args> std::function<Maybe<R>(K,Args...)> cached(C & cache, std::function<Maybe<R>(K,Args...)> f) { return [f,&cache](K key, Args... args){ // get key as first argument if (cache.count(key) > 0) return just(cache[key]); else { Maybe<R> result = f(std::forward<K>(key), std::forward<Args>(args)...); if (!result.hasError()) cache.insert(std::pair<int, R>(key, result())); //add to cache return result; } }; } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 map < int , User > userCache ; // Use local cache (memoize) template < typename R , typename C , typename K , typename . . . Args > std :: function < Maybe < R > ( K , Args . . . ) > cached ( C & cache , std :: function < Maybe < R > ( K , Args . . . ) > f ) { return [ f , & cache ] ( K key , Args . . . args ) { // get key as first argument if ( cache . count ( key ) > 0 ) return just ( cache [ key ] ) ; else { Maybe < R > result = f ( std :: forward < K > ( key ) , std :: forward < Args > ( args ) . . . ) ; if ( ! result . hasError ( ) ) cache . insert ( std :: pair < int , R > ( key , result ( ) ) ) ; //add to cache return result ; } } ; }

This function will insert element into cache if it was not there. Here we used that knowledge that cache is std::map, but it can be changed to any key-value container hidden behind some interface.

Second important part, we used only first function argument here as key. If you have complex request where all parameters should act as composite key – what to do? It’s still possible and there are a lot of ways to make it. First way is just to use std::tuple as key (see below). Second way is to create cache class which will allow several key parameters. Third way is to combine arguments into single string cache using variadic templates. Using tuple approach we can rewrite it like this:

map<tuple<int>,User> userCache; // Use local cache (memoize) template <typename R, typename C, typename ...Args> std::function<Maybe<R>(Args...)> cached(C & cache, std::function<Maybe<R>(Args...)> f) { return [f,&cache](Args... args){ // get key as tuple of arguments auto key = make_tuple(args...); if (cache.count(key) > 0) return just(cache[key]); else { Maybe<R> result = f(std::forward<Args>(args)...); if (!result.hasError()) cache.insert(std::pair<decltype(key), R>(key, result())); //add to cache return result; } }; } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 map < tuple < int > , User > userCache ; // Use local cache (memoize) template < typename R , typename C , typename . . . Args > std :: function < Maybe < R > ( Args . . . ) > cached ( C & cache , std :: function < Maybe < R > ( Args . . . ) > f ) { return [ f , & cache ] ( Args . . . args ) { // get key as tuple of arguments auto key = make_tuple ( args . . . ) ; if ( cache . count ( key ) > 0 ) return just ( cache [ key ] ) ; else { Maybe < R > result = f ( std :: forward < Args > ( args ) . . . ) ; if ( ! result . hasError ( ) ) cache . insert ( std :: pair < decltype ( key ) , R > ( key , result ( ) ) ) ; //add to cache return result ; } } ; }

Now it’s much more universal.

Security aspect

Never forget about security. Let’s emulate user session with some dummy class –

class Session { public: bool isValid() { return true; } } session; 1 2 3 4 class Session { public : bool isValid ( ) { return true ; } } session ;

Security checking high-order function will have additional parameter – session. Checking will only verify that isValid() field is true:

// Security checking template <typename R, typename ...Args, typename S> std::function<Maybe<R>(Args...)> secured(S session, std::function<Maybe<R>(Args...)> f) { // if user is not valid - return nothing return [f, &session](Args... args) -> Maybe<R> { if (session.isValid()) return f(std::forward<Args>(args)...); else return Error(403, "Forbidden"); }; } 1 2 3 4 5 6 7 8 9 10 11 12 // Security checking template < typename R , typename . . . Args , typename S > std :: function < Maybe < R > ( Args . . . ) > secured ( S session , std :: function < Maybe < R > ( Args . . . ) > f ) { // if user is not valid - return nothing return [ f , & session ] ( Args . . . args ) -> Maybe < R > { if ( session . isValid ( ) ) return f ( std :: forward < Args > ( args ) . . . ) ; else return Error ( 403 , "Forbidden" ) ; } ; }

‘Not empty’ aspect

Last thing in this example – let’s treat not found user as error.

// Treat empty state as error template <typename R, typename ...Args> std::function<Maybe<R>(Args...)> notEmpty(std::function<Maybe<R>(Args...)> f) { return [f](Args... args) -> Maybe<R> { Maybe<R> result = f(std::forward<Args>(args)...); if ((!result.hasError()) && (result.isEmpty())) return Error(404, "Not Found"); return result; }; } 1 2 3 4 5 6 7 8 9 10 11 // Treat empty state as error template < typename R , typename . . . Args > std :: function < Maybe < R > ( Args . . . ) > notEmpty ( std :: function < Maybe < R > ( Args . . . ) > f ) { return [ f ] ( Args . . . args ) -> Maybe < R > { Maybe < R > result = f ( std :: forward < Args > ( args ) . . . ) ; if ( ( ! result . hasError ( ) ) && ( result . isEmpty ( ) ) ) return Error ( 404 , "Not Found" ) ; return result ; } ; }

Im not writing here about error handling aspect, but it’s also can be implemented via same approach. Note that using error propagation inside Maybe<> monad you can avoid using exceptions and define your error processing logic different way.

Multithread lock aspect

template <typename R, typename ...Args> std::function<R(Args...)> locked(std::mutex& m, std::function<R(Args...)> f) { return [f,&m](Args... args){ std::unique_lock<std::mutex> lock(m); return f(std::forward<Args>(args)...); }; } 1 2 3 4 5 6 7 8 template < typename R , typename . . . Args > std :: function < R ( Args . . . ) > locked ( std :: mutex & m , std :: function < R ( Args . . . ) > f ) { return [ f , & m ] ( Args . . . args ) { std :: unique_lock < std :: mutex > lock ( m ) ; return f ( std :: forward < Args > ( args ) . . . ) ; } ; }

No comments.

FINALLY

Finally, what for was all this madness? FOR THIS LINE:

// Aspect factorization auto findUserFinal = secured(session, notEmpty( cached(userCache, triesTwice( logged("findUser", to_function(findUser)))))); 1 2 3 // Aspect factorization auto findUserFinal = secured ( session , notEmpty ( cached ( userCache , triesTwice ( logged ( "findUser" , to_function ( findUser ) ) ) ) ) ) ;

Checking (let’s find user with id 2):

auto user = findUserFinal(2); LOG << (user.hasError() ? user.getError()->message : user()->name) << NL; // output: // 2015-02-02 18:11:52.025 [83151:10571630] findUser start // 2015-02-02 18:11:52.025 [83151:10571630] Elapsed: 0us // 2015-02-02 18:11:52.025 [83151:10571630] Bob 1 2 3 4 5 6 7 auto user = findUserFinal ( 2 ) ; LOG << ( user . hasError ( ) ? user . getError ( ) -> message : user ( ) -> name ) << NL ; // output: // 2015-02-02 18:11:52.025 [83151:10571630] findUser start // 2015-02-02 18:11:52.025 [83151:10571630] Elapsed: 0us // 2015-02-02 18:11:52.025 [83151:10571630] Bob

Ok, let’s perform tests for several users ( here we will request same user twice and one non-existing user ):

auto testUser = [&](int id) { auto user = findUserFinal(id); LOG << (user.hasError() ? "ERROR: " + user.getError()->message : "NAME:" + user()->name) << NL; }; for_each_argument(testUser, 2, 30, 2, 1); //2015-02-02 18:32:41.283 [83858:10583917] findUser start //2015-02-02 18:32:41.284 [83858:10583917] Elapsed: 0us //2015-02-02 18:32:41.284 [83858:10583917] NAME:Bob //2015-02-02 18:32:41.284 [83858:10583917] findUser start //2015-02-02 18:32:41.284 [83858:10583917] Elapsed: 0us // error: //2015-02-02 18:32:41.284 [83858:10583917] ERROR: Not Found // from cache: //2015-02-02 18:32:41.284 [83858:10583917] NAME:Bob //2015-02-02 18:32:41.284 [83858:10583917] findUser start //2015-02-02 18:32:41.284 [83858:10583917] Elapsed: 0us //2015-02-02 18:32:41.284 [83858:10583917] NAME:John 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 auto testUser = [ & ] ( int id ) { auto user = findUserFinal ( id ) ; LOG << ( user . hasError ( ) ? "ERROR: " + user . getError ( ) -> message : "NAME:" + user ( ) -> name ) << NL ; } ; for_each_argument ( testUser , 2 , 30 , 2 , 1 ) ; //2015-02-02 18:32:41.283 [83858:10583917] findUser start //2015-02-02 18:32:41.284 [83858:10583917] Elapsed: 0us //2015-02-02 18:32:41.284 [83858:10583917] NAME:Bob //2015-02-02 18:32:41.284 [83858:10583917] findUser start //2015-02-02 18:32:41.284 [83858:10583917] Elapsed: 0us // error: //2015-02-02 18:32:41.284 [83858:10583917] ERROR: Not Found // from cache: //2015-02-02 18:32:41.284 [83858:10583917] NAME:Bob //2015-02-02 18:32:41.284 [83858:10583917] findUser start //2015-02-02 18:32:41.284 [83858:10583917] Elapsed: 0us //2015-02-02 18:32:41.284 [83858:10583917] NAME:John

As you can see it’s working as intended. It’s obvious that we got a lot of benefits from such decomposition. Factorisation leads to decoupling of functionality, more modular structure and so on. You gain more focus on actual business logic as result.

We can change order of aspects as we like. And as we made aspect functions rather universal we can reuse them avoiding a lot of code duplication.

Instead of functions we can use more sophisticated functors (with inheritance), and instead of Maybe<> also could be more complex structure to hold some additional info. So whole scheme is extendable.

Note also, that you can pass lambdas as additional aspect parameters.

Working sample to play with: github gist or ideone

Ps. BONUS:


The actual Great Canyon features probably the most polarized climate extreme conditions associated with all over the world. The actual Northern edge rests in a hill height associated with 8, 000 ft, the actual Southern Edge from 7, 000 ft, and also the base from the Great Canyon and also the Co Water rests in a low-desert height associated with simply two, 000 in order to two, 500 ft. Due to these types of extreme conditions within height, the actual temps within the Canyon also provide high levels and incredibly reduced levels. Individuals possess each freezing in order to passing away as well as already been warmed in order to passing away, just about all within places which are just a couple of kilometers through one another.

Because it is breakthrough through Europeans within the middle 1500s (actually through The spanish language explorer Coronado as well as their men), the actual Great Canyon offers stated the actual life associated with countless individuals. Within the guide “Over the actual Advantage: Passing away within the Great Canyon” the actual writers discover all the numerous ways individuals give up on within the Canyon. Heating system in order to passing away, or even more precisely perishing associated with dehydration- as well as warmth stroke-induced heart police arrest, is actually the most typical method individuals end within the Canyon.

The actual wheels, becoming hill conditions, tend to be awesome within the summer time as well as lower correct chilly within the winter season. In the wheels, typical levels within the summer time remain eighty levels, along with levels within the 50s. Typical levels within the winter season in the wheels remain forty levels, levels close to eighteen levels.

Therefore beginning in the Edge points feel at ease sufficient, however as soon as lower within the Canyon the actual landscape as well as climate alter significantly! Typical levels in the Co Water within the summer time float close to 110 levels, and that is within the tone, along with levels just within the reduced 80s. Within the winter season, the actual Co Water offers levels around sixty levels, along with levels close to forty levels.

Lots of people begin OKAY in the wheels, considering the actual Canyon isn’t actually which large of the offer. These people begin without having sufficient drinking water as well as without having sufficient of the mind start heat from the day time. As soon as lower within the Great Canyon, they are devoted to possibly dealing with drinking water or even obtaining back again away. Once the warmth strikes, most of them have not managed to get in order to possibly.

Within the winter season, walkers tend to be departing the actual Co Water along with levels close to sixty as well as seventy levels — fairly comfy. However through the period they are in the wheels they may be the sub-zero level blizzard. You will find walkers who’ve really succumbed towards the chilly close to the wheels as well as already been hidden within the snowfall, just found days later on once the snowfall dissolved away. Difficult to assume whenever the first is departing the heat from the canyon base.

An additional main element in Great Canyon climate may be the monsoon period, that endures through middle 06 in order to middle Sept, and may usher within damaging thunderstorms. Walkers as well as boaters have to be cautious associated with large container canyons whenever there is ANY KIND OF climate in the region. The thunderstorm in the Northern Edge can make the expensive ton within Phantom Creek sixteen kilometers aside, as well as you will find individuals that have passed away presently there along with other locations along with apparently absolutely no pre-warning. In the event that there is any kind of possibility of rainfall inside 50 kilometers in a path, prevent container canyons.

The actual Great Canyon is a good spot to go to, however be ready as well as understand what you are engaging in. It might simply save your valuable existence!


Image caption Thomas Hadley said 11 lambs were still missing and 33 have been killed

A young farmer has spoken of his shock after most of his flock of 56 lambs were killed by two dogs.

Thomas Hadley was telephoned on Friday to say two dogs were attacking his sheep in Risbury, Leominster.

Mr Hadley, 23, said when he arrived the field was "scattered" with dead and injured lambs and the dogs were still attacking other sheep.

Police sent armed officers and seized the dogs. A 64-year-old man has been arrested and bailed.

The man, from Leominster, has been bailed until October on suspicion of allowing a dog to be out of control and allowing a dog to kill or maim livestock. A police spokesman said the firearms officers were deployed as a "matter of precaution".

'Can't trust any dog'

Mr Hadley said 33 of the lambs, who were born in April, died from their injuries or shock or had to be destroyed.

"I haven't slept at all," he said. "We are still missing 11 lambs and these could be fatally injured lying somewhere and we have searched a two-mile radius of this place and haven't found them."

Mr Hadley, who also works as an sheep shearer and livestock agent, has been breeding sheep for three years and said the incident had cost at least £10,000.

"I have lost the breed lines and will have to start from scratch," he said.

"People don't realise that their dogs can do this," he said. "You can't trust any dog around livestock."


LONDON (Reuters) - Gold rose on Wednesday, recovering from its lowest in nearly two weeks, as prospects for further economic stimulus helped to bolster investor appetite whil the dollar remained flat.

Accommodative monetary policies favour gold as well as equities because low interest rates encourage investors to opt for assets that do not rely on interest yields.

Spot gold was up 0.7 percent at $1,340.90 an ounce by 1417 GMT, having earlier touched $1,327.30, its lowest since July 1. Bullion had fallen by 1.7 percent on Tuesday, its biggest one-day drop since May 24.

U.S. gold rose 0.5 percent to $1,341.50.

“Gold prices can continue to benefit from an uncertain economic picture for the UK and Europe after the Brexit vote and also from any quantitative easing, which also means low interest rates,” Natixis analyst Bernard Dahdah said.

Gold has gained about $100 an ounce since Britain voted to leave the European Union, with worried investors piling their cash into safe-haven assets.

Global shares came within reach of testing their 2016 peak on Wednesday, also bolstered by prospects of economic stimulus. [MKTS/GLOB]

The dollar, in which gold is priced, fell 0.2 percent against a basket of six currencies.

After five weeks of gains, gold had come under some pressure following strong U.S. non-farm payrolls data on Friday.

Despite better than expected jobs data, the Federal Reserve should be in no rush to raise interest rates, two senior Fed officials said.

“Gold thrives in an environment of negative rates, low government bond yields ...obviously the unknown is the probability of a Fed rate increase, which could however no happen this year, helping the metal’s price ascent,” Societe Generale analyst Robin Bhar said.

Holdings of SPDR Gold Trust, the world’s largest gold-backed exchange-traded fund, fell 1.63 percent to 965.22 tonnes on Tuesday, its biggest one-day decline since Dec. 2. [GOL/]

Palladium touched an eight-month high of $645 an ounce.

Platinum, which fell for the first time in two weeks in the previous session, rebounded 0.1 percent to $1,087.50.

Silver, meanwhile, gained 0.7 percent to $20.27.


Breaking News Emails Get breaking news alerts and special reports. The news and stories that matter, delivered weekday mornings.

June 21, 2017, 2:48 PM GMT / Updated June 21, 2017, 3:21 PM GMT By Alex Seitz-Wald

SANDY SPRINGS, Georgia — Democrats are tired of losing and the accusations are flying.

After going all in and coming up short in Georgia's special election Tuesday, Democratic lawmakers and political operatives are venting their frustration at losing every competitive special congressional election so far this year.

Many were upset that Democrat Jon Ossoff blunted what was arguably his greatest asset — antipathy toward President Donald Trump — by going relatively easy on the president and avoiding controversy at all cost. Others, however, countered that Ossoff was a fine candidate who was the victim of a party that is too cautious and has lost its ability to connect with voters.

Sen. Chris Murphy (D-CT), one of the party’s rising stars, said Democrats have been distracted by the investigation in Trump’s alleged ties to Russia and need to focus more on making a concrete impact on voters' lives.

“We’ve been hyper-confused for the past five years," he said on MSNBC’s "Morning Joe." "Some of the time we’re talking about economic growth, some of the time we’re talking about economic fairness.”

"We need to be hyper-focused on this issue of wage growth and job growth — I think Democrats are scared of this message because it’s what Republicans have been talking about," he added.

Rep. Bill Pascrell (D-NJ) said, "Close is only good in horse shoes. A loss is a loss...We can't just dismiss it. We need to review it together."

RELATED: Five Lessons From the Georgia Special Election

Democrats also have an "authenticity" problem, he said, noting, “I think that there are a lot of people who look at the Democratic party and aren’t sure that we aren’t also captive by special interest — and that’s not true."

On her path to victory, Republican Karen Handel returned to the GOP playbook of tying Democratic candidates in purple-to-red districts to the party's liberal wing, and especially to House Minority Leader Nancy Pelosi. Ossoff presented himself as squeaky clean alternative with uncontroversial plans like cutting government spending.

Republican candidate for Georgia's 6th District Congressional seat Karen Handel celebrates with her husband Steve as she declares victory Tuesday, June 20, 2017, in Atlanta. John Bazemore / AP

“One important lesson is that when they go low, going high doesn't f**king work,” tweeted Neera Tanden, the president of the liberal Center for American Progress think tank, referring to Michelle Obama's maxim from the 2016 campaign.

Rep. Seth Moulton (D-MA), a former Marine with three degrees from Harvard and one of the party's up-and-comers, said the defeat should be a “wake up call for Democrats.”

Rep. Ro Khanna (D-CA), a progressive who represents Silicon Valley, said Democrats have failed to appreciate how massive changes in the economy are impacting voters.

“We have to figure out how we are going to speak to people’s economic anxiety,” he told NBC News. “We’ve failed at doing that.”

“Our politics are still conventional, incremental, are not very different, frankly, from our proposals from 10 years ago,” he added.

And when Democrats don’t run on bold economic ideas, Khanna added, “These elections will end up being about what party people are from or more trivial issues like that."

Jeff Weaver, Bernie Sanders’ former presidential campaign manager, said that while Ossoff ran a good campaign, Democrats should not have made that race their only cause. Instead, Weaver argued, the party should have offered more help to its candidates in the Montana and Kansas special elections earlier this year.

“In the Montana race, the one I’m most familiar with, with a fraction of the investment that was made in Georgia 6 we likely could have sworn in a Democratic congressperson,” Weaver told NBC News.

“Should we as Democrats compete in economically conservative districts like Georgia 6? Absolutely. We should compete everywhere. But the more likely road to a Democratic U.S. House majority runs through places like Kansas, Montana and South Carolina,” he added.

Democratic candidate for 6th congressional district Jon Ossoff, left, waves to the crowd while stepping offstage with his fiancee Alisha Kramer after conceding to Republican Karen Handel at his election night party on June 20, 2017 in Atlanta. David Goldman / AP

The Democratic Congressional Campaign Committee quickly sought to move past the Georgia debacle by distributing a memo to staff and Democratic lawmakers officially declaring — for the first time — that Chairman Rep. Ben Ray Luján (D-NM) believes "the House is in play."

"I don’t make this statement lightly — I’ve never said it before," Luján said. "This is about much more than one race: the national environment, unprecedented grassroots energy and impressive Democratic candidates stepping up to run deep into the battlefield leave no doubt that Democrats can take back the House next fall."

And former Obama White House Senior Adviser Dan Pfeiffer warned Democrats to avoid yet another round of self-flagellating recriminations.

But Anna Galland, the executive director of MoveOn.org, said the Georgia race shows “Democrats will not win back power merely by serving as an alternative to Trump and Republicans.”

“In the closing weeks of the race, Ossoff and the [Democratic Congressional Campaign Committee] missed an opportunity to make Republicans’ attack on health care the key issue, and instead attempted to portray Ossoff as a centrist, focusing on cutting spending and coming out in opposition to Medicare for All,” she said.

Some of the toughest criticism came from the Sanders wing of the party.

RoseAnn DeMoro, the president of National Nurses Union, suggested the Democratic party’s current strategy was "insanity."

But Stacey Abrams, the minority leader of the Georgia House and a 2018 gubernatorial candidate, said Democrats need to take a breath and focus on the long game.

“I’m a red state Democrat in the South," she told NBC News. "We understand that we have to make incremental progress, that we don’t win in one fell swoop."


Ben Simmons Expects To Go First Overall, Prepares To Play For Sixers

Share ! tweet

LSU’s Ben Simmons expects nothing less than being picked No. 1 overall in the coming 2016 NBA Draft and according to a report, his camp is already preparing the multi-faceted forward to suit up with the Philadelphia 76ers.

The story was supported with the fact that Simmons has already signed a shoe deal with Nike, cancelling out the rumor about the Australian forcing his way to Los Angeles in search of better endorsement opportunities.

Tom Moore of Burlington County Times wrote:

Agent Rich Paul, who represents LeBron James, John Wall and others, “has been preparing for his client to go to Philadelphia from the moment the Sixers got the” top selection in the May 17 draft lottery, according to the source. Neither Simmons nor Paul has apparently made any public comments about draft preference and the Sixers since the lottery. Simmons has a connection to the area in that his trainer lives in Drexel Hill. He’s also known Sixers coach Brett Brown, who coached Simmons’ dad in Melbourne, Australia, since birth.

According to most experts, the draft is a two-horse race between Simmons and Duke’s Brandon Ingram but all indications point to the Sixers selecting the former by a landslide.

It seems the feeling is now mutual.

Mandatory Credit: Derick E. Hingle-USA TODAY Sports

Comments

comments


Each weekday during the minor-league season, FanGraphs is providing a status update on multiple rookie-eligible players. Note that Age denotes the relevant prospect’s baseball age (i.e. as of July 1st of the current year); Top-15, the prospect’s place on Marc Hulet’s preseason organizational list; and Top-100, that same prospect’s rank on Hulet’s overall top-100 list.

***

Orlando Castro, LHP, Pittsburgh Pirates (Profile)

High-A: 22N/AN/A55.2 IP, 46 H, 18 R, 41/7 K/BB, 2.91 ERA, 2.77 FIP

Summary

While he’s not remotely physically imposing, this little lefthander knows what he’s doing.

Notes

Last year, Orlando Castro emerged on the fringes of the prospect scene with a stellar first half with Low-A West Virginia, putting up a 1.93 ERA and 63/6 K/BB ratio in 74.2 innings. He was basically a complete nobody before that, so his performance didn’t get him noticed by many other than Pirates diehards and K/BB leaderboard sorters, and a mediocre second half with High-A Bradenton did nothing to further his ascent up prospect lists.

Now, though, Castro’s doing it again, dominating High-A hitters by filling the zone and missing enough bats to stay interesting, and this second successful run commands a bit more attention. After all, Castro’s just 22 and he throws with his left hand.

Castro’s listed at 5’11” and 190 pounds, and size is certainly not a positive for him. As you might expect from a small lefty control artist, he’s not an especially hard thrower, though he works consistently at 88-91 mph, which isn’t particularly poor for a lefthanded starter. Castro throws both a four-seam and a two-seam fastball, the latter of which helps him get groundballs.

The Pirates tend to heavily emphasize changeup development over that of breaking pitches in the low minors, and so when I saw him in 2013, Castro used his 83-84 mph changeup far more than his big-breaking 73-76 mph curveball, but both pitches should end up average or better. The changeup is so advanced that he’s limited righties to just a .214/.245/.328 line this year, while his fellow southpaws have hit .257/.301/.314.

It all comes out of an extremely simple, eminently repeatable motion that allows Castro to hit his spots consistently. He’s not just a guy going out there and aiming for the plate–he moves and mixes his pitches and locations adeptly.

There’s certainly precedent out there for guys with this sort of approach succeeding in the bigs–take Tommy Milone, Jason Vargas, Dallas Keuchel, Jon Niese, and Travis Wood as a few examples of sub-90 southpaws with good pitchability and offspeed pitches. How he adjusts to Double-A hitters will be a big indicator of whether Castro will ascend to that status or become merely another organizational control pitcher. He’s probably about ready for that test, though, and I have a feeling he’ll do better on it than many think.

***

James Dykstra, RHP, Chicago White Sox (Profile)

Low-A: 23N/AN/A51.2 IP, 59 H, 22 R, 44/7 K/BB, 3.83 ERA, 2.64 FIP

Summary

This sixth-round find has a polished arsenal and good control.

Notes

The brother of former first-rounder and current Triple-A slugger Allan Dykstra, James Dykstra became the highest-drafted player ever out of Cal State San Marcos last year, with his sixth-round selection trumping Johnny Omahen’s 35th-round slot quite handily. While his brother has walked more than he’s struck out this year, James has posted an eye-catching K/BB ratio of his own in his first extended minor league action, tacking on a 61% groundball rate as well. Above-average strikeouts, minimal walks, and an extreme groundball rate comprise a great statistical platform to build from, but Dykstra is 23, so he’ll need to move quickly to be taken seriously.

He has the stuff to make that jump, though, with a polished three-pitch mix that includes an 89-93 mph running fastball, a 72-76 mph big-breaking curveball, and an 80-84 mph sinking changeup. His fastball/changeup combination is solid, and both are solid-average pitches; the curveball flashes higher than both of them and could be a plus offering, but he’s not consistent with his usage of it. Sometimes he’ll fall in love with the pitch and throw it 50% of the time for an inning, while others he’ll abandon it altogether. Here’s a look at the pitch flummoxing touted Red Sox prospect Manuel Margot:

And here’s a look at a strikeout on the changeup:

With good size and athleticism, an easy delivery, and an interesting set of pitches, Dykstra has the upside of a good innings-eater at the big-league level. He’s not always consistent with his stuff and approach, which is both an obvious negative–consistency is, well, good–and a positive–he’s already pitching extremely well without consistency, so if he can tighten the screws further on his stuff, mechanics, and approach, he’ll adjust to new levels very well. He will need to move quickly due to his age, but this isn’t just a random college finesse pitcher beating up on inexperienced bats–the all-around excellent numbers are backed up by across-the-board solid attributes.

***

Antonio Senzatela, RHP, Colorado Rockies (Profile)

Level: Low-A Age: 19 Top-15: N/A Top-100: N/A

Line: 55.1 IP, 57 H, 28 R, 27/13 K/BB, 3.90 ERA, 5.40 FIP

Summary

A teenager with easy velocity, Senzatela doesn’t have exciting numbers, but his upside is high if his offspeed pitches come around.

Notes

Antonio Senzatela has the highest walk rate of the three pitchers discussed in this piece, at (a still very good) 5.5%. He also has easily the lowest strikeout rate, a worrisome 11.5%. His FIP is an ugly 5.40, roughly double Dykstra’s and Castro’s. So why should we care about him? There are several reasons.

First, Senzatela turned 19 in January, roughly two months after Dykstra–who, mind you, is in the same league–turned 23. Comparing their performances doesn’t mean a whole lot–one would hope that Dykstra’s the more advanced guy, and he is. Senzatela has at least a couple of years before he needs to really get moving performance-wise; at this stage, the question is stuff.

And he has stuff. Or, at least, he has a fastball.

Three things about the above video:

1.) He hit 95 mph.

2.) He hit 95 easy.

3.) He hit 95 easy in the sixth inning.

When Senzatela first came out for warmups in the start I saw, I wasn’t expecting much. He looks shorter than his listed 6’1″ and heavier than his listed 180, maybe 5’11” 205 or so, and he employs a low-effort motion that doesn’t look like it should generate a whole lot of velocity, especially from a pitcher of that size. And yet, there it is. Senzatela works mostly at 90-94 mph and projects for above-average command due to the easy motion, which is a heck of a pair of building blocks for a teenager.

Everything else is a work in progress, which is why Senzatela doesn’t miss many bats. He throws a slider, curve, and changeup, all of which grade out as 30 or 35-grade pitches on the 20-80 scouting scale. The 71-75 mph curve is very soft and doesn’t have the big break required to make a pitch that slow work, the slider lacks bite, and the changeup doesn’t have good movement either, though it does have good velocity separation at 77-82 mph. Every now and then, Senzatela will flash up to fringe-average with his offspeed pitches, lending hope that he’ll take some steps forward in that department as time goes on. The curve, in particular, has some potential if he can tighten it up some, an adjustment that is quite common for pitchers at this developmental stage. All he needs is one of his secondary pitches to come around to profile as a good relief pitcher, and if the whole set can come up to average, he’ll be a good #4 starter. There’s some risk involved here because of the inadequacy of his current offspeed arsenal, but Senzatela’s easy velocity can’t be taught, and he has time to figure everything else out.


Enter Shadar Logoth. There are some really nice descriptions of the architecture of this ruined city.

How do you picture the characters?

The boys slip out the back of the warded shelter without permission to explore the empty city. As night approaches, they encounter Mordeth. We get into the motivations of this dangerous character.

Matt picks up the ruby hilted dagger during their flight, but tells no one.

After they return Rand has a dream. Is the old man in it Ishmael?

The approach of Tollocs forces the party to flee.

WoTSpoilers is a twice weekly book-club, you can join the conversation on Discord

Remember, we're two nerds in a basement who would rather be creating content full time, than working our 9-5s. You can help us create the content you love, by donating on Patreon


A weird ‘metal butterfly’ which buzzed a father and son as they left a restaurant in Ohio this week is among the clearest UFO pictures ever taken.

But some UFO fans say it’s a fake - possibly created using CGI software.

Local men Tom and Christopher claim that the weird, butterfly-like craft buzzed them - then they saw two black, military helicopters following it.

It was shown off by paranormal-themed YouTube channel Secure Team - whose creator, Tyler Glockner, swears it is real.

Glockner says, ‘The reason I am calling this an alien craft rather than just a UFO…is in the stunning detail, where we can see the true structural characteristics of this ship.

‘And guys you take a look and tell me with a straight face this has anything to do with humans.

‘The features on this thing don't make any sense.’

Glockner claims that the duo who filmed the clip were unable to photograph the military helicopters which tailed the craft, as they were ‘going the other way’.

Nigel Watson, author of the UFO Investigations Manual, is more sceptical, saying, ‘It looks like it was produced using a model and CGI. It is a very distinctive looking object, it reminds me of the Millennium Falcon spacecraft in the Star Wars films with a bite taken out of it.

‘Alarm bells ring when the witnesses are only known as Tom and Christopher, and we might also wonder why other people in the area didn't see it.


Yesterday was brutal for NC State fans. First they learned that Trevor Lacey was going pro, then they find out Kyle Washington is transferring. So for all of you toeing the ledge right now, we have some recruiting news that will hopefully put you in a better mood.

According to Adam Zagoria of ZagsBlog, Mark Gottfried is in Greece looking for a commitment from 7 foot center Georgios Papagiannis.

N.C. State coach @Mark_Gottfried left for Greece today where he will see 7-footer Georgios Papagiannis. More here: http://t.co/QvTZ5Ywtcr — Adam Zagoria (@AdamZagoria) April 17, 2015

Now, I’m not going to act like I’ve seen anything more than a few videos, but this kid is legit. In fact, there are a few coaches that think he’s a potential one and done type guy (From the videos I’m not buying that). He’s 7’1, has a good frame, is bouncy, coordinated, can handle it a bit and can shoot it. Gott is trying to lock him up and is likey the first coach to go over to visit him.

He is also looking at St. John’s, Temple, Oregon, Kentucky and UConn. He is expected to make a decision by June but Gottfried is surely hoping to come home with one in a few days.


Dear President Obama:

Before you decide to attack Syria, yet another Arab or Islamic country that does not threaten U.S. security, there are certain constitutional “niceties” that you should observe. Chronically violating the Constitution overturns the rule of law and can produce costly blowbacks.

On August 28, you stated that bombing Syria “is not about war, it’s about accountability,” obviously referring to the brutal gassing of neighborhoods outside of Damascus. What about your accountability to receive authorization from Congress which, under Article 1, Section 8, has the sole and exclusive power to declare war? Spare Americans the casuistry of your lawyers who “legalized” your war on Libya, with no declaration, authorization or appropriation of funds from Congress, and pushed the envelope of the “unitary presidency” beyond the unlawful and brazen extremes advocated by George W. Bush and his lawyers.

Nearly 200 members of both parties of Congress – now on its August recess – demanded there be no attack on Syria without Congressional authorization. These signers have so far included 72 Democrats. Merely secretly consulting with some lawmakers on the Intelligence Committees does not substitute for formal Congressional authorization. The framers of our Constitution – whatever their other differences – were unanimous in writing Article 1, Section 8, so that no president could go to war on his own. To do so, as you have already done in the past, would be a major impeachable offense.

The media have reported that your lawyers are searching for legal justification for Tomahawk Missiling Syria. They need look no more – the Constitution clearly rests the power to engage in war with Congress and Congress only. You cannot start another war! You cannot continue to be the prosecutor, judge, jury and executioner anywhere, and at any time.

You may think the foregoing cautious and mere formalities. But the framers held the war-making power in Congress for another reason than just thwarting a latter-day King George III tyranny. They wanted a deliberative open process to avoid reckless presidential decisions that were bad for our country and produced entanglements with warring foreign nations. Remember George Washington’s farewell address on this point – truer today than in his day.

Remember what the nearly 200 members of Congress said to you – “engaging our military in Syria with no direct threat to the United States and without prior Congressional authorization would violate the separation of powers that is clearly delineated in the Constitution.” Congressional deliberations would ask the following questions in the open:

Assuming the veracity of the regime as the cause, how could a U.S. attack not make a horrible situation even more horrible, both inside Syria and in the volatile region?

Why are so many in the U.S. military privately opposed to such an action – though they defer to civilian authority? Could it be due to the lack of any strategic purpose and the violent plethora of uncontrollable consequences? See the oppositional stands, reported in the August 30th Washington Post, “from captains to a four-star general.”

How are you going to avoid the kind of awful continual civilian casualties that were produced in the first Iraq war in 1991? U.S. bombings broke chemical warfare containers and led to sickness (called the Gulf War Syndrome) for tens of thousands of U.S. soldiers – many continue to suffer to this day.

How are you going to deal with the overwhelming majority of Muslims in the Middle East and at least 70 percent of Americans here who are opposed to you bombing Syria? Do you think that lack of domestic public support and even deeper hatred abroad are inconsequential? Your empire mentality seems to say yes.

One would think that House Speaker John Boehner (R-Ohio), of all people, who just sent you a detailed letter of inquiry and caution, citing Congressional authority, should give you pause. Increasingly, you are coming across, even to your hardcore political supporters, as impulsively aggressive, too quick to order killing operations and too slow to contemplate waging of peace.

The Syrian civil war – riven by fighting rebel factions, sectarian revenge cycles, outside arms suppliers and provocations, and a spreading al-Qaeda force fighting the dictatorial Assad regime – can only get worse following a violent attack by your Administration.

Listen to Hans Blix, the former United Nations head of the weapons inspection team in Iraq during 2002-2003 that was aborted by George W. Bush’s criminal invasion that led to the continuing loss of over a million Iraqis, many more injuries, five thousand U.S. soldiers and tens of thousands of injured Americans.

SCROLL TO CONTINUE WITH CONTENT Help Keep Common Dreams Alive Our progressive news model only survives if those informed and inspired by this work support our efforts

Mr. Blix, former Swedish minister for foreign affairs, urges an international peace conference under the UN Security Council’s auspices attended by all governments supporting the various sides in Syria’s civil war. Since all fighters in Syria are receiving their weapons from outside nations, these “supplier countries have leverage,” Blix writes, to support the demand “that their clients accept a ceasefire – or risk losing further support.”

Achieving this goal will require strong leadership. While it is difficult for you to move from waging war to waging peace, history documents that the latter brings better outcomes and forestalls worse slaughter and blowbacks that security experts fear could reach our country.

When your own military believes you are moving into dangerous terrain and possible points of no return, you’d better start to rethink. You’d better reread the warnings in the measured memoranda given to you by Secretary of Defense, Chuck Hagel, and the chief of the Joint Chiefs of Staff, General Martin Dempsey.

More publically, retired Lt. Gen. Gregory S. Newbold, who directed operations for the Joint Chiefs during the run-up to the Iraq war, told the Washington Post: “There’s a broad naiveté in the political class about America’s obligations in foreign policy issues, and scary simplicity about the effects that employing American military power can achieve.” He said that many of his fellow officers share his views.

General Newbold’s words seem like a rebuke not just to the Bush Neocons (pro-Vietnam war, draft dodgers) who pushed the Iraq invasion, but also to you and your immediate circle of hawkish civilian advisors.

All weapons of violence – chemical, biological, nuclear, drones, conventional munitions – are used to destroy lives and habitats. The fact that using some weapons constitutes international war crimes per se is hardly consoling to the victims of other mass weapons systems.

Aggressive arms controls should be the priority of the leading superpower in the world. Why haven’t you made U.S. ratification of the small arms, the landmines, and the cluster munitions treaties, adhered to by most nations, a priority?

Before you violently embroil our country into yet another Mid-East country’s tragic turmoil, visit the government supported U.S. Institute of Peace for intensive tutorials. Then read again Article 1, Section 8, and its originating history, which says that going to war is not your decision but the exclusive decision of the Congress. That may help you accept the imperative of your moral and legal accountability.

Sincerely,

Ralph Nader


Government spending cuts could cause growth only if they increase the other components by more than spending was cut. There's a common argument that this could happen in the long term. Less federal spending allows the government to take in fewer tax dollars. If you believe that the private sector better promotes economic growth than the government, then it makes sense that smaller government paired with lower taxes will lead to higher growth.

But that's not the situation we're talking about here. We're trying to pay down the enormous government debt, so we can't lower taxes in proportion to the spending cuts. Doing so would leave the debt level unchanged. In order for spending cuts in a vacuum to stimulate the economy, they must have some intangible positive effect on one or more of the other components of GDP. Let's think through this.

Consumption : Less government spending will not provide consumers with more money to spend. So to spend more, they would need to save less or incur more personal debt. These options seem somewhat unlikely, as less government spending probably means the impact of entitlements softens -- so Americans will need to save more, not less.*

: Less government spending will not provide consumers with more money to spend. So to spend more, they would need to save less or incur more personal debt. These options seem somewhat unlikely, as less government spending probably means the impact of entitlements softens -- so Americans will need to save more, not less.* Investment : Less government spending will not provide firms with more money to invest. So they would either need to pay shareholders less or borrow to invest more of their revenue for growth. It's hard to see why cutting government spending would encourage either of these options. At best, you could see the private sector attempt to provide some of the services that government cut, but most of the government's functions tend not to be potential profit centers for firms. More importantly, this would just replace the services the government already provided, so growth would remain flat. Economic activity would remain unchanged: some would just shift from government to firms.

: Less government spending will not provide firms with more money to invest. So they would either need to pay shareholders less or borrow to invest more of their revenue for growth. It's hard to see why cutting government spending would encourage either of these options. At best, you could see the private sector attempt to provide some of the services that government cut, but most of the government's functions tend not to be potential profit centers for firms. More importantly, this would just replace the services the government already provided, so growth would remain flat. Economic activity would remain unchanged: some would just shift from government to firms. Net Exports: Less government spending could actually reduce net exports. If the deficit declines, then the dollar should strengthen. While that might sound great, it means that our goods and services will appear more expensive to those overseas. That will make it more difficult to convince them to buy U.S. exports.

You can quibble that government spending shouldn't be a part of the definition of GDP. That position isn't crazy, but it also doesn't change anything. As just shown, those other components will not reflect new economic activity boosting growth if government spending is cut.

Remember, cutting spending takes money out of the economy. That money isn't being replaced. Any further growth will have to occur by draining savings or by taking on more credit. Will less government produce stronger economic sentiment to induce such behavior? It could if the government borrowing was having an adverse negative effect on the economy in some way. Currently, that doesn't appear to be the case. U.S. debt is still being issued relatively cheaply.


This story is a further continuation of “Playing a Story in a Believable World” and “Playing a Story in a Believable World 2”. I highly recommend reading both of those articles before continuing.

Play on Assumptions

Adventures can be inspired from anything. In the campaign I mentioned last article, one particularly nasty antagonist that the party set out to destroy was almost completely based on H.P. Lovecraft’s “Pickman’s Model”. It’s a story that hardly lends itself to high combat, but with a little modification I was able to pay it homage while making something unique and fun that Lovecraft fans could make a few guesses about along the way. Another adventure, to hunt a sewer dwelling urban legend called Croc-Man, led the party to call up thoughts and stories of Killer Croc from the Batman cartoon/comics. The story hardly had anything to do with the DC character, but it allowed me to direct the investigation because I knew what assumptions the party had made.

As my campaign evolved, the story called for higher action and less intrigue. Though I never stated that a genre change was impending, I did allude to it repeatedly. A war was brewing in my plot, a battle to epitomize Good vs. Evil on a mass scale. The players could feel the danger growing larger session by session, NPCs spoke of an end to the battles they faced, and prophecy warned of the final confrontation. To prepare for the massive combat, I watched movies like 300, Gladiator, and other violent action flicks. I noted their soundtracks and during my battles, played those coupled with other powerful songs; music that I knew (knowing my group’s tastes) would pump some adrenaline into the room. I can’t say I recommend Metallica’s Battery covered by acoustic metal group Van Canto for every game, but with my group is was the perfect choice. Battles truly felt like epic moments of intense rage directed at an irredeemable enemy, exactly what I hoped to convey.

Afterword

Every group is different; I cannot tell you specifically how to lead every player to the assumptions you want from them. However, I do feel that being aware of the mood you are crafting will help you figure out how to guide your particular group. Here are a few starter ideas to help you establish a Continuity of Theme, Tone, and Mood.

Choose and communicate a genre style. Every genre comes with its own set list of assumptions on the types of characters, adventures, and so much more. Use this to quickly explain the feelings your story is trying to create.

Watch movies or read books that capture the chosen genre. Anything that well illustrates the given tone you want to recreate can serve as inspiration.

Don’t be afraid to make references to the genre directly or indirectly in your campaign. I don’t recommend taking your plot straight from Mass Effect for your Sci-Fi RPG, but if your group is familiar with the game and it has elements that blend well, use them.

Spend some time with Thesaurus.com (or a real thesaurus! Advice I could use myself). Look up descriptors for the mood you are establishing and find similar words, then use these in your descriptions for locations, artifacts, or characters.

Try to stay consistent from the outset. This is probably the most difficult tip to master, if such a thing is possible. In the event you are forced to change your mind about your genre due to disinterest or dramatic plot change, be sure to review this list of tips, choose a new genre, and communicate it to the players.

I think it is very important to mention here not place yourself in a box. Your chosen genre should serve only as a baseline, a point from which assumptions can be made. How you twist and direct those assumptions is entirely up to you as the writer and GM. Lastly, crafting a believable world to tell your story in doesn’t end here, these are only steps along the path. Experiment, read on game theory, and decide what works for you. I’m working on more articles regarding NPC Relationships, Time Use, and Equipment that all tie your series of adventures into a story world your players can really get into.

[tag]Game Mastering, Pen and Paper RPG, role playing, Role Playing Games, roleplaying, rpg[/tag]


As the Los Angeles Clippers propose guard Jamal Crawford in possible trade scenarios, the NBA's Sixth Man of the Year has a message for the Clippers and potential future teams: Wherever Crawford's playing, he wants a contract extension next summer.

"Our intention is to get an extension with the Clippers or anywhere else that he may be traded based on the fact that he's undervalued for the production he's providing," his agent Andy Miller told Yahoo Sports on Wednesday night.

Crawford has become a subject of sign-and-trade discussions with the Clippers, who have inquired about working deals for several potential free agents, including Cleveland's Luol Deng and Spencer Hawes, sources told Yahoo.

Scroll to continue with content Ad

Crawford has two years, $11 million left on his deal, including a team option for the 2015-16 season. Crawford is eligible for an extension in the summer of 2015, and believes he's out-performed his deal. Crawford had a tremendously productive season for the Clippers, averaging 18.6 points in 30 minutes per game on his way to his second Sixth Man of the Year award in four seasons.

Crawford averaged 15.5 points in 24 minutes per game in the 2014 Western Conference playoffs.

In 14 NBA seasons, Crawford has averaged 15.5 points. He's played with Chicago, New York, Golden State, Atlanta, Portland and the Clippers.


New Datamined Patch - Class Changes, Passive Effects, Rift Keystones, Item Set Names, Bounty Scrolls, New Banners, Warlords of Draenor Buff, Lots of Graphics

Warning - all things below should NOT be considered as a confirmation or anything close to it. This is datamining and not everything is a representation of what would be in the game.

Update 4: Added Set Item bonuses. There are quite some changes!

Update 3: Added portraits. Faces are as follows: Enchanted Soul Fragment, Lord Wynton, Spirit Barbarian, Spirit Crusader, Spirit Crusader Male, Westmarch Boy, Adria Boss, Cow King, Zayl, Common Angel, BSmith Apprentice, Sophia. Looks like this might be it for the patch!

Update 2: Added buff icons from items, Warlords of Draenor "flag" buff, new Bounty target Health Bar and Legendary Reagents. Fixed incorrect Pool of Reflection string.

Update: Added a lot more pictures. Made Warlords of Draenor Buff more obvious in the notes below.

New Graphics - Icons, Items, Portraits, UI

Set Item Bonuses

DiabloFans Quote: Krelm's Buff Bulwark (New)

2 pieces: [+500 Vitality] Chantodo's Resolve 2 pieces: [Your shields heal for 25% of their remaining amount when they expire.] (New) Legacy of Nightmares

2 pieces: [This ring sometimes summons a Skeleton when you attack.] (Seems like it was missing from the tooltip the last few builds) Born's Command 2 pieces: [+15% Life] (Down from 20%)

3 pieces: [Increases experience rewarded per kill by 20%] (Moved from 2 pieces)

3 pieces: [Reduces cooldown of all skills by [{VALUE1}*100|1|]%.] (New) Cain's Destiny

3 pieces: [50% Better Chance of Finding Magical Items] (Down from 100%) Captain Crimson's Trimmings

2 pieces: [Reduces cooldown of all skills by [{VALUE1}*100|1|]%.] (New)

2 pieces: [Regenerates 2000 Life per Second] (Up from 1945)

3 pieces: [Reduces all resource costs by 10%.] (New)

3 pieces: [+50 Resistance to all elements] (Down from 100) Aughild's Authority

2 pieces: [Reduces damage from ranged attacks by 0.07%] (Moved from 3 pieces)

3 pieces: [Reduces damage from Elites by 15%] [Increases damage versus Elites by 15%] (New) Asheara's Vestments 3 pieces: [Melee attackers take 3498 Holy Damage per hit] (Removed) Guardian's Jeopardy 2 pieces: [+250 Vitality] (Down from 975

2 pieces: [Regenerates 2000 Life per Second] (Up from 1945)

3 pieces: [+15% Movement Speed] (New) Demon's Hide

2 pieces: [Melee attackers take 6000 Fire Damage per hit] (Up from 3498)

3 pieces: [Chance to Deal 25% Splash Damage on Hit.] (Changed from 5.1% chance to Fear on Hit) Sage's Journey

2 pieces: [+250 Intelligence] [+250 Strength] [+250 Dexterity] [+250 Vitality] (All values down from 975) Hallowed Protectors

2 pieces: [Attack Speed increased by 10%] (Up from 8%) The Shadow's Mantle (Ninja Set) 2 pieces: [Automatically cast Smoke Screen when you fall below 25% Life. This effect may occur once every 30 seconds.] (Moved from 4 pieces. Replaces: Your Spike Traps lure enemies to them)

4 pieces: [Reduce all cooldowns by 1 second every time you kill a demon.] (New) Helltooth Harness (Witch_Doctor_Set_x1) 4 pieces: [ Reduces cooldown of Wall of Zombies by 2 seconds. ] (Previously 500 Intelligence)

6 pieces: [NYI] (Previously 500 Intelligence)

Item Passive Effects

DiabloFans Quote: New ItemPassive_Unique_Ring_739_x1 - Elemental skills have a chance to trigger a powerful attack that deals [{VALUE1}*100]% weapon damage:

*Cold skills trigger Freezing Skull

*Poison skills trigger Poison Nova

*Lightning skills trigger Charged Bolt

ItemPassive_Unique_Bow_008_x1 - Ravens flock to your side.

ItemPassive_Unique_Ring_586_x1 - Wall of Zombies spews acid, dealing [{VALUE1}*100]% weapon damage every second for its entire duration. (Was NYI till now)

ItemPassive_Unique_Ring_587_x1 - All damage taken is split between wearers of this item. (Was NYI till now) Changed ItemPassive_Unique_Ring_533_x1 - Strafe gains the effect of the Drifting Shadow rune. (Previously removed Hatred cost)

ItemPassive_Unique_Ring_602_x1 - Your Spike Traps lure enemies to them. Enemies may be taunted once every {VALUE1} seconds. (Added taunt mechanic description)

ItemPassive_Unique_Ring_600_x1 - Summons shadow clones to your aid when you Stun an enemy. This effect may occur once every {VALUE1} seconds. (Added occurrence limitation)

ItemPassive_Unique_Ring_615_x1 - Healing wells replenish all resources and reduce all cooldowns by {VALUE1} seconds. (Now also reduces cooldowns)

ItemPassive_Unique_Ring_621_x1 - Fan of Knives gains the effect of the Fan of Daggers rune. (Changed from having a knock back effect)

ItemPassive_Unique_Ring_626_x1 - Grasp of the Dead gains the effect of the Rain of Corpses rune. (Changed from having no cooldown)

ItemPassive_Unique_Ring_643_x1 - Blocks have a chance of summoning a charging wolf that deals [{VALUE1}*100]% weapon damage to all enemies it passes through. (Added creature details, changed from hell hound)

ItemPassive_Unique_Mighty_1H_011_x1 - Chance on attack to Whirlwind furiously for 325% weapon damage as Physical every second for 6 seconds. (Finally added actual numbers!)

Warlords of Draenor Buff

NOTE that Blizzard uses QUAD DAMAGE as a placeholder for CE stuff.

DiabloFans Quote: WoDFlagBuff_name - Collectors Edition Buff

WoDFlagBuff_desc - QUAD DAMAGE

Rift Keystones, Item Set Names, Bounty Scrolls, New Banners

DiabloFans Quote: Bnet_EscapeMenu.txt RaiseDifficulty - Raise Difficulty Errors.txt NephalemRiftWarning_PlayerNeedsKey - Five Rift Keystone Fragments are needed to conjure a Nephalem Rift.

PowerUnusableInDifficulty - You can't do that in this difficulty level.

DifficultyTooLow - You must be in a higher game difficulty for that.

ItemCannotBeEnchantedLegacy - The mystic cannot enchant legacy items.

ItemCannotBeEnchantedMysticLevelRequired - The mystic needs to be level {s1} to enchant this item type. General.txt LootRunClosesWarning - Nephalem Rift closes in:

QuestUpdateNewBountyChatMessage - {s1}, {s2}

StatAbbr - {s1}k HeroDetails.txt SplashDamage - Area Damage (Renamed from Splash Damage) ItemSets.txt Ninja_Set_x1 - The Shadow’s Mantle

Thorns_Set_x1 - Thorns of the Invoker

Earthquake_Set_x1 - Might of the Earth

Golden_Oxen_Set_x1 - The Legacy of Raekor

Dot_Set_x1 - Raiment of the Jade Harvester

Monkey_King_Set_x1 - Monkey King's Garb

Arcane_Wraps_Set_x1 - Vyr's Amazing Arcana

Witch_Doctor_Set_x1 - Helltooth Harness

War_Harness_Set_x1 - Krelm’s Buff Bulwark BuffTooltips.txt X1_Passive_BountyScroll_DemonDamage_0 - Bounty Scroll

X1_Passive_BountyScroll_DemonDamage_0_desc - 25% increased damage to Demons.

X1_Passive_BountyScroll_UndeadDamage_0 - Bounty Scroll

X1_Passive_BountyScroll_UndeadDamage_0_desc - 25% increased damage to Undead.

X1_Passive_BountyScroll_BeastDamage_0 - Bounty Scroll

X1_Passive_BountyScroll_BeastDamage_0_desc - 25% increased damage to Beasts.

X1_Passive_BountyScroll_TeddyBear_0 - Cuddle Bear!

X1_Passive_BountyScroll_TeddyBear_0_desc - You feel more cuddly.

X1_Passive_BountyScroll_RunSpeed_0 - Bounty Scroll

X1_Passive_BountyScroll_RunSpeed_0_desc - 30% increased movement speed. Powers.txt X1_Passive_BountyScroll_DemonDamage_name - Bounty Scroll

X1_Passive_BountyScroll_UndeadDamage_name - Bounty Scroll

X1_Passive_BountyScroll_BeastDamage_name - Bounty Scroll

X1_Passive_BountyScroll_RunSpeed_name - Bounty Scroll Tutorials.txt X1_PoolsOfreflection_2 - You now have a pool of bonus experience which will persist between games. Dying will remove this bonus.

X1_PoolsOfreflection_2_title - Pools of Reflection Bonus

X1_RiftKeystone_title - Rift Keystone Fragments

X1_RiftKeystoneInventory - Use 5 Rift Keystone Fragments to open a Nephalem Rift at the Nephalem Obelisk in town.

X1_RiftKeystoneInventory_title - Rift Keystone Fragments

X1_RiftKeystoneComplete - You now have 5 Rift Keystone Fragments. You can go back to the Nephalem Obelisk in town and open a Nephalem Rift.

X1_RiftKeystoneComplete_title - Rift Keystone Fragments X1_LoadscreenTips.txt TIP056 - Primary or secondary properties proceeded by an orange bullet icon {icon:bullet2} are not factored into item comparisons.

TIP057 - Shift-click on player names to link them.

TIP058 - Holding down the SHIFT key while assigning paragon points will speed up the process by assigning them ten at a time. BannerAccents.txt banner_basic_sigilAccent_BatWings_01 - Wings

banner_basic_sigilAccent_Goblet_01 - Goblet

banner_basic_sigilAccent_MoonStar_01 - Moon & Sun

banner_basic_sigilAccent_Orb_01 - Orb

banner_basic_sigilAccent_Rose_01 - Roses

banner_basic_sigilAccent_Serpent_01 - Serpent

banner_basic_sigilAccent_Snakes_01 - Snakes

banner_basic_sigilAccent_Leaves_02 - Vines

banner_basic_sigilAccent_Rays_01 - Rays

banner_basic_sigilAccent_Sun_01 - Evenstar BannerPatterns.txt banner_basic_pattern_wave_04 - Wind

banner_basic_pattern_cross_05 - Cruces

banner_basic_pattern_cross_06 - Crucifix

banner_basic_pattern_drip_03 - Scalloped

banner_basic_pattern_fire_02 - Flares

banner_basic_pattern_fire_03 - Fire

banner_basic_pattern_starburst_01 - Infinity

banner_basic_pattern_starburst_02 - Starburst

banner_basic_pattern_starburst_03 - Sunburst BannerShapes.txt banner_basic_shape_chevron004 - Highborn

banner_basic_shape_chevron005 - Royal

banner_basic_shape_chevron006 - Imperial

banner_basic_shape_goth004 - Exultant

banner_basic_shape_point006 - Hallowed

banner_basic_shape_point007 - Glorious

banner_basic_shape_point008 - Westmarch

banner_basic_shape_rectangle002 - Reserved

banner_basic_shape_rectangle003 - August BannerSigils.txt banner_basic_sigilMain_Axe_01 - Axe

banner_basic_sigilMain_Bird_01 - Ascendance

banner_basic_sigilMain_Crus_01 - Crusader

banner_basic_sigilMain_Hood_01 - Malthael's Hood

banner_basic_sigilMain_Orb_01 - Crucible

banner_basic_sigilMain_Rose_01 - Thorny Rose

banner_basic_sigilMain_Scythe_02 - Scythes

banner_basic_sigilMain_Shield_03 - Crusader Shield

banner_basic_sigilMain_Sickle_01 - Sickles

banner_basic_sigilMain_Soulstone_01 - Black Soulstone

banner_basic_sigilMain_Malskull_01 - Reaper

banner_basic_sigilMain_Axe_01_alt_01 - Axe

banner_basic_sigilMain_Bird_01_alt_01 - Ascendance

banner_basic_sigilMain_Crus_01_alt_01 - Crusader

banner_basic_sigilMain_Flail_01 - Flails

banner_basic_sigilMain_Flail_01_alt_01 - Flails

banner_basic_sigilMain_Hood_01_alt_01 - Malthael's Hood

banner_basic_sigilMain_Malskull_01_Alt_01 - Reaper

banner_basic_sigilMain_Orb_01_alt_01 - Crucible

banner_basic_sigilMain_Rose_01_alt_01 - Thorny Rose

banner_basic_sigilMain_Scythe_02_alt_01 - Scythes

banner_basic_sigilMain_Shield_03_alt_01 - Crusader Shield

banner_basic_sigilMain_Sickle_01_alt_01 - Sickles

banner_basic_sigilMain_Soulstone_01_alt_01 - Black Soulstone

Class Changes


A white supremacist group will rally on the steps of the Pennsylvania State Capitol on Nov. 5, within days of the presidential election.

The National Socialist Movement's announcement of a rally in the "heart of Democracy" spurred local social service groups to organize their own event across town in the hope of averting a potentially violent protest.

"One of our goals is to show that equality and nonviolence will be spoken louder than hate that day in Harrisburg," said Ann Van Dyke, who's helping to organize a unity event as white supremacists converge on the Capitol. "The other is to encourage young people to stay away from the rally -- to give them something better to do that day."

According to the Southern Poverty Law Center, the NSM is "one of the largest and most prominent neo-Nazi groups in the United States." The center reported that the number of hate groups nationwide has increased 14 percent since 2014.

"They have 46 chapters in 40 different states," said Mark Potok, a senior fellow at the SPLC. "That makes them far larger than other groups in terms of chapters."

Potok said their protests typically center around 10 or 20 members of the group but can draw dozens of police officers and as many as 500 demonstrators.

"There's always the threat of violence because anti-racists are so provoked and infuriated by the Nazis," he said. "The police have a tough jog in these situations. They have to keep the neo-Nazis and their opponents apart."

Troy Thompson, a spokesman for the state Department of General Services, confirmed that the NSM obtained a permit for its rally at the Capitol.

"Everyone has the right to free speech and freedom of expression," Thompson said. "While we may not agree with the content of the message, as long as it's delivered in a peaceful manner, every individual has the right to express themselves."

Messages left with the NSM rally's organizers were not returned Wednesday, but in a press release the group said it chose Harrisburg because of its status as "one of the birthplaces of American democracy."

On its website, the NSM emphasized the timing of the rally within days of the presidential election although it does not explicitly endorse either candidate.

"We chose Harrisburg because of its living history," said Jeff Schoep, an NSM leader, in a written statement, "a history so poignant in its remembrance during these turbulent social and political times."

http://www.pennlive.com/news/2016/02/the_hateful_state_pennsylvania.html

Van Dyke said the counter-demonstration, which will likely be held at a school far from the Capitol, will be apolitical.

Amanda Arbour, racial justice coordinator for YWCA Greater Harrisburg, said the best response to a hate group is to shift focus away from their activities.

"Whenever there's a hate group having a rally, it's not as productive to have a counter-protest at the rally," she said. "It draws more attention to their efforts."

Van Dyke said the counter-event will include music, poetry and other activities designed to attract young people. Its organizers, she said, include Christian Churches United, the Community Responders Network, the Mayor's Interfaith Advisory Council, and the World Affairs Council.

Van Dyke said it's important to keep protesters -- and particularly young people -- away from the white supremacist rally in order to protect them.

"Hate groups say such venomous things in their public rallies that sometimes protestors, particularly young people, lose control and end up breaking the law," she said. "They're usually the ones that end up getting arrested."

Hate groups want protesters -- and the media coverage that follows -- at their events, she said, because it helps spread their message. Furthermore, any failure by local authorities to control the crowd could result in more favorable coverage or lawsuits against the city or state.

"Another goal, which is really important to keep in mind, is that they seek to inflame existing tensions in that town between the community and police," she said. "For so, so many reasons, we need to have an alternative unity event."

The organizers are still finalizing the location of the alternate event, which will run concurrently with the rally at 2 p.m. on Nov. 5. Those interested in assisting the counter-event can call the YWCA at 717-234-7931.

http://www.pennlive.com/politics/index.ssf/2016/06/donald_trump_10_political_fire.html


NewsFaith

SANTA PAULA, California, December 1, 2017 (LifeSiteNews) — There will be a mass rosary service throughout the United States on December 12, the feast day of Our Lady of Guadalupe, inspired “100 percent” by the Rosary on the Borders in Poland.

The “Rosary on the Coasts and Borders” is the initiative of a group of Church Militant fans who proposed — and then began planning — the event in its website comments box.

“I am in constant admiration of Poland,” Patricia Lemmon, who is one of the organizers, told LifeSiteNews. “Over and over again, (the Poles) show their allegiance to reality. Their pro-life laws and initiatives encouraging families to have children, supporting families when a Down syndrome child is expected, welcoming Christian refugees but barring (jihadist) incomers, these are a beacon of intelligence coupled with goodness in the midst of so much truly dark news out of dying secular western Europe.”

Lemmon also praised the rosary events in Italy and Ireland.

The intention of the prayers will be “to ask Our Lady to save the USA from Islamic jihad, from the denial of the Christian faith, and for an end of abortion.”

The USA Rosary on the Coasts and Borders will not literally surround the nation’s massive territory. Instead, Lemmon said, it will put up “a prayer shield by representation.”

“Here in the States we do things state by state, and we believe in representation,” she told LifeSiteNews. “So (we need as representatives) one person or group from each of the 50 States, plus D.C., plus Puerto Rico, plus Guam or other territory. By December 12, that will be all 53 of us, representing the whole USA to Our Lady of Guadalupe.”

In this way, the organizers hope to match a state or protectorate to each of the Hail Marys in a five-decade rosary.

The Feast of Our Lady of Guadalupe was chosen for a few reasons. First, the only Marian apparition in the New World pronounced authentic by the Catholic Church was witnessed in Villa de Guadalupe in 1531. Next, Pius XII named Our Lady of Guadalupe the Patroness of the Americas in 1946. Finally, an image of Our Lady of Guadalupe was taken by Don Juan of Austria’s Christian army into the Battle of Lepanto in 1571. The Battle of Lepanto represented a major defeat to the Ottoman Empire.

“The New World’s Lady sailed to confront jihad in the Old World,” Lemmon said. “Is this not mind-blowing? That battle, against all odds, saved Europe from imminent invasion. … As Don Juan fought under that banner, the pope prayed the rosary.”

The anniversary of the Battle of Lepanto on October 7 is also the Feast of the Holy Rosary and the date chosen by the organizers of the Polish Rosary to the Borders.

“So the Feast of Our Lady of Guadalupe, victor of Lepanto, seems the ordained date for America to link with Poland … ” said Lemmon. “Thus we will jointly block jihad and embrace faith and life.”

The Rosary On the Coasts and Borders currently has representatives in 30 states and Puerto Rico. The organizers are still looking for representatives in Alabama, Arkansas, Delaware, Hawaii, Illinois, Indiana, Iowa, Kansas, Louisiana, Maine, Maryland, Montana, New Mexico, North Dakota, Oregon, Rhode Island, South Carolina, Tennessee, Vermont, West Virginia, the District of Columbia, and Guam, or some other protectorate.

Canadians, too, are invited to join in. Lemmon addressed them through LifeSiteNews, saying, “Turn to your south on December 12 and join us in throwing up to heaven a bubble of protection across these vast lands. … And when you do your own Canadian rosary, we will turn to our north … and join you in storming heaven for Canada!”

Lemmon described the lay-led event as “a Wild West Rosary.”

“We didn't wait for the U.S. bishops to do anything,” she told LifeSiteNews. “As a group, they don't seem cut from the same cloth as the great Polish bishops who are so busy (being bishops), protecting and leading their flock among real dangers (although the U.S. does have a few sterling bishops). We here in the States can springboard off of the American do-it-yourself spirit.”

Those interested in joining can register on the Disqus link here.