I need to get a data set into SAS for a course I’m teaching in March. Students like real data and some kind folks were willing to allow their de-identified data to be used. Win-win.

How did I get this data? In a SAS data set with a handy code book? Oh, very funny!

A bunch of people laughing
This blog will pause while we all laugh at your naivete

I received a login to PHPMyAdmin where the data which were definitely not created for my personal convenience reside.

First, I downloaded the data as CSV for Excel. This gave me a file where everything was like this.

re_apply;”consumer_id”;”email”;”counselor”;”gender”;”date_of_birth”;”age”;”primary_disability”;”secondary_disability”;”education”;”member”;”tribe”;”district”;”job_when_entered”;”if_job_earnings”;”earnings_type_before”;”referral”;”other_refer”;”application_date”;”assessment_date”;”eligibility_date”;”ipe_date”;”notify_rights”;”vocational_goal”;”state_vr”;”status”;”closure_date”;”status_type”;”employment_date”;”type_employ”;”start_job_earnings”;”post_job_earnings”;”earnings_type_after”;”intermediate_goal”;”semesters”;”int_completed”;”intermediate_date”;”last_contact_date”;”comment”

Yes, one, long line with everything in quotes and every column separated by a semi-colon. These are the column names but all of the data are in this exact same format as well.

Of course, you COULD upload this file and read it into SAS but that would take time and effort.

OR you can download a regular CSV or ODS spreadsheet file, just pick one of the other options, and then all your data would be in nice columns but you have no header row. Of course, that’s pretty easy to write an input statement in SAS. You just need to type in a hundred or variable names and be sure to have the format correctly specified. Not hard but probably take you more than a minute.

You COULD theoretically download the data as an SQL file and use SQL connect according to some smart and less lazy people on SAS Communities.

And, as some of the posters noted on that forum, not everyone has access to SQL connect.

Or, you could be a completely lazy person like me and fix it all in about 12 clicks.

Here is how:

  1. Download the file as CSV for Excel
  2. Copy and paste the first line, the header, into Word
  3. Replace all the quotes with nothing, using Replace from the EDIT menu
  4. Under the TABLE command select “CONVERT TEXT TO TABLE”. For “Separate text at”, click on Other and put in a semi-colon.
  5. Now you have all of your filenames in nice columns as a table, copy that.
  6. Download the file again as CSV
  7. Insert a row and paste the filenames you copied in Step 5
  8. Save that file as an Excel file
  9. Upload it into SAS Studio
  10. Under TASKS and UTILITIES, select IMPORT DATA, drag your file you uploaded to the window and click on the little running guy.
Converting from text to table
Click 8 or So
Tasks and utilities
All that’s left is to drag the file

First of all, I want to draw your attention to this retraction in the Journal of the American Medical Association and mad props to Drs. Aboumatar and Wise and John Hopkins for doing the right thing in publicly retracting it.

For the TL; DR crowd

Someone who is probably now unemployed miscoded the study groups in this randomized clinical trial of self-management of Chronic Obstructive Pulmonary Disease. What does that mean? In this case, it meant that the reported results were the exact opposite of what was really observed because the treatment groups were coded incorrectly. Also, read the seven tips at the end of this post.

When I talk about statistical analysis, I focus 80% or more of my time and attention on the basics of knowing your data, cleaning your data and examining your data some more. To some, mostly younger, statisticians, that is not the sexy stuff. Why am I not talking about neural nets or generalized linear mixed models? Don’t I know that improving your prediction by .3% can result in millions of dollars in profit for a corporation that has 38 million customers?

What I know is that problems like the one in that JAMA article occur more often than we like to admit.

Recently, a student sent thesis results and then the next day sent an email saying, “Oops, I meant to use the DESCENDING option in PROC LOGISTIC but I didn’t, so the results are the exact opposite of what I said.”

A couple of years ago, I did an analysis with a depression scale for which the standardized coding is 0 to 3, but the application had used 1 to 4. The first analysis showed that every single person in the sample was clinically depressed. Fortunately, I caught this before it was published. Even when I re-analyzed the data with the correct scoring the mean score was extremely high. This was not a random sample of the population, but rather, children with a family member addicted to methamphetamine. The original (incorrect) analysis wasn’t in the opposite direction but it did somewhat overstate the problem.

Several years before that, I worked for a client who had a previous consultant with no knowledge of their particular field but who was a very good programmer. In reviewing some of that person’s code to understand the data and how it had been scored, I found that NONE of the items that should have been reverse-coded had been. The consultant had simply taken the sum of all of the items. This research had been published, by the way. I mentioned this to the client and suggested that a retraction was in order. That retraction never happened and I never worked for that client again.

