IndyWatch Education Feed Archiver

Go Back:30 Days | 7 Days | 2 Days | 1 Day

IndyWatch Education Feed Today.

Go Forward:1 Day | 2 Days | 7 Days | 30 Days

IndyWatch Education Feed was generated at Community Resources IndyWatch.

Friday, 19 January


What Spielbergs The Post and Our Textbooks Leave Out Zinn Education Project

Pentagon Papers Collage


By Bill Bigelow

As I came out of the theater this afternoon after watching Steven Spielbergs The Post, I overheard a 60-something man like me say to his companions: Young people today know nothing of this history. My first reaction was that this was another kid-bashing comment that we hear so often. But then I realized: Hes right.

And why should they? Their textbooks hide pretty much everything that is important in the world from the roots of American racism, to the war against Mexico; and from the causes and consequences of climate change, to, yes, the nature of the Vietnam War.

Of course, in this respect, the film is not a whole lot better than high school textbooks, ignoring the Vietnamese, glossing over the war itself, and reducing the antiwar movement to a couple of cameo appearances of sign-waving protesters. But thats not the story Spielberg sets out to tell. Instead, The Post centers on the drama of whether or not the Washington Post will publish the Pentagon Papers, focusing on Washington Post publisher Katharine Graham (Meryl Streep) and executive editor Ben Bradlee (Tom Hanks). And, no doubt, its a compelling story, one that offers a damning critique of the cozy relationship between the government and the press, and that explores how the commercial imperatives of the for-profit news industry can hold back the pursuit of truth.

Its impossible to walk away from the film without understanding that at the heart of the struggle over the Pentagon Papers was the exposure of government lying about the war in Vietnam officials said we were winning when we were not; soldiers were sent to die to prevent U.S. humil...


Code Splitting with React and React Router freeCodeCamp - Medium

Code splitting has gained popularity recently for its ability to allow you to split your app into separate bundles your users can progressively load. In this post well take a look at not only what code splitting is and how to do it, but also how to implement it with React Router.

Note that this article just one part of my comprehensive new React Router course.

Also, Ive created a video to go with this article:

Its 2018. Your users shouldnt have to download your entire app when all they need is a piece of it. If a user is creating a new post, it doesnt make sense to have them download all the code for the Registration view. If a user is registering, they dont need the huge rich text editor your app needs on the Settings view. Its wasteful and some would argue disrespectful to those users who dont have the privilege of unlimited bandwidth. This idea has not only gained much more popularity in recent years, but its also become exponentially easier to pull offit even has a fancy cool namecode splitting.

The idea is simple, dont download code until the user needs it. In practice, it can be a little more complicated. The reason for this isnt because code splitting itself is terribly difficult, but that there are various tools to do it and everyone has an opinion on which is the best. When youre first starting out, it can be hard to parse what is what.

The two most common approaches are using Webpack and its bundle loader or the ECMAScript dynamic import() proposal which is currently stage 3. Any chance I get to not use webpack, I take, so well be using dynamic import() in this post.

If youre familiar with ES modules, you know that theyre completely static. What that means is that you must specific what youre importing and exporting at compile time, not run time. This also means that you cant dynamically import a module based on some condition. imports need to be declared at the top of your file or theyll throw an error.

