Girls Can't Code

Saturday, December 3, 2016

I ordered a 3D printer for some of my own hobby projects and re-branded the purchase as a x-mas present for the whole family. Then I decided I need to learn some 3D design. I started yesterday with Fusion360 recommended by a colleague. I managed to create a shining box with rounded corners and could not remove the rounded corners. Gave me the same inadequate and stupid feeling I got with Photoshop before my friend taught me how to use it. So I "downgraded" myself to Tinkercad. And got it instantly. What a wonderful piece of software, running in my browser! This is what I created in a minute, as a proof of concept.

Today I told the kids about the upcoming 3D printer and they went mad. They already knew about such things and had seen one in the library. They wanted to print 3D Pokemons, of course, but I told them that the point is to create your own things, now just print stuff from the 'net. So today I showed Tinkercad to my 7-year-old and she was like "ok, looks a bit like Minecraft, what should I do in this world?". Well I told her that you can mess around just like in Minecraft. Plus the little bonus of being able to 3D print the result. BOOM! She went crazy.Tinkercad was easy for me to learn and unsurprisingly it was easy for her too. So she crafted this little world in 15 minutes or so:

After a bit she taught Tinkercad skills to her 5-year-old little sis too.

... and here's what the 5-year old came up with:

So, we had lots of fun and will have more tomorrow (bedtime came too early again). Cannot wait until the printer is delivered. I strongly recommend trying Tinkercad if you haven't done 3D design before or would want to let your kids try it too. It's online and it's free. A 5-year old can use it. You can too!

Monday, November 28, 2016

In case you haven't noticed, Code.org offers tons of fun tutorials for wannabe coders. The newest thing is the Code.org Minecraft Designer. I decided to give it a try with my two daughters, now 7 and 5 years old. Minecraft is especially my older daughter's favorite game; she loves to create her own worlds from the simple 3D minecraft blocks. I thought that coding in the Minecraft world might inspire her. Guess what happened?The tutorial starts as do many other Code.org tutorials, by presenting you with a problem domain and a task. In this case, there's this sympathetic Swedish coder Jens, presenting us the Code.org Minecraft world and the fact that the World Has Stopped. Your task is to bring the animals back to life by coding. Like this:

Now this is a simple idea and there was nothing new really: a simple 2D world and the familiar programming blocks that are similar to the ones we've used earlierly in Scratch and other Code.org Tutorials. Yet, when I showed this to my older daughter, it totally captivated her. I had to read here the English instructions, like "The chicken is frozen. Place move and turn blocks in the when spawned slot to get it to work. I checked if there's a Finnish translation but it was very much lacking at the time.Anyway, she had a very good drive and quickly steamed through the 11 assignments, animating chickens with loops, randomness and sound, learning about events by making sheep drop wool when "used" and so on. The best part was yet to come, though!The 12th assignment is in fact a full-blown game editor, where you can make different creatures appear at different times and positions and freely code their behaviour by dragging code into their event slots, like this:

Here, for instance, the Zombies chase the player and attack when touched. The Iron Golems, on the other hand, chase the zombies. Until morning, that is. That's when it explodes!This freeform editor thing totally really hooked by daughter into designing her game and having the creatures do a lot of funny things. Chickens laying carrots instead of eggs was good fun!

She also made a nicer version of here game for her little sister, who was scared of the zombies. In that version, the zombies are nice and actually a bit scared of sheep, which was a lot of fun to watch.Better yet, you can also save your work and share it as a mobile-friendly web page. Try it yourself! You can go directly to the editor here. After running your game, click the Finish button, then share the URL that's presented to you. Then you can get back to editing the game. Each time you click the Finish button, you'll get a new URL.In conclusion, this was by far the most enjoyable tutorial from Code.org so far. I've never seen my kids so thrilled about coding!Oh, and do you want to try (a version of) the game my daugther made? Try here. Use arrow keys to move and spacebar to attack/use. Wait until nightfall to see the zombies, creepers and iron golems. Have fun!

Wednesday, September 28, 2016

