Last Train to Hogwarts
August 27, 2014

Sung to the Monkee's "Last Train to Clarksville" - idea courtesy of @lartist. This was a fast 5 minute re-write ... imagining Harry before walking out into the forest....


Take the last train to Hogwarts,
And I'll meet you at the platform.
You can stand there by ten three four,
'Cause Hagrid's got your invitation.
Run through the pillar, oh, fast, fast, fast!
Oh, fast, fast, fast!

'Cause I'm leavin' in the evening
To fight Lord Voldemort
We'll have one more night together
'Til the morning brings my pain
And I must go, oh, no, no, no!
Oh, no, no, no!
And I don't know if I'm ever coming home.

Take the last train to Hogwarts.
Dumbledore's at the station.
We'll have time for mewling Riddles
And a bit of conversation.
Oh... Oh, no, no, no!
Oh, no, no, no!

Take the last train to Hogwarts,
Now I must send you this owl.
I can't think at'all in this noisy
Railroad station all alone.
I'm feelin' low. Oh, no, no, no!
Oh, no, no, no!
And I don't know if I'm ever coming home.

Take the last train to Hogwarts,
Take the last train to Hogwarts.

Posted by Red Monkey at 8:18 PM People Say I Have ADHD, But I Think - Hey Look, A Chicken | | StumbleUpon Toolbar Stumble

Manipulation, Informed Consent and Facebook
June 28, 2014

A lot of web folk responded virulently against Facebook scientists' paper which revealed they'd manipulated people's timelines to show posts that were either more positive or more negative to see if that in turn made that user either more positive or more negative. (AV Club article breaking the story.)

The immediate backlash I saw in my Twitter timeline was intense, angry -- some horrified, some resigned. This morning, the chatter was becoming more nuanced. Some still quite angry ... others pointing out that emotional manipulation is what design is all about.

That's true up to a point. The purpose of a good design is often to make someone want to buy something, want to follow a link, to interact, read more. Everyone in web development knows about the A/B test -- will more people click this link if it looks like this or if it looks like that? What about the microcopy? Should it say this or should it say that?

The thing is, in web design it's not necessarily flat-out manipulation, it's often simply creating a more clear context for the user. Is it simply now more understandable or obvious? It is rarely completely manipulating a person's state of being. Instead it's a "micro-manipulation" of a specific instance. Buy this product, read this article (and look at these nifty ads), follow this link to another page.

A non-web example of "micro-manipulation" might be signs posted in a parking: Secure Your Vehicle Management Is Not Responsible For Stolen Items.
This is not necessarily a legal truth. It is a manipulation: perhaps people won't sue us if their car is broken into even though this parking lot is completely dark and kind of hidden and easy prey for burglars. We posted a sign. So, we're free of any liability.
It's not necessarily true, but it might keep some people from suing. It's manipulation of a particular situation -- not a manipulation of a person's state of being.

Web A/B testing is the same. Manipulation of a situation, not a person's state of being.

With the Facebook manipulation of people's timelines, however, we have multiple issues and the first and most important is psychological experimentation going on without the users' knowledge. Yes, Facebook claims that they got that permission in their Terms of Service, but there was no explicit permission -- no informed consent -- given for such a blatant experiment. I truly hope they come up on a class action suit for this, although I'm sure they won't.

They manipulated someone's timeline to use a higher number of negative terms to see if that made the person post more negative things. What if they'd done that to someone suffering from depression? What if they made them worse?

This is tinkering far beyond the colours of buttons, beyond the feel-good of using nice pictures.

It is not actually hyperbole to say they were manipulating people's lives in this case. What if you were one of the people who got the negative timeline for three months and you couldn't figure out why you were in such a crappy mood? You snapped at people at home, at work. You just couldn't quite pull yourself out of a funk. Maybe there were repercussions, a demotion at work, a spouse insisting on counseling or even a separation.

Facebook manipulated people without thinking about the consequences on actual lives for those in the negative group.

There was no informed consent and these people were not volunteers for this particular experiment.

Don't get me wrong. As humans we are endlessly manipulating our environment and everyone around us in small and large ways. While many of us try to live authentically and be honest about those manipulations (i.e., bluntly saying "I want this" instead of hiding the desire and trying to bring about the outcome in a more indirect way), many of us are more indirect and even dishonest about what we want.

