Paul M. Jones

Don't listen to the crowd, they say "jump."

Soccer, Development, and The Value Of Teamwork

The lesson of soccer is that individual effort will often suffice when things are relatively easy. But in order to surmount the more difficult challenges, you will almost always need reliable teammates of one sort or another.

I assert the same is true in development efforts. A single developer working alone can do good work, but a team of frontend devs, backend devs, devops, and DBAs can do stuff that is truly amazing. Combine your comparative advantages instead of trying to do everything yourself. Via Vox Popoli: Calcio is life.


Action-Domain-Responder, Content Negotiation, and Routers

While talking about Action-Domain-Responder on the Crafting Code Tour, one of the common questions I got was: "Where does content negotiation happen?" My response was always: "Where does it happen in Model-View-Controller?" That opened up a discussion on how content negotiation is a tricky bit that can go in different places, depending on how you want the concerns separated, and is not a problem specific to ADR.

However, I've not really been satisfied with that outcome. I enjoyed the question and the discussion, but it never seemed to resolve itself. We were left with this tension between resource conservation and proper separation of concerns. Should negotiation happen in the the Action (Controller), the Domain (Model), or the Responder (View)?

At first it seems like this is clearly a (re)presentation issue, and as such ought to go in the Responder or View. But if the Responder cannot present an acceptable content type for the request, that means we have done a lot of work in the Domain to build objects that will be discarded in favor of a "406 Not Acceptable" response. This is not a good use of our limited resources.

Perhaps the Domain is the place for negotiation? I think we can dismiss this outright. The Domain should not be in charge of returning different presentations of its data.

Finally, we might try negotiation in the Action (Controller). Here we examine the request, and query the Responder to see what content types it can present in responses. (Alternatively, we embed the available content types in both the Action and Responder, duplicating that information somewhat.) If the negotiation fails in the Action, we skip the Domain work and instruct the Responder to return a "406 Not Acceptable". But that means the Action is now responsible for at least a little bit of the response-building logic. It's not horrible, but it does not seem as clean as it could be.

After thinking about this for a while, I am beginning to think it is reasonable to perform what I will call a "first filter" on the Accept header at the Front Controller level, specifically in the Router. We already consider the Router as a guard to map incoming requests to appropriate Actions, inspecting the path, HTTP method, and other request information. Inspecting the acceptable types seems a reasonable addition to these elements.

A full content negotiation at the Router level is probably overkill. Really, all the Router needs to know is what content types are provided through particular Route (whether an MVC or ADR one). The matching logic can do a naive check of the Accept request header to see if one of the provided types is present with a non-zero "q" value. If none of the types is present, the Router can move along to the next route, possibly tracking the failure so a Dispatcher can directly invoke a Responder for routing failures. This way, the Router never invokes a non-matching Action, thereby conserving the Domain resources. If the match is successful, the Responder can do the "real" content negotiation work, using an Accept header value passed to it as input from the Action along with the Domain data.

As a proof of concept, I have modified the Aura.Router library to recognize "accept" specifications on the route, and the tests indicate it seems to work just fine.



The Women's Movement

To read even desultorily in this literature was to recognize instantly a certain dolorous phantasm, an imagined Everywoman with whom the authors seemed to identify all too entirely.

This ubiquitous construct was everyone's victim but her own. She was persecuted even by her gynecologist, who made her beg in vain for contraceptives. She particularly needed contraceptives because she was raped on every date, raped by her husband, and raped finally on the abortionist's table. During the fashion for shoes with pointed toes, she, like "many women," had her toes amputated. She was so intimidated by cosmetic advertising that she would sleep "huge portions" of her day in order to forestall wrinkling, and when awake she was enslaved by detergent commercials on television. She sent her child to a nursery school where the little girls huddled in a "doll corner," and were forcibly restrained from playing with building blocks. Should she work, she was paid "three to ten times less" than an (always) unqualified man holding the same job, was prevented from attending business lunches because she would be "embarrassed" to appear in public with a man not her husband, and, when she traveled alone, faced a choice between humiliation in a restaurant and "eating a doughnut" in her hotel room.

The half-truths, repeated, authenticated themselves. The bitter fancies assumed their own logic. To ask the obvious-why she did not get herself another gynecologist, another job, why she did not get out of bed and turn off the television set, or why, the most eccentric detail, she stayed in hotels where only doughnuts could be obtained from room service-was to join this argument at its own spooky level, a level which had only the most tenuous and unfortunate relationship to the actual condition of being a woman. That many women are victims of condescension and exploitation and sex-role stereotyping was scarcely news, but neither was it news that other women are not: nobody forces women to buy the package.

via The Women's Movement.


Birth Control Mandate Waivers For Me, But Not For Thee