I started the Girls Can't Code blog about 3 years ago with my 4-year old. Now I have another 4-year old who can't use Vim yet, a kind of a clean slate if you like. Should I teach her Vim or Emacs? Start with the command-line or go for Scratch to begin with?I have to admit that she's already exposed to some coding stuff though: we've played the Robogem board together quite a few times. That doesn't make her a coder yet, and she can't read or write much yet but certainly shows interest in learning to do so, so I think this is a good time to start pounding the keyboard.Today we kinda started that by launching the lovely Bubble Bobble game on our good old Commodore 64.

I've put a sticker with instructions for starting games on the machine, so it was just a matter of writing exactly as the paper said. But it takes some effort to find all the keys on the keyboard and to type the quote characters which require you to hold Shift while pressing the key. She made it the first time though and got the game running. She's playing with her big sister as I'm writing this.Btw we did a little Turtle Roy refresher with Big Sis couple of days ago. She had forgot most of her mad skillz since we haven't been doing our computer too often lessons lately. We still have our little Egg Alert game project to complete. If I remember correctly, we have some images scanned and uploaded to Scratch. Hope so, as her computer (old Macbook Pro) broke down and she has to use mine for now.Oh and yesterday I went to the Kilonpuisto School to teach programming to the teachers. That was good fun and I got a lot of positive feedback along the lines of "I'm no longer scared of coding now that I got to try it". There's a lot of work to be done now that programming is a part of the national curriculum in Finnish schools, while the teachers are still mostly clueless on how to teach something they know mostly nothing about. But like the teachers discovered yesterday, coding is not rocket science; anyone can learn the basics and have fun doing so. Which probably applies to rocket science as well. Good luck Mr Elon Musk, I hope you get to Mars one day and come back alive, too!

Sunday, May 8, 2016

If there’s one Finnish brand that will never expire, it’s got to be the Moomins. I read the same Moomin stories to my kids that my mom read to me. Also, every Finn seems to have a dozen of Moomin cups in their cupboard. You just cannot avoid them. I’m not sure if I’ve ever bought a single one, but I have like 5, which is probably below average. If you don’t buy them yourself, your mom or your friend will buy them for you.

So, when the Moomins start to teach coding, that’s not something to be taken lightly. And guess what I heard? Well it happens that my Japanese colleagues at Reaktor are organizing a Moomin Code School in Tokyo next Saturday. I was lucky to have a sneak peek at what they’re gonna give to the kids, so I took the "Moomin IDE” for a test drive with my daughter.

Things look up for the Moomins: the coding environment seems already pretty solid: it’s like Scratch but more focused and easier to use. You can learn the basics of programming, like command sequences, loops, even defining your own functions by dragging colorful blocks around. I would love to use this environment in my code schools too, before stepping into more hardcore stuff, that is.

My 7-year old coder girl picked up the Moomin IDE instantly. No wonder, because she’s already used Scratch and the layout is familiar. She easily threw together a program that draws a square and then, with a little help, named it “square” using one of the blocks in the "procedures" palette. This way a new block named "square" appeared in the palette. Using the newly made "square" block, she then made a program that draws a square 360 times, rotating just a little between repetions. The result was an awesome black ball! Too bad there’s no “change color” block yet, so we had to go back to Turtle Roy to make the Japanese flag:

Regarding the Moomin Code School event, I’m damn jealous it’s in Japan! Would love to see what’s up. Is the Moominpappa himself a hardcore hacker nowadays? Which one of the Moomin characters do you think will be the best coder? If I was looking for a Senior Moomin Architect, I’d probably hire this guy "Snork". If I was looking for a hacker-type I'd go for Little My.

Snork and Little My

The set of characters is just so juicy that I cannot wait for the Moomin Code School to land in Finland some day too.

Here’s a link to the Moomin Code School event page: http://moomincodingschool.com/. There are instructions for joining on the page, in Japanese. So if you’re in Japan, I insist you go there and tell me what happened!

Monday, February 22, 2016

Greetings from wintery Finland! And sorry for being lazy on the blog. I'll try to get a grip on this:) We have indeed been coding every now and then, but mostly doing other stuff. Let's talk about the other stuff this time. Next post will be programming related, I promise.

So, what do coder girls do when they're not coding?