My Six Tips for Saving Your Ass

  • Learn to code. I don’t mean you need to be the greatest SAS/ R/ Python whatever guru in the world but you should be able to read through the code someone else wrote and understand it. This means you should be able to read an IF-THEN statement, a loop re-coding all the items in an array and the statistical procedures used in your analysis.
  • Understand that the DESCENDING option in PROC LOGISTIC means that the probability modeled is reversed. So, by default, PROC LOGISTIC models the probability of response levels with lower Ordered Value, and if you have death (coded 0= lived, 1= died) as the dependent, the procedure is predicted who lived. If you use the DESCENDING option, it’s going to predict who died.
  • Know how many people should be in each group; control, experimental condition 1, experimental condition 2. Do a PROC FREQ and see if it matches what you expect.
  • Know the range for each item in your analysis and do a PROC MEANS with mean, minimum, maximum and standard deviation. Even if you have 500 or 600 variables it shouldn’t take you all that long to scan through that many lines and see if anything is out of range.
  • Know which items should have been reverse-coded and check if that was done.
  • Compute reliabilities for each scale in an analysis. While the reliability would not have been changed in the depression example where 1 was added to every response, it would have picked up those cases where the variables were not re-coded by showing very low reliabilities.

A seventh, extra bonus tip

If you can’t understand the code that someone has written, not because you are a moron (can’t help you there), but because they are one of those people who never write comments in code, don’t believe in documentation and write code that includes an unnecessary number of macro variables, user-written macros and overly complicated solutions, fire their sorry ass and hire someone less pompous. I’m not saying you shouldn’t have macros or that because a person uses a DATA step and you prefer PROC SQL you should get rid of them. What I am saying is if you ask a person what decisions they made in writing that code and what was the reason for, say, using a generalized linear model instead of a general linear model, they should be able to tell you.

Never fear, I’m not going to post all 30 things in this post. This is a series. A LONG series. Get excited.

I was invited to speak at SAS Global Forum next year and it occurred to me after thinking about it for 14.2 seconds that there are plenty of people at SAS and elsewhere that are more likely to have new statistics named after them than me.

While I can code mixed models, path analysis and factor analysis without much trouble, I’d be the first to admit that there are plenty of new procedures and ideas I see every year that I never really master. I mean to, I really do, but then I get back to the office and attacked by work. So, the person to introduce you to every facet of the bleeding edge, nope, that’s probably not me, either.

If you think this is where I experience impostor syndrome and say “I couldn’t possibly have anything worth saying”, we have obviously never met.

I’m the old person on the left. The youngest of many daughters is on the right.

Okay, there’s the most current picture of me, so now you sort of know who I am. I figured I better post a current one because I had not updated my LinkedIn photo in so long that I connected with someone who said,

“Oh, I have met your mom.”

And I had to reply,

“No, you have met me. My mom is 86 years old and retired to Florida, as federal law requires. Florida state motto: Your grandparents live here.”

So, when do you get to these 30 things?

Now. I decided to divide everything I learned into four categories.

  1. Getting clients
  2. Getting data into shape
  3. Getting answers
  4. Getting people to understand you.

I picked four because if I had five or six categories, people would expect there to be an even number of points in each because 30 divides evenly by five and six. See? I am good at math.

The money part: Getting clients

First, decide what kind of statistical consultant that you want to be.

Are you a specialist or a generalist?

You can be like my friend, Kim Lebouton, who specializes in SAS administration for the automotive industry and seems intent on keeping with the same clients until she or they die, whichever comes first. I linked to her twitter because she is too cool to have a web page.

You could be like Jon Peltier of Peltier Tech and specialize in Excel. Basically, if there is anything Jon doesn’t know about Excel, it’s not worth knowing. Personally, I feel as if most things about Excel are not worth knowing, which is why I’m not that kind of consultant.

I do love that the Microsoft Store carries our games for Windows, though, so woohoo for Microsoft.

Canoe the rapids and learn fractions, with your kids or by yourself because maturity is overrated

I’m the kind of statistician that doesn’t have a time zone.

A few years ago, I was at a conference when people were trying to coordinate their schedule for an online meeting. They were saying what time zone they were in and someone asked me,

“You’re on Pacific Time, right?”

My friend interrupted and said,

“She doesn’t have a time zone.”

It’s true. I was on Central Time last week, in North Dakota. I’m in California this week. Next week, I’m back on Central Time in Minnesota and South Dakota. The following week, I’m on Eastern Time in Boston.

In the winter here (which was summer there), I was in Chile. During the spring here (which was fall there), I was in Australia, and I’m in the U.S. now.

BUT HOW DO YOU FIND CLIENTS?

This is probably the question I get the most and I have an odd answer.

Get really good at something and the clients will find you.

Jon’s really good with Excel. Kim is superb at SAS administration. What am I good at? I’d say I am excellent at taking something that a client may only be vaguely aware is a statistical problem and solving it from beginning to end, in a way that makes sense to them.

If you try mansplaining me in the comments that what I do is called applied statistics, I will find where you live and slap you upside the head. I teach at National University in the Department of Applied Engineering. It’s in the fucking department name. I KNOW.

In response to the question in stats.stackexchange regarding the difference between mathematical statistics and applied statistics, there was this answer:

Mathematical statistics is concerned about statistical problems, while applied statistics about using statistics for solving other problems.

– Random person I don’t know on the Internet

