Today, I finished up a bonus Easter egg for the game, Aztech: Meet the Maya that you are taken to play when you click to see what Jose is thinking.  You can see a rough version of it here. This plays better on a desktop / laptop because iPad blocks the autoplay for sound, but when it’s packaged for the app store, that will work on the iPad as well.

This game uses several functions, all of which I wrote my little old self.

  1. Switches sound file played from English to Spanish
  2. Switches text from English to Spanish
  3. Takes you to the bonus game when you click on the sound bubble
  4. When the sound file ends, replaces the talking gif with a static image  and shows the arrow to continue.
  5. For each item on the screen, performs an action when clicked – anything from text describing it’s use to the Maya to a jumping and howling monkey. Also, removes that item name from the list of things to find, increases the number of found items by 1 and checks to see if all items are found.

There are probably some other things I forgot.

 

monkey

You might wonder how I got from SAS to here. Well, it all started with SAS macros. A macro is no more than a user-written function. When I was first exposed to this idea in graduate school back in the 1980s (yes, literally) my mind was blown! You mean, I could write my own functions?!

You might think this SAS macro that I wrote a couple of years ago

%macro sched(the_day,start1,finish1,teacher1,start2=0, finish2=0, teacher2=” “, start3=0,finish3=0, teacher3=” “);
if date_data = &the_day then do ;
if minutes > &start1 & minutes < &finish1 then tclass = &teacher1 ;
else if (&start2 > 0) & (minutes > &start2) & minutes < &finish2 then tclass = &teacher2 ;
else if &start3 > 0 & (minutes > &start3) & minutes < &finish3 then tclass = &teacher3 ;
end ;
%mend sched ;

doesn’t look like this JavaScript function

// Section to include sound. ;

function playJungleAudio(scene,langs) {
audio_e2 = new Audio();
audio_s2 = new Audio();

if(langs ===2){
audio_e2.src = "sounds/" + scene + "_eng.mp3";
audio_s2.src = "sounds/" + scene + "_sp.mp3";
if ($("#span_button").hasClass("noshow")) {
audio_e2.play();
} else {
audio_s2.play();
}
}
else {
audio_e2.src = "sounds/" + scene + ".mp3";
audio_e2.play();
}
}

If you look closely, though, these are identical in purpose and structure. Both are intended to package a set of statements that will then be executed when called. For both types of functions, SAS (macros) or JavaScript, parameters are optional. Both of these examples just happen to have parameters. Both have a defined start and stop.

In SAS it is

%macro macr0-name (parameters) ;

in JavaScript it is

function function-name(parameters) {

Both have a defined end, with SAS it is

%mend macroname ;

with JavaScript it is simply

}

 

Both are named functions (JavaScript also has anonymous functions), and when you call the function it executes.

It just so happens that both of these functions contain if-then – else statements.

To call the SAS macro, you give the macro name with a % in front of it, and include all the parameters in parentheses, separated by commas.

%sched(19292,790,840,”Elmo”,start2= 840, finish2=900, teacher2= “Bert”, start3=940,finish3=990, teacher3= “Snuffleupagus”);

To call the JavaScript function, you give the name, and include all parameters in parentheses, separated by commas.

 playJungleAudio("howler_monkey",1);

These parameters are then passed to the macro/ function and their values are plugged into the code between the beginning and end.

I have a lot more to say about this but it is getting close to 1 am and I have a plane to catch tomorrow so I’ll have to pick it up next time.

Speaking of  games – check out Making Camp, you can get it here for free. Play it and learn stuff because maturity is overrated.

wigwam

If you want to learn even more stuff, you can get a bilingual version of Making Camp for your iPad for only $1.99 and brush up on your Spanish like you always said you were going to do but didn’t

blocksSo you want to be a successful software developer / consultant ?

If you are in any kind of quantitative field you have a VAST range of options, from working at some of the largest companies in the world in marketing research to performing efficacy studies for non-profits whose staff members can be counted on one hand.

All of these broad number of opportunities require, at most, five building blocks:

  1. Programming concepts – You need to understand scope, do-loop, arrays, functions
  2. Data management – The thousand ways that users can enter data, and how to keep it from screwing up your results
  3. Working in a software development team – this is the part “self-taught” programmers are often not taught – documentation, testing and debugging
  4. Statistics – coming from the age when we inverted matrices by hand with a piece of pare and a pencil (not kidding) SAS, SPSS, R, Stastica, JMP and even Excel have made this a hundred times easier from when I started in the field
  5. Domain specific knowledge – by that, I mean if you are working in aerospace know something about what a transmitter and receiver are, know that a male and a female plug is a thing. If you are in biostatistics, understand survival analysis, relative risk.