if (!user) {
import * as a...


An introduction to logging for programmers freeCodeCamp - Medium

I have no idea what is going on

There is a part of software development that not all developers take very seriously. That part is proper logging and everyone who has lost countless hours during debugging knows exactly what I mean.

Useful logs can provide the developer ( especially when someone has to debug/maintain someone elses code ) with tremendous help when trying to understand what the code actually does. Some developers say that stack trace is all someone should ever need but, that could not be further from the truth. Stack traces are great and can tell you where and what went wrong, but they cant tell you how you got there in the first place. Surely you can follow execution through break points but, going in blind will make the whole process a lot more time-consuming than it actually should, and could be.

Not very helpful

That is the diagnostic part of logging, the most important one and basically the one that developers could understand easier, as it is more part of their daily work routine. There is another part which is called audit logging. Where the diagnostic logging takes care of recording the events that happen during runtime ( method calls, input/outputs, HTTP calls, SQL executions ), the audit logging is responsible for recording more abstract, business logic events. Such events can be user actions (adding/editing/removal of content, transactions, access data) or other things that have either managerial value or, more importantly, legal value.

In the back end world, there have been some great logging frameworks to choose from as the need for those arose a lot earlier. For example in Java, you can take a pick between Javas own logging engine, java.util.logging or some great external frameworks like Logback or the most popular Log4j.
In the front end world, things havent gotten that far yet, but there are options that can help you do the extra mile ( and of course get rid of trivial console.log messages ). Two such Javascript libraries for the front end are the minimal but powerful loglevel and the browser-bunyan, a port of the awesome node.js logging module for the browser. Some features are common between those frameworks but there are unique ones which should guide the developer to choose which one he needs. The use of those can be shown with some examples.

Manifesto: Server logs should be structured. JSONs a good format. Lets do that.

As original Bunyans manifesto goes, logs should be structured and easily indexed, filtered, searched. This awesome framework produces logs in JSON format which then can be easily consumed by other services for...


Two days of work for 11 seconds of TV freeCodeCamp - Medium

Blink and youll miss it: How a two-day design project went by in an instant

I recently completed a short project for the Sky Atlantic series The Tunnel, a British-French crime drama. With the third series Vengeance soon to be released, Toby Welch (friend and producer of the show) reached out to me. He needed help filling some gaps in post-production

Usually (in Britain anyway), if a brand is used on a TV show, then the makers have obtained express permission to use it. I once met a graphic designer who worked on a well-known ITV soap. Their job it was to create fake drinks labels of all the spirits behind the bar because using the real ones would have been a legal ball-ache.

So when we film an exterior shot of our protagonists driving up to a hotel and pulling over outside, we cant show the real name of the hotel. We have to come up with a fake one. And when shooting a show, its not always practical, timely or cost-effective to make real signage for a wall or the side of a building. Its often cheaper to digitally add it later in post.

The brief

Toby needed two logos for the VFX team to superimpose on to two different scenes. The first was for an exterior shot of our protagonists driving up to a hotel and pulling over outside. He needed a fairly budget looking logo, and he would provide a pre-approved hotel name (signed off by legal).

Fill in the blanks. The spaces on the walls for post-production signage.

The second was for a fake institution called the Kent & District IMMIGRATION REMOVAL CENTRE. This needed to be in a plain, black and white style that feels like government and accompanied by a private security company badge. This would be added to an interior wall that an actress would walk past. I was provided with the unedited movie clips and asked to come up with some options.

This was a pretty cool brief, which turned out to be more work than Id originally thought.


The first part of any branding project is research. For the hotel brand, I tried to find a color palette that was an amalgamation of the many roadside hotels that are so recognizable as cheap in the UK. Brands that want to scream budget are often orange. However, hotels usually try and fake their luxuriousness with something like a blue gradient.

Without wanting to sound like a pretentious, creative industry w*nker, its incredibly tricky to not make the design look too good. You want to submit something to the client that says

Honestly, Im a good designer!

but you cant because anything too stylish or premium will be less believable in the scene!

The government sign was a little easier. The to...

Thursday, 18 January


How to build your first Vue.js component freeCodeCamp - Medium

I remember when I picked up CakePHP back in the day. I loved how easy it was to get started with it. Not only were the docs well-structured and exhaustive, but they were also user-friendly. Years later, this is exactly what I found with Vue.js. Yet theres one thing the Vue docs are still short of compared to Cake: a real-life project tutorial.

No matter how well-documented a framework is, this isnt enough for everyone. Reading about concepts doesnt always help you see the bigger picture or understand how you can use them to actually make something. If youre like me, you learn better by doing, and you refer to the docs while you code, as you need them.

In this tutorial, well build a star rating system component. Well visit several Vue.js concepts when we need them, and well cover why were using them.

TL;DR: this post goes in-depth in the how and why. Its designed to help you grasp some core concepts of Vue.js and teach you how to make design decisions for your future projects. If you want to understand the whole thought process, read on. Otherwise you can look at the final code on CodeSandbox.

Getting started

Vue.js (rightfully) prides itself on being runnable as a simple script include, but things are a bit different when you want to use single-file components. Now, you dont have to build components this way. You can easily get away with defining a global component with Vue.component.

Problem is, this comes with tradeoffs like having to use string templates, no scoped CSS support, and no build step (so, no preprocessors). Yet, we want to go deeper and learn how to build an actual component that you could use in a real project. For those reasons, well go with an actual real-life setup, powered by Webpack.

To keep things simple and reduce configuration time, well use vue-cli and the webpack-simple Vue.js template.

First, you need to install vue-cli globally. Fire up your terminal and type the following:

npm install -g vue-cli

You can now generate ready-to-use Vue.js boilerplates in a few keystrokes. Go ahead and type:

vue init webpack-simple path/to/my-project

Youll be asked a few questions. Choose defaults for all except Use sass to which you should answer yes (y). Then, vue-cli will initialize the project and create the package.json file. When its done, you can navigate to the projects dire...


JavaScript type coercion explained freeCodeCamp - Medium

Know your engines

Weird things can happen in JavaScript

Type coercion is the process of converting value from one type to another (such as string to number, object to boolean, and so on). Any type, be it primitive or an object, is a valid subject for type coercion. To recall, primitives are: number, string, boolean, null, undefined + Symbol (added in ES6).

As an example of type coercion in practice, look at the JavaScript Comparison Table, which shows how the loose equality == operator behaves for different a and b types. This matrix looks scary due to implicit type coercion that == operator does, and its hardly possible to remember all those combinations. And you dont have to do thatjust learn the underlying type coercion principles.

This article goes in-depth on how type coercion works in JavaScript, and will arm you with the essential knowledge, so you can feel confident explaining what following expressions calculate to. By the end of the article Ill show answers and explain them.

true + false
12 / "6"
"number" + 15 + 3
15 + 3 + "number"
[1] > null
"foo" + + "bar"
'true' == true
false == 'false'
null == ''
!!"false" == !!"true"
[x] == x
[] + null + 1
[1,2,3] == [1,2,3]
new Date(0) - 0
new Date(0) + 0

Yes, this list is full of pretty silly things you can do as a developer. In 90% of use cases its better to avoid implicit type coercion. Consider this list as a learning exercise to test your knowledge on how type coercion works. If youre bored, you can find more examples on

By the way, sometimes you might face such questions on the interview for a JavaScript developer position. So, keep reading 

Implicit vs. explicit coercion

Type coercion can be explicit and implicit.

When a developer expresses the intention to convert between types by writing the appropriate code, like Number(value), its called explicit type coercion (or type casting).

Since JavaScript is a weakly-typed language, values can also be converted between different types automatically, and it is called implicit type coercion. It usually happens when you apply operators to values of different types, like
1 == null, 2/5', null + new Date(), or it can be triggered by the surrounding context, like with if (value) {}, where value is coerced to boolean.

One operator that does not trigger implicit type coercion is ===, which is called the strict equality operator. The loose equality operator == on the other hand does both comparison and ty...


How I automatically created a Twitter List of FreeCodeCampers in 5 minutes freeCodeCamp - Medium

Using Twython Twitter API wrapper to add users to a Twitter List

We are going to create a Python script that will automatically search Twitter for individuals who use the #freeCodeCamp hashtag and add them to a Twitter list of FreeCodeCampers. Twitter lists are a way to curate a group of individuals on Twitter and collect all of their tweets in a stream, without having to follow each individual accounts. Twitter lists can contain up to 5,000 individual Twitter accounts.

We can accomplish this by doing the following:

  • Installing the necessary Python packages
  • Registering an application with Twitter
  • Generating and accessing our Twitter credentials
  • Making Twitter Search and List API calls

So lets get started.

1. Installing the necessary Python packages

Create a file named, that will contain our main script and then import two Python modules into this file:

  • Import Config: In the same directory as script, create a file named that stores our confidential Twitter API credentials. We are going to import our API credentials from that file into our script by including the line import config. Twitter requires a valid API key, API secret, access token and token secret for all API requests.
  • Import Twython: Twython is a Python wrapper for the Twitter API that makes it easier to programmatically access and manipulate data from Twitter using Python. We can import Twython with the following line from twython import Twython, TwythonError.

Your script should now look like this.

import config
from twython import Twython, TwythonError

2. Registering an application with Twitter

We need to authenticate our application in order to access the Twitter API. You need to have a Twitter account in order to access Twitters Application Management site. The Application Management site is where you can view/edit/create API keys, API secrets, access tokens and token secrets.

  1. In order to create these credentials, we need to create a Twitter application. Go to the Application Management site and click on Create New App. This should direct you to a page that looks similar to the one below.


How to View CodeIgniter Log Files in the Browser freeCodeCamp - Medium

Just like any other page, it is now possible to read CodeIgniter log files in the browser. My Sweet Goodness!

Example view of code igniter log files

I began using CodeIgniter in my day to day coding after joining an awesome company. The companys tech stack includes the PHP Frameworkamong others. Hitherto now, Ive used (and still use) Laravel to build some awesome apps.

Laravel has a great logging system that is simple and elegant. Furthermore, theres a library for showing the logs in the browser. Being able to read the logs in the browser is good for application debugging and insight. Especially in a production environment.

So here I am in the world of CodeIgniter and couldnt find an equivalent library to read my logs for debugging and insight.

So I took up the challenge and created my first Open Source project of the yearcodeigniter-log-viewer.


First, lets add it to a dependency. We can do that by executing:

composer require seunmatt/codeigniter-log-viewer

Then, we can create a CodeIgniter application controller, LogViewerController.php:

private $logViewer;
public function __construct() {
$this->logViewer = new \CILogViewer\CILogViewer();
public function index() {
echo $this->logViewer->showLogs();

What we did is to instantiate $logViewer in the constructor and then echo the result of showLogs() in the index() function.

The showLogs() method of codeigniter-log-viewer will parse the content of the log files in application/logs . It will return it for display on the browser.

Finally, we can map any route of our choice to the index() we created above. This can be done by adding an entry to the $route array in application/config/routes.php:

$route['logs'] = "logViewerController/index";

Now we can visit /logs on the browser and see all the log files there. Its also possible to delete and download the log files.

Note: It is advisable to use a protected route in production environment to avoid general public access.

How it works

Internally, the library read the name of all the log files that are available in the default logs directory into an array and reverse it. If no file is specified in the URL query parameters, the latest log file is processed for display by default....


The frustrating answer to How do I start learning to code? freeCodeCamp - Medium

Ive been working on the CodeNewbie Challenge (aka #CNC2018) for months. Its a project to help coders do one of four things: start coding, code more, blog more, or get a job.

You pick a challenge, and over the course of 5, 7, or 9 weeks, you get a weekly mission with reading, research, and a homework assignment to help you reach your goal. Its based on powerful questions, guided research, and curated resources to help point you in the right direction. You can learn more and sign up here (first mission is released Jan 22, so sign up by then).

This challenge is based on a very simple premise: when youre learning to code, there is not one universal roadmap. Its frustrating, but its the truth.

How I came up with #CNC2018

I sipped my cranberry juice as she raised her hand. She sat in the middle of the mostly empty room, and waited patiently to be noticed. They called on her, and she stood up to ask the infamous question, How do I start learning to code?

All the panelists turned to me, and my chest tightened. Of the four of us, I was the new coder expert, so I put my drink down and reluctantly pulled the mic to me.

I get this question often. Im usually excited to answer it. But today, I worried I would disappoint her.

Its a deceptively difficult question to answer. It assumes, first and foremost, that there is an answer; a single, uncontested, logical answer. It focuses so much on the start learning to code and less on the I, but the I is the most important part.

I used to give juicy, satisfying answers: Start with Ruby, its the worlds friendliest language! Try JavaScript, the language of the web! Use Codecademy to give you a little taste, its free and you can start today!

When I was feeling more resource-oriented, I went to my bag of websites and pulled a few out. Treehouse is great for videos and courses. FreeCodeCamp is a great community and learning resource for JavaScript. Check out Coursera for more computer science-y options. And you cant forget about good old fashioned YouTube! Search for a language or framework and pick a short video to get you started!

They took furious notes as I spoke, proving that what I said was valuable and correct. But it wasnt.

There are many ways to start coding. There are many things to learn and resources to pick from. In the overwhelming plethora of options, we search for a roadmap. What is the single set of successive steps I can take to get to this particular destination?

But in the hundreds of conversations Ive had with coding hopefuls, Ive learned that the I in How do I learn to start learning to code dictates any such roadmap, and that each roadmap is personal and unique.

Why am I learning to code? If youre learnin...


How to start an Open Source project freeCodeCamp - Medium

My name is Dima and Im Ruby developer. Today I want to share my experience creating an open source solution. I will talk about what steps the project should take, how to choose the right functionality for the first release, and what mistakes I faced personally when creating my open source project.

Half a year ago, I got the idea that it would be good to create an open source project. Instead of test tasks for the interview, it would be enough for me to send a link to the repository. The prospect of helping colleagues with the solution to their everyday problems inspired me.

Ive always disliked gems for creating administration panels. Any extra movement needs to redefine the class, and for change fields you need to make changes to the files. After thinking and conversing with colleagues, I decided to create a new library which would be flexible and would not require dashboards or configuration files.

Determine the goals

Every open source project solves a specific problem. Talk with colleagues, chats, forums, and share your idea. It all helps you on the first steps to understand important things, like which solutions already exist, and to hear criticism. Talk with people who already have open source projects. They can give you very valuable advice, so dont be afraid to ask and take the initiative.

One important bit of advice which I got at that stage is to pay attention in the first place on the documentation of the project. You can have a very good project, but no one will spend the time to understand how it works.

The most important aspect, without which further steps are impossible, is motivation. The idea of the project should inspire you primarily. Most often people get used to the tools with which they work and fall into a comfort zone, so external opinions may be ambiguous.


The choice of a certain task manager is a matter of taste. It should have a clear picture of the tasks and stages of your project.

Divide tasks into sub-tasks. Ideally, if one task does not take more than 34 hours, it is important to enjoy the implementation of small tasks. This will help to avoid burnout and loss of motivation.


Every open source project should contain these things:

  • Open Source license
  • Contributing guidelines
  • Changelog

The README file not only explains how to use your project, but also the purpose of your project. If you do not know how to properly write a README file, you can look at other known open source projects or use a...


The Making of Apples Emoji: How designing these tiny icons changed my life freeCodeCamp - Medium

Sample of emoji I made at Apple in 2008.

When design leads to friendship, and that friendship leads back to design, magic happens. This is the story of how an intern and her mentor designed Apples original emoji set and together changed the way people communicate around the world. It was also a project that led them to become lifelong friends, a key ingredient in the success of these tiny icons. In a nutshell, I was the intern and Raymond is my lifelong friend and mentor. In the course of three months, together we created some of the most widely used emoji: face with tears of joy, pile of poo, red heart, and party popper, plus around 460 additional ones. Later, as a full time Apple employee, I even got to create a few more.

It was the summer of 2008, and I was one year away from receiving my MFA in Graphic Design from the Rhode Island School of Design (RISD). It was the same summer I landed an internship at Apple on a team I was eager to meet. The same design team responsible for the iPhone; a magical device that launched the year prior at Macworld Expo in San Francisco. One could only imagine the size of my butterflies as I flew to Cupertino and arrived at 1 Infinite Loop. To add to the uncontrollable fluttering, I had no idea what project I would be given, the size of the team, where I would sit, or if I could really bike to work (Im terrible on bikes).

Soon after my arrival and meeting the team (oh and biking to work!) I was handed my project. I was still trying to make sense of the assignment Id just received when someone asked if I knew what an emoji was. And well, I didnt, and at the time, neither did the majority of the English speaking world. I answered no. This would all change, of course, as the iPhone would soon popularize them globally by offering an emoji keyboard. Moments later I learned what this Japanese word meant and that I was to draw hundreds of them. Just as I was looking down the hallway and internally processing, This isnt type or an exercise in layout, these are luscious illustrations, I was assigned my mentor.

For the next three months Raymond and I would share an office and illustrated an array of faces, places, flags, animals, food, clothing, symbols, holidays, sports, and well, you probably know the rest. But long before any of this was complete, I had to learn how to design Apple-styled icons. We split the batch and the lesson in humility and craftsmanship began.

Raymond designed the face with tears of joy and pile of poo and I designed the red heart and party popper. Emoji examples are from Emojipedia.

Raymond taught me everything there was to know about icon design. Little...


Rod Norton responds to Bethia McNeils pertinent musings IN DEFENCE OF YOUTH WORK

At the end of last week, we asked for responses to Bethia McNeils musings upon key issues in evaluating our practice, Here they are again.

Thoughts From The Centre to be found in the very useful Centre for Youth Impact Newsletter
This month, Bethia has been mostly thinking about

What is the most meaningful language in which to talk about provision for young people? Does it make sense to talk about different fields of practice? Or approaches? Or even practices? And what about ethics, values and principles? To what extent is shared learning held back by a lack of common language and/or understanding?
What is the relationship between organisational or practice improvement and improvement in outcomes for young people? Are there common areas of improvement, or is it more nuanced? How much is about systems and processes, and how much about relationships?
How can we value the act of measurement as much as the data that we are gathering? It feels like there are fractures on both sides of this issue at the moment: there is widespread antipathy towards the act of measurement and its impact on youth provision, and similarly a scepticism that the data gathered can tell us anything meaningful about our engagement with young people. Where to start?
What do we actually mean when we talk about what works? To what extent is this in the eye of the beholder?


Thus we are really...

IndyWatch Education Feed Archiver

Go Back:30 Days | 7 Days | 2 Days | 1 Day

IndyWatch Education Feed Today.

Go Forward:1 Day | 2 Days | 7 Days | 30 Days

IndyWatch Education Feed was generated at Community Resources IndyWatch.

Resource generated at IndyWatch using aliasfeed and rawdog