Mathematical statistics often involves simulated (that is, fake) data, and nearly always uses data that is cleaned of data entry errors – in other words, not very representative of real life.

If you ask me, and even if you don’t , many data scientists act as if data issues can be fixed by having big enough data. This always seems to me similar to those startups who are losing money on every sale but aren’t worried because they are going to make it up on volume. Since data is key, let’s talk about that in the next post.

But wait! How do you get those first clients?

There is never a surplus of excellence – unless maybe you are an English professor, but they’re not reading this blog.

Network.

Let your professors know that you are interested in consulting. I got my first consulting contracts by referrals from professors who had more work than they could do. Similarly, I have referred several potential clients to students and junior professionals either because I was too busy, not interested or they could not afford my rates.

Go to conferences

I’ve had clients referred by other consultants who met me at a conference and a particular contract was not in their area of expertise but they thought it might be in mine. Similarly, I’ve referred clients to other people because I don’t really do that thing but maybe this person will be available.

Most jobs come by word of mouth

There is an evaluation consultant organization. I don’t know who the hell belongs to it. Much of the work that I do, someone’s job is on the line. That is, if they can’t demonstrate results, they may lose their funding and everyone in the building loses their job. In almost all of it, at some point the project director or manager or whoever is going to go present these results to a federal agency, tribal council or upper management, trusting that everything they say is true because I said so.

In that type of high stakes situation, they’re not going to get someone from an ad on Craig’s list. If that sounds like bad news, the good news is that after you have been around for a while and done good work, the jobs come to you.

Since a big difference between mathematical statisticians and applied statisticians is the messiness of the data, I’m going to address that in the next few posts. Expect more swearing. Because data.

A twitter storm erupted recently in response to one person’s thread about how to find a 10x engineer . Since I started programming FORTRAN with punched cards back in 1974, was an industrial engineer in the 1980s and now run a software company, I’ve worked with a few people, rightly or wrongly considered to fall into that category. So, I thought I’d weigh in on the original author’s points.

10X Engineers hate meetings

There are only two types of software developers who don’t dislike meetings. New developers don’t mind meetings too much because they have a lot of questions like “who do I talk to if I need access to this repository” or “What version of Unity was used to develop this game I’m supposed to update?” They also have specific questions about why the sound function they wrote is not working and Bob, who wrote similar functions for another game is sitting right there. Another type of developer actually likes meetings because he is complete shit at his job and it gives him an excuse not to be expected to do it.

Every other engineer I have ever met either dislikes meetings or actively hates them. The ones you think don’t dislike meetings are just pretending.

We have a 10-minute meeting every morning at 7 Generation Games. People not in the office drop in online. Everyone complains about it but we do it anyway. Why? Because, for example, I can find out that Adekola actually finished the teacher reports for Making Camp Premium before he left and see an example. Then, I can tell the people in marketing to include that in their discussions with schools. I can also tell one of the developers to take that code and modify it for Tribu Matemática , the Spanish version of Making Camp. In 3 minutes, everyone knows what the reports look like, that they are available and who is working on the next one. This leaves seven minutes for José to ask Bob about the sound function.

10X Engineers have irregular hours and work when other people aren’t around

I can’t think of any software developers who work better when other people are around. Writing code for anything complex requires having a mental model in your head of at least the part you are writing and, hopefully, some of the larger project in which it is used.

I’ve worked with a few people who were hit it out of the park better than anyone else. One definitely was a late night person and preferred to get to work when he got there. However, when crunch time came, he could work 8am to 10pm and code all that time if he had to do it. He wasn’t going to like it, though, who would?

On the other hand, about half of the really top engineers I know – both software and hardware – choose to work 9 to 5, even when telecommuting. The main reason they give is that those hours allow them to spend time with their children or spouse. Contrary to popular belief, the 10x engineers I’ve known tended to be married, although they did seem to get married a little older than the average.

10X Engineers know every line of code that has gone into production

This is just nonsense. I remember when SAS was rewritten in C (yes, I am that old) and hearing that it was something like 3,000,000 lines of code. I am assuming the author meant that these 10x engineers know every line of code WRITTEN BY THEM that has gone into production.

I don’t believe that, either, assuming what he means is that they can recall it immediately and say,

“Yes, in that function beginning on line 683, I pause the audio that’s playing, change the source file to the audio for the next scene, change the image file for the image for the next scene, increment the counter by one and restart the audio”.

If what he means is that they kind of recognize it like that person you met at a conference two years ago and are trying to remember their name, I might faintly agree.

We wrote Spirit Lake: The Game in 2012-2014. NO ONE who worked on that game remembers all of the code in it. I can say this because it was all done by me and The Invisible Developer and he is as good as you’ll ever find.

Here is an experience I share with every software engineer I have ever met, including the very best ones. I look at code and think,

“Who wrote this crap? Please don’t let it be me three years ago.”

10x engineers laptop screen background color is typically black (they always change defaults). Their keyboard keys such as i, f, x are usually worn out faster than of a, s, and e (email senders).