(Yes, I know I said four in the previous post but then I thought about the importance of being able to work as part of a software development team and it’s my blog, so hush up.)

Since I started (mostly) with SAS, I’m going to talk for the next few posts about how starting as a SAS programmer can be like a Dr. Seuss book – “Oh, the places you’ll go!” My main point, as I have said before (weren’t you listening?) is that it doesn’t matter what language you use in the beginning. Eventually, I will tell you why SAS is a great place to start – better than many others – but it is not eventually yet. Patience is a virtue.

Let’s start with programming concepts. Now, I’d had a bit of BASIC, Fortran and COBOL before I got to SAS (yes, shut up, I’m old and in fact, yes I DID use a keypunch machine with punched cards like those women in Hidden Figures.  When the movie came out, one of our interns, in all seriousness, asked me if I was in it. I’m not quite that old.)

The basic concepts I use almost every day:

Arrays – I’ve written about those on this blog a dozen time. One of the most frequent uses I make of SAS is to score tests, which requires creating an array of answers from a respondent and a second array of items scored correct or incorrect. Our game, Making Camp, that teaches multiplication and division, has a virtual trading post and a wigwam, both of which make extensive use of arrays. All of the items you can “buy” with the points you earned from solving math and history problems are in an array.

SOME SAS ARRAYS

Data scored ;
set mydata.data2013 ;
array ans{70} q1- q70 ;
array correct{70} c1 – c70 ;
array scored{70} sc1 – sc70 ;

SOME  JAVASCRIPT ARRAYS

var things = [
“art/tomahawk.png”, “art/dog.jpg”, “art/pottery.png”, “art/deer_skin_sm.png”,
“art/bass_side.png”, “art/arrows_and_quiver.png”, “art/turtle.jpg”, “”,
“art/parfleche.png”, “art/feather_sm_side.png”,
“art/plate.png”
];

var things_name = [
“TOMAHAWK”, “DOG”, “POTTERY”, “DEER SKIN”, “BASS”, “ARROWS AND QUIVER”, “TURTLE”, “”, “PARFLECHE”, “FEATHER”, “PLATE”
];

Yes, they look a little different but the basic concept is the same.

In the SAS example, I’m matching three arrays – the answer the students gave, the correct answer and the item scored correct or incorrect.

In the JavaScript example, I am matching up two arrays, with the source for the image file and the alternate text for that element.

In her paper presented in 2010 at SAS Global Forum, Jennifer Waller says,

A SAS ARRAY is a set of variables of the same type that you want to perform the same operation on. The set of
variables is then referenced in the DATA step by the array name. The variables in the array are called the “elements”
of the array.
Every word of that applies in JavaScript except for “of the same type”. In JavaScript you can have mixed type arrays and if SAS would add that, it would make me very, very happy.
Arrays are a fundamental concept to any programming language, so mastering that concept is a step forward.
Truly understanding variables is another foundational idea – not just that they are not constants, but the concepts of type, format and scope – but that is a whole different post and The Invisible Developer is reminding me it’s almost 11 pm on Sunday night, so that will be my next digression.

Speaking of Making Camp, you can get it here for free. Play it and learn stuff because maturity is overrated.

wigwam

If you want to learn even more stuff, you can get a bilingual version of Making Camp for your iPad for only $1.99 and brush up on your Spanish like you always said you were going to do but didn’t.

Last post, I talked about bricolage, the fine art of throwing random stuff together to make something useful. This is something of a philosophy of life for me.

Seems rambling but it’s not …

Over 30 years ago, I was the first American to win the world judo championships. A few years ago, I co-authored a book on judo, called Winning on the Ground. 

Winning on the ground cover

When it came to judo, although I was better than the average person, I was not the best at the fancy throws – not by a long shot. I didn’t invent any new judo techniques.  I wanted to call our book The Lego Theory of Judo but my co-author said, “That’s stupid” and the editor, more tactfully, said, “Nobody will know what you are talking about unless they read the book and you want a title that will get them to buy the book”. So, I lost that argument.