As Twitter user @ZLeeily stated, the "key issue is they moved beyond tests for product design & into psych research without adapting ethical procedures to suit context."

Relatedly, this was a formal experiment. Facebook didn't just kinda test something: they wrote a scientific paper about it after their experiment. The purpose, then, was the experiment in and of itself, not just making Facebook a better product (as ZLeeily also stated). There are distinct rules about such experimentation and Facebook equating their broad and large Terms of Service as "informed consent" is simply ludicrous.

This was willful experimentation on people who did not know they were part of a psych test. It's unethical. It's shameful.

 

Update: Apparently, Cornell University was at least partially behind this experiment as well. The last paragraph also states that the Army Research Office in part funded this experiment as well as the James S. McDonnell Foundation.

Posted by Red Monkey at 9:58 AM | Comments (0) Never Underestimate the Power of Human Stupidity | | StumbleUpon Toolbar Stumble

The Guerrilla Revolutions
May 24, 2014

Through most of Western history in particular, we've seen a very broad, general trend. As a government becomes entrenched, it swings in favour of the type of people who make up the government and punishes those who are different. After all, as George W. Bush once proclaimed, we need bus drivers, too. And janitors. And plumbers. Coal workers. Salt of the land.

The founding fathers of the U.S. specifically designed a type of government that they hoped would interrupt that model. By disrupting who is in power every 2-4 years (depending on the governmental role), by developing checks and balances between Congress, President and Supreme Court, they thought they'd built something that could create little revolutions and thus avoid the need for a larger revolution.

Unfortunately, we've seen the rise of a political class instead of something like the English aristocracy, but it truly amounts to the same thing. Hence we have these families which keep popping up on both sides of the fence: Bush, Kennedy. It's not a Democrat or Republican issue at all: the ruling class of politicians has forgotten what it's like to not Have.

In the meantime, we have decades and decades of hearing Horatio Alger-like stories. We have this amazing mythical American pie where everyone can have a larger slice of the pie than everyone else. We have this disconnect from reality ... this belief that we are owed a large slice of the pie like those privileged families have — without working for it. And we also have this Puritan belief that idle hands are the devil's plaything — and we should work. Just look at any chart of world vacation time and while most U.S. employers offer 1-2 weeks as a benefit (and that may increase depending on years of service), it's not a requirement.

In the 1970s, we also began to see a rise in concern with children's self-esteem. This trend began spiraling out of control by the mid-80s and into a horrible pendulum swing away from anything rational from the 80s through the last few years. Children were fed a mixture of "you can be anything you want to be" along with an unhealthy dose of little to no consequences.

From Robert Heinlein's Starship Troopers (no, not the movie, the Hugo-winning novel):

He had singled me out again. "Suppose you merely scolded your puppy, never punished him, let him go on making messes in the house ... and occasionally locked him up in an outbuilding but soon let him back into the house with a warning not to do it again. Then one day you notice that he is now a grown dog and still not housebroken — whereupon you whip out a gun and shoot him dead. Comment, please?"
"Why ... that's the craziest way to raise a dog I ever heard of!"

Here Heinlein is talking about the "juvenile delinquents of the 20th century," and while I don't agree with all of his points, there is more than a grain of truth to this — this way that we've been raising children since at least the 70s*. When a child refuses to do schoolwork and a teacher is mandated to let him take as long as he wants with no punishment, we are performing this exact method of puppy raising. When you combine that with telling children they can be anything they want, that they deserve everything they want — without also teaching consequences and responsibility alongside, without emphasizing the amount of work it can take to achieve what they want ... we are setting our children up for failure.

When you combine the emphasis on independence (we can do anything we want to, we're Americans and that's in the Constitution ... somewhere) with being raised with a lack of consequences and with the expectation that we deserve a larger piece of the pie than anyone else with the very Western thought that "if they're different from us, they don't matter as much" and then combine that with the gun culture in the United States ....

Well. Then you get something like Columbine. The Murrah building. Sandy Hook.

