draw freely
Back to Inkscape.org
October 21, 2014

Inkscape Tutorials


In this tutorial, learn how to draw vector ropes in Inkscape using the Pattern on Path path effect with inkscape. This technique is super useful for drawing a whole bunch of different vector assets with inkscape, like rope or laurel wreaths or anything that has a simple shape that is repeated along a path.

Lets get started!

Create the rope element to pattern to repeat

Using the pen tool in inkscape, draw a the shape that will make up the part of our rope that will be repeated. In this tutorial, we are going to call it our pattern.


Create our path to put the pattern on

Next, create the shape that you want your rope to be. This can be any shape. In the example image above, the shape i used was a series of paths to form the letters “rope”. But for this example, we just have a simple rounded-cornered frame. In this tutorial we are going to call it our Spine Path.

spineshape Add a path effect to the Spine Path

With the Spine Path selected, open up the Path Effects dialog (Path > Path Effects), Click the + button, and choose the Pattern Along Path option from the dialog. It will add the Pattern Along Path effect. Note however that your Spine Path or your Pattern will not change during this step.


Add the Pattern to the Spine Path

Next, select your Pattern, and copy it to the clipboard with Edit > Copy or Control+C. Once copied to the clipboard, select the Spine Path again, and in the Path Effects dialog, press the Link to Path on Clipboard button (its the last button in the Pattern Source section, with the tiny lock on it).

After doing this, your Spine path should look different — the pattern will be stretched out over the length of the spine path:


Change the Pattern Along Path settings

With the Spine Path still selected, change the Pattern Copies dropdown to Repeated, and mark the Pattern is vertical checkbox:


Tweak the spacing

Next, set the Spacing value. This number is going to be a negative number, but will vary widely depending on the size of your image. If a setting of -1 doesn’t change your path much, try a much larger number. Tweak this value until the rope edges line up fairly cleanly:


Tweak the pattern to fit better

Now the spacing is pretty close, but when you zoom in on the shapes, they are going to not fit perfectly:


Luckily, we can go back and change the shape of the Pattern. Choose the node tool, and tweak the shape of the Pattern until you have minimal overlaps between the shapes. YOu may also need to tweak the spacing a bit to make it fit better. The key here is that the outside edges line up neatly, don’t worry too much about the inside edges. The result should look something like this:



Tweak the spine path, then Convert to Path, and break apart

Finally, you can select the Spine Path and tweak the shape of it if you want (I didn’t because it was the shape I wanted). Once you are happy with the shape, convert it to a path with Path > Object to Path. Note that once you do this, you can’t tweak the shapes anymore. Finally, break your path into individual shapes with Path > Break Apart, and set the fill colour and stroke to what you want. Once you set the fill colour, the inside overlaps will be covered up.



Use this technique with a range of Patterns and Spine Paths to create a range of different results:


October 21, 2014 02:33 AM

October 20, 2014

Inkscape Tutorials

Here is a awesome tutorial on creating a simple button for your next user interface in Inkscape. The author assumes that you have a basic grasp of Inkscape before using this tutorial, there are no screenshots of which buttons to press. It is simply a explanation of the workflow used to make this button.


October 20, 2014 09:53 PM

October 10, 2014

Gail Carmichael

What luck! An invited technical speaker at GHC wants to talk about storytelling and games! As Bonnie Ross' abstract states, "stories spill into every aspect and facet of our lives; narrative leaps between nations, and stories span devices, media and demographics. The entertainment industry stands at the crossroads of where those stories intersect, how those stories are told and who tells them."  Here is my summary of Bonnie's talk.

Image from GHC speaker profile

Recent stats: 48% of gamers are women.  But where are we on the creation side? Software is omnipresent, and it's harder to see what you can do when you finish a degree in technology.  Bonnie originally came to gaming because of technology, and wasn't planning on staying more than a year.  But she found a passion.  She hopes some of us will too.

Bonnie showed us a video prologue of the Halo story.  She asks, what tools and technology have enabled us to tell more immersive stories? Games have different genres, and different styles requiring different graphics.  Similarly, games have different needs in terms of storytelling.  Audiences are asked to have some kind of suspension of disbelief when consuming entertainment.

Technology had advanced to support this suspension disbelief in many areas, but one that has helped immensely with Halo is facial motion capture.  Golum was one of the first characters to use this, but now it's in many movies and games.  The technique leads to more believable performances, helps bridge the uncanny valley, and leads to more efficient development.  We get a stronger emotional attachment to the higher fidelity characters.

One funny thing about casting interviews for character actors: they don't tell the interviewees what they are doing, and just ask them to move their faces around in a wide range of emotions.  What they are really looking for is botox, because they need every wrinkle to move for facial motion capture to work.

Bonnie showed us several examples of various stages of animations, and I must say I am flabbergasted.

Fans are also now becoming part of the Halo story.  They've always wanted to be, but it used to be a more physical form (cosplay, for example).  Lost engaged fans through things like ARGs and really invited them into their story.  Is this a good thing? Bonnie says yes.  The more the users feel ownership in your story, the more they will stick with you.  Is there a way to bring the Halo story and the fans' story together into something bigger? Perhaps through ARGs, transmedia initiatives and the like...

Bonnie hopes we all walk away thinking about what new things we can do with technology.  That we see the balance of art and science in games.  That everyone coming out of university realized we all need some kind of technical background.  Now that's a story I can buy into!

October 10, 2014 03:45 PM

I started my last morning of GHC with two presentations in the GFX track, which covers games and graphics.  I enjoyed both talks, though the first is particularly relevant to our Gram's House project.

Image from the virtual world Shahnaz Kamberi worked on in her research.

Gamher: Creating a Game to Increase Girls' Interest in Programming
Shahnaz Kamberi

Shahnaz targeted girls aged 13-17 with a game to increase their interest in programming at a time when many lose that interest.  It's nothing new that we want girls to study STEM, but despite all the time, money and effort, we have not succeeded.  But maybe game-based learning, which has been proven effective in the past, can work here.

There are two deliverables with Shahnaz's research, which is part of her doctoral thesis project: game design elements list (aesthetics, mechanics, story, and technology) and an educational game that teaches Java programming.

The framework Shahnaz followed is known as the ADDIE model: analyze, develop, design, develop, implement, evaluate.

During analysis, she realized that she did not want to take a constructivist approach, which covers programs like Scratch and Alice.  Rather, she wanted to make an instructivist game, an area that is more lacking.  She then decided that she preferred a gender-specific game rather than a gender-neutral game, but wanted to break the stereotype of what gender-specific games look like.

To help with development, Shahnaz prototyped a 2D game in GameMaker and an exploratory 3D world using OpenSim.

To evaluate, Shahnaz compared performance between a group that used the game vs. a group that had traditional lectures with added interactivity. It turned out that the lecture group did a little better than the game group on the post-quiz.  This may have been because the facilitator was able to control the classroom's progress, whereas students playing the games may not have finished all the material. The game group has a higher positive response to computer science in the post-surveys, but there was not a significant difference.  Interestingly, story appeared in the participants' lists of worst and best things about the game.  There was a lot of positive response in terms of whether the girls would play the game again and whether it positively influenced their views of computer science.

My take: it was really nice to see how Shahnaz set up her experiment, and how she dealt with the fact that the game group did not perform better than the lecture group.  She realized that she works as a professor, and therefore is paid to teach programming.  So if girls were able to learn as much while playing a game, then indeed the game has succeeded! It did as good a job as a professional!

You can learn more about this project on Shahnaz's blog and website.

Animation Programming Techniques for Music and Dance Video Games
Jessica S. Scott

Jessica is the lead engineer at Harmonix, and has a mixed background in CS and art.  She opened with the question of why we even need character animations.  Among the usual answers was the notion of using animation as a user interface.  In games like Dance Central, animations tell the user what to do.  Then, why do you need programmers for animation? You need to get animations from a 3D program into a game, usually with requirements in terms of memory usage, performance, and response to user input.

Jessica started with some of the basics of computer representation of animation on a computer.  For skinning, they use bones that meshes can follow.  Animators can pose a skeleton of a character.  Keyframes are a way of storing animation poses at points at specific points in time, and movement in between can be interpolated.