What I was really good at was putting techniques together. I could go from a throw to a pin to an armbar and voila – world champion! Well, it took a long time and a lot of work, too.

How does this apply to statistics?

Let’s start with Fisher’s exact test. Last year, I wrote about using this test to compare the bureaucratic barriers to new educational technology in rural versus urban school districts. Just in case you have not memorized my blog posts, Fisher’s exact test can be used when you have a 2 x 2 matrix that fails to meet the chi-square minimum of five observations per cell. In that instance, with only 17 districts, chi-square would not be appropriate. If you have a 2 x 2 table, SAS automatically computes the Fisher exact test, as well as several others. Here is the code:

PROC FREQ DATA = install ;
TABLES rural*install / CHISQ ;

Ten years ago, I was using this exact test in a very different context, as a statistical consultant working with a group of physicians who wanted to compare the mortality rates between  a department that had staff with a specific training program and a similar department where physicians were equally qualified except for participation in the specialized program. Fortunately for the patients but unfortunately for statistical analysis purposes, people didn’t die that often in either department. Exact same problem. Exact same code except for changing the variable names and data set name.

In 35 years, I have gone from using SAS to predict which missiles will fail at launch to which families will place their child with a disability in a residential facility to which patient in a hospital will die to which person in vocational program will get employed to which student will quit playing an educational game. ALL of these applications have used statistics and in some cases, like the examples above, the identical statistics applied in very diverse fields.

Where do the Legos come in?

In pretty much every field, you need four building blocks; statistics, foundational programming concepts, an understanding of data management and subject specific knowledge. SAS can help you with three of these and if you acquire the fourth, you can build just about anything.

More on those building blocks next post.

Support my day job AND get smarter. Buy Fish Lake for Mac or Windows. Brush up on math skills and canoe the rapids.

girl in canoe

For random advice from me and my lovely children, subscribe to our youtube channel 7GenGames TV

 

I thought the title of Al Franken’s book , The Truth, with jokes , was great and I wanted to do something just like it. Unfortunately, I’m not that funny.

Often, the discussion comes up among colleagues whether it is better for one’s career to be a specialist or a generalist. It’s a little (a lot) too late for me to become the world’s foremost authority on PROC REPORT (that’s Kim Le Bouton, isn’t it?). Right after wondering whether anyone uses PROC REPORT any more, I starting thinking of all of the basic concepts I learned from it that I apply regularly, mostly with PHP.

My point, which you have by now despaired of me having, is that when it comes to starting a fascinating career, SAS is as good as starting place as any, and probably better than most.

If you decide to be a specialist, your career path probably looks something like this:

typical career path

You get a bachelors and a masters in statistics, you become a data analyst and work your way up to managing the entire division. If you do that, work your way up the ranks to knowing absolutely everything about clinical trials of migraine drugs, you’ll probably end up with a nice house in the suburbs, a 401K and three weeks of vacation each year.

If that’s you, cool. To be honest, though, I look at friends who have spent 20, 30 or 40 years in the same company and think I would lose my mind.

My career path

 

But, you say,

What can I do? I have an M.S. in statistics (or business or sociology) and two years of experience using SAS. What options do I have?

Well, honey, you have come to the right blog. In my decidedly non-linear career, I have been an industrial engineer,  professor in schools of education, engineering, business, liberal arts and human services. I think the only one I have missed is fine art. I’ve been a consultant, programmer, statistician, consultant again and now am president/co-founder of a gaming start-up.

Over the next few posts, I’ll explain a dozen ways in which I have built a career by bricolage – that is, from building stuff – programs, companies – using whatever was lying about . All of my various careers have had their roots in statistics and SAS. Could I have learned the same concepts and gotten the same results using another programming language, taking a different path? Probably. But I didn’t.

 


Support my day job AND get smarter. Buy Fish Lake for Mac or Windows. Brush up on math skills and canoe the rapids.

girl in canoe

I read a comment on line saying SAS probably would not disappear as an option for statistical analysis because “it’s good when you need to do a lot of data manipulation”.

I wonder what world those people live in that data comes all cleanly packaged and whether they have unicorns there.

Back on Planet Earth, I have a data set that has multiple records for the same date for the same students.  For some reason, the data were being sent at the end of each screen at one site, instead of at the end of the test. So, the data look like this:

kat123 4 5 18 11   2017-04-23 17:39:26

kat123 4 5 18 11   42 17 8 0 1 2017-04-23 17:41:12