They always change the defaults part is true. One thing for sure all of the best engineers I ever met had in common is they like to mess with things. I only knew two people who had black backgrounds – ever. When I have time I’ll have to post about pseudo-10x engineers. Anyway, neither of those guys are anything special unless weirdness is a category.

Most of the best people I know have either pictures of their family or their favorite activity, like soccer or hiking, or a vacation photo as a background. Usually the e key gets worn out first because it is the most common letter in the English language. People usually name directories, datasets and variables something comprehensible.

My kids and one of my kid's dog. What real 10x engineers laptop backgrounds look like
Their laptop backgrounds look like this, except with their own kids, not my kids, because that would be weird

Is there anything true about a 10x engineer?

Since my 10x merit badge hasn’t come in the mail yet, I don’t have time to address all 10 points from the original thread. There were two points he made that were consistent with my experience.

Most really good engineers aren’t really good interviewers

I could only speculate about why that is true, so I will leave it as that is what I’ve observed. Maybe it’s because they are uncomfortable with exaggeration or with being asked to prove their competence.

10x engineers rarely job hunt

I have found this totally to be true and it makes sense. If you have someone that good in your organization and your management is not made up of complete morons, they are doing all they can to hang on to their best people. Usually, unless they work for morons, people that good are hard to hire away, too, because their current company is doing its best to keep them.

How would I find a 10x engineer?

I wouldn’t, because we are a small company and we can’t afford to pay what someone like that is worth. On rare occasions, we have been super lucky to be able to catch someone great for a short term contract that they just wanted to take for personal reasons.

We find good people and we develop them to be at the top of their field. I think the best way to identify a good software developer in an interview is take a look at their code. Ask them to bring something to the interview and explain how they solved particular problems in the code. Ask why they made the choices they did. If it is a project they know well and are proud of, you’ll get a lot of information. If they say, “I don’t know” a lot, that’s a bad sign. I’ve also found that people who typically “don’t interview well” forget about the interview part, focus on the project and become interested in telling you all about it.

Oh , and for all those people on twitter who said, “I wish you all got as exercised about diversity and inclusion as you do about 10x engineers “

Well, I am way ahead of you, sister. I have a lot to say about women in tech and over on our 7 Generation Games blog, too.

One thing I like about our company a lot is none of our developers fit the stereotype of the 10x coder asshole. Don’t get me wrong, we have more than our share of people who are absolutely great at their jobs. What we don’t have is the arrogant attitude of:

What do you mean you don’t know how to integrate 3-D scenes from Unity with web pages? I knew how to do that when I was in the third grade!

First of all, I bet most of those people are liars and if you found their third-grade teacher she would say,

Oh, little Larry? I vaguely remember him. Wasn’t the brightest crayon in the box, now was he?

The fact is that all programmers make mistakes, including really dumb ones. As we get older, we may catch these before we hit the commit or run button, but, then again, maybe not.

Why is this code not working?

data fixdata ;
set fix1;

