Book Review: Girls Who Code


Girls Who Code is an organisation aimed at helping women get into tech.

The founder Reshma Saujani wrote a book by the same name. The book’s recommended age is 8-12. It’s a comprehensive guide for learning to code.

While well-intentioned as it is, I don’t think this is a very book as means for learning to code. For a book that is intended for children – it is too long and overwritten.

From a feminist perspective, isn’t a STEM book targeted at women a little ironic?

One of the main points in discourse around women in tech is that tech is gender neutral – tech isn’t an inherently boyish activity.

I find it a little amusing then, that this book fundamentally uses gender roles to sell itself.

I don’t think it’s wrong to do it. If there really is a cultural norm of ‘girls don’t do tech’ and this book gives permission for a girl to be interested in tech, then that’s a good thing.

Also, the book is filled with profiles of important women in tech – and that’s great. Probably my favourite part of the book.

A disclaimer

I haven’t read the whole book. I got a good few pages in before I gave up, and just quickly skimmed the rest. The book is too wordy.

My review

This book is way too large and cumbersome.

It’s 160 pages long, and each page is filled with with text.

If the goal is to encourage young girls into tech – this isn’t the right way to do it. It’s not the right way to encourage any young person into tech.

It might impress parents, and other adults – with its comprehensiveness – but a child is going to find it overwhelming, and unfun.

I think being comprehensive is good. But this book uses too many words to do it.

An introduction to computer science book for children should be first and foremost interesting and fun, and easy.

One hundred and sixty pages of fairly dense reading, doesn’t really sound like fun.

Another thing this book suffers from, is bad design. The book uses a lot of cute handwriting style comments and arrows – I guess in an attempt to make it seem more friendly.


I think it’s just bad design.

A coding book should just aim to communicate as effectively as possible. Using recognisable and tidy layouts is the best way do to this.

This isn’t to say that a coding book shouldn’t be fun. Infact – I tend to prefer reading tutorials that have a more informal tone – but I’m going to find if it said ‘Righto lads, here’s how to create a for loop’ off putting.

The taco creation algorithm they used to demonstrate for loops was interesting, as was the bead creation algorithm. The profiles and timelines throughout the book are good.

What does make a good coding book for children?

It’s easy enough for me to criticise – but what would a good coding book for children look like?

It would be far shorter, for one. I think the way I would go about it – is I would create a first introductory book intended to be as fun and easy as possible, and then if the child showed continued interested in it – then they could purchase a second more indepth book.

I would aim to use as few words as possible. Each page, basically containing one simple concept.

I would intersperse simple quizzes through the book, testing the child’s knowledge. Quizzes are effective tool for maintaining engagement, as the child is given a sense achievement and progress when they answer the question correctly.

I’d intersperse cartoon pictures throughout the book to keep it interesting.

So that’s it. Seeing this book, makes me think I should I considering writing my own one.

The future is meta news.

In the wake of the Donald Trump presidency, there’s been a sudden new ‘fake news’ narrative appearing in social and media discourse.

The discourse arising tends to point at two things:

  • Individual people exist in echo chambers, and seek to consume and share content that fits their worldview, without regard for truth.
  • At the same time – there is also a general distrust in mainstream outlets, and the fake news dog whistle is actually used to criticise the mainstream media – by suggesting that it’s the mainstream media that is reporting things wrong.
    One only needs to look at the responses to @WashingtonPost’s Twitter account to see examples of this.
    fake news.PNG
    Caveat: It’s hard to tell if accounts like this aren’t troll bot accounts.

While I don’t think that the mainstream media is out and out producing lies or fully factually incorrect content, I think it is fair to say that the media has a vested interest in producing certain kinds of content, and it does seem that a lot of what we see on the media now is more opinion or ‘analysis’ – which isn’t something that needs to withstand basic fact checking.

Recently, I’ve taken an interest in watching RT (Russia Today – a Russian state run media outlet). It’s interesting to see the difference in what RT says about particular issues, as opposed to say Fox News.

For example, let’s look at Allepo:

Fox News

alepo fooooox.PNG
The Fox News narrative mentions deaths caused by rebels and government forces.


syria rt.PNG
The RT article  mentions ‘liberation’ and no mention of civilian casualties by government forces.

So we have two problems:

  • People are just going to share whatever suits them.
  • The media have their own agendas which influences the content they produce.