and so on.

The students also took a post-test, months later, so …

I need the last record for each date, but my data has date and time

You might think doing

testday= datepart(date_entered);

would work and it would except for the fact that

My date is saved as a character format! What do I do?

You can read some suggestions here in SAS communities

https://communities.sas.com/t5/Base-SAS-Programming/how-to-convert-char-var-to-sas-date/td-p/45067

I could not find

2016-02-03 19:41:26

and I spent a good hour trying different methods to get this to work. I will spare you the details and maybe I could have gotten some method to work (no, whatever you are considering, I probably already tried). However, this occurred to me …

Do you really need to change it to a date format?

In this case, I was not doing any calculations with the date value, I simply needed the day part as a unique value.

I could just use the first 10 characters like this

day_of_test = substr(date_entered,1,10) ;

If you figured this out in the first sentence or two you are probably laughing by now (shut up).  Yes, it doesn’t matter if it is formatted as a date or not. So, that is what I did.  After creating a variable that is just the day of the test, I sorted by username, day of test and date entered (which included the time value). Then, I read in the data using the BY statement in the Data step so there would be  last. variable created that is whether or not this is the last record with that value in the BY group.  I output the last record for each day by using a subsetting IF statement.

Data fixdata ;
set mydata.aztech_pre ;

*** CREATE day_of_test variable as characters 1-10  ;
day_of_test = substr(date_entered,1,10) ;

*** SORT by username, day of test and date entered (including time);
proc sort data=fixdata;
by username day_of_test date_entered ;

*** DATA step that only saves last record ;
Data mydata.aztech_pre ;
set fixdata ;

***  BY statement to define that the data is by username and day_of_test ;
*** NOTE:  If you didn’t do the PROC sort first, this won’t work. For shame! ;
by username day_of_test ;

***
if last.day_of_test  ;
run;

So, that worked perfectly. I included my missteps because it is easy when you are a newbie to believe that everyone is smarter than you and never makes bonehead mistakes. Not so. We all make them all of the time. The important thing is, figuring it out in the end. Sometimes the easy way is not so obvious.

Or, maybe it is and I’m a bonehead. Either way, it worked. Now on to step 2.

 

When I am not writing about SAS, I’m making games that teach math, social studies and language.

Check them out.

screen shots from our games

Once every year, I teach an actual course, not a workshop or professional development, but a class with 20 – 40 students. One where I need to write a syllabus, have lectures, papers to grade, homework and exams.

Now, I’m not comparing teaching masters or doctoral students 3- 6 hours a week to my friends who teach middle school six hours a day. In fact, when I go for a day or two, as a guest speaker for six classes a day, and I need to stand on my feet and keep 40 teenagers’ attention for all of that time, I think yet again that teachers don’t get paid nearly enough.

There are several reasons that it is important to me to teach a course every year, and one is that I think it is super-important as someone who makes educational technology that I be in an actual classroom with students. It’s easy to forget how unbelievably BUSY teachers are if you are not in that situation day after day.

It’s also easy to overestimate the amount of time teachers have to investigate new technology. For example, for the course I am just finishing, I considered just two possible types of statistical software – SAS and SPSS.  The university had a license for one and it was available free (through SAS Studio) for the other. I knew R existed, of course,  but I did not consider it as an option for these students (long story I will skip). I had a short time to decide and someone suggested to me another option – JMP – that I had not considered, but by then I didn’t have time to research it, find a possible textbook and integrate it in my syllabus and lectures. If I’d had more time to look into it, that might have been a good choice.

I know there are other options out there- I had looked at Statistica at one point and it looked pretty cool. However, now that I have my syllabus done, lectures written, textbooks selected, model assignments and my students are generally doing pretty well, it is hard to see myself spending a lot of time researching new software applications for my engineering students.  (Social Science and Education might be a different issue).

My point is that one evident challenge for anyone who makes educational technology is the “good enough” problem. That is, if things are going good enough, teachers are not highly motivated to look for something better.

One of the things that drives me crazy, is those teachers who think it’s “good enough” when the vast majority of their students are below grade level or not proficient – but that’s a rant for another day.

(If you’re fascinated by this topic – and who wouldn’t be – I wrote more about why teaching helps me run an ed tech startup on my other blog over on the 7 Generation  Games site)

 

When I am not writing about statistics, I’m making games that teach math, social studies and language.

Check them out.

screen shots from our games