Some 204 outfits favored by Democrats were granted waivers by the president from ObamaCare, which means their employees do not have the right to employer provided birth control. These include upscale restaurant, nightclubs, and hotels in then-Speaker Pelosi’s district; labor union chapters; large corporations, financial firms, and local governments.

Women did not march through the streets to complain on behalf of their downtrodden sisters at Boboquivari in San Francisco which sells porterhouse steaks at $59 a pop and such. Apparently they are up with laws written on Etch-a-Sketch boards which the president can rewrite at whim. And their moral outrage is dependent on whether or not the employer is a Democrat crony.

via Articles: Let's Build a Stairway to Alberta.


New Vocabulary Word: "Duckspeak"

As applied here this is duckspeak, pure and simple – a catchphrase intended not to express or provoke thought but to shut it down. If anything, this particular shibboleth of the left has become worse overused and more emptied of meaning in the thirteen years since.

Emphasis mine. Via Have you no decency, sir?.


File Under "Smart Is Overrated": Lack Of Impostor Syndrome Is A Bad Sign

Smart people have a problem, especially (although not only) when you put them in large groups. That problem is an ability to convincingly rationalize nearly anything.

Logic is a pretty powerful tool, but it only works if you give it good input. If you know all the constraints and weights - with perfect precision - then you can use logic to find the perfect answer. But when you don't, which is always, there's a pretty good chance your logic will lead you very, very far astray.

Most people find this out pretty early on in life, because their logic is imperfect and fails them often. But really, really smart computer geek types may not ever find it out. They start off living in a bubble, they isolate themselves because socializing is unpleasant, and, if they get a good job straight out of school, they may never need to leave that bubble. To such people, it may appear that logic actually works, and that they are themselves logical creatures.

Working at a large, successful company lets you keep your isolation. If you choose, you can just ignore all the inconvenient facts about the world. You can make decisions based on whatever input you choose.

It's a setup that makes it very easy to describe all your successes in terms of your team's greatness, and all your failures in terms of other people's capriciousness.

One of the biggest social problems currently reported at work is lack of confidence, also known as Impostor Syndrome.

But I think Impostor Syndrome is valuable. The people with Impostor Syndrome are the people who *aren't* sure that a logical proof of their smartness is sufficient. They're looking around them and finding something wrong, an intuitive sense that around here, logic does not always agree with reality, and the obviously right solution does not lead to obviously happy customers, and it's unsettling because maybe smartness isn't enough, and maybe if we don't feel like we know what we're doing, it's because we don't.

Impostor Syndrome is that voice inside you saying that not everything is as it seems, and it could all be lost in a moment. The people with the problem are the people who can't hear that voice.

That's a "Reader's Digest" version of the original; I omitted intercessory languauge to improve the flow of the excerpt, but have not changed the meaning. Please read the whole thing at apenwarr.


Why Democrats insist on lying about how ‘poor’ they are

Why do all these exceedingly well-off [Democrats] keep trying to convince us we’ll see them at the dollar store?

It’s all part of the increasingly delusional myth Democrats tell themselves that they are the tribunes of the middle class. In fact, their party is a strange two-headed beast -- picture a Cerberus featuring the faces of Barbra Streisand and Lois Lerner.

The Dems are a coalition of ultra-rich cultural-elite donors on the one hand and government employees and their clients on the other.

See also the phrase "prolier than thou". Via Why Democrats insist on lying about how ‘poor’ they are | New York Post.



What "stand your ground" laws actually mean

This is because “stand your ground” simply means that, if you reasonably believe that you face imminent death, serious bodily injury, rape, kidnapping, or (in most states) robbery, you can use deadly force against the assailant, even if you have a perfectly safe avenue of retreat. In non-stand-your-ground states, when you face such threats outside your home (and, in some states, your business), you can only use deadly force against the assailant if you lack a perfectly safe avenue of retreat. In no states are you allowed to shoot someone who is simply shouting at you or moving towards you loudly and aggressively, unless you reasonably believe that you’re in danger of death, serious bodily injury, or the other harms I listed. (When the person is coming into your home, in many states you can indeed shoot, but that doesn’t apply to confrontations on the public street.)

Pro-gun-control folk should read the entire article. Hell, so should pro-liberty folk. Via What ‘stand your ground’ laws actually mean - The Washington Post.


The Surprising Truth About Women and Violence

The arrest of an Olympic gold medalist on charges of domestic violence would normally be an occasion for a soul-searching conversation about machismo in sports, toxic masculinity and violence against women. But not when the alleged offender is a woman: 32-year-old Hope Solo, goalkeeper of the U.S. women’s soccer team, who is facing charges of assaulting her sister and 17-year-old nephew in a drunken, violent outburst.

via The Surprising Truth About Women and Violence | TIME.