And if you can stomach the six minute video from Elliot Rodger's "Retribution" video on YouTube** — if you can watch him and listen to his inflections, his posing ... you can see this ... his detachment from reality is where all of these American myths are leading. He deserved a girl. Affection. Sex. But as you listen to the overblown phrases that sound like a B-movie villain, you can also see that the line between reality and fantasy is mostly nonexistent. He thinks he's owed these things, not that he has to work for them. He thinks they're being willfully withheld from him. The most chilling thing to me in that video is the "evil chuckle" not because it's scary, but because it's so obviously taken from the movies and so obviously put on as if he's supposed to have that. He might have been 22 when he recorded it, but he sounds as if he's 12 and acting out a part. I'm not sure even he truly believed most of what he said. You could hear the hitch in his voice, see a look of doubt and then he'd almost shake himself and plow on again.

He killed six people the next day. And himself (regardless if he pulled the trigger to end his life or if you consider it suicide-by-cop). Seven others were wounded, some severely.

And it occurs to me that we are in the midst of the type revolution the founding fathers had tried to avoid. It's not the French Revolution, by any means. We have not organized and revolted, although with the upswing of the Occupy movement, there is a motion in that direction. But if you look at the rise of mass shootings, there is an unorganized guerrilla movement that's been in process in the U.S. for quite some time, it simply reflects the mantra that we've drilled into the mythos of America for decades: the individual is supreme; we deserve a bigger piece of the pie; "those people" are different; and violence is a time-honoured solution.

I don't know how we undo the damage this type of upbringing has caused. I do know, however, if we don't start listening to our children, start imposing reasonable consequences, start addressing the issue of violence, and start emphasizing responsibility and a balance of personal need and community need/responsibility and mental health ... we are only going to see more and more lone revolutions.

Pointless, destructive and ridiculously dramatic gestures which serve no purpose and only result in more pain and more anger.

 


* Heinlein, of course, would argue that this had been going on even longer — Starship Troopers was published in 1959.
** I'm not linking to it as I'm sure YouTube will be spending the next few weeks pulling it down. Repeatedly. As other folks continue to re-upload it.

Posted by Red Monkey at 11:19 AM | Comments (0) Never Underestimate the Power of Human Stupidity | | StumbleUpon Toolbar Stumble

Problem-Solving
December 31, 2013

So over the weekend, Paul Graham unintentionally set off a shitstorm about women in tech. Once again, my Twitter feed was full of people debating whether women could hack it as hackers; whether women hacked at age 13; whether the best hackers even started at 13; what can we do to encourage more girls to hack; why women actively avoid code; blah blah blah.

And then @snipeyhead asked:

@snipeyhead: Do incubators have an obligation to actively seek out female hackers? http://snipe.ly/19XwBwy - what do you think?

@snipeyhead's link goes to Christina Farr's December 30, 2013, article in VentureBeat where she asks several folks in tech the same thing. And the answers are all fairly well considered. I think we all agree that this is a complex problem.

Nothing, of course, is solved in a short VentureBeat article which gives three men and two women a few paragraphs to respond.

A sort of vague-ish consensus appears across most answers to this question - not just in the VentureBeat article, but in tech discussions I've seen on Twitter as well. It follows the same type of pattern we use when solving a tech issue: find the failure point and fix it from there.

Which makes a hell of a lot of sense if you're fixing a program or a piece of hardware. It doesn't make nearly as much sense as we'd like since we're attempting a meatspace issue and I use the cyberpunk term quite deliberately here.

We have a tendency as hackers to live in our heads. We work things through systematically, even when we have our moments of inspiration and intuition. What we do to problem-solve for a living, however, doesn't fully work with messy humans.

I think that John Scalzi nailed the issues perfectly in May of 2012 when he wrote Straight, White, Male: The Lowest Difficult Setting There Is. If you haven't read his piece, please, take a moment now, because I think this metaphor captures the gist of the issue in a way nothing else does.

In short, this issue is larger than just women and it highlights a need to help out a lot of "character classes." I think groups like Girls Who Code are tremendously important, but it's only one piece of the puzzle. We need to encourage people from all groups to code as youngsters.

But we also need to encourage those same groups to pick up hacking in college. Or just out of college. Take a quick look at Ashley Baxter's article, in 24ways this year where she, someone who is not on the lowest difficult setting, someone who sells property insurance, didn't like the software she was giving clients because the vendor had neglected the app for years. It was cumbersome. It was incredibly ugly. It was embarrassing.