It may not be the secret to great joy but it is certainly the secret to avoiding unhappiness and it is simply this:

The absence of self-ruminative thoughts.

I’d like to claim the idea was originally mine but the truth is I first heard this phrase over a decade ago in a talk by Albert Bandura (yes, THAT Albert Bandura) and he said one of the differences between people who are content with their lives and those who are unhappy is that the happy group have “an absence of self-ruminative thoughts”.

There is a phrase I use a lot,

Not my circus, not my monkeys.

monkeys

In other words, I don’t make everything about ME.

Here are tips to not ruminating too much.

  1. What people think about you is none of your business (I stole this one from Darling Daughter Number Three)

I do the best I can. When I meet with employees or students, I tell them what I think needs to be said, listen to what they have to say and then I don’t worry about whether I was too harsh or too wishy-washy, whether they respected my authority or thought I was incompetent. If random Joe on the Internet thinks I’m old and grey and should just shut up, well, as much as it pains me to have lost the good opinion of an anonymous person I have never met – oh, wait, no I don’t care.

2. Don’t take things personally

If I screw up,  I try to learn from it. If I don’t get a grant, or a person decides not to invest in our company or a school decides not to buy our games,  I listen to their reasons and if it is a reasonable suggestion for a change I can make, I try to do it. If not, I don’t worry about it. I still remember the astonishment I felt seeing a colleague throw a grant review in the trash without reading it.

What are you doing? Why didn’t you read the comments?

I asked. He responded,

Shit, why should I read it? They didn’t like me. They don’t think I’m a researcher.

It’s more than just not taking things personally, though. It’s also a matter of not making everything about how other people are not acting as YOU think they should behave.

3. Don’t make it about YOU when it’s not

Your adult children aren’t raising their kids the way you think they should? The neighbors don’t maintain their yard the way you think it should be ?

Not my circus, not my monkeys.

4. Look out instead of in

A few months ago, we had a really fascinating guest on the More Than Ordinary podcast, Jonathan Shaw. He’d just finished writing his autobiography, Scab Vendor, and he encouraged me to go away for a month and write my own autobiography. Jonathan’s book was interesting and his idea was intriguing. I randomly happened to be in an area known as a writer’s retreat in Lopinot, Trinidad and I tried for a bit. I have had a long strange trip around the world and back again, that’s for sure.

I just don’t get excited about the idea of looking back through all of the things that happened in my life. Jonathan said,

You’ll grow from the experience, but it will probably hurt – and I only saw ‘probably’ to be nice.

Maybe if I went back and hung out in the mountains I would find myself.

Lopinot

Instead, I went back to making games, looking forward instead of back. Feel free to buy some. They are fun and you’ll learn. Kind of like life should be.

screen shots from our games

me dressed up for the renaissance faireThe most useful function Facebook has served for me is as a time machine. That is, students, friends and acquaintances I had not seen in 20, 30 or 40 years, who are in my memory as small children or teenagers all of a sudden reappear in my life as young adults with spouses and children, or old, retired people.

It’s weird seeing that 8-year-old that I used to coach now 42 years old with adult children of her own. The serious, hard-working 11-year-old boy is now 27, a college graduate and new father. My fellow enthusiastic, naive graduate students are professor emeriti. How weird is that?

The first thing I have learned is that nothing lasts. The kid who was sobbing because she lost in the finals of the Junior Olympics and it ruined her life  has rarely thought about that match in 30 years. The teammate who was so in love with himself in his twenties, who always had at least two girlfriends at a time, and who I thought was an egocentric pain in the ass, now looks back on those days with amusement and embarrassment. What little hair he has left is snow white . He didn’t become a movie star as he expected. He ran a Harley Davidson dealership for 30 years and is now retired in Florida.

We can love our children more than life itself, but they are still going to grow up, get jobs and families of their own and live their own lives, as they should.

The second thing I have learned is that family is what brings us the greatest joys in life, if we are lucky, and the greatest sorrows, if we are cursed and a mix of both if we are normal. All of the photos of young parents have that same lovestruck and bewildered expression, as if to say, “I love this baby” and “I have no idea what the fuck  I am doing” both at the same time.

The newly married/ newly engaged couples all have the same phrases about how lucky they are and the divorced/ separated couples mostly sound equally bitter.

