cake

I’ve spent a good bit of my life living and working in places that many of my colleagues would not drive through in the middle of the day with the windows rolled up and the car doors locked, so you’ll have to excuse me if I am a bit cynical about the latest push to teach everyone to code.

I’m not opposed to coding, in fact, I am greatly in favor of it. It is tied with drinking Chardonnay for favorite activity for which you do not have to get naked.  I was an industrial engineer in 1982 – so I was into STEM before STEM was even a thing.

What makes me roll my eyes and sigh is where many well-meaning people have completely missed the mark when they say that you don’t really need to know much math to write software. Clearly, they can’t mean all kinds of software because obviously if you write software to do statistical analysis, predictive analytics or whatever the phrase du jour is, you very much need math.

Often, these people are talking about games -

“Kids play games, let’s have them make them.”

That doesn’t necessarily follow any more than,

“I have a liver. I should create a dialysis machine.”

Ignoring the faulty logic for a minute, let me point out that most games DO require math. The people saying they don’t are usually people who are quite successful, both professionally and academically and have spent their entire lives around people much like them. What they mean when they say that, “Games don’t require much math” is

“I took three semesters of Calculus and a course in multivariate statistics and I rarely use any of that in making games.”

I, on the other hand, meet many people who can’t multiply two-digit numbers without a calculator and have never given a thought to the concepts of randomization, ceiling, floor or rounding. The vast majority of these people are perfectly intelligent enough to learn those things if ever given the motivation, time and instruction.

Here are a few lines from a super-simple game, “Canoe World”,  I wrote in the past two days. It’s a very common application. You can find it in the Game Design book by Rex van der Spuy and hundreds of other places. You randomly decide who is stronger, the player or “enemy”, one wins the exchange and points change  - a pretty standard game component.