Memory and performance issues: Animation often takes up a large percentage of a game's memory and CPU budget.  When storing animations, store rotation, position and scale for each keypoint, and use compression and blending techniques.

Game animation special needs: it's more complicated than movie animation! Players get control of characters, and real-time playback is important.  Game worlds have dynamic elements that help determine what animations to play.

More about blending: needed for the dynamic choice of animations.  Two kinds: combine multiple animations at one point in time, or over a period of time.  Blending allows for natural-looking but automatic transitions between different animations.  Blending involves a lot of interpolating, for example between rotation values between bones.

Storing animations: quaternions instead of rotation matrices since you only need 4 floats instead of 9, and blending is easier due to easier interpolation.

Inverse kinematics: modifying a character's joint positions and rotations based on physics constraints.  Mathematical calculations are applied after regular skeleton posing.  Important not to apply to only one set of bones!

Dance Central example: foot slide during blending.  Suppose you want to blend two dance moves and the foot is on the ground with weight on it.  Takes a lot of effort to get the foot to do something interesting in between.  (Showed a funny example with a really long, stretched leg.)

Beatles: Rock Band example: wanted the Beatles to lean in toward the mic during harmonies.  Seems like a good idea to just stretch the neck toward the mic, but turns out not such a good idea when the character is too far away from the mic! (Showed another funny example with one Beatle standing too far away, with a super long neck stretched to the mic.)

My take: how cool to learn a bit more about what's behind animations in my favourite games! (Dance Central and Beatles Rockband happen to both be games I've played a lot.)  The talk also makes me wish I could spend more time on computer graphics, which I have learned but never get to practice.

October 10, 2014 02:05 PM

October 08, 2014

Gail Carmichael

My first session after the plenary opener was about how to use GitHub, presented by John Britton.  I was interested in getting some better insight into effective use of Git, a distributed version control system, so I could eventually move some of my own projects to my (thus far unused) GitHub account.

GitHub Office
GitHub Office / Ben Scholzen 

Although I did find the session useful, it unfortunately moved a bit too fast and with demos that were hard to make out on the big screen due to the high resolution of the image.  I tried to keep up while trying things out, but quickly found myself lost.  (Funnily enough, it was when John started demoing Git from the command line that I was really able to get a handle on things.)  I'll share some of trickier bits I was able to figure out during the session along with my own research below.

I admittedly still get confused by Git since I haven't used it for any of my own projects.  The key thing to sort out is the workflow, which is different from version control systems like CVS and SVN:
  • The first step in making changes to an existing project is to clone it.  This fetches a repository that you don't yet have locally.
  • Next, you can checkout a new branch, giving it a name and activating it (or, if the branch already exists, just switch to it).  There is some useful discussion about the difference between clone and checkout here.
  • After making some changes to files or adding new ones, you can use git status to review those changes.
  • If there's a new file that you want to be tracked by Git, you need to add it.
  • When ready, you can commit your current set of changes to the repository, creating a snapshot of sorts.
  • Finally, when you are ready to send your local snapshot to your Git repository, you push.
Another issue that confused me terribly is the idea of a pull request.  GitHub lets you "fork" somebody else's project, which basically means making a branch within your own GitHub account.  You can work on your forked project and make whatever changes you want without affecting the original owner's project or requiring their permission. Then, you can make a pull request.  The name of the action suggests to me that you are requesting to pull changes from somebody else's project, but in fact you are requesting that the owner of a project pull your changes.

If you aren't familiar with branching and merging, this article might be useful.  You might also like Code School's interactive lessons on GitHub to get a feel for the system overall.

One last thing: if you are a student, you must check out this recently announced student pack, which includes access to a free micro account on GitHub (this lets you have private repositories).  Awesome!!

October 08, 2014 07:16 PM

October 02, 2014

Inkscape Tutorials

Improve how you draw light interacting with your subjects in inkscape with this article. The author covers the basics of making your lighting more realistic, including shadows, highlights and how light is reflected onto other objects.



October 02, 2014 03:53 PM

September 25, 2014

Gail Carmichael

I've been trying something a little bit different for our CS2 class this semester.  The course typically covers object-oriented programming in Java along with topics like recursion.  In fact, students becoming proficient in Java is one of the hard requirements of the course.  But students who have recently passed the course did not seem sufficiently prepared for what came next: systems programming with C.  In fact, some students (barely) passing the course seemed not to be able to program sufficiently well on their own at all.

I knew there was an appetite to try something new, and I thought I had the perfect book to try out: Think Like a Programmer.  Only problem was that the book uses C++, and as I said above, we need to use Java.  I ended up chatting with a member of our curriculum committee about it, and we realized that maybe, just maybe, we could do both.  We could teach just a bit of C++ so students would understand the book, and do our major examples and assignments in Java.  So that's what I'm doing.  The question is, will it turn out well, or end in disaster?

Image via Wikimedia

In some ways, it seems like trying to cover two languages in a course where many students can't grasp even one is a really bad idea.  But hear me out.  I am not trying to teach them how to be proficient C++ programmers.  My goal is only to show enough C++ so that students can understand Think Like a Programmer, and even more importantly, so that I can more explicitly illustrate some key concepts in Java that are normally hidden away.

For example, C++ makes you choose whether you are passing by reference.  With some simple examples, I can illustrate the difference between pass-by-reference and pass-by-value more clearly. When we get to Java, I can easily explain what gets passed by reference automatically.  Understanding dynamic memory can also be made more explicit in C++, then applied to topics like creating linked lists in Java.  Even the fact that C++ allows me to build up to objects without needing to have a dummy class in the meantime is quite helpful.

We're only in our third full week of class so far, and we're just getting started on Java.  So I don't know yet how well this experiment will work once we have the two languages going side by side.  But I can say that it has been very beneficial to be able to approach the course using the problem-solving perspective of Think Like a Programmer and the slightly lower level view that C++ allows for things like how variables and arrays are stored in memory.  If this continues working well, I think this could be a winner.

I'll be soliciting anonymous feedback after a couple of weeks of using both languages, and hope to report back after I get some data from students.  Eventually I'll also share more details about the course design itself.

In the meantime, I wold love to hear your opinion - does this approach have potential, or do you see it as a disaster waiting to happen?

September 25, 2014 12:15 PM

September 22, 2014

Gail Carmichael

Recently, Shopify put on a super cool conference called Beyond the Code.  Hosted at the Ottawa Convention Centre, the event's main goal was to highlight the role of women in technology.  All types of folks were there,  from devs to designers and the audience was more than half female!

I was lucky enough to run a lunchtime workshop called Find Your Spark with Anita's Quilt.  Some of my fellow Quilters developed this workshop, so I had a good base to start from.  The general layout we used was to sort people into tables as they came in (we used chocolates!), then have them introduce themselves to their table mates, pick and read a story from the Find Your Spark! page, and  talk about the stories using the discussion questions we provided them (now also on the Find Your Spark! page).  After the discussion, we had a few tables share their biggest takeaways (there wasn't enough time to go through all tables let alone all questions).

It was an enjoyable way to spend lunch and meet some new people, but the thing I was most excited for was to hear what the participants actually got out of reading the stories.  I have been working hard to curate a lot of the great content on Anita's Quilt, so of course I wanted to know whether it has been meaningful and even useful to readers.

I was really impressed with the insights that came out of the discussion.  A few key issues were brought up:
  • One group noticed the prevalence of the imposter syndrome, that feeling you get that makes you think you don't deserve to be where you are and that everybody's going to find out any day now.
  • Another group pointed out that a lot of the stories are about how somebody corrected course when their life got back on track.  Realizing this allows the reader to see how others did in case they ever face the same situation.
  • The fear of failure was a big theme.  That lead to discussion on the importance of a support network of friends, family, and mentors/sponsors that can help you lose the fear of failing.
  • The last group brought up the issue of the kind of language women tend to use, and how it often portrays less confidence, or attributes success to factors outside of their own good work.
It's almost as though we went through a checklist of common issues facing women in tech!