Well, they might play some Bubble Bobble on the Commodore 64. The kids can now connect the computer, disc drive and all the wires and use the "command line" to load games. The old Commodore is one of the favorite activities around here. There's just something magical about the machine and Bubble Bobble. Below, you can see someone hypnotized by the graphics shown while the game is loading.

But one should not stare too much into plasmas, LCDs and LEDs right? That's bad for the eyes. And the brain needs some fresh air too. So, we ride ponies!

Well, that was more like a one-shot activity but will not be soon forgotten. At home, the kids love ponies too. They watch them on YouTube and make their own, too. These things are a bit freaky though, huh?

One of our latest dad-daughter activities has been recording music in the home studio. Older sister can now pretty much operate GarageBand on her own and record the lovely voice of the 4-year old. Both the girls have been coming up with songs of their own and I really want to capture those for future listening. You can never get that 4-year-old voice back you know.

The bigger kid can also read and write notes to some extent, so she writes her stuff down while talking with granma on the phone.

So that kind of stuff.

Meanwhile I've been also been teaching programming to kids in Koodikoulu (Code School) events and was honored to have the Finnish president. It was pretty cute that he wore the same kind of name tag as the kids had:

Saturday, November 7, 2015

A bit more than a year ago I took my first shot at designing a board game that teaches programming. It was fun but the game didn't really work too well. I still like the idea, but ideas don't turn into good games too easily, I've found out...Soon I got the Robot Turtles board game and after some playing decided that it's not fun enough. I want games with action and fierce competition! I asked my kids opinions and they agreed: they want to compete against each other. So I started experimenting for a new game. The idea was that the players commanded tanks by making command sequences out of command cards. The game quickly from a co-operative search-and-destroy game to a competitive race.The players raced each other on a hex board using the command cards (forward, left, right). Each player got to add or remove commands to their command sequence, which was repeated on each turn. So, you could either go fast by accumulating more cards to your sequence, or proceed more carefully. We used game assets from any available board games on my shelf.

The game was kind of fun, but was not very well balanced. You could easily drive yourself to a corner and it would take a long time to replace your program with something that will take you back on track. We changed the mechanism of adding/removing cards to a persistent program to one where you had a bunch a cards in your hand and could play any number of cards per turn. Then fill your hand back to 5 cards. That was nice until we discovered that unuseful cards will keep accumulating in your hand, because you play the better ones away.Level design was very hard and the starting turn was too decisive. The hex board also made making full 180 turns quite tedious. Furthermore, the game was a bit dull, because it was quite linear; not many choices to make. Game design is not easy, I had to admit again. Still, I was convinced that I had a good idea and could make it work by applying my scientist skills. I was indeed keeping a very detailed diary of my observations and insights.But So, after several iterations of changes, including laser guns of course, I decided to try something else. Treasure hunt it was!

So instead of racing through a track the objective was now to fetch 3 treasures from the board. This gave the players more alternative ways of winning: there are more than enough treasures on the board. Also, because there are more alternatives, the problem of "bad" cards accumulating to your hand got less irritating.Then my daughter (5 years at the time) told me a new set of rules: you have to fetch a treasure from the sea and return that to "home". Also, if you push another player who currently has the treasure, the treasure is transferred to you. It naturally involved lasers that you could use to remove obstacles. The ideas of stealing treasures from your opponents and returning the treasure back home turned out to be a fun combination. Meanwhile, my younger kid was designing her own game.

We tried tens of variations of the treasure hunt game. Then we tried it on a rectangular board instead, to find the rectangular board worked better, because in a treasure hunt with opponents, you need to make a 180 degree turn every now and then. And it's also generally easier to play than a hex board. We tried loads different obstacle layouts and then found this one to be very good:

In fact, we never found a better one later, except for changes to the number and positions of the treasures.We were still experimenting with different card-playing systems, including one where you could either build/modify your program with new cards or run it. Yet, a simple mechanism where you always get a completely new hand of cards after each turn turned out to be more fun. So I picked a game mechanism where you get 5 new cards for each turn and you play 0-5 cards on your turn, discarding the rest.I also decided that all players' cards should be visible. This gives you the opportunity to take others' cards into account when planning your strategy. You might think that having all cards visible would make the game simpler or more predictable but it's in fact the other way around: strategic players have much more variables to take into account. Yet, it gets easier for young children, because the older ones can easily advise them when the cards are in the open.