function sink(thing) {
// The player’s strength ;
var playerStrength = Math.ceil((food+ health)/2) ;
var rockStrength = Math.ceil(Math.random()* playerStrength*2) ;
// Find out if the player strength is greater than the rock strength ;
if (rockStrength > playerStrength){
// The rock sinks the canoe ;
var lostFish = Math.round(rockStrength/2) ;
food -= lostFish ;
// Player gains experience ;
experience += 1 ;

 

To compute the player’s strength, I take the average of their food and health points, and round that up. That’s the ceiling function. To understand this, you must have some idea of order of operations – things in parentheses get done first – to understand that first I’m adding the two values and then dividing by 2.

You need to know that having that slash and then a number means to divide by a number.

That is math and not everyone knows it.

A ceiling function rounds up – and to understand that, you need to understand the concept of rounding.

To understand the second statement, you need to know what a random number is, that the * means to multiply. You also need to know that the random function generates a random number between 0 and 1 and realize that is a continuous distribution because there are an infinite number of numbers between 0 and 1.

That is math and not everyone knows that.

You’d have to realize that since the random number function is between 0 and 1, if you just multiply that number by the player strength it is ALWAYS going to be less or equal and the “enemy” will never win. Since, on the average, the random number will be .5, if you multiply by 2, that makes it equally likely the player or enemy will win and gives you a game of chance.

To change the probability of the player winning the exchange, you can make that number larger or smaller.

You need to know that the > means that the thing on the left is greater than the thing on the right.

All of that is math and not everyone knows it.

The people who want to teach kids to code assume that either,

a. Everyone knows this much math – in which case they are OH, SO WRONG!   or …

b. That they will work with the minority of students who do.

There is absolutely nothing wrong with option B. I wish you the best of luck with all my heart and will do whatever I can to help.

Most of what I can do to help is make games to teach math, so that more kids will fit with option B.

There is an option C, which intrigues me, and I have heard very few people discuss, which is to teach the math along with coding. That is certainly not impossible - but it would be hard – you would need students very motivated to put in the time and effort and teachers who were able to step back and start at whatever level of math competency required by an individual student.

This whole thing reminds me yet again of the comment made by Dr. Irv Balow, Dean of the UC Riverside School of Education. Frustrated by reading so much research that said under some conditions class size had an effect, under other conditions, not so much, for some students cooperative learning was a benefit, for others it was detrimental, etc. etc. etc. , a student asked,

“Isn’t there anything in education or psychology we know as absolute, unqualified fact?”

After some reflection, Dr. Balow replied, that the only thing he could be absolutely sure of was this :

“All of the simple answers are wrong.”

During the time since I started this series of posts on a little thing I knocked out one evening to illustrate long division, I’ve probably done a dozen other somewhat interesting pieces of code – I am sad that Java has co-opted the use of the word codelet because it is such a nice term for a bit of programming that is more than a function but not a real application. Anybody has a good word, let me know. While we’re on the subject of words, what exactly is the difference in Dreamweaver between an extension and a widget?

Anyway …. our games include hundreds of bits like this, where if a student misses a problem, he or she gets routed to a page to pick an option to study.

So … here is the rest of the story. Yes, it could have been done more beautifully, and when I go back and revise it, I think I will change the answer button instead of having two buttons to have one that is changed after the first onClick.

The DOCTYPE (html5) and title are pretty obvious.

All of our web pages have a container ID that is set in the style sheet. That makes all of the content fall within a defined window size, regardless of the screen size.

The w class is just so the background is white in the spot where the problem is. The Invisible Developer wanted some type of background and he liked the specky one.

You might wonder why something like w is a class instead of an ID if it is only used once. In fact, I simplified this example for the blog. Actually the w class is in an external style sheet so their could be pages with more than one element using this same style.

As a commenter on an earlier post pointed out (thank you!) it would really be better practice to give these more descriptive names like white_back because in the future I’ll probably be looking at this page and wondering what the hell ‘w’ was supposed to do. Of course, I can look in the style sheet, but it still is better to name things something descriptive.

You can see that the input field for the second digit of the answer is hidden, as is the button for getting another problem.

The forms have an ANSWER button because we found that students in this age group (9- 12 years) often type something by accident or as their first impulse. This forces them to think, at least for a second, whether or not they really meant that and gives them a chance to change  their mind. We added this at the request of several teachers after our first year of beta testing.

The table width is set at 40% and since the container width is defined, the table will always be the same size.
The q class (again, should be renamed and shame on me), has a border at the bottom of the cell. That is used to give the top part of the division problem and used again when each digit of the quotient is found and multiplied by the divisor. The product is then put in a cell with a line underneath.

The first input field is where the first digit of the quotient will be entered. Onclick this will be hidden and the correct answer shown in the element yans1. If the student had entered an incorrect answer, they’ll also get a message telling him or her it is an incorrect answer. All of this is handled by the javascript.

For the remaining rows of the table – the left cell is underneath the divisor, so it will remain empty. The right cell will have each step in the division problem entered, as the student enters the first digit and then the second.  Again, this is handled by the javascript, all I need to do is make sure the id values for each cell match what is in the script.

Once the problem is finished, the div with the id fin will be shown, as will the button for trying another problem. The student now can select one of three choices:

Get another problem (button3), go back and select another option for studying division, or take a quiz to go back to the game. Five correct answers and he or she can go back to playing Spirit Lake.

<!DOCTYPE html>

<html>
<head>
<title>Practice division</title>

</head>

<body >
<div id=”container”>
<div class=”w”>

<h3>PRACTICE LONG DIVISION</h3>
<p></p>
<h3 id=”hd1″> Enter the FIRST digit in the answer</h3>
<h3 id=”hd2″ class=”hidden”> Enter the SECOND digit in the answer</h3>
<input type=”button” class =”hidden” value=”ANOTHER PROBLEM” size=”5″ name=”button3″ id=”button3″ onclick=”window.location.reload()”>
<p></p>

<p></p>
<form name=”formx” id=”formx” >

<input type=”button” value=”ANSWER” name=”button1″ id=”button1″ size=”5″ onClick=”checkProb(1)”>
<input type=”button” value=”ANSWER” size=”5″ name=”button2″ id=”button2″ class=”hidden” onClick=”checkProb(2)”>
<table width=”40%” border=”0″ cellpadding=”0″ >
<tr>
<td width=”20%” >&nbsp;</td>
<td width=”20%” class=”q” ><input type=”text” name=”ans1″ id=”ans1″ size=”3″><scan id=”yans1″ class=”hidden”></scan>
<input type=”text” name=”ans2″ id=”ans2″ size=”3″ class=”hidden”><scan id=”yans2″ class=”hidden”></scan></td>
</tr>
<tr >
<td ></td>

<td></td>
</tr>
<tr>
<td id=”c” ></td>

<td id= “divide”>&nbsp;</td>
</tr>
<tr>
<td ></td>

<td id= “d”class=”d” >&nbsp;</td>
</tr>
<tr>
<td ></td>

<td id= “e” >&nbsp;</td>
</tr>
<tr>
<td ></td>

<td id= “f” class=”d”>&nbsp;</td>
</tr>
</table>

</form>
<div id=”fin” class=”hidden”>

<p></p>
<a href=”../learndividelong.html”><img src=”../scenephotos/arrowhead_point_left.gif” width=”130″ height=”70″ alt=”back arrow” />
Go back to study more</a>
<img src=”../scenephotos/smalls/handblue.jpg” alt=”blue hand” /> <img src=”../scenephotos/smalls/handyellow.jpg” alt=”yellow hand” />
<a href=”../quizzes/dividelongerquiz.html”>Take a quiz to go back to the game<img src=”../scenephotos/arrowhead_point_right.gif” alt=”next arrow” /></a></div></td>
<p></p>
</div>
</div>
</body>
</html>

 

Yesterday I posted the code to get the problem, now here is where we check it. As I said yesterday, may way of programming is to knock out something that works and then go back and make it work better, like a first draft for a journal article. So, this is my first draft.

Keep in mind the point here is NOT a quiz but for them to review and see how long division works. So, if they get the wrong answer, they get an alert message that this is the wrong answer, but then the correct answer is shown. This happens for both the first and second digit of the quotient.  There are two digits in the quotient in these problems. We are trying to show students that when you do long division, you find the first digit, multiply that by the divisor, write the product below the dividend and subtract. Then, you do the same thing again for the next digit.

Also, I showed using alert here, but we actually use a function we wrote in our game because there are problems with using multiple alert boxes in the same page with Unity. The alert is included here for generalizability. This post is the second half of the javascript. You also need a bit of css and html that I’ll put up next.

You can see the final product here.

This is one of hundreds of applets we have written that are just auxiliary to the main game. You get sent here to study if you miss one of the math challenges in Spirit Lake: The Game.

Here is what this code does in order …

When they type in an answer, it is one digit at a time. The function checkProb, if it is the 1st digit,  hides the input box and answer button for the first digit and shows the correct answer. It also shows the input box and button to answer the second digit. The correct first digit is shown.

The product of the divisor and that first digit is computed, set to a value for a new variable d1, and that is shown.

The result is subtract from the dividend, and that result, e1 is shown but with a space included so the digits are lined up correctly.

If their answer is wrong, a message is shown telling them it is wrong and what the correct answer is. Actually, that message comes up first so once they click OK they can see the correct answer, product, etc.

Then, they enter the second digit and all of the steps execute again. After they have done a complete problem, the instructions on how to complete the problem are hidden and two new options are shown, to either get a new problem or go back to the game.

function checkProb(num){
this.num = num ;
if (this.num == 1)
{
var theirs = document.formx.ans1.value ;

$(“#ans1″).hide() ;
$(“#hd1″).hide() ;
$(“#button1″).hide() ;
$(“#hd2″).show() ;
$(“#ans2″).show() ;
$(“#button2″).show() ;
document.getElementById(“yans1″).innerHTML = rightans1 ;
$(“#yans1″).show() ;
var d1 = rightans1*divisor *10 ;
var e1 = dividend – d1 ;
document.getElementById(“d”).innerHTML = d1 ;
$(“#d”).show() ;
document.getElementById(“e”).innerHTML = ‘&nbsp;’ +e1 ;
if (theirs != rightans1){
alert(“Sorry,the correct answer is ” + rightans1) ;
}

}
else if (this.num ==2)
{
var theirs = document.formx.ans2.value ;
var d2 = rightans2*divisor ;
document.getElementById(“yans2″).innerHTML = rightans2 ;
document.getElementById(“f”).innerHTML = d2 ;
$(“#f”).show() ;
$(“#ans2″).hide() ;
$(“#yans2″).show() ;
$(“#fin2″).hide() ;
$(“#fin”).show() ;
$(“h3″).hide() ;
$(“#button3″).show() ;
$(“#button2″).hide() ;
if (theirs != rightans2){
alert(“Sorry,the correct answer is ” + rightans2) ;
}

}
}
</script>

You’d think it would be easy to find source code for a simple applet to demonstrate long division with a one-digit divisor and two-digit quotient. I wanted it to show the steps in long division, with the product for the first digit in the quotient shown, then that subtracted from the dividend, and the next digit in the quotient shown.

I had one in Flash I wanted to replace and I found all kinds of applets but none with the source code, so, here, as a public service, is what I did this evening while drinking beer.

You can see the end product here 

In case you are dying to know, here is how I write a program, regardless of the language:

  1. Get something to work
  2. Clean it up to make it better

To me, trying to get your code perfect on the first try is like expecting your first draft of an article to be perfect. I find it much easier to dash something off and then go back and rewrite. I know not everyone does it that way but it works for me.

I’m going to use jquery so let’s start with that

<script type=”text/javascript” src=”../javascript/jquery-1.11.0.min.js”></script>
<script type=”text/javascript” src=”../javascript/jquery-ui.min.js”></script>

<script type=”text/javascript”>

<! — First you need a random number function –>

function randnum(min,max)   {
var num=Math.round(Math.random()*(max-min))+min;
return num;
}

// Set up to get a new problem when the window loads. Create variables ;

window.onload = getProb ;
var rightans1 ;
var rightans2 ;
var dividend ;
var quotient ;
var divisor ;

 

function getProb()
{

quotient=randnum(10,100);
divisor=randnum(1,9) ;
document.getElementById(“ans1″).value = “” ;
document.getElementById(“ans2″).value = “” ;
document.getElementById(“yans1″).innerHTML = “” ;
document.getElementById(“yans2″).innerHTML = “” ;
dividend = quotient *divisor ;
divisor=dividend / quotient;
var w = quotient + “” ;
rightans1 = w.substring(0,1) ;
rightans2 = w.substr(1,1) ;
document.getElementById(“c”).innerHTML = divisor ;
document.getElementById(“divide”).innerHTML = dividend ;

}

Function above creates a problem with a quotient between 10 and 100 ;

The divisor will be between 1 and 9  ;

The quotient will be between 10 and 100 ;

I set the values in the form all to empty so that when a student reloads the page and gets a new problem the answer from the previous problem is not still there.

I made the dividend equal the quotient times the divisor to make sure that the divisor went into the dividend evenly with no remainder. I made a  local string variable, w, and then created two variables that were the first and second characters of that variable.

The final two lines in this statement write the problem to the page.

 

— Checking the problem is step 2.  Since I don’t like horrendously long blog posts, I’ll put that up tomorrow.

Tom Peters has written quite a bit about the huge market opportunities in providing goods and services designed for two populations – women and old geezers.

I thought of this today as, for the thousandth time, I went through the pre-check line only to have my titanium knee set off the security alarm and get patted down. X-ray scanners are in limited supply while people who have had joint replacements are an increasing number. Why isn’t anyone addressing this opportunity?

Another uncool, overlooked market is rural communities. I just spent two weeks in North Dakota and one of the first things I did when I got home was have someone order 100 USB drives with our logo so that we could put the game on it and mail it to schools. In many places where I travel, it can take an hour to download 1 GB. If the connection drops in the middle, you may need to start over. While I can download both of our games in under 2 minutes in our office in Santa Monica, in some of the places I visit, that can take all morning.

I have yet to show our game to teachers who were not enthusiastic about it. Even when we have technical difficulties – and we do, because we are just getting out of beta May 1st – they are willing to work with us to get them fixed.

When Maria was at a tech event in New York City, a venture capitalist in one of the panels told her point blank ,

No one is interested in Indians.

You know where people are interested in Indians? On the reservations, in school districts with large Native American populations.

Angie at powwow

 

Often, people tell me,

“The education space is overcrowded”

This makes me laugh. The education space is overcrowded with multiple-guess games and shooting games – you know, shooting and spelling, shooting and multiplication, click on the rocket ship with the number that equals 3 x 5 . Have you ever watched children play these games? Often they just randomly click as fast as they can on as many ships or bananas or whatever it is.

So far, we have spent over $350,000 and a year and a half developing 7 Generation Games.  Not all of that has been everyone working full time on just the game. I would estimate we’ve had the equivalent of 2.5 full-time people for a year. We have almost 18 months remaining on our Phase II grant during which there will be at least 3 people working full time.

Today, I’m analyzing the quiz data that comes in daily to see where students are failing in the game. This pretty much validates what we have seen in four weeks of observations at our beta sites this spring semester.

When I read a year or so ago about a 13-year-old who put together in a weekend some app that was selling really well on the app store, I laughed. If you are selling something that a 13-year-old can knock together in three days with an SDK his mom bought him and a book from the public library, then your market is going to be pretty damn crowded.

If it requires actual data to document that it really is educational, you apply that data to track problems both with users and your program, you create dialogue, story line, artwork –  then I don’t think your market is going to be so crowded.

If you want to see what we are up to, you can download Spirit Lake: The Game here for 9.99

If you don’t want to shell out ten bucks (cheapskate!) you can check out the pretest we are working on for our second game, Fish Lake, here, just to see some of the type of data we collect to decide if the game is working. Note, this is a work in progress that will be ready for schools in the fall semester.

 

 

So, this is day 13 of the 20 day blogging challenge, and I skipped over day 12 (although I may go back to it). The prompt was

“Tell about a favorite book to share or teach. Provide at least one example of an extension or cross-curricular lesson.”

My favorite resource is not actually a book, it is a magazine, Mathematics Teaching in the Middle School, published by the National Council of Teachers of Mathematics. One of my favorite parts of the magazine is the Palette of Problems section, which is a bit odd because often I find myself thinking … this problem has no point, for example,

“How many birth dates in a century have the property that the sum of the month and the day equal the value of the last two digits of the birth year?”

I do realize that some students will be interested just in the challenge of solving a problem. However, for many students, the apparent lack of application can be very de-motivating. Most of the problems, though, can be adopted to our games with really simple modifications or may just give me ideas for a problem that would fit right in. For example, this is an extension of a problem in this month’s issue

 

catfish

Zoongey Gniw is looking for a wife.  He is from the Catfish clan and people from the same clan are not allowed to marry. His uncles are going to trade with two different bands. In the first band, 12% are from the Marten clan, 20% from the Crane clan, 64% from the Bear and Loon clans and the rest from the Catfish clan. His other uncle is going to trade with a band where 11% are from the Catfish clan. It is going to be a hard decision which uncle to accompany, says his father.

Not at all, says Zoongey Gniw, and he steps over to the first uncle. How did he decide?

This fits perfectly in our game. There is a video clip on clans, narrated by the inimitable Debbie Gourneau from Turtle Mountain. The prohibition on marrying within clans is historically accurate. As far as the interest of our students today, not only are many of them from tribes that have  the clan system described, but they are also, like most middle school students, interested in the opposite sex, having a boyfriend or girlfriend, so the topic is inherently interesting.

I like this magazine, and I call it that deliberately, rather than an academic journal. All of the journals I read and nearly all of the academic texts talk in theory about what needs to be done and why but not nearly enough on how to effectively do it, whether the topic is teaching mathematics or running a company. Mathematics Teaching in the Middle School is all about how to do things.

When I was in graduate school, it was common for professors to mock teachers who “aren’t interested in anything longer-range or deeper than what am I going to do on Monday.”

That’s the attitude you have the luxury of having if you don’t have to actually show up and teach on Monday.

The Invisible Developer had commented that I write an awful lot about SAS and maybe I should write about some other language. For Christmas last year, someone gave me an impact.js license so I made a little game where players drop snares to catch rabbits and collect berries. This doesn’t have much educational value,  I was just playing around. I thought it would be amusing to have the food items they collect in the game be equal in value to the number of calories in that item.

If you have impact and wanted to do this yourself, here is what you would do.

1. Basic stuff - include game.entities.berry, game.entities.rabbit and any other food item in your main.js script. It goes right at the beginning with any other entities you require

 

ig.module(
‘game.main’
)
.requires(
‘game.entities.berry’,
‘game.entities.rabbit’,

– more stuff –

)

2. Create the score in your game info function that stores information

GameInfo = new function(){
this.food = 0;
— other stuff you want to initialize
}

 

3. When you extend the game to add your own cool stuff include an addFood function

MyGame = ig.Game.extend({

– init and other functions

addFood: function(amt){
//pickup item
GameInfo.food += amt; //add caloric value to the food score
}
,

– draw and other functions

 

4. To each entity script, add a function that defines how the player gets the food. Here are two examples.

Collecting berries

In the case of the berries, the player will just walk by the bushes and collect the berries. Think Pac Man!

In your berry.js file add a check function like this

EntityBerry = ig.Entity.extend({

— other stuff

check: function(other){
if (other.name == “player”){
ig.game.addFood(5);
this.kill();
}}
})

So …. it is about 5 calories per berry. When the player walks by a bush and comes into contact with a berry (picks the berry), the berry disappears and the player’s food count goes up by 5.

Snaring rabbits

Here is a second example. In this one, they drop snares around the virtual woods and when they snare a rabbit they get 1,000 points which is the approximate calorie content of a dressed rabbit, according to the USDA Nutrient database . I assumed this yielded an average of 2 pounds of meat.

For my rabbit I have extended the rabbit.js script as follows

EntityRabbit = ig.Entity.extend({

— other stuff

kill: function(other){
ig.game.addFood(1000);
this.parent();
}
})

But what is going to kill my rabbits? The snares, of course, so I added this into my snare.js script

EntitySnare = ig.Entity.extend({

— other stuff

check: function(other){
if (other.name == “rabbit”){
other.receiveDamage(100,this) ;
ig.game.addFood(1000);

}}
})

Since the rabbit only has 100 health points, that kills it off so your rabbit disappears and your food value goes up by 1,000.

As you can see, you could easily add shooting deer, buffalo and other food in the same way.

——————————————–

After I had played around with this for a bit, I thought it was a waste to just trash it so I put it into our upcoming game, Fish Lake, in between levels. When they finish Level 3, they play this game and then go on to Level 4. Our main game is 3-d, this is just a little interlude. I like to throw surprises into the game so kids like it and keep playing.

—————————————-

Someone in Los Angeles was very upset by our Spirit Lake game where players shoot wolves and buffalo. She said she just could not kill animals. (The Invisible Developer asked me if she was aware that they were virtual animals and not real.) I told her that our games are based on Native American history and history is what happened, not what you think should have happened or wanted to happen. In fact, there is a very touching story in Fish Lake narrated by Debbie Gourneau of the Turtle Mountain reservation on how many people died of starvation and how many more would have died were it not for the jackrabbits.

——————————

buffalo in the snowClick here to get Spirit Lake: The Game for $9.99

 

P. S. The amount of information produced by USDA is nothing short of amazing, and I don’t say that just because they funded are grant. They really are incredible.

 

 

Yesterday, I did the Happy Dance in my office when we finished version 2.2 of Spirit Lake.

I said that despite taking me away from virtually every other interest in my life, being obsessed with a start-up is worth it.

WHY?

In thinking it over today, I realized that 7 Generation Games meets every possible desire I could have

Julia16Mental – making a game truly challenges me both intellectually and creatively every day. It began with creating, with my partners, a vision of a virtual world – what would the people look like, the scenery, what would they do? How would this dovetail with math? How can we make it interesting enough that children keep playing it? On top of all of these questions is how to write the code to get it to run, record data and for all of the parts – database, 2D program, web input forms, 3D programs – to work together. There really isn’t anything more satisfying in life than seeing something that started out existing only in my brain becoming real. It’s exactly like being a parent except that 16 years from now the games won’t tell me I’m ruining their life by refusing to sign them up for a club soccer team.

Emotional – there is the good part of the emotion of working on 7 Generation Games. We are sincerely striving to make it easier for more kids to learn math. When our games succeed, students improve their chances of passing grades, graduating from high school and going on to college because math is a hierarchical subject. If you don’t understand division, you aren’t going to get fractions. If you don’t understand ratios you’ll fail geometry and statistics. They also learn Native American history, pick up some words in native languages and even increase their vocabulary in English. There is also the elimination of the negative part of working many other places. I can make my own hours and since I am allergic to mornings, I can get up at 10 a.m. Because I telecommute, I almost never have to drive in LA traffic. I seldom have to wear a suit. I work only with really smart, motivated, interesting people. The teachers who use our games and provide us feedback are a delight because they are the ones who are on the forefront trying new things, and not shy about giving their ideas for improvement.

Physical – if we’re going on Maslow’s hierarchy of needs, this is the basic ones, food, shelter, heat, etc. While our Chief Marketing Officer joined up because she expects us to make a lot of money, and I’m not averse to that, we do make enough to cover the bills. We’re not yet making what we would be if we had taken corporate job offers, but it covers private school for The Spoiled One, trips to see Darling Daughter Number Three continue to dominate the world in mixed martial arts, wedding expenses for The Perfect Jennifer and visits to The Even More Perfect Grandchildren. My goal is to be like Bill Gates, both in making software a billion people use and in giving away a billion dollars.

Today I worked on making a game more fun for kids. Tomorrow, I will work on putting in new ideas, new challenges for helping kids learn more. Yes, I actually get to do this for a living as a grown-up. How awesome is that?

Buy our game. It’s awesome. Best $9.99 you’ll spend today.

7 Generation Games Logo

Really useful advice for start-ups on How Not to Die from Paul Graham emphasized

 The number one thing not to do is other things. If you find yourself saying a sentence that ends with “but we’re going to keep working on the startup,” you are in big trouble…. We’re taking on some consulting projects, but we’re going to keep working on the startup. You may as well just translate these to “we’re giving up on the startup, but we’re not willing to admit that to ourselves,” because that’s what it means most of the time. A startup is so hard that working on it can’t be preceded by “but.”

In particular, don’t go to graduate school, and don’t start other projects.

As my co-founder, Maria and I discussed today, that is absolutely true but it’s also true that it may take some time to get to the “Nothing but the startup” point. In our case, we had existing contracts we needed to fulfill, mine with consulting clients and hers with ESPN and Fox News Latino. You also have to be in the financial position that you can afford to not only work at a reduced salary for years but at the same time pay for expenses – artwork for the game, animation, travel expenses to demonstrate the game. As you grow, there are other expenses for tech support, promotional items like the posters the teachers put up in the classrooms, the $25o I just paid to have a table at Women 2.0 Founder Friday in Los Angeles.

artwork from the gamePaul Graham’s article was the second-best advice I have read on starting a business. The best was a book by Paul Hawken I bought over 20 years ago called Growing a Business. He advised a couple of things. One is that you learn how to do as much for yourself as possible instead of paying for expensive “experts”. Justin Flores does our artwork,  with occasional contributions from Gene Wilson, because I totally suck at art. Other things, whether it is CSS or sound editing with Garageband, I just learned. I took a class at MacWorld one year, bought some books. Yes, I took several books out of the library, too, instead of buying them. Hawken’s other advice was to keep your operating costs as low as possible, thus making it possible to follow the advice of Graham 20 years later which is to just do your start-up.

We have an office upstairs where The Invisible Developer works, shielded from all human eyes, and an office downstairs where I work and so does Marisol, Maria when she is in town and the occasional intern. Because we have been in this location in Santa Monica for over 30 years and the city has rent control, the rent for our space comes up to under $500 a month. The down side of that is that it is not at all feasible for us to move. The Spoiled One would like us to move to Ojai. I’d really like to live somewhere we could have a dog, but it is not in the cards.

Doing “nothing but a startup” means saying “No” a lot, and saying “Yes” to the right things.

If you are  doing “nothing but a startup”, it is not just that almost all of your time and attention is going to be focused on that, but almost all of your decisions, too, are based on “how will this affect our company?” This can be something like can we move or more amorphous like the topics you learn more about. I did a lot of SAS programming for over 30 years and now I’m doing much less of that and more javascript. I’m skipping the SAS Global Forum for the first time in several years and will probably go to an HTML5 conference in San Francisco instead.

It’s good to be learning new stuff  in a new area, but there is also new stuff in the old area – like the SAS model selection procedures, that I really wish I had time to learn. I’ve been writing on my blog less. I quit teaching at Pepperdine University as an adjunct because I just could not commit the time to showing up once a week for four months straight.

It’s absolutely beautiful weather most of the time in Santa Monica and I rarely make it outside because I am working. I’ve quit volunteering nearly as often. I teach judo once a week at Gompers Middle School and several times a year, I have to get a friend of mine to substitute for me. I’ve resigned from all non-profit boards I used to be on except for one, and when the board chair term expires this year, I’m stepping down from that.

As consulting contracts have expired, I haven’t renewed them. I’ve turned down several offers to teach classes, present at conferences and take on new consulting clients.

I wrote a book on matwork for judo and mixed martial arts last year, but I’m not working on another book.

All of this has now enabled me to spend 8, 10 or 12 hours a day most days doing nothing but working on 7 Generation Games (while only getting paid for less than half of those hours!) and the result is that we are progressing far faster than we were a year earlier.

Is it all worth it? Yes.

 

 

When I add up all of the ad revenue from this blog on top of the business it garners, in a good month it might average out to $30 an hour and in a not-so-good month maybe $10. Since my consulting rate is a heck of a lot more than $30 an hour you might wonder why I bother. If you read this blog regularly you can guess that it is the same reason I do most things, for the hell of it.

However, occasionally there are some perks that are priceless. One of those was the opportunity to be on the call this morning on the White House call with Sam Kass, Executive Director of Let’s Move. Thanks a million to Blogher for setting this up. I am SO-O not a morning person and the call was at 8 a.m. Pacific time. I almost tried to get Maria to fill in for me but she tactfully pointed out that it would be hard for her to pass off for me because she did not sound sufficiently old.

So, barely awake on my first cup of coffee, I still learned a lot on this call. There were many bloggers, with diverse interests, and the question and answer session at the end revealed that. A nutritionist asked about the likelihood of stopping junk food and soft drink sales in schools. A food blogger asked about the quality of school lunches. When Sam Kass mentioned documented higher math scores among students with free breakfast programs, of course I perked up and asked for more details.

 

me with daughters

(Maria is on the left. I’m the wrinkled one on the right. Darling Daughter # 3 is in the middle, apparently exhausted from 66 seconds of effort. Thanks to Hans Gutknecht for the photo.)

Now, I’m good at math and I thought if three hours after school are important – often the time between when kids get out of school and their parents get home – and you have at most one hour of physical activity, what are kids doing in after-school programs in the other two hours. Surely, they can’t spend two hours just eating fruits and vegetables, right?The most interesting part to me was the lengthy discussion of the three hours after school as being vitally important. This is a personal interest of mine, since for the last three years, I have volunteered at an after school program teaching judo. (The daughter in the middle started that judo program five years ago and taught it for the first two years.) It was also interesting, though, because he mentioned the importance of 60 minutes of physical activity a day, at least 30 minutes of it occurring in school seems to be a goal.

Our games are used in a couple of after school programs, and that’s great. However, the games we have available now are aimed at mathematics in grades 3 through 6. What about older kids?

I visit a lot of disadvantaged communities and one of the disadvantages students have is that they don’t really have much idea of the type of opportunities out there for future careers, what people do or how they get those jobs. So … I thought one thing I could offer immediately is an inside look at making computer games. Not one to let grass grow under my feet, I sent an email this evening to 30 teachers I know and linked to a few parts of the game we are working on now. These are in pretty rough form. However, if the students check in every day after school they can see what we have done in the past 24 hours. It should be fun for them to see how the game takes shape. Some of the pages don’t have sound yet. They don’t have the bells and whistles and “yoo-hoo” that comes up when a student passes a quiz or goes up a level.

That whole “Take your child to work day” isn’t available to a lot of students, and if they live in a small rural community, the kind of jobs they can be taken to is limited. So … I decided to reach out to students after school and take a whole lot of them to work with me for the next six weeks. Too often, whether it is software or scientific research, students are presented with the final product and think it is made by people who are far smarter and more talented than them. If they only saw how rough it is at the beginning and the amount of hacking into shape it takes — and now they will.

Next Page →