*** FIXES RECORDS WITH WRONG USERNAME ;
username = trim(username);
if username = "" then delete;
pos = index(username,'-') + 1;
username2 = substr(username,pos);
if upcase(index(username,'test)' > 0 then delete ;

Three mistakes with SAS in the code

I made all three of these mistakes lately (though not all the same day).

The first two SAS will catch for you if you read your log. Also, I cheated you here by not including the color coding that you’ll see in the SAS editor just to make it harder for you.

First of all, I have an unmatched parenthesis.

if upcase(index(username,'test)' ) > 0 then delete ;

This still doesn’t work because I have the closing quote in the wrong place.

if upcase(index(username,'test')) > 0 then delete ;

The hardest errors to find are when your code is running but still wrong

Now my log shows no errors but it’s still not working. I still have more users in the file than I should. The hardest kind of errors to find are logic errors. SAS will usually find the coding ones for you.

What I want to do is delete any usernames that have the word “test” in them, whether written as TEST, Test or test – or any other weird combination people might come up with, like TestAM or TestGarbanzoBeans12.

The problem here is that I used the UPCASE function after I had already searched for the value of “test” in the username. The INDEX function returns a number, which is the position at which the first character of the first occurrence of a string occurs.

NOTE: Numeric values have been converted to character values at the places given by: (Line):(Column). 74:12

Here is what I really need to do

if index(upcase(username),'TEST') > 0 then delete ;

I needed to change a few things. First, I need to put the UPCASE function inside the arguments passed to the INDEX function so that the first thing that happens is that username is set to upper case. Next, I need to change the string it’s matching to “TEST” since I set the username to uppercase. Now, finally, I pass that to an INDEX function and see if the string exists. If so, I delete the record.

This is a relatively simple bug to fix when presented like this. However, when it is hidden in hundreds of lines of code and all I know is that the number of records doesn’t match what I should have, it’s not so obvious, particularly when there are no errors showing in your SAS log. Did the username2 throw you off? Well, imagine hundreds more lines like that.

My points, and I do have more than one …

  1. Everyone makes mistakes, no matter how experienced they are.
  2. A bug fix may seem obvious after you have found it or if it’s been pointed out to you, but buried in hundreds or thousands of lines of code, it’s not so easy. An argument for modular development.
  3. READ THE NOTES! If you are deluded into thinking that if there is nothing in red in your SAS log all is good, get over that notion now.
  4. The enhanced editor is your friend. The incorrect quotation mark you could have picked up in the editor if you noticed that the closing parenthesis was in purple. In this particular case, it wasn’t so obvious because it was only off by one character. However, if you see a whole bunch of purple, meaning it is quoted, or green, for comments, it can be a tip right away that something is off.

One last thing – the SAS Enhanced Editor with color coding – I remember when it was brought up as a new, improved version of SAS and I laughed.

“Really? That’s what you’ve got? Color-coding? I mean, I’m sure it might help someone their first week on the job but we are all professionals here .. ha ha ha.”

Yeah, that was stupid, too. That enhanced editor has helped me catch so many bugs in code as I was writing it!

Random fact about me – I host a podcast

Yes, yes I do. It’s called More than Ordinary. This week’s co-host is Drew Kim who co-founded and runs an esports company with his mom. (Yes, you read that right.) Next week will be the continuation of a discussion of all things judo with Jason Harai of Ippon Dojo, in Washington. Basically, it’s all about having guests who are doing something out of the ordinary.

What are reusable blocks and why do you want to use them?

This can best be explained by an example. Over at 7 Generation Games, we have a new project under way to create organize the hundreds of videos, presentations and activities we’ve developed with our games into a teacher resource site. Most of these fall into one of a few categories. For example, we have 19 math videos from Fish Lake.

Whenever a lot of posts have the exact same structure, you have a use for reusable blocks.

Take a look at this post on the Fractions on a Number Line video.

  1. It has a subheading (h3 tag) with the main point of the video.
  2. This is followed by a short paragraph describing the video, with a background color of light blue.
  3. Next is the video. IMPORTANT – although Gutenberg does allow you to just enter a url and hit return for a video to be shown in a regular post, I found this did NOT work for reusable blocks. When I used embed instead, it worked fine.
  4. After the video is a heading (h2 tag) telling you this video is from an awesome game we make.
  5. Next are two links, one for getting the game for computers,
  6. Another link for the app store for iPads.
  7. Then there is an image from the game and
  8. A short paragraph describing the game.

How to create a reusable block

Select everything you want in the reusable block. In my case, it is all 8 of those blocks listed above. Then, click on the 3 dots at the top of the block menu and in the drop down menu select ADD TO Reusable blocks.

Give it a name, save it and now you have a reusable block.

How to use a reusable block

A reusable block as “copy-and-paste”

You have two options. The first is to just use the block as-is. Say, I just wanted to include an ad in blog posts, or some call to action, like signing up for our newsletter. Then, I could just insert that block like I do any other block – paragraph, image, etc. and this would be pre-populated with the content. Done.

Reusable blocks as templates

The more common option for me is going to be to modify that block, using it as a template. So, I insert the block just like I do any other block. Then, I click on the block I just inserted and select convert to regular block.

Don’t forget to convert to regular block or your edits will be made everywhere you used that block!

Now that I have it converted to a regular block, I can change the first heading, the description and paste in the url for the new video. My post is done. Not only does this save me time, but if I want to hand the task off to someone else, say a new intern, they have a ready-made format.

Another advantage is if I do need to change something everywhere, I can do it with one click. A few years ago, the site we had been using to sell our Mac and Windows games went out of business. It would have been really helpful to have had something like this so that I did not have to go in and change every page where there was a link to the old site.

So, yeah, reusable blocks have converted me to Gutenberg. (Converted , get it? Oh, never mind.)

Fish Lake fractions game with Native American girl stepping on stones across a creek

Like math? You’ll love this game.

Get Fish Lake here for Mac or Windows

or … want Fish Lake for iPad ? Get it in the app store

I cannot believe that it’s been over two months since I’ve written a post. That is the longest I’ve gone in the ten years I have been writing this blog. I read somewhere that the average blog has the lifespan of a fruit fly – after 31 days most people give it up.

That seems to lead to a cottage industry in taking over dormant sites. This site isn’t exactly stagnant even when I am not blogging because people use it for reference.

I started getting emails about “a somewhat embarrassing page”. At first I was aghast that hackers had redirected clients to a porn site.

Fortunately, no, it was just a failed re-direct attempt that ended up breaking a link so you get a 404 page that literally says, “Well, this is somewhat embarrassing.”

The Invisible Developer spent a good bit of time while we were in New York deleting malware from the site. At first, I was feeling very guilty because I thought my cavalier attitude toward security issues with PHP was the reason, but we did clean up most of the problems pointed out in those comments years ago, so that wasn’t the culprit. I should admit here that Paul and Clint were right and I was wrong. Although we have no data of particular value to anyone on this site, hackers are interested in re-directing sites to get links and for other nefarious purposes.

As near as we can tell it was a plugin on another site that was hosted by us that had not been updated in years. We had several more or less abandoned domains of content we had created for clients over the years. They paid us, we created the content for their course or other purpose, and then just left it up. Kind of like all of that stuff you have in your closets that you just shove to the back because you have room.

That’s all cleaned up now. The site, not the closets. Those are still chaos. For all I know, there is an entire new civilization developing in that closet under the stairs. Or maybe Harry Potter lives there.

As for me, I have been teaching two courses during the past 3 months, where I usually only teach one in a year. After landing back in the U.S. in February, I have been criss-crossing the country. Since the beginning of the year, I think I’ve been in 11 cities, 3 states and 2 countries but I may have forgotten a few.

We also released two new games, Fish Lake Adventure , for the iPad, and a new version of AzTech: Meet the Maya, also for the iPad.

Get it in the app store

My lovely daughter, Ronda, headlined this show called Wrestlemania, which is why we were in New York. We have chosen very different careers , my daughters and I. The Perfect Jennifer, or, as she likes to call herself, “the normal one”, is a middle school history teacher, in case you were wondering. The Spoiled One is currently doing a semester abroad in London. She will be back in the U.S. next month and needs a summer internship. Her talents include Instagram, shopping and soccer. If your company doesn’t need any of those skills, she’s also a good writer. Darling Daughter Number One, is 7 Generation Games CEO, she’s also a good writer, having co-authored a New York Times best seller, but she’s not looking for an internship.

So, anyway, I am back, well for a couple of weeks. Next, I head to SAS Global Forum in Texas for a few days to give a couple of presentations on biostatistics and career advice . You’d think my career advice might be to study biostatistics but, maybe not…

Then, I come home for a couple more weeks and am off to a Tech Inclusion conference in Melbourne, Australia. My talk there is going to be, well – different than most – and that’s all I’m going to say about that.

So, now, I’m back to blogging. I have a few things to say about the infinite number of ways people can incorrectly code a repeated measures ANOVA , subdomains and number needed to treat. Between the next game, new website, two conferences and two grant proposals all coming due before June, I’m sure I’ll fit it in there somewhere.

Stop and read this. It may save you whole lot of grief and panic.

Maybe you’ve heard that a stolen iPhone is nothing more than a brick. Perhaps you feel as if your data is safe.

You have a password and it’s not 123456.

You have find my iPhone.

Allow me to burst your bubble by telling you what happened to me and why it could have been WAY worse. Also, turn off Siri right fucking now. If you cannot bear to part with it, turn it off when locked. Go to Settings , then Siri and Search. Turn off answering when locked.

HOW THIEVES ALMOST GOT AWAY WITH EVERYTHING

On Thursday, when I got of the subway I noticed the side of my bag was unzipped. I didn’t see my phone but my credit card and money was still in the pocket so I didn’t think I was robbed. I just figured I’d thrown it in with my computer. When I got home, i emptied my bag and still couldn’t find it. I used find my iPhone and saw it was 7 miles away. So, I put it in lost mode.

Keep this mind, the thieves had my phone for an hour at most before I noticed and locked it.

After I contacted people from my office and made sure I hadn’t left it there,I erased it.

HOW SIRI IS YOUR ENEMY

In the meantime , the thieves had gotten into my yahoo email and my Facebook  page. How did they do that?

Because when you get your phone and you don’t disable this, Siri will answer hi when your phone is locked. Say,

“Siri, what’s my phone number? Siri, what’s my email?”

…. and Siri will tell you.

So, now the thief has your phone, your phone number and your email. TURN OFF SIRI NOW!

I never would have thought the default setup would have such a huge security flaw.

It gets worse.

Now the thief goes to yahoo, enters your email and click “Forgot my password.” They have the reset sent to your phone and then they reset the password .  Guess what? The default is that messages show up on locked iPhones so they get the message and enter a new password. Now, they have your email and your password and your phone.

Next, they go to Facebook and log in using that email. They say that they have lost the password and have the password reset code sent to your iPhone or email they have stolen.

Now the thief has your email, Facebook, phone and phone number.

By this time, it had maybe been a few hours, I had figured out what they were doing ERASED  my iPhone using the Find my iPhone app, deleted the yahoo email from my Facebook and changed the phone number on my yahoo account .

WATCH OUT FOR PHISHING EMAILS CLAIMING TO HAVE YOUR PHONE

This is where disaster really could have happened. So, I’m back in the office on Friday trying to do a million things plus reset my password on everything , handle things that come up every day with two companies in two countries and in one of my company accounts I get a message from “Find my iPhone “ . It looks legit . It says we’ve found your iPhone. It gives the model of iPhone , storage , how would a thief know that ? If you think about it , duh, they have my iPhone . But I’m thinking someone jacking iPhones on the subway certainly doesn’t have the skills to create something  this professional. So, I click on it.  Nothing happens. Thank God for my internet provider that strips out malicious code .

What this was supposed to have done was take me to a page that asked for my Apple ID and password to prove I was me. I might have done it,too. I’m staying with my ISP for life now.

After I switched phones,I got the same message in a text to my new phone number. I can only guess that either a) they were still logged in when I changed it or b) they searched for me on Google.

!!!!! These were not some gifted thieves. There are actually SERVICES that do this for them ! Want to get the Apple ID  and password of a person whose phone you’ve stolen? Send them all of the info you have and they will create the rack email and text messages !

 

EVEN IF YOUR PHONE IS DISABLED,THEY STILL HAVE YOUR SIM CARD

They can (and did) swap that into another phone. When I thought of it two days later,Dennis disabled the account with ATT and he got a message that it was now disabled on a Huawei phone which is not sold in the US but very popular in Chile .

HERE IS WHAT I DID WRONG BEFORE MY PHONE WAS STOLEN

Obviously the Apple default is a huge security flaw. I should have disabled Siri as I never use it and also disabled messages showing on lock mode.

Ironically, I had the yahoo account on my Facebook account thinking it gave me EXTRA security. I hadn’t really used that account in years .

It was possible to reset my yahoo account from a phone, so if someone had my phone they could get access to my email.

HERE IS WHAT I DID RIGHT

I had a second email account that could NOT be reset from a phone. I used that to lock the thief out before they thought of removing it.

When I changed the password and phone associated with my email and Facebook I picked “Log me out of other devices” so if they were logged in somewhere else they couldn’t just change it back.

My phone does not allow purchases so even when someone had my SIM card they could not use it to buy anything. We turned this off with ATT years ago.

None of my bank information is written down anywhere ,  not passwords, accounts,  SSN, nothing . I memorized them. Logins for things like that Software I bought five years ago and the license are written down , or for that stupid forum on blogs. These are not used for anything important .

Any information that might be important is recorded like this:

Password- same as for that computer we used to have in the living room

Had an Internet service provider that stripped out the script on the phishing email and saved me from a huge mistake.

Called ATT to block the number so no one else could use the SIM card

My social media accounts are not connected. Getting into my Facebook doesn’t allow you access to my Instagram, Twitter or anything else. Whenever Facebook asks to connect to anything I say No.

There is very little information in my social media profiles and some of what has been put there automated by Facebook is wrong. So,if anyone was hoping to use the information they got for identity theft they are out of luck .

WHAT SHOULD YOU DO NOW?

At the very least , this second, disable Siri when locked and turn off notifications when locked.

Turn off purchases from your phone.

Turn off resetting your password from a phone .

Disconnect social media accounts form each other so if someone has one account they don’t have all of them.

And for the love of God quit believing that bullshit that stolen iPhone is no more than a brick!

red line

Support my day job!

Wigwams at sunsey

Learn Native American history, math and English all at the same time. You can play it on your iPad, the web or on your phone (if it isn’t stolen).

 

According to that source of all knowledge on the interwebz, Wikipedia,  “Gaslighting is a form of psychological manipulation that seeks to sow seeds of doubt in a targeted individual or in members of a targeted group, making them question their own memory, perception, and sanity.”

Have you ever had a brilliant, super-competent friend who doubted her own competence?

I’ve often seen this happen to women in technical jobs, and it’s happened to me. Here’s what happens. You work with a man or a couple of men. (In theory it could be women, or men could do this to other men but I personally have only seen men do this, and usually to women). No one knows everything (duh!). You are an expert in Python, Ruby, JavaScript, PHP and Objective C. You’ve developed some pretty cool iOS apps, been part of some successful teams.  Bob suggests that the team really needs an Android app, but, 

You don’t know Java, do you, Joan?

You suddenly realize,

“Oh, my God, I don’t! How did I miss learning Java?”

Part of gaslighting is “using what’s important to you as ammunition”. If you’re a woman who has been in software development, mathematics, statistics or science for a long time,  it’s no doubt important to you and you’ve overcome a lot to stick it out and get where you are.  It’s important to you to be competent and knowledgeable and having someone question that is disconcerting. 

Gaslighters wear you down. It’s the death of a thousand cuts. Bob will insist that the prototype of the next app has to be built for Android because it’s the largest market share, “Of course, that leaves you out of the prototype build  because we need experienced Java developers.” “I’ll bet you’ve never used Android Studio.”

Gaslighters are also experts at reframing things, so much so that you don’t think of the fact that the last five prototypes were done for iOS and there was no problem porting to Android.

Gaslighters can also be good at getting other people to go along with them. If Bob repeatedly tells Sam that Joan isn’t a good fit for this project because we really need an Android developer for this prototype and Joan has no expertise in that area, “she mostly just does testing on iPhones”, Sam may believe him, after all, she’s admitted she has no expertise with Java. So, Sam is not going to consult with Joan on any technical issues, which wears Joan down even further. 

I agree with Stephanie Sarkis that some gaslighters may do this unintentionally and subconsciously. They are, in my experience, trying to make up for feelings of inferiority by making themselves look better by comparison and getting other people to depend on them. 

It doesn’t matter whether it is deliberate or not. The effects are insidious.

I used to think, “Suck it up, buttercup. If some clowns don’t think you have the technical chops, prove them wrong.”

I still think that to some extent, but I can see that it can be really difficult if you are constantly pricked with an endless series of whispering questions of your competence, both behind your back and to your face. It’s exhausting to always be trying to prove your abilities in the areas where you are knowledgable at the same time explaining that no, you have never used (insert any language here because no one has used all of them). I’ve seen women who really enjoyed coding move into marketing or project management giving the reason, 

It just wasn’t fun any more.

You may already be the solution.

Three of us, mutual friends, were at lunch one day and one woman mentioned she had been offered a terrific job but it was for “an expert in the field’ and she didn’t consider herself an expert. Her other friend and I immediately interrupted her,

What? Are you nuts? You are the very definition of an expert!

Then, we proceeded to list all of her amazing accomplishments because she really is incredible. 

Stick with people who see you in the best possible light

I have a great advantage in protection against gaslighters in that I married the right person. Recently, we were drinking beer with a friend who referred to me as “testing the games” and The Invisible Developer corrected, 

She doesn’t just test the games. She makes them, too.

It’s not often someone questions my technical ability around my husband, but when it does happen, he speaks up for me 100% of the time. That’s a big deal because he is not at all one to draw attention to himself. He’s not called the Invisible Developer for nothing. 

It’s not just him. I’m super fortunate to have a group of friends and colleagues who are really supportive and collaborative people who always have my back. 

If you are the problem, you have a problem

Maybe you are scoffing dismissively at this point that if Joan was any good none of this would have bothered her. You are making a snide comment over your cubicle that real developers don’t need anyone to tell them they’re good. People often feel uncomfortable around gaslighters, even if they can’t give a reason. They are right, too, because once Joan leaves, you’ll need someone else to disparage to make yourself feel superior, maybe Sam.

If Sam has a choice of his next project, it’s probably not going to be one with you. If he does get stuck working with you, after all of your comments about Joan, Sam is going to expect that you are God’s gift to Android development, that, in fact, your middle name is Java and the language was named after you. Imagine his response when you turn out to be nothing special.

What I’ve seen happen to the gaslighters eventually is that no one wants to work with them. Even though Bob thinks he’s a 10X software developer, for some reason no one wants him on their team. He tells himself it’s because they’re jealous. 

In the meantime, though, Joan is now managing the marketing department.

Don’t end up like Joan

Years ago, on the More than Ordinary podcast, I had my lovely daughter , Julia, as a guest to talk about what it’s like in boarding school. After saying, that “First of all, it’s nothing like Hogwarts … ” she went on to add

No matter where you are, you can find people to study with, to help support you to reach your goals. And, if not, well, just be that person for yourself.

So, if you find yourself being questioned so much that you start questioning yourself, try finding friends and colleagues who support you and remind you of your awesomeness. If for some reason that’s not an option, I suggest this. Remind yourself. Sit down and write down all of your accomplishments. Then, next time Bob questions you tell him, 

“Shut up you little prick. I’ve done amazing things, and I’m going to be here long after you’re gone.”

Okay, well, maybe you shouldn’t say that out loud at work, but if you do, I won’t blame you. 

In my day job, I make educational games, like this one where a Mayan god thing drags you into the past. Yes, it teaches math.

Mayan guy
Aztech Games: Not made with Java – yet – but that’s just a coincidence

I’ll be honest, I didn’t even know what a Quora session was until someone asked me to do one. Today, as a public service, I will tell you how you can ask me questions on Quora, what a Quora session is and what is Quora. I’ll start in what is probably the order of usefulness.

What is Quora?

Quora is a question and answer site. You can select areas of interest to show up in your feed. For example, I’m interested in international travel, education, JavaScript, SAS software, parenting and statistics, to name a few. You can also follow specific people who interest you. Some people call Quora a combination of Twitter, Facebook and reddit. I think that’s a good description.

What is a Quora Session?

It’s very similar to a reddit AMA (Ask Me Anything). If you don’t know what an AMA is, that doesn’t help, does it? Basically, a person volunteers or is asked to host a session and answer questions on his or her area of expertise. People can post questions once the session is announced and then the session host sits down and answers whichever have the most upvotes/requests/ personal interest. It just gives you a little more probability of having that person answer your specific questions. Some people are on Quora all of the time  – I notice Peter Flom has answered over 1,700 questions. I have answered 49 (I’m a slacker). Those answers  have been viewed over 400,000 times. (Hmm.) Mark Cuban has gotten three times as many as me because he is presumably way cooler (also richer). You may not get a person to answer your question, especially someone who doesn’t answer a lot. I read a lot more of other people’s answers rather than write my own and I have never posted a question on Quora. I’m just busy.  For example, I’m writing this in the Minneapolis airport and have to run to catch a plane in a minute.

How can you ask me questions on Quora?

Well, you can ask any time but I don’t often answer because, see previous paragraph. However, I am hosting a session this week. Check it out. I’m taking questions on parenting, startups, work-life balance, judo. I assume you have to join Quora to ask a question, but joining is free, quick and easy. I’d recommend joining. You’ll learn stuff and there are far fewer jerks and trolls than on Twitter. I don’t know how they police it, but I’ve noticed a much higher level of discussion and fewer insults and ignorant comments.

Okay, now I really have to run catch that plane.

Next Page →