When we’re young we’re mostly focused on careers – because how else are we going to pay for diapers and baby food and tournament entry fees and piano lessons and college tuition for those babies? When we get older, we realize it doesn’t matter so much whether we are a retired professor or a retired janitor. Our grandchildren could care less.

The third thing I have learned is how lucky I am to live in the time and place that I do. Lately, in my spare time that I do not have, I have been reading a lot of history. Whether it is hygiene or women’s right or economic inequality or violence in society, in the overall scheme of things, we are SO much better off than we have ever been. That’s a post for another day, though, since I have to leave for Palm Springs in a few hours.

Support my day job AND get smarter. Buy Fish Lake for Mac or Windows. Brush up on math skills and canoe the rapids.

girl in canoe

For random advice from me and my lovely children, subscribe to our youtube channel 7GenGames TV

The year I turned 55, I wrote a series of blog posts on 55 things I’ve learned in 55 years. I’ve probably learned more than three things since, but one particular lesson has come back to me over and over the past few years.

People are more than their accomplishments – sometimes for better and sometimes worse.

This is one of those lessons that should be obvious and we’ve all probably given lip service to it at one time or another. “The janitor in the building deserves just as much respect as the university president.” As far as I can see, most people don’t really believe that. They go to major effort to attend any event where billionaires or celebrities are present, and despite all of the talk about ‘supporting our troops’, they really wouldn’t bother to go to a barbecue for the guy who came home from Afghanistan a few years ago.

Maybe it’s because as people get older they get tired of maintaining barriers and let you see more who they really are. Maybe I’ve just gotten better at paying attention.

I used to think I was smarter, more motivated, harder working and braver than the average person because I had overcome a lot of hurdles to accomplish at a high level in sports, academics and business. That’s embarrassing to admit because I now realize how completely wrong I was, and how I let the opportunity slip through my fingers to get to know better some really amazing people.

I’ve come to know people who came thousands of miles, hopping freight trains, hiding in the back of tractor-trailers, to escape civil war and violence, who worked 14 hour days at minimum wage to give their children a better shot in life. I’ve learned the university president has been in rehab three times for alcoholism. I’ve found out that the mid-level manager for the medium-sized company is far from mediocre, having spent 20 years in the military, first in combat zones and then training recruits how to survive. I’ve learned that the old guy who retired from the factory had been in some of the bloodiest battles in World War II.

It’s not just surviving wars or escaping from them. There are people who at first seem like the most staid, judgemental bureaucrats you’d ever meet, who would never lift a finger to do anything outside of the box, and then you find they are raising their five grandchildren after their child overdosed on methamphetamine or they spend their evenings volunteering at the prison to teach literacy classes. That really quiet guy that works at the library? Yeah, he spent nine years working for start-ups in Africa ‘because I wanted to understand more of the world than where I grew up’.

There is the flip side, too, the people who seemed to have it all together who turn out to have no real moral standing. Someone can be financially successful, well-educated and hit the gym at 5 am every morning, yet that person will still do business with someone known to have molested children and then bribed officials to get out of being prosecuted because, “Well, it’s just business.”

People with absolutely stellar credentials will lie to your face and it won’t bother them at all. On the other hand, people with equally stellar credentials will work another two hours on top of the 18 hours they already worked because they promised they would come to your fundraiser and they always keep a promise.

Whoever is up may be down next year and whoever is down might be up

Some people work for one company, volunteer for one organization or live in one community until they are doddering up to get the lifetime achievement award for fifty years of service. I’m the opposite of that, and so I’ve had the experience many times of running across someone I had not seen for 10, 20 or 40 years. People I was so angry with because they made an unethical decision a decade or two ago, I look at now and they are lonely, pathetic old people who have to live with themselves. Other people, I was a complete idiot to not pay enough attention to because they were ‘not important enough’ or ‘not interesting enough’ or ‘not smart enough’ and they have led fascinating, productive lives that I admire.

So, my biggest lesson I have learned is to take more time to listen to people and get to know them. Sometimes, getting to know them means I head in the opposite direction as far and fast as possible. More often, though, it means I learn more about the world than my little place in it.


Have kids? Know anyone who has kids? Like kids? Own a computer? Fish Lake will teach fractions and Native American history, with no whining and all for under ten bucks.

Buy our games

Let me begin by acknowledging that anyone who can afford to fly to Trinidad and Tobago to learn more about the culture and ends up pitching a reality show is in the extreme of privileged and fortunate people on this planet.