Now we have a problem – how do we decide what content to consume?

Also – we’re not just concerned about the actual truth of the matter – but we also need to know what other people are thinking or reading.

The answer: meta-news. 

Instead of reading news from your favourite news site, whether that’s RT, Fox News, Al Jazeera, The Guardian, The Washington Post – you read a factual, algorithmic aggregate of all news websites.

How this would work, is that some kind of web crawler will read and view news content as it released, and analyse the frequency of certain words, the general meaning etc. It then presents that story  with a breakdown of the various narratives being presented, who’s presenting them etc. For example, on the subject of Aleppo, as well as giving the facts of what happened (and who’s reporting what facts), it would report which outlets are using the term ‘liberate’ and which are focused on civilian deaths by government forces etc.

The tool could be also be used to report sentiment on social media. For example, as the story breaks, it can report ‘users on twitter are saying …’. Further investigation can show that ‘Users that say this about x subject, are saying such and such about y subject’.

This tool isn’t a solution to finding the actual truth about a matter, that still depends on journalists publishing the truth. It does however, reveal a different kind of truth, and is reliable at that (if you trust the algorithm) – the what the world is saying about certain subjects. Perhaps that’s a way of breaking free of our echo chambers.

Chrome mapping to local workspace resources tutorial.


This tutorial outlines a technique using the Chrome browser, that allows you to map webapp resources to local copies of your resources.

In this tutorial – I will demonstrating this technique for the purpose of modifying .scss and .css resources.

Effectively – the Chrome browser will use your local copies of the resources to render the webpage. This will allow you to modify your version controlled resources in the browser developer tools, and see the changes immediately.

No more tweaking in the browser and then copying to version controlled resources. No more redeploying each time want to see your changes. This may greatly quicken your development process.

Prerequisite Understanding.

For this tutorial I assume you are generally familiar with creating webapps, deploying to web servers  and working CSS and SCSS. If you don’t know Sass/SCSS don’t worry – it’s very simple, and you should learn it, because it’s awesome.

In this tutorial I’m deploying a Java webapp to Tomcat 8, and I’m using Maven for my dependency management and deployment.

If you’re not using these technologies, don’t be too worried, so long as you know how deploy your own webapp.

Project Structure

Here’s what my webapp currently looks like:


Here’s the project structure:


And here’s the code:

<!DOCTYPE html>

<link rel="stylesheet" type="text/css" href="scss/style.css">


this is a div

<span> this is a span</span>

this is a div

<span> this is a span</span>



@import 'foo';

@import 'bar';

body {
background-color: #f2f2f2;
padding: 50px;

.foo {
background-color: green;
padding: 20px;
font-weight: bold;

div {
background-color: yellow;

span {
background-color: orange;


.bar {
border: solid 2px black;


  1. First I need to compile the css.
    >sass compile style.scss style.css
  2. Now I deploy using maven
    >mvn tomcat7:deploy

Making changes the hard way

Let’s say I want to add some spacing between those two divs, and also I want to make it so all the children of the bar div also have borders.

I’ll probably do something like this:

I’ll add margin: 10px 5px; to .foo.

And I’ll add

> * {
border: 1px solid white;

to .bar.

I now recompile the .css

sass compile style.scss style.css

and undeploy, redeploy my app

mvn tomcat7:undeploy

mvn tomcat7:deploy<



There’s a much easier way to do this though.

Introducing: Chrome resource mapping

1. Configure chrome

Open chrome

  • Navigate to chrome://flags
  • Enable Developer Tools Experiments (about halfway down the page)
  • Restart chrome.
  • F12 -> Developer Tools settings
  • Enable CSS source maps.

2. Get SASS compiling and watched

sass –watch style.scss:style.css

3. Map the CSS in Chrome

  • Open chrome
  • Navigate to your deployed webapp.
  • F12
  • Sources tab
  • Right click in the sources folder structure white space -> add folder to workspace


  • Add your local assets workspace.
  • Find websites style.css
  • Right click – >map to file system resource


  • Select the corresponding style.css that’s in your local workspace.

4. Modify your .scss in chrome

  • Open a *.scss file in the chrome workspace
  • Make some changes.


  • Boom! Your changes instantly took place, and are already in your version controlled files.

This is much easier isn’t it?