If all this sounds intriguing to you, or you could just use a really good story to get inspired, be sure to check out the Anita's Quilt Story Campaigns archive,  or follow the Find Your Spark! model to choose a story and think about the discussion questions.  Let me know what you get out of the stories you read!

September 22, 2014 11:36 AM

September 08, 2014

Gail Carmichael

I recently checked out the pilot episode for a new science show that premiered on TVO called Annedroids.  Although I found one of the characters overly annoying, I was definitely a fan of the android creator Anne.  The show nicely integrated topics like the scientific method and discussion of electricity, even if their specific use of lightning to power up an android seemed a bit far fetched.  The animated androids were quite well done.  Overall, I'd say this is worth checking out, especially if you have kids you want to introduce to science!

Here's some info from the press kit:
“Annedroids” features photo-real CGI android characters in a gritty live action world. It's a series that celebrates science, technology, engineering and math and does it all through the lens of an 11-year old girl. There's nothing Anne likes more than getting her hands dirty to make things, breaking things apart to see how they work, and mixing things together to see that happens. Anne takes the stereotype of a typical tween girl and busts it right open.

Anne likes to push the boundaries of what’s scientifically possible. This is a girl who’s built three androids on her own: PAL, who is fascinated by everything and loves asking questions; EYES, whose ability to see things from all angles can get him into trouble; and HAND, who’s strong and dependable but a little bit clumsy. Anne’s experiments always lead to unforeseen complications, hijinks and misadventures. And that’s where Anne’s assistants Nick and Shania come in – Nick and Shania have an uncanny way of figuring out the real life solutions to Anne’s scientific problems. Needless to say, when Anne, Nick, Shania and the androids work together, the results are far from predictable.

“ANNEDROIDS” premieres August 25th at 5:30 p.m. ET on TVO, and July 25th on Amazon Prime Instant Video (US and UK). The series will also air in 2014 on The Knowledge Network in BC, and in French on Société Radio-Canada SRC. Internationally, “ANNEDROIDS” will air on KiKA in Germany, NRK Norway, SVT in Sweden, Horizonte Conteudos and Globostat in Brazil, and Discovery Asia. 

September 08, 2014 10:00 AM

September 02, 2014

Gail Carmichael

You should sign up to be a volunteer community note-taker or blogger by our new deadline of September 8.  It could change your life! Seriously!

Blue Jelly Social Media Icons / WebTreatsETC

I started attending the Grace Hopper Celebration of Women in Computing in 2008, and have only missed a single year since (I was too pregnant to fly).  I started off as a volunteer blogger, like you might be considering doing now.  My good work opened the door to becoming lead blogger and eventually co-chair of the Communities Committee.  It opened up a lot of opportunities, including joining the Advisory Board for the Anita Borg Institute, who puts on the conference.

Now, your path will likely be different than mine, but I hope you are convinced that good things can happen.  Here are some other benefits to becoming a volunteer:
  • Provided you contribute three session blog posts or notes on the wiki, you will get a ribbon to wear on your badge.  Ribbons are coveted at the conference, and the more you have the better!
  • You were probably going to blog, tweet, and pin anyway, so why not get recognized for your efforts?
  • Blogging or note-taking is a great way to give back to the community if you've been funded to attend the conference.
  • You will make some wonderful new contacts.  Some will be very useful professionally, and some will become great friends.  It's quite fun having someone to visit no matter where you travel in North America!
  • You can feel good about bringing the conference to those who can't make the sessions they want to, and those who can't make it to the conference at all.