So she learned some Ruby on Rails and made her. Own. Damn. Program.

Is she ever going to be a hacker extraordinaire? Maybe not. Probably not as her passion seems to be in running her business. But maybe she's catching the bug and maybe she delve deeper.

I don't think the question should be "Do incubators have an obligation to actively seek out female hackers" - and I don't think the question should be "How do we get more women in tech."

I think we need to stop fooling ourselves that hackers are all of one mindset. Good gods, go look at someone else's code for a minute! You know that person is more than likely solving problems differently from you. Some of those solutions are better than yours. Some make trade-offs you don't agree with. Some only partially solve the issue and brute-force the results.

The more diverse sets of brains we get into hacking, the more ways we'll find to solve problems.

If you start encouraging more people on higher difficulty settings to join the hacking, you'll find them thinking in different ways and you'll find new solutions, some of them quite elegant.

So do incubators have an obligation to actively seek out female hackers?

If they want the best products, I think they are going to have to find ways to seek out more diverse hackers. And I think we're going to have to help that process by encouraging more people to play in our sandbox instead of putting up "Locals Only" signs everywhere.

It's a complex issue. But that's what we do: deal with complex problems. It's past time we do it.

Posted by Red Monkey at 6:17 AM Blog | | StumbleUpon Toolbar Stumble

Google Maps API v3 and jQuery Dialog
July 7, 2013

I got a project the other day. Easy-peasy. All I had to do was add a map to the site, at the request of local customers who want to pick up their order rather than have it shipped. We don't really have a true brick and mortar store and we've been a catalog company for ages, so very few people outside our industry know we're in town, much less where in town.

No problem.

Well, I'm just a front-end developer and mostly just a designer. Our site is built in Visual Studio, in C# and I'm still learning where stuff if and how to manipulate it. So, I expected a little more difficulty than just throwing the map up ... but nothing like what I actually experienced.

The Google easy "embed" code didn't work at all. I've no idea why, but in IE7 and IE8, it was totally missing. So I hit Teh Googlez and found a confusing mess. After a day and a half of sifting through Stack Overflow, blog posts and forums, I finally had an answer for IE8 and up.

I abandoned the basic embed code and went to v3 of the API, assuming I'd have better control. Whilst I've been designing websites since 1996 or 1997, until recently I've allowed myself to be intimidated by "programming" - even javascript. I've kept up with what could be done with javascript, but was too intimidated to learn it. Luckily, my current employer is thrilled with anyone wanting to learn new things and has been supportive of my learning on the job. So. Here's my chance to put what I've been learning about javascript to the test, right?

First, I got it working on a dummy page on one of my domains, just to make sure I understood all the concepts. Easy-peasy.

Next, I went to work and threw it onto a dummy page on our site, making sure it would play nice with all of the javascript and myriad of scripts on our site.

Busted.

Seriously, irrevocably busted.

The problem, as I researched further, was that we were using jQuery dialog code to display the map. And as Daniel Llewellyn wrote in 2011, the real issue is that if you use the "simple map" version of code at Google Map's developer page, you're calling the script before the dialog box and the result is that the API is drawing the map in a space that doesn't yet exist.

What you wind up seeing when you do call the jQuery dialog box is perhaps 1/4 of the map at best and the rest of your dialog box is just blank or a grey square.

I've seen this on other sites and as I Googled the issue, I could see that many folks were having the same issue, but absolutely none of the convoluted fixes I saw on any forum, on Stack Overflow or on Daniel's site would work for me. Being a baby developer, it's quite possible that I simply wasn't understanding their code properly, but the fix I eventually pieced together was incredibly simple.

Example of the typical implementation (new window) of a simple Google Maps with jQuery dialog box. The code for this failed implementation is below:

<p>Google Map in a <a href="#" class="mappop" id="mappop">jQuery dialog</a>.</p> <div class="popmap" id="popmap" style="display:none;" title="Map"> <div id="map_container"><div id="map-canvas" style="background-color:#cccccc;height:450px;width:500px;"></div></div>
<script>
$(function(){
$("#mappop").click(function(){
$("#popmap").dialog({dialogClass:'popmap'});
return false;
});
});
</script>

