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, 24 August


A general review of ECMAScript 2015 (ES6) "IndyWatch Feed Education"

Photo by Farzad Nazifi on Unsplash

So whats new in ES6? Lets have a look.

1. let & const keywords

ES6 brings two new keywords for variable declarations: let and const.

We used to have only the var keyword in JavaScript to declare variables:

var name = 'Cem';

In ES6, we use the let keyword instead.

Why let instead of var ?

Because the usage of var causes scope problems. For example, lets define a string with var globally and locally:

var word = 'I am global';
if(true) {  
var word = 'I am local';
console.log(word); // What do you expect here as result?

The console.log should print the global string: 'I am global'. Because the second declaration var word = 'I am local' is a local string and console.log is outside of the if block:

Surprisingly, the local variable has printed.

Unexpectedly, the local variable which we have defined with var has ignored the if block and gets printed to the console. To prevent this problem, ES6 brings us a new keyword: let.

Lets try again with let:

let word = 'I am global';
if(true) {
let word = 'I am local';
console.log(word); // This time what do you expect?
The result of using let

This time the global string has printed as we expected, let solved the scope-problem.

Another issue of the var statement

We can both re-assign variables with var and let. But, var doesnt allow us to redeclare the same variables:

var number = 1;
var number = 2;
console.log(number); // No errors here, 2 gets prin...


How a badly configured Tensorflow in Docker can be 10x slower than expected "IndyWatch Feed Education"

TL:DR: TensorFlow reads the number of logical CPU cores to configure itself, which can be all wrong when you have a container with CPU restriction.

Lets do a simple benchmark comparing an inference on GPU, CPU on the host, CPU on docker, and CPU on docker with restriction.

Our micro benchmark

Keras/Tensorflow seems to do some operation in GPU upon the first call to .predict(), so will not time the first call, but the second one.

Running that on my Nvidia 1080 will result in an inference time of ~0.01s per image.

This time, on my CPU, without a container it takes ~0.12s. 12x slower is in the order of magnitude of what to expect between CPU and GPU. Note that my TensorFlow is not properly compiled with AVX or MKL support. GPU was made not visible by using the environment variable CUDA_VISIBLE_DEVICES.

Lets add a container.

Our simple container.

Note: Pillow is an image handling library required by Keras to load an image.

Running this container will result in an inference time of ~0.15s. Maybe some overhead from Docker or some TF versions are different from my host, but thats not the point of this article. The real point will come now.

The solution

Im using a i7 7700k with 8 logical cores, 4 physical. So if we set the container to use only 2 logical core (1 physical), it should be about 4 times slower, so about 0.6s. Restrictions will be made by the Docker API. It actually results in 2.5s inference4 times slower than expected!

In fact, TensorFlow uses the number of logical cores to compute some internal performance numbers. An overhead will occur here since the number of reported cores differs from whats available. On your production server, it could be even bigger. On our servers, it was 10 times slower since Xeon has more cores.

So, what can we do ?

The TensorFlow performance guide has the answer!

Using these new parameters, we get the following code:

And now, it only take ~0.6s. And thats exactly what was expected!

So in conclusion, even if Docker seems to sim...


A Web Design Crash Course: from one non-designer to another "IndyWatch Feed Education"

Photo by Kobu Agency on Unsplash

I will preface this by saying that Im not a professional designer. That being said, I like building pretty things and have had some success with that. A lot of developers seem overwhelmed by design. I wanted to do a quick write-up with visual examples with quick tips on how to improve the visuals of your site. Rules are made to be broken. If you want to make a great website as easily as possible, these are some good rules of thumb!


I really enjoy playing with color on my websites, but there needs to be a balance and a coordinated color scheme for the site to look cohesive and professional. Its essential that these colors dont clash, that they have a reasonable level of contrast, and that they are consistent.


Heres my color scheme for The Zen of Programming:

I use the same hex codes for green, pink, and grey for my backgrounds, headers, text, and buttons.

You can use CSS variables to make sure that your colors are the same throughout your code.

body { 
--pink: #CF92B7;
--green: #59876B;
--grey: #4A4A4A;
h1 { 
color: var(--pink);

If you are using SCSS or another CSS preprocessor, this is even easier!

As far as the number of colors involved in your theme, four is usually a good bet. Maybe make two of these colors neutrals (like black, white, or grey) and two bolder pops of color. Monochromatic color schemes that use shades of one color can definitely work as well!

When I work with rainbow color schemes, I treat the rainbow as one color and then use two neutrals for everything else. For example, on I use a dark grey for some text, white for the background, and then the rainbow colors for letters and random shapes.

Clashing Colors

Its important to make sure your colors look good together and dont clash. Usually, the colors opposite to each other on the color wheel clash. Of course, you can make excellent websites that utilize clashing colors, but it is more difficult and may be better left to designers. Some examples would be red and green or orange and pu...


How to lead innovation and drive change in engineering teams "IndyWatch Feed Education"

As published in Perspectives in Engineering by GitPrime

Innovation is difficult.

To empower innovation and transform how teams work, you need the right mix of culture, technology, processes and inspirationand this takes time. Typically, it requires an ambitious, long-term transformation programme.

In the context of software business, this program could face additional challenges. As engineers focus heavily on technical excellencewhich is greatthey frequently find themselves disconnected from the commercial world or the end-users of their products.

To become truly innovative, engineering teams need to also capture the big picture and fully understand the purpose and the commercial aspects of the business.

Novelty, innovation and success could all mean different things and have various priorities in an engineering team. This means that you need to adjust your innovation strategy, communication style, and tactics.

1. Define Innovation

In the corporate world, innovation could be anything novel that creates value for its users and has potential for commercial success.

Innovation could be incremental or breakthrough. It can happen at any time, such as following a call to innovate like a hackathon or design sprint, or randomlydriven by original ideas, genuine talent and inspiration.

Innovative thinking typically leads to ideas and concepts regarding products or product features. In an engineering context, the outcome of innovation may also take other formsfrom abstract technical concepts, patents, algorithms, data models to architecture patterns and functional prototypes.

It can also trigger process improvements. For instance, novel ways and tools to speed up your overall development lifecycle and boost DevOps KPIs.

Engineers as innovation leaders

In many cases, software engineers innovate silently, inside their own microcosm. This can be at a lower level (the actual design and implementation) or at a higher level (components and systems architecture).

But, engineers can play a more important role in leading innovation.

In fact, they have a great advantage in driving innovation efforts. They are the ones with deep understanding of technology and they are often passionate about it. This allows engineers to easily spot both the opportunities and the underlying constraints of tec...


How I Designed a Blockchain App that Scaled to 200K Users in 6 months "IndyWatch Feed Education"

Primablock is a smart contract SaaS product that handles the accounting and remittance work for the ICO pooling and investing process. My two co-founders and I started it as a side project for our small community, in response to inefficiencies and friction in our workflows.

In mid 2017, we launched to ~80 people. A perfect storm of execution and luck let us scale quickly. Users poured in from around the world with business and feedback. We suddenly had a full-fledged startup. It was the hardest and most intense thing Ive done. But also the most rewarding. PrimaBlock has processed hundreds of millions of dollars worth of Ethereum and has served a few hundred thousand people.

In this article, Id like to share with you my design process.

An early user testimonial from PBs buzzing Telegram support channel.

User research: Discovering the needs of the ICO investment community

We analyzed user behavior to understand the workflows and pain points of our target. We had the fortune of being part of the community we were building for, so empathy was a precursor.

Its precisely this sort of observation-fueled insight that makes innovation possible. - Tom Kelley, The Art of Innovation.

From a high level, an ICO deal flow looks like this:

Birds eye view of a typical ICO deal flow. This is what we observed when we joined our investment community.

We segmented our user base into two groups: Admins and Contributors.


Our questions focused on different parts of the work flow, but we were specific about the wording to make our interviewees recount specifics, as opposed to generalizing about an approach.

  • The last time you created a pool, what frustrated you about it?
  • The last pool you administered, how did you keep track of each contribution?
  • Have you ever had to refund a pool? In the most recent time, what was the process? What frustrated you about that process?
  • How did you distribute tokens to your contributors? How did you calculate shares?
  • How has your workflow evolved from deal to deal?
High level workflow before PrimaBlocks solution which shows all of the pains and pitfalls of their workflow.


Similarly, the...


The beginners collection of powerful tips and tricks for React "IndyWatch Feed Education"

Picture by @neonbrand from Unsplash

As you can tell from the title of this article, its aimed at beginners.

Actually, I started to learn React a few months ago. Reading the React documentation, open source projects, and Medium articles has helped me a lot.

Without a doubt, Im not an expert in React. And so I read a lot about this topic. Also, building a small projects has helped me get to know React better. Along the way, Ive adopted some best practicesand I want to share with you here. So lets get started.

Name your components

To figure which component has a bug, its important to always give your component a name.

Even more so when you begin to use React Router or third party libraries.

There is a debate about whether to use a default or named import. Note that a default import doesnt ensure that the components name is consistent in the project. Besides, tree-shaking will be less effective.

No matter how you expose your component, name it

You need to define the class name or the variable name (for functional components) thats hosting the component.

React will actually infer the component name from it in error messages.

Heres my last piece of advice about imports (taken from here): If you use ESLint, you should consider setting the following two rules:

Prefer functional components

If you have many components whose purpose is only to display data, take advantage of the many ways to define a React component:

Both snippets define the same Watch component. Yet, the second is way shorter and even drops this to access the props in th...


Improvements to Sessions Experience for Learners "IndyWatch Feed Education"

Coursera is committed to continuously optimizing the experience for our learners and admins. Today, were enhancing the learner experience by introducing a set of improvements to sessions. This streamlined experience for learners showed positive results in recent tests with increases in enrollments and completions.

What are we changing?

From the learner perspective, sessions as a concept is going away. After enrolling, learners can begin courses right away, access all assignments, and view their personalized deadlines. Behind the scenes, learners are automatically enrolled in the session that works with their start date to enable peer reviews. Learners who fall behind their personalized deadlines will see the option to Reset their deadlines. This automatically shifts their assignment deadlines forward so they no longer appear to be behind.

Why did we make the changes?

The previous sessions model was introduced as a way to motivate learners to stay on track and complete their courses. It added a structure around due dates that drove course completions but also may have introduced confusion around the process to switch sessions and caused learners to hesitate to enroll in courses because start dates felt restrictive. This set of improvements maintains a structure to help learners stay on track while eliminating confusion during enrollment and the in-course experience which means fewer questions for learners and their admins.

Please steer your employee learners to the Learner Help Center if they have questions on the platform experience. If you have any additional questions, please reach out to your Customer Success Manager.

Note: This set of improvements to sessions will not apply to degree courses, MasterTrack courses, and a few other exception courses.

The post Improvements to Sessions Experience for Learners appeared first on Coursera Blog.


Exam stress the value of GCSE "IndyWatch Feed Education"

Another set of public examination results. This time round, after years of bleating about falling standards, media attention has focussed on the stress caused to young people this years cohort being the first to  endure the new subject requirements. Many on the Left correctly argue that education has become commodified. But anyone trying to Continue reading Exam stress the value of GCSE


Math Journals for Elementary and Middle School "IndyWatch Feed Education"

This fall, my homeschool co-op math class will play with math journaling.

But my earlier dot-grid notebooks were designed for adults. Too thick, too many pages. And the half-cm dot grid made lines too narrow for young writers.

So I created a new series of paperback dot-grid journals for my elementary and middle school students.

I hope you enjoy them, too!

Click here for more information

Math Journaling Prompts

So, what can your kids do with a math journal?

Here are a few ideas: 


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