I also realize that anyone who travels as much as I do is bound to have some bad experiences as the law of averages catches up with her.

This is not one of those rants about how Airline X sucks and I will never fly them again. First of all, I fly American a lot and they are usually quite good. Secondly, you are usually lying when you say that because in many cases, you have no choice. If I’m flying into Devils Lake, North Dakota, there is one airline and that’s it.

HOWEVER, since we are negotiating for said reality show to be filmed in Tobago, it’s likely that my family, my staff and will be flying into Port of Spain on American Airlines a lot in the near future, I want to offer them some specific advice for how not to suck.

1. Don’t lie. I don’t know when it became your corporate policy to lie, but I highly recommend you stop it. I even suspect lying is making you some money in the short-term. Stop it anyway. Two different American Airlines employees told people they would have to sleep on cots set up in an auditorium because there were no hotel rooms. They gave excuses like there were a lot of festivities in the city. They said they had been trying all day and there were just no hotel rooms. Several people in front of me went off to the auditorium unhappily. I said, “I don’t believe it. There is not one hotel room in the city of Miami? There is no fucking way I am sleeping on a cot. I don’t believe that it is legal for an airline to have your flight delayed by hours and then tell you to sleep on the floor with no compensation.” After I pushed the issue for quite a while, someone finally admitted that, yes, I could get a hotel, pay for it myself and get reimbursed through customer service. After I questioned repeatedly the truth of every hotel room in Miami being booked, they finally admitted that no, it was only the hotels with which American had contracts that were booked. It took me 30 seconds to find a nice hotel 4 miles away using the Travelocity app on my phone. Immediately, 2 other people in line did the same thing. Now, I’m sure that it saved American a lot of money that people slept on cots instead of nice hotel rooms that were not deeply discounted to American. Still, don’t lie to people. That’s bad.
2. Don’t waste people’s time. I don’t know at what point American ran out of those discounted hotel rooms but there were a lot of people in front of me and behind me getting the same story. We waited in line for over an hour. If they write slow, it would have taken 145 seconds for an American Airlines employee with a marker and a piece of cardboard to put up a sign saying: Out of rooms at contract hotels. Your choices are a) Wait in line for food vouchers and sleep on a cot in the auditorium or b) Get your own room and mail in receipts for reimbursement. Hell, they could have made an announcement. Airlines announce something every 3.3 seconds anyway. All the people who wanted to get their own room could have left at that point and not wasted their time. The people who did want to go for the cot could have saved waiting behind all those other people.
3. Take responsibility. It was 100% the airlines fault that we missed our flights. The flight from Miami to Port of Spain was hours late, so the flight back was hours late. Why did it become MY responsibility to find a hotel room, pay for the hotel room and write American Airlines to get paid back? Why did I have to wait in line for 2 hours in Trinidad to get my ticket re-booked and another hour in Miami to be told to sleep on a cot? Call in extra employees to work. YOU fucked up. Why should your customers who pay you have to wait in line for a total of 3-4 hours? That’s not right. Call in more staff to handle customers. Figure out how to pay for people’s hotels. Give out visa gift cards. You can buy them at fucking Wal-Mart, for God’s sake. As the gentleman in front of me said about himself, “I have money and I’m going to go stay at an expensive hotel, no thanks to you people. What about all of these other people who can barely afford to travel – you have older people, families with small children – they shouldn’t be sleeping in a gym. That’s not right.”
4. Don’t get self-righteous when your passengers are angry because you have lied to them, wasted their time and failed to take responsibility. When the American employee told me we would have to sleep on a cot in an auditorium, I told him, “There is no fucking way I’m sleeping in an auditorium. Are you fucking kidding me? I KNOW that the airline can’t have passengers delayed overnight and just say that’s too bad and I fucking GUARANTEE you that there are hotel rooms in Miami.” He told me not to swear and he threatened call security on the gentleman in front of me. If your job is to deny responsibility, waste people’s time and lie to them, don’t be surprised when they get mad at you.

On the other hand Travelocity and your app, you rock. Hotel Colonnade in Coral Gables, we will be back for more margaritas and we loved the family loft.

And American, you can do better. I’m counting on you. We have a lot of travel coming up for that reality show and me launching myself at the next lying bastard would make good reality TV but probably not look to good on my permanent record.

Oh, and by the way, I was supposed to get in last night and I’m still sitting on the plane waiting for a gate at LAX.

Next Page →