<script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false"></script>
<script>
  function initialize(){
   var mapOptions = {
   zoom:16,
   center: new google.maps.LatLng(38.858834, -77.33403),    mapTypeId: google.maps.MapTypeId.HYBRID
   }
   var map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);
   var contentString = '<div id="content">' +
   '<div id="siteNotice">' +
   '</div>' +
   '<h1 id="firstHeading" class="firstHeading" style="font-size:18px;">My Fav Dot Com - ThinkGeek HQ</h1>'+
   '<div id="bodyContent">' +
   '<p style="font-size:14px;">ThinkGeek HQ<br />11216 Waples Mill Rd. Suite 100<br />Fairfax, VA 22030</p>'
   '</div>' +
   '</div>';
   var infowindow = new google.maps.InfoWindow({
   content: contentString
   });
 

   var myLatLng = new google.maps.LatLng(38.858834, -77.33403);
   var marker = new google.maps.Marker({
   position: myLatLng,
   map: map,
   title: 'ThinkGeek HQ'
   });
   google.maps.event.addListener(marker, 'click', function(){
   infowindow.open(map,marker);
   });
  }
google.maps.event.addDomListener(window, 'load', initialize);
</script>

What. The. Hell. I used the code from Google's API directly! And of course, that's the downfall, isn't it?

As Daniel said, the code from Google calls the script and therefore the map before the dialog box is called, which means the API doesn't know where to draw the map!

While I saw tons of attempts to fix this, many of which had the original poster claiming thanks for helping out, I couldn't get any of these other solutions to work.

And that's when I quit being an idiot who just follows everyone else's suggestions and started thinking for myself. There had to be something in Google's API for asynchronous loading. Once I found that, I had most of my answer. I knew how to load the map. I knew how to call the map. Now I needed to fire the whole thing and that, given the parameters of my users' needs, was a simple onclick.  

Working map (except IE7) example (new window).

And the code:

<p>Google Map in a <a href="#" class="mappop" id="mappop">jQuery dialog</a>.</p><div class="popmap" id="popmap" style="display:none;" title="Map"> <div id="map_container"><div id="map-canvas" style="background-color:#cccccc;height:450px;width:500px;"></div></div>
<script>
   $(function(){
   $("#mappop").click(function(){
   $("#popmap").dialog({dialogClass:'popmap'});
   return false;
   });
});
</script>
<script>
   function initialize(){
   var mapOptions = {
   zoom:16,
   center: new google.maps.LatLng(38.858834, -77.33403),
   mapTypeId: google.maps.MapTypeId.HYBRID
   }
   var map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);
   var contentString = '<div id="content">' +
   '<div id="siteNotice">' +
   '</div>' +
   '<h1 id="firstHeading" class="firstHeading" style="font-size:18px;">My Fav Dot Com - ThinkGeek HQ</h1>'+
   '<div id="bodyContent">' +
   '<p style="font-size:14px;">ThinkGeek HQ<br />11216 Waples Mill Rd. Suite 100<br />Fairfax, VA 22030</p>>'
   '</div>' +
   '</div>';
   var infowindow = new google.maps.InfoWindow({
   content: contentString
   });
  

   var myLatLng = new google.maps.LatLng(38.858834, -77.33403);
   var marker = new google.maps.Marker({
   position: myLatLng,
   map: map,
   title: 'ThinkGeek HQ'
   });
   google.maps.event.addListener(marker, 'click', function(){
   infowindow.open(map,marker);
   });
   }
function loadScript(){
   var script = document.createElement('script');
   script.type = 'text/javascript';
   script.src = 'https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false&' + 'callback=initialize';
   document.body.appendChild(script);
   }
  document.getElementById('mappop').onclick = loadScript;

And no, I don't work at ThinkGeek by a long shot. Truly, they're one of my favourite ecomm sites, so I thought I'd map them out.

Anyhow, hopefully this helps out some other neophyte who's having issues working with the Google Map API and jQuery.

Now, anyone wanna tell me how to fix it on IE7?

Posted by Red Monkey at 10:07 PM | | StumbleUpon Toolbar Stumble

BlogCatalog
Free Pixel Advertisement for your blog