After about 1 month of active game design and dozens and dozens of iterations I finally had the feeling that we have a fun and simple game. I had the first set of game rules written down. I had simplified the game as much as possible, to make the rules easy to learn even for small kids. After signing a publishing deal (!) it took us a couple of months to finalize the game rules. This involved many rounds of testing with different groups of people, involving relatives and colleagues and their respective children. Minor modifications to the rules were tried and improvements were made.I never explained the game rules to anyone. Instead they had to read the rulebook and start playing. It went quite well in general, but resulted in rulebook improvements of course. And this was an ugly rulebook with hand-drawn illustrations of course. Like this:

It also took some time to decide on the final game theme and the name. The tanks were ruled out pretty quick. We wanted to emphasize coding to some extent but still primarily make the game feel exciting and fun. It should be cool for both girls and boys. It should be easily applied to different languages and cultures. We finally landed on colorful and playful robots landing on a distant planet, in search of colorful diamonds.

Then, like a frog turning to a prince, the cardboard monstrosity turned into something beautiful. I was blown away by the first graphic designs made by Mikko Hiltunen for the game. I haven't got those at hand right now, but here's the pretty much final box design.

So now we had a working but ugly game and beautiful game asset designs on the computer. You can imagine it felt like a lifetime to wait for the ready products to be shipped. And that it was amazing to finally lay our hands on the finished product. And it was super! To me it looked even better than I had hoped for. And the game assets (robots, diamonds and the board) are good quality and nice to use. The diamonds fit the slots on top of the robots and everything feels solid.And now the game is available both online and in many Finnish stores! It was pretty cool to see our game in the local supermarket.

You can buy the game and have it shipped to Europe and the U.S at least, for a reasonable cost. We are still looking for distrubutors worldwide, to have Robogem in the board game boutiques, supermarkets and bookstores all around the world.It's been an exciting voyage so far, starting from learning vim and writing a few blog posts to actually being able a board game around the world. Now let's see if people like our game and we get to make more games. In fact, I'm already working on something new :)

Sunday, September 20, 2015

Lately I've been fooling around with Bluetooth speakers so I suggested that we take some of my daughters toys and make it talk. She was obviously very excited. Imagine if someone suggested this when you were a kid. I'd personally had gone nuts. Well, she chose her dear Moose.

So I went to buy a cheap'n'small bluetooth speaker for 17 euros and we started by makingthe bluetooth speaker talk using the Mac's fabulous say command line tool. First we connected the Bluetooth speaker by fiddling with the Mac's Bluetooth preferences. After that, the speaker is ready to use. Now, when you type something like say "Hello world"You'll hear speech from the bluetooth speaker. There's even a bunch of different voices available and you can add more from the Text-to-speech preferences. For the Finnish language, there's a nice voice called Mikko. To use a specific voice, you do like say -v Mikko "Huomenta Suomi!"And it was fun, once again. We've played with the say command before, but now the sound comes from a different box, so it was even more fun. Even our 3-year-old made the box talk. She can type her own name and learning more words every day.

Then I suggested we break the bluetooth speaker to pieces, just for the heck of it. And sure we did. We found a lithium battery, a circuit board and a speaker element. And I do find my daughter to be much like me when I was a kid. I always broke things to pieces and usually was unable to put them back together. We, however succeeded also at putting the speaker back together too. And yes, we tried if it works when in pieces too.

Later today, she came back and asked whether we are going to make the moose talk. And we stuffed the speaker into the Moose's butt. Now it speaks. Through its butt. Great! We even added some velcro so that you can close the gap and hide the electronics. And open it to recharge the speaker via USB.By the way, you can actually connect several bluetooth speakers to your Mac. And you can address each of the individually using the -a parameter of the say command. What this mean in practise is that you can make a theatrical play with several soft toys speaking (through their butts) with different voices, by programming! MUST BUY MOAR BLUETOOTH SPEAKERS!!!