Ready to sign up? Here's the official info:
Every year, GHC has a vibrant and active community of bloggers and note-takers. With an amazing schedule this year, we do our best to cover as many sessions as possible. How about taking notes or blogging about a session? Join other GHC community volunteers to capture presentations, workshops, poster sessions and more.
Sign Up To Volunteer

    September 02, 2014 03:37 PM

    August 29, 2014

    Gail Carmichael

    I've been working on our non-majors computing course for a while now.  Last year was the first time I got to try it with a large group (440 students!), and also the first time I tried using Python.  I have since refined it to the following design.  I will report how it went at the end of the semester, but I have a great set of TAs and am optimistic about using turtle in assignments to make programming a bit less daunting.

     We're not using the robot turtle, but wouldn't it be fun? Image from Wikipedia

    This course design lives on my portfolio site, and will be updated there as time goes on.


    This course is currently undergoing a transformation.  It has traditionally taught basic office software usage in a step-by-step workshop style.  The new version focuses on computational thinking skills by teaching basic programming concepts in Python and then applying them to understanding more advanced functions of the same software previously covered in detail.  Instead of learning a laundry list of programming concepts, however, the concepts are embedded in four relatable general contexts (see topic list below).

    A new calendar course name and description, which I developed, is up for approval Fall 2014.

    Learning Objectives

    By the end of the course, students will:
    1. Develop an appreciation of computer science.
      1. Understand what computer science is.
      2. See how computer science can help solve problems in arts and social sciences
      3. Learn how computer science can help you by automating boring, repetitive, or error-prone tasks.    
    2. Develop computational thinking skills.
      1. Learn how information is stored on a computer.
      2. Learn basic programming concepts (variables, if statements, loops, and functions) and write simple programs using these concepts.
      3. Learn how to formulate searching and sorting problems in a way a computer can solve them, and understand the efficiency of the solutions.
    3. Develop an advanced understanding of useful software packages by applying computational thinking skills.
      1. Apply an understanding of variables to effective use of word processing software.
      2. Apply an understanding of variables, if statements, and functions to effective use of spreadsheet software.
      3. Apply an understanding of variables and references to database software.

    Many topics have a context in which the concepts are placed.  For example, for conditionals and repetition, we discuss how the logic would look for a robot that can find its own way out of a maze.  We start with just the ideas, such as how to break the right-hand rule down into its constituent parts, then see how to implement if statements and while loops in snippets of Python later on.
    1. Introduction
      1. Course intro
      2. What is computer science?
      3. What is computational thinking?
    2. Binary Numbers and Data Representation: How Photography Went Digital
      1. Image representation
      2. Binary numbers
      3. Bits and bytes in memory
      4. Using the Python interactive shell
    3. Conditionals and Repetition: Helping a Robot Find Its Way
      1. Boolean expressions
      2. If, else, elif
      3. while loops
    4. Data Structures: Making Stories Interactive
      1. Data types and variables
      2. Lists
      3. Dictionaries
      4. References and simple graphs
    5. Searching and Sorting Algorithms: Managing a Bookstore More Efficiently
      1. Searching: linear, binary, hash
      2. Sorting: insertion, selection, quick
    6. Applying Computational Thinking to Word, Excel, and Access
    7. Miscellaneous applications of computational thinking / Python
      1. E.g. PyschoPy, RenPy, etc
    Assignment Topics
    1. Computer science, computational thinking, binary numbers
    2. Image and text representation, first Python turtle program
    3. Python turtle programs with if statements, loops, and variables
    4. Searching and sorting (conceptual), Python turtle program with a user-defined function
    5. Word, Excel, Access

    August 29, 2014 11:38 AM

    August 19, 2014

    Gail Carmichael

    Gram's House is a research project I started several years ago with a prototype originally designed for Microsoft's Imagine Cup competition.  Since then, a core research team has formed around the project: me (Carleton University), Elisabeth Gee (Arizona State University), Carolee Stewart-Gardiner (Kean University), Gillian Smith (Northeastern University) and Casper Harteveld (Northeastern University).

    We just got awarded two NSF Pathways grants for the Advancing Informal STEM Learning program!

    The Role of Story in Games to Teach Computer Science Concepts to Middle School Girls

    This project is being co-lead by Elisabeth Gee and Carolee Stewart-Gardiner.  Since I'm not a research faculty member, I am participating as a contractor.  We are going to dive deeper into determining the effect of story in educational games that teach computer science to middle school girls.  This will extend previous work I did with a study during my mini-course a couple of years back.
    As part of its overall strategy to enhance learning in informal environments, the Advancing Informal STEM Learning (AISL) program funds innovative resources for use in a variety of settings. Nationally, the US has a shortage of computer scientists; a big part of this problem is that girls are discouraged from learning computer science at a very young age. This project tries to address this problem by creating a videogame specifically oriented towards getting middle school girls interested in learning computer science concepts outside traditional programming classes. Based on evidence that stories provide a compelling way to present complicated technical subjects and that girls in particular respond to technology careers as a way to help others, the project is building a videogame called "Gram's House" in which social workers intend to move a fictional grandmother to a retirement home unless the player can outfit her home with sufficient technology for her to remain independent. Solving puzzles in the game requires learning core computer science concepts. Research studies will be conducted to determine whether the videogame is effective at getting girls interested in computer science, at teaching computer science concepts, and whether using stories makes videogames more effective for learning.
    This project based on an earlier successful prototype uses an iterative research-based design process including paper prototyping, playtesting, and focus groups (N=20) to create age appropriate activities, based on the CS Unplugged series, that support learning concepts from the Data, Internet, Algorithms, and Abstraction sections of the high-school level CS Principles curriculum. A quantitative, quasi-experimental design will be used to determine the overall effectiveness of teaching CS concepts under three types of game conditions: (a) games alone, (b) games with fictional settings, and (c) games with stories. A novel assessment instrument will be developed to assess content learning and qualitative observation using a standard observation protocol will be used to gauge interest and engagement. 70-80 middle school girls will be recruited for afterschool participation in the study in two states. As part of the dissemination efforts, a facilitator's guide, rule book, and materials such as maps and storyboards will be created and shared with the game. In addition, a workshop for computer science and other teachers who are interested in using games to teach CS concepts will be conducted.
    (Project link on NSF website.)

    GrACE: A Procedurally Generated Puzzle Game to Stimulate Mindful and Collaborative Informal Learning to Transform Computer Science Education

    The PCG project, as I like to call it (where PCG stands for procedurally generated content), is being lead by Gillian Smith and Casper Harteveld.  They want to learn more about how best to generate puzzles that teach high level computer science concepts, and whether players will learn more about the concepts when discussing how puzzles are generated in an attempt to help one another solve them.
    Northeastern University will design, test, and study GrACE, a procedurally generated puzzle game for teaching computer science to middle school students, in partnership with the Northeastern Center for STEM Education and the South End Technology Center. The Principal Investigators will study the effect of computer generated games on students' development of algorithmic and computational thinking skills and their change of perception about computer science through the game's gender-inclusive, minds-on, and collaborative learning environment. The teaching method has potential to significantly advance the state of the art in both game-based learning design and yield insights for gender-inclusive teaching and learning that could have broad impact on advancing the field of computer science education.

    Development and evaluation of GrACE will consist of two, year-long research phases, each with its own research question. The first, design and development, phase will focus on how to design a gender-inclusive, educational puzzle game that fosters algorithmic thinking and positive attitude change towards computer science. The content generator will be created using Answer Set Programming, a powerful approach that involves the declarative specification of the design space of the puzzles. The second phase will be an evaluation that studies, by means of a mixed-methods experimental design, the effectiveness of incorporating procedural content generation into an educational game, and specifically whether such a game strategy stimulates and improves minds-on, collaborative learning. Additionally, the project will explore two core issues in developing multiplayer, collaborative educational games targeted at middle school students: what typical face-to-face interactions foster collaborative learning, and what gender differences exist in how students play and learn from the game. The project will reach approximately 100 students in the Boston area, with long-term goals of reaching students worldwide, once the game has been tested with a local audience. Results of the project will yield a new educational puzzle game that can teach algorithmic thinking and effect attitude change regarding computer science. Through the process of creating a gender-inclusive game to teach computer science, it will provide guidelines for future educational game projects. Beyond these individual project deliverables, it will improve our understanding of the potential for procedural content generation to transform education, through its development of a new technique for generating game content based on supplying educational objectives.
    (Project link on NSF website.)

    August 19, 2014 02:31 PM

    August 18, 2014

    Gail Carmichael

    I recently wrote to the author of a book I love, Think Like a Programmer.  I had wanted to ask some questions related to using the book for one of our first year classes. But it turned out that V. Anton Spraul also happens to be interested in stories in games, the topic of my thesis.

    Leave me alone, I'm reading.
    Leave me alone, I'm reading. / Hey Christine 

    We had some interesting discussion on the topic after he read our Foundations of Digital Games paper on coherent emergent stories. I thought that some of his suggestions of how this sort of system could work were so spot on, I wanted to share them here.  So, with Anton's permission, here is what he said:
    So I'm intrigued by your idea, especially by how it could be employed without the player knowing -- using a "tension" value to control the type or volume of music in a scene, for example. What if a game gradually lowered tension over time outside of character interaction or combat, so that a scene would actually play differently just because the player took a long walk before a key confrontation? Cool stuff. Or a game with Bioware-style dialogue interaction where certain choices were not always present, and not because certain information had previously been discovered or not, but because of the emotional state of the player avatar at that moment, as influenced by prior events? Perhaps ultimately, a game could be made which always arrives at the same scene, but the outcome of the scene is largely controlled by prior actions in a way the player wouldn't predict--so maybe the player can only shoot the final boss if he or she is angry enough to do it. (I was let down by the endings of the otherwise brilliant Deus Ex and Deus Ex: Human Revolution because they didn't depend on anything that happened five minutes before the end of the game.)
    I like the tension example especially.  We had pictured using different lighting, or camera angles, depending on the path the player took previously.  For example, maybe the ending of the game is the same either way, such as the princess returning to the kingdom after "taking care of" the threat of the nearby dragon.  Simply knowing that the player befriended the dragon and learned its behaviour was a result of it protecting its child would already cause a different interpretation of the culminating scene than if the player had slayed the dragon.  But adjustments in lighting, for example, might emphasize this.  The idea that additional small changes based on tension could reflect the urgency with which the player acted seems all the more interesting!

    This kind of approach is meant to allow players to have an effect on a story's outcome without the need to create much (or anything) in the way of additional assets.  I think the potential is enormous.

    August 18, 2014 10:24 AM

    August 08, 2014

    Gail Carmichael

    A couple of months ago, Google came out with a report called Women Who Choose  Computer Science — What Really Matters.  It details a study Google conducted "to identify and understand the factors that influence young women’s decisions to pursue degrees in Computer Science." The results are important to me as someone who does a lot of outreach.

    Creating A+ Schools
    Creating A+ Schools / Gates Foundation

    According to the study, the four most influential factors when deciding to pursue computer science as a female are:
    1. Social encouragement
    2. Self perception
    3. Academic exposure
    4. Career perception
    Social encouragement comes from both family and peers.  This is one reason that I see changing someone's attitude toward computer science to be a win, even if they will never consider pursuing it themselves.  At least if someone considering CS tells that now-positive-thinking person, she is more likely to say "Oh, cool!" instead of making fun.  Also interesting is how effective it is to get encouragement in extra-curricular settings, which is great for the type of outreach I tend to do.

    It's not surprising that perception of one's abilities in math influence their decision to pursue CS.  What's cool to see is a confirmation that the "ultimate source" of passion comes from a love of problem solving and tinkering.  This is one aspect of CS, along with the social good you can do, that we are hoping to convey in our Gram's House project.

    The report had this to say about exposure:
    Early exposure to Computer Science is important because familiarity with a subject can generate interest and curiosity while establishing a sense of competency. Moreover, even a basic understanding of Computer Science provides insight into viable career paths within the field and how those careers can be leveraged to achieve personal goals.
    I constantly wonder when the best time to expose girls to CS is, especially since the study showed that age of first exposure is not an influencing factor.  Middle school seems like a good place to start, since those girls are old enough to understand some interesting problems and create things with code.  If we hook them, they can choose the right courses in high school while their interest is still fresh.  But what happens when high school rolls around? Boys, cliques, popularity, competing interests... There are so many opportunities to lose them again.  I believe middle school is a good place to start, but that we need to follow up again during the high school years to reinforce the good we did earlier on.

    I also believe we could be easily integrating computer science into the school subjects everyone is already taking.  The study showed that "regardless of how they were exposed, young women who had opportunities to engage in Computer Science coursework were more likely to consider a Computer Science degree than those without those opportunities." I once put together a list of how CS Unplugged activities could be used in other school subjects.  Daniel Kimball discusses similar ideas of how CS can be integrated.  Beaver Country Day School in Boston recently integrated coding into every class.  It's not impossible, and it doesn't require a stand-alone computer science class!

    Exposure can come from other avenues as well.  In terms of career perceptions, the report suggests that "visibility of female role models in Computer Science and telling stories about the positive social impact careers in computing can have, can enable young women to visualize themselves in the field." This is one of the reasons for Anita's Quilt, a collection of inspirational stories from women in tech that I help with.  The stories and role models are out there, and it's now a question of how we get them to the right people.

    August 08, 2014 10:44 AM

    July 18, 2014

    Gail Carmichael

    This past June, I designed and taught an introductory programming course through Girl Develop It! Ottawa called Learn to Program With Python.  It was a two-part course hosted at Shopify and geared toward complete beginners.  I wanted to give a solid foundation in four core programming concepts —  variables, conditionals, iteration, and functions —  using the visual context of Python's turtle module, then reinforce these concepts by building up a simple text adventure game.

    You can check out the outline and delve into the detailed contents of the course here.

    Overall, I'm pleased with how the two three hour sessions went.  Not only did I think that the material was about right for the length of time, it served as a test run for my arts and social science class.  I am hoping to use Turtle this fall to get my students to learn the same core programming concepts.

    One negative aspect was that we had a mix of experience in attendance.  Generally those who weren't beginners would have not benefited from the course as much; I truly wanted to start from the very beginning.  Deciding how to pace the course is difficult when some students already know how to program, and just want to learn Python in particular.  It is impossible to please everyone.  That said, if I prepare myself and the TAs better for this in the future, we should be able to come up with extra challenges and things to try for those with more experience.

    The general feedback was positive, and the sense of community both nights was amazing.  Alexandra sums it up well!  I think our next courses will start to delve into the core Girl Develop It tracks, which will please those with more experience.  First we need to figure out what to do about setting ourselves up properly as a foreign Girl Develop It! chapter in Canada.  I hope it doesn't take too long because it's clear there is a need for more opportunities to learn to code!

    I would like to leave you with a picture one of the more experienced students Carolyn drew during the course.  She was actually a star student of mine this past year at Carleton, and came this course for a fun way to learn some Python.

    The coolest part is that she showed her daughter this picture as the turtle drew it, and the daughter thought it was like magic.  Hopefully Carolyn can turn that excitement and wonder into a desire to learn some programming! :)

    Thanks a million to the wonderful TAs who came out to help with this course, and to Kristyn for taking the wonderful photos you see above and in the Meetup event.

    July 18, 2014 11:07 AM

    July 02, 2014

    Gail Carmichael

    The tenth annual Games, Learning and Society Conference, held this past June in Madison, WI, featured a panel on women in gaming.  Moderated by games-journalist-turned-grad-student Amanda Ochsner, the panel featured some heavy hitters: Elisabeth Gee, Deborah Fields, Yasmin Kafai, Colleen Macklin, and Mary-Margaret Walker.

    The discussion was mainly focused on how to get girls interested in both game design and computer science (but not necessarily both).  Following is a summary of some of my notes from the panel.

    Image modified from original via Wikimedia 

    How can educators create better mentoring opportunities for young women?

    The first answer was a great one: be visible, and be outspoken.  Show why this is such an exciting time to be in games.

    The experience of some panellists is that no matter how they set up workshops featuring game programming, it's always the boys who sign up.  We need to talk to teachers and actively talk to girls, personally inviting them to come.  Perhaps girls-only groups are needed (that's what I've been doing in my own outreach!).

    One panellist pointed out that she was able to attract girls by featuring stories, music, and animations rather than games and programming directly.  The students don't even realize they are programming at first.  In another panellist's workshop, attendees would work on e-textiles; in this case, marketing must be done very carefully as both boys and girls hold onto stereotypes they aren't even aware of ("no sewing, circuitry or programming required").

    Another challenge is that many still hold onto stereotypes about what it means to be a gamer; supposedly, only uncool gamers take game design classes.  At ASU, they are trying to infuse game design into journalism.  Foregrounding the subject matter that games are about seems to be a successful way to attract more women.

    How can we approach teaching game design in ways that support a diversity of ideas and process?

    In a sense, the discussion surrounding this question presented a solution to the previous one.

    One of the most interesting ideas was that all art is technical - there are always technologies to learn that you use to be creative.  Hence, making games, and all the technology behind that (including programming) could be considered an arts subject.  The technical element is simply something you need to learn in order to effectively express yourself.

    How might we engage young girls in game design, programming, and technology at earlier ages?

    Something to remember: "We can't do it all, and we can't do it all in programs." Nonetheless, it is not difficult to find really good tools to help design programs to engage girls.  We can engage kids in actively designing and making things, and in making connections to things they care about.

    One greater issue is the poor quality of many games designed for girls.  According to panellists, there is nothing in these games to get girls interested in computing and other technical pursuits.  The games have a low level of complexity.

    We are often trying to get girls interested in game design and computing at the same time.  Perhaps, panellists pointed out, we should sometimes keep these types of outreach separate.  Learning about technology, for example, doesn't always have to be done through game design.  There are many other great opportunities like e-textiles.  At the same time, we don't always have to be trying to get girls interested in programming and computer science when we teach them game design.

    Remember that each kid is already designer ("I designed my first games during recess").  That's a start.  Now let's talk about how games are actually made.  In the 1980's, you typed game code from a magazine to be able to play.  Everyone understood how programming worked because we had to.  Can we make programming not such a special thing?


    For more, see my conference notes on this session.

    July 02, 2014 03:22 PM

    June 29, 2014


    Just a note for anyone still pointing to the RSS feed: I migrated the blog to exclusive Atom syndication some time ago. Please point your feed reader or syndication service at http://moonbase.rydia.net/index.atom intead.

    June 29, 2014 10:00 AM

    June 18, 2014

    Gail Carmichael

    When I attended the 2014 Games, Learning and Society Conference (GLS10) in beautiful Madison, Wisconsin, I did not expect to engage much with the topic of stories in games.  True, it's a hot topic these days, but I didn't think it would show up much at this venue.  Thursday's keynote speaker Scot Osterweil proved me wrong.

    Image via Calico Spanish

    Osterweil, Creative Director of the Education Arcade at MIT, titled his talk "It's Not About the Game."  Though I am not confident I know for sure what he meant by this, I have two guesses: it might be related to Eric Zimmerman's Games Are Not Good For You talk, which Osterweil discussed at length; or, it could be a call to focus on the importance of narrative within games.

    In part, Zimmerman's talk was trying to say that we need to just let games be games.  We should not be instrumentalizing them for other purposes (like, say, education?).  This made Osterweil realize what we are really doing as educational game designers.  We are trying to change people with technology.  In a sense, it's not unlike the reprogramming scene in A Clockwork Orange, he points out.  Is this what games are supposed to be all about?

    Games are supposed to be about play, and play is all about agency.  It's what we do when we don't have to do something else.  We don't do it for some specific purpose —  not even education.  Play is about freedom: freedom to explore, freedom to fail, freedom of identity, and freedom of effort.  How many educational games actually include all of these freedoms? No game can make you play harder than you want to.

    You can't just add "fun" to a math game.  If you don't find something fun to begin with, you shouldn't make a game about it.  Games are much more about building conceptual frameworks and preparing for future learning - not instructing something.

    So what about narrative?

    Osterweil says he grew up wanting to be a storyteller.  He noticed that the Greeks had a word, agon, that was relevant in multiple areas important in Greek culture.  Agon means competition, which has context in games (i.e., competing in the Olympics) and stories (conflict in theatre).

    When we go into a game, we enter as a contestant: "we willingly submit to arbitrary rules and structures in pursuit of mastery, only if we can continue to be playful".  In other art forms, like film and theatre, we are spectators (though possibly not passive ones).  We construct knowledge differently with these two roles, and with stories in games, we can make them overlap.

    In addition to being contestants and spectators, we can also be creators.  Perhaps where all three overlap is where the most powerful educational opportunities lie.

    Osterweil emphasized that we as game designers need to start thinking more about the affordances of story and gameplay.  We need to start thinking more about the ways narrative is engaging our players.  Beyond this, when making games, we have to care about it ourselves; we can’t just think about what the kids want or else we'll end up giving them a creepy tree-house.  Both the creator and consumer of narrative need to be leaning forward in interest.

    To read more about the keynote, you can look at my raw conference notes, the collaborative conference notes, Sam Potasz's blog post summary, and Donelle Batty's Storify of the second conference day.

    June 18, 2014 11:48 AM

    June 13, 2014

    Kees Cook

    In 2009, I reported this bug to glibc, describing the problem that exists when a program is using select, and has its open file descriptor resource limit raised above 1024 (FD_SETSIZE). If a network daemon starts using the FD_SET/FD_CLR glibc macros on fdset variables for descriptors larger than 1024, glibc will happily write beyond the end of the fdset variable, producing a buffer overflow condition. (This problem had existed since the introduction of the macros, so, for decades? I figured it was long over-due to have a report opened about it.)

    At the time, I was told this wasn’t going to be fixed and “every program using [select] must be considered buggy.” 2 years later still more people kept asking for this feature and continued to be told “no”.

    But, as it turns out, a few months later after the most recent “no”, it got silently fixed anyway, with the bug left open as “Won’t Fix”! I’m glad Florian did some house-cleaning on the glibc bug tracker, since I’d otherwise never have noticed that this protection had been added to the ever-growing list of -D_FORTIFY_SOURCE=2 protections.

    I’ll still recommend everyone use poll instead of select, but now I won’t be so worried when I see requests to raise the open descriptor limit above 1024.

    © 2014, Kees Cook. This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License.
    Creative Commons License

    June 13, 2014 07:21 PM

    June 06, 2014

    Gail Carmichael

    After a one-year hiatus, I ran my all-girls mini-course on computer science and games again this past May.  Along with a picture of my lovely class, I wanted to share this year's pre- and post- survey results.  Note that while I compare some numbers to past courses, I did not post data from 2012 and there was not course in 2013, so neither year is mentioned.

    Pre-Course Survey Results

    Before we begin with our first class, I ask the girls to fill in a survey to try to capture their attitudes toward computer science.  Naturally, I hope to see a general improvement in these attitudes by the end of the course.  Here are some of the more interesting results.

    "I am confident that I understand what the field of computer science is."

    • Strongly agree: 1
    • Agree:5
    • Netural/don't know: 11
    • Disagree: 2
    There was less confidence about what the field is than in some previous years (e.g. 2010, where 50%  agreed to this statement in the pre-course survey).

    "I would consider computer science as a good career for women in general."

    • Strongly agree: 5
    • Agree: 14
     Despite the lower confidence, there was not a single neutral response for the first time.

    "I would consider computer science as a good career for me."

    • Strongly agree: 5
    • Agree: 5
    • Neutral/don't know: 9
    This is the highest number of any type of 'agree,' let alone 'strongly agree.'  Could it possibly mean that the widespread efforts to get young people (especially girls) into computer science are actually starting to work? I hope so!

    Post-Course Survey Results

    I ask many of the same questions after the course, as well as some new ones.  Here are the most interesting responses.

    "Are you glad the course was just for girls?"

    • Yes: 8
    • No: 1
    • I'm happy as long as I'm not the only girl: 10
    We did our surveys before we got together with the other (mostly male) class to share our games and eat pizza.  It would be interesting to see if their responses would change after that event.

    "I enjoyed learning about what computer science is really all about."

    •  Strongly agree: 12
    • Agree: 6
    • Neutral/don't know: 1
    This is a great result, even considering how many came to the course open to the idea that computer science might be interesting.

    "I would consider computer science a good career for me."

    •  Strongly agree: 8
    • Agree: 6
    • Neutral/don't know: 5
    This is the best year-to-year result for this question that I've seen.  Even though 2011 was a good improvement over 2010, this is better still.  It is also wonderful to see so many responses move up (neutral to agree, etc).

    "I am more likely to try computer science in high school or university after taking this course, or this course has confirmed my desire to do so."

    • Strongly agree: 8
    • Agree: 10
    • Neutral/don't know: 1
    Fantastic.  I only hope that their next experience with CS is a good one.  (I hate that I have to worry about that!)


    This year's course was not changed drastically from previous years.  We spent some more time in the lab, and had more guests talk to them.  I also skipped the section on women in the industry.  Although one person said she wished I had covered that topic in her survey comments, I have to wonder if skipping it contributed to this year's success.  (I previously wrote a bit about messaging in these sorts of workshops and courses.)  Either way, I am thrilled, and can't help but think that maybe these sorts of programs are finally going to make a difference soon at the post-secondary level.

    As usual, you can read more about the course here, or take a look at the materials as presented to the girls.

    June 06, 2014 03:11 PM

    May 27, 2014

    Gail Carmichael

    This year's Go Code Girl event, which focused on programming with Python and the Raspberry Pi, was a great success.  The impact surveys the girls filled in at the end of the second day really help illustrate this.  The results are summarized in the image below, and again in text below that.

    (If you'd like to take a look at the slides etc, you can do so here, keeping in mind that pacing and interaction with students is not evident from slides alone.)

    I enjoyed learning about what computer science is really all about.
    • Neutral/don't know: 2
    • Agree: 16
    • Strongly agree: 9
    I enjoyed leaning how to program (or learning to do new things with code if I already knew how to program).
    • Neutral/don't know: 1
    • Agree: 14
    • Strongly agree: 12
    I enjoyed playing with the Raspberry Pi.
    • Disagree: 1
    • Neutral/don't know: 3
    • Agree: 15
    • Strongly agree: 8
    My confidence in my ability to use and understand computers has increased.
    • Strongly disagree: 1
    • Disagree: 1
    • Neutral/don't know: 7
    • Agree: 16
    • Strongly agree: 2
    My view of computer science as something to study or as a career has become more positive.
    • Disagree: 1
    • Neutral/don't know: 6
    • Agree: 15
    • Strongly agree: 5
    I am more likely to consider taking computer science and/or programming courses in the future because of this workshop.
    • Disagree: 2
    • Neutral/don't know: 5
    • Agree: 14
    • Strongly agree: 6
    I thought Python was a good choice for this workshop.
    • Neutral/don't know: 3
    • Agree: 21
    • Strongly agree: 3
    I thought the Raspberry Pi was a good choice for this workshop:
    • Disagree: 1
    • Neutral/don't know: 5
    • Agree: 14
    • Strongly agree: 7
    I felt the workshop content was clear and well explained.
    • Strongly disagree: 1
    • Neutral/don't know: 3
    • Agree: 14
    • Strongly agree: 9
    I felt the workshop had the appropriate level of interactivity.
    • Disagree: 1
    • Neutral/don't know: 2
    • Agree: 15
    • Strongly agree: 9

    May 27, 2014 03:36 PM

    May 22, 2014

    Inkscape Tutorials

    EPS import works out-of-the-box for most inkscape users on Linux, however, on Windows EPS support does not work by default. It is possible with manually installing software called ghostscript, and tweaking a few settings. This tutorial explains in detail how to get EPS import working for Inkscape for windows.

    May 22, 2014 09:46 PM

    May 19, 2014

    Inkscape Tutorials

    Here is great tutorial on creating simple water droplets in inkscape. It demonstrates the use of the the ellipse tool, basic node editing to create shapes and using gradients to emulate light and depth.

    May 19, 2014 03:21 PM

    May 13, 2014

    Gail Carmichael

    On the last two Saturdays of March, a group of high school girls came to both Carleton University and the University of Ottawa to learn about computer science and try their hand at coding.  This was our second annual Go Code Girl event, and thanks to Python's turtle module and the Raspberry Pi, it was even better than last year's!

    Last year, we based our one-day workshop on Processing (postmortem here).  When my colleague from Ottawa U, Nathalie Vallières, suggested we try using the Raspberry Pi for our two-day workshop this year, I was both excited and scared.  Excited because I'd always wanted to try out the Pi, but scared because any time you introduce hardware, things can (and will) go wrong.

    Biting the bullet, our School of Computer Science ordered some Pis to go with the set that Ottawa U already had. We decided to teach Python using the turtle module on the first day of the workshop at Ottawa U since Python seems to be the most popular language for the Pi.  We would then focus on the Pis themselves on the second day of the workshop at Carleton. In the end, both days ended up going very well.

    On the first day, after introducing what computer science was all about, we started drawing with our new turtle friend.  Students typed in a minimal program in IDLE and ran it to see the magic happen.  From there, we introduced basic programming concepts one by one, leaving time in between to try some challenges or just experiment.  First came repetition, then variables, and finally booleans and if statements.

    On day 2, we had the girls set up the Pis in the computer lab we normally run tutorials in (having a projector in there was really nice).  The monitors there had HDMI inputs; perfect for the Pis.  The keyboards and mice were easy to "steal" for the Pis as well.  The only problem we ran into was the power outlets mounted on the desks: sometimes, the Pis didn't seem to like the level of power coming from them.  So some girls just plugged the USB cable powering the device directly into the monitor.  Smart.

    We started with a lesson on using the command line.  I was worried this would be dull for them, but starting with a pictorial representation of how they could feel like "movie-style hackers" with the command line probably helped.  They loved doing things manually at the prompt and seeing the results in the GUI file browser! I was shocked but thrilled.

    After playing with the command line, I walked them through a few of the steps needed to make a text adventure game.  To be honest, I wish we had more time for that.  But they seemed to enjoy it anyway.  Once again, we encouraged them to play and experiment, so if they wanted to play with Scratch or look around on the Pi instead, that was ok too.

    All in all, I'm very happy with the formula we came up with this year.  If you'd like to see the slides and other resources I posted for the girls, check them out on my website.  If you've ever done a workshop similar to this, I'd love to hear about it in the comments.

    May 13, 2014 03:04 PM

    May 12, 2014

    Inkscape Tutorials

    Butterscotch Shenannigans is a small (2 person) indie game developer from Saint Louis with a bunch of highly rated games available for iOS, Android and PC.


    The awesome thing about this indie shop is that they use Inkscape for the creation of all their in-game visual assets. A few of their recent games include:

    Quadropus Rampage

    A hilarious epic Endless Roguelike Brawler with awesome art made in inkscape:

    Runner 2013-05-22 19-35-05-38

    Towelfight 2 : The Monocle of Destiny

    A Twin Stick Arena Adventure with art also made in inkscape:

    Forest 1136x640



    They also have a new game in development called Crashlands, which is a massive mobile crafting/survival game.
    alltogether snipped_newtiles

    as an added bonus, Sam (one of the devs) also uploads narrated time-lapse videos of how he creates these assets in Inkscape:

    May 12, 2014 10:15 PM

    In this tutorial, you are going to learn a technique in inkscape to create a soft, feathered background.


    The beauty of this technique comes from the fact that it relies heavily on clones, and live path effects. You spend a little time rigging up the effect, and then you can fluidly change the clone originals to update the result.

    A bit confused? Just follow the steps, and hopefully everything will become clear!

    Spawn a Spectacular Spiro

    First up, we need to draw a curve with 5 points, and add the Spiro path effect to make it nice and smooth.

    Detailed Steps:

    1. Draw a Curved Path
      Using the pen tool, draw a curved path with 5 points. Make sure that all segments are curves.

  • Open Path Effects
    Open up the Path Effects dialog using Path > Path Effects

  • Add New Effect
    Making sure your path is still selects, click on the + icon at the bottom of the Path Effects dialog to add a new path effect to the path.

  • Add Spiro Effect
    In the Add Path Effect dialog that appears, choose the Spiro Spline option, then click the Add button.

  • Gaze at Spiro
    Your curve should look a lot smoother now; that is the awesomeness of the spiro.
  • Taper the spiro with pattern on path

    Next up, add a triangle “brush” to our spiro curve using the Path Effect Pattern on Path.

    Detailed Steps:

    1. Draw a Triangle
      Using the pen tool, draw a triangle

  • Copy to Clipboard
    Select the triangle, and copy it to the clipboard using Edit > Copy. After copying it to the clipboard, feel free to delete it. (or keep it if you are sentimental about your triangles)

  • Add Pattern on Path
    Like when adding the spiro path effect, open the Path Effects dialog, click on the + at the bottom to add a new path effect. This time, choose Pattern on Path from the dialog, then press the Add button

  • Paste the Triangle
    In the path effects dialog, Click the clipboard icon to paste the triangle we copied in step 2. The triangle is the pattern (“brush”) we are putting on our path (the spiro).

  • Admire Tapered Sprio
    your tapered spiro should look something like this.
  • Unset the original

    In this phase, we unset the fill and the stroke of the tapered curve that we are going to clone later

    Detailed Steps:

    1. Unset Fill
      Right click on the “None” label next to fill in the bottom right corner, and choose “Unset Fill” from the menu that appears

  • Unset stroke
    Right click on the black box next to stroke in the bottom right corner, and choose “Unset Stroke” from the menu that appears

  • Bring in the Clones

    Next, we need to clone our path, move the clone away from the original, change the colour, and duplicate it several times.

    Detailed Steps:

    1. Select Path
      Using the select tool, select the path.

  • Clone Path
    Clone the path once, using Edit > Clone > Create Clone or ALT + D

  • Move Clone
    Move the Clone away from the original to a different part of your drawing

  • Change Clone Colour
    Change the colour of the clone either with the palette or the Fill / Stroke dialog. Note that at this point only the clone should change colour. If both objects change, you are likely changing the colour of the original

  • Duplicate 30X
    Duplicate the coloured clone 30 or so times using Edit > Duplicate or CTRL + D

  •  Jitter, jitter, jitter, those clones

    In this phase, we are going to use the tweak tool to jitter the position of our 30 clones, as well as jitter some the saturation and lightness values of the clones.

    Detailed steps:

    1. Select all 30
      Using the select tool, select all 30 of your clones. (the easiest way to do this is to click and drag around the clones.)

  • Tweak Tool
    Switch to the tweak tool by clicking the tweak tool icon from the toolbox.

  • Choose Move objects Mode
    From the Tweak tool’s Tool control bar, choose the Move Objects mode:

  • Click n Drag
    Now click and drag the tweak tool over the clones and watch them bounce around. You may need to play with the Width and Force values of the tweak tool. Note also, that the selection outline of the objects is usually not shown when in the tweak tool (glance at the status bar to confirm you, indeed, have them selected). Your end result should look something like this:

  • Lower opacity
    With the 30 clones still selected, open the Fill / Stroke Dialog, and lower the opacity of the clones. In my example, I chose a value around 30%.

  • Tweak the colours
    Still, with the 30 selected, switch back to the tweak tool, and this time set the mode to Jitter Colours. Then make sure the only 2 values checked  / toggled are saturation and lightness. Note that in the below example (because the inkscape window is smaller) the channels are hidden in a dropdown. In a larger window they will show as toggle buttons in the toolbar.

  • Click n Drag (again)
    As with step 4, click and drag over the clones and watch their colours change slightly. If the change too much, consider tweaking the Force value

  • Where the magic happens

    This is the phase where we play with the original that all our clones are based off, as well as our triangle “Brush”.

    Detailed Steps:

    1. Change to Node tool
      First, select the Black original , and change to the node tool. The familiar node editing handles should appear

  • Play with the spiro
    Play with the nodes of your spiro to make a better curve. If you have done all the previous steps correctly, your blue creation should update with the changes to the black original path. Play around til you get something that you like.
    Click to view slideshow.

  • Edit pattern Source:
    Click on the Show pattern Source button in the Path Effects dialog, and somewhere on the inkscape canvas, your triangle should appear (you may need to zoom out to see where it appears. if it is far from your drawing, select all 3 nodes and move it closer.)

  • Now, using the node tool, edit the triangle shape, adding and moving nodes. Your changes should update as you go on the black original path, and the blue clones. Magic, huh?
    Click to view slideshow.
  • Finishing off

    Here we duplicate our 30 clones a bit more, rotate each group a bit, and tweak the opacity of each group

    Detailed Steps:

    1. Group your 30 Blue clones together   image8945

    2. Now duplicate the group about 2-3 times, and rotate each one a bit, and play with the opacity of the groups:

  • Now, draw a rectangle over the area, and use a clipping path to create your nice square background:
    image8989 image9000
  • Keep Playing

    Remember, that you can still play with the black original path, and your triangle brush path to tweak and change your background even more:

    Click to view slideshow.

    May 12, 2014 07:07 PM

    May 09, 2014

    Inkscape Tutorials

    Here is a great tutorial on how to create a decal / sticker with inkscape. It is a good explanation of how to use the star tool in inkscape, how to align objects, and some of the advanced techniques of the text tool, including kerning and putting text on a path (creating curved text)



    May 09, 2014 03:47 PM

    May 07, 2014

    Kees Cook

    The Linux Security Summit is happening in Chicago August 18th and 19th, just before LinuxCon. Send us some presentation and topic proposals, and join the conversation with other like-minded people. :)

    I’d love to see what people have been working on, and what they’d like to work on. Our general topics will hopefully include:

    • System hardening
    • Access control
    • Cryptography
    • Integrity control
    • Hardware security
    • Networking
    • Storage
    • Virtualization
    • Desktop
    • Tools
    • Management
    • Case studies
    • Emerging technologies, threats & techniques

    The Call For Participation closes June 6th, so you’ve got about a month, but earlier is better.

    © 2014, Kees Cook. This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License.
    Creative Commons License

    May 07, 2014 06:31 PM

    Inkscape Tutorials

    In addition to the @inkscapetuts on twitter, the inkscape tutorials blog is now also on google+. Going forward, both the twitter and g+ streams will be updated with all the new posts that show up here on the blog. So if you prefer to use either of those services, follow us there.

    Speaking of google+, there is also the official inkscape google+ page, which features news and updates from the inkscape project. Also, there is the inkscape community on google+, that has tutorials, a gallery, and general inkscape posts and discussions.


    May 07, 2014 01:51 PM

    May 06, 2014

    Inkscape Tutorials

    Here is tutorial that covers some awesome text tricks with inkscape

    May 06, 2014 07:10 PM

    István Szép from Pesto Design is running another inkscape live drawing event. This event is titled “How to draw on a photo”. Everyone is welcome to watch and participate. Go to the Facebook event page to see all the details on when and where. The first live drawing event, character design in Inkscape, is also available to watch on youtube.


    May 06, 2014 05:21 PM

    Here is an amazing video tutorial on character design in Inkscape byIstván Szép from Pesto Design





    May 06, 2014 05:13 PM

    May 01, 2014

    Inkscape Tutorials

    Here is a detailed, yet simple guide to creating a typography poster in inkscape


    May 01, 2014 03:11 PM

    April 30, 2014

    Inkscape Tutorials

    Here is a neat little trick i just discovered. These designs are just done using the Inkscape spiral tool, and a dashed stroke! Once you try it out, be sure to leave a comment showing off your spiral design!


    How it is done:

    Step 1. draw a spiral using the Inkscape spiral tool, and add more turns to your spiral  (i changed from 3 to 20):



    Step 2. In the fill and stroke dialog, choose the Stroke style tab. Then bump up the stroke width (i chose 7px), and change the Dashes to something non-solid.


    Step 3. Experiment! change the stroke width, dash style, and number of turns of the spiral:


    If you want to see the settings required to make the above designs, download the SVG from the openclipart library

    April 30, 2014 09:46 PM

    Here is a quick (less than 3 minute) video that covers 5 nifty inkscape features that you may not know about. It is a super-quick yet super useful little video for new and veteran inkscapers alike.



    April 30, 2014 10:39 AM

    April 29, 2014

    Gail Carmichael

    I did it.  I survived my first year of teaching.  Exams are marked, and grades are submitted.  And while I still have students concerned about their results to meet with, I am finally able to breathe and spend some time reflecting on my experience.

    [image via WikiMedia]

    Over the two semesters of my first year of teaching, I taught five courses, mostly for the first time.  I had more than 1000 students and around 30 TAs.  I answered countless emails and forum posts.  I assigned 32 assignments.  I gave three midterms and 7 quizzes.  I made hundreds of slides, sometimes based off of existing content, and sometimes my own.

    Needless to say, a large part of this job is management — of both time and people.

    It was challenging at times, there is no doubt about that.  I had to relearn a lot of the material I was teaching.  This lead to many evenings spent on preparation, especially during second semester when I had three courses I hadn't taught before.  There were times I didn't get as far as I wanted, and fumbled in class.  There were times I wanted to crawl in a hole and stay there.  But I took comfort in knowing that I would never have to teach three courses for the first time ever again.

    My students were generally forgiving.  Actually, my students were amazing.  They participated in class and thanked me for my engaging teaching style.  They sent me really nice comments in email.

    Sure, not all students loved me.  My style didn't suit all of them, or maybe my slip-ups frustrated them.  Understandable.  Some probably didn't want to put in the effort to get the results they wanted.  I wish I could have inspired those ones.  Maybe some I did.

    The thing that makes me feel the most energized of all is thinking about how to improve for next year.  I know I need to take a different approach to teaching my arts and social science students Python.  I know I need to switch up some of the examples for my Processing class and come up with more small examples. I need to adjust how I use the animation libraries with Racket and have some ideas for how to improve the course content overall.  There's lots of talk on what to do with our second first-year programming course, and I've had fun thinking about whether we should do it in C/C++ with Think Like a Programmer.  And of course there are a million little things to get better at that I can't possibly list here.

    Most of all, this past year has confirmed that teaching is what I was meant to do, and I am so thrilled to be able to come back and do it again for another year.

    April 29, 2014 01:55 PM

    Inkscape Tutorials

    Here is a detailed tutorial showing how to create a scene from minecraft in isometric projection using inkscape. The tutorial primarily uses inkscape’s axonometric grid to create shapes in the isometric projection.


    There are some steps in this tutorial that are very manual — a more advanced inkscaper would be able to use tile clones for some of the steps. But overall it is a great tutorial with an impressive final result.


    April 29, 2014 01:50 PM

    April 28, 2014

    Inkscape Tutorials

    Dave Crossland from the Crafting Type crew shows how to use the new Powerstroke feature in the upcoming inkscape 0.91 release to draw letters




    April 28, 2014 07:40 PM

    Here is a quick workflow on how to create a cartoony pirate with inkscape. This tutorial is not super-detailed but outlines the steps the author took to create the pirate artwork below:


    April 28, 2014 07:00 PM

    The Inkscape developers are hard at work developing the new version of Inkscape (0.91). This post is part of a series that will outline some of the awesome new features that will be available when Inkscape 0.91 is released.

    We recently posted an article about Guides in inkscape, and twitter user @daishi424 pointed out that a few of the features in that post were actually new features in Inkscape 0.91. So here are some of those features that you will get for guides when the new version of Inkscape is released.

    Quick toggling of guides

    Previously, to toggle the visiblity of guides, the menu item View > Guides and the associated shortcut “|” (the pipe key) was the only way. In Inkscape 0.91, guides can now also be toggled by simply clicking on the ruler (either horizontal or vertical).

    Changing the colour of a guide

    To change the colour of a guide, double click the guide to bring up the Guideline dialog. Click the colour switcher button under the Label field to change the colour of the guide


    Labeling Guides

    The Guidelines dialog (shown when you double click a guide) also allows you to set labels to your guides. These Labels are shown on the guide at the Guide Origin (the small circle that is on every guide)



    If you want to try out this new feature already, you will need to  Download a “nightly” or “development” version of inkscape. Links to various builds of development versions of inkscape are listed at the Inkscape downloads page.

    April 28, 2014 02:14 PM