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, 17 November

00:38

Perhaps the tide is turning, but the struggle to stay afloat continues IN DEFENCE OF YOUTH WORK

Ill resist sliding into what seems the standard youth sector account of anything it does, namely somehow that its always overwhelmingly new, innovative and inspiring. My caution aside the reports from the medley of Is the tide turning events and discussions held in the last week or so do give grounds for a measure of hope and optimism. Here are a few quotes and photos to back up a collective sense that the struggle to reclaim and reimagine a youth work freed from the shackles of neoliberal dogma is alive and even flourishing.

 

Chris Warren leading off the Derby debate

 

A great IDYW Turning the Tide Event hosted by the D2N2 Youth Work Alliance at the University of Derby today. Over 65 practitioners and youth work students in attendance....

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

IndyWatch Education Feed Today.

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

Thursday, 16 November

23:01

Sanity arrives? Owen Jones in todays Guardian. Education, Economy and Society

At last!   Sanity emerges on the British Left !! Now that socialism is re-emerging as a political force that can no longer be ignored or ridiculed, the struggle for more time for leisure, family and relaxation should be linked to broader fights. Increased public ownership of the economy should be structured to create more worker []

21:41

Link freeCodeCamp - Medium

We didnt have any problems with image sharpness in the early years of the internet, because we didnt need to show websites on mobile devices.

Today we see a tremendous growth in mobile web surfing. So much so that, this year, it has even overtaken traffic on desktops.

Most clients try to create responsive interfaces for their websites so they are easily accessible from any kind of device. And it doesnt seem strange that many layout developers have started to use

img {
width: 100%;
height: auto;
}

for their images. So they seamlessly work across any browser window resolution, scaling to the available space.

Conceptually, everything looks good. Designers create nice big images, and developers use those images for every device. In some cases, developers create multiple versions of the same image, so a smaller image is downloaded for mobile screens, and a bigger image for desktops.

Unfortunately, Chrome doesnt want to resize images in the way that good image editors do. Instead, it out-puts the image with not the same, or similar, sharpness as the initial image.

The main reason for this may be performance. When a webpage has many images, and the device processor is not highly productive, additional image processing could lead to bigger lags in page rendering, so Chrome omit this process as not being crucial for end users.

I will show you some examples using Chrome browser, and then using other browsers. Here is an image, downsized to 1000 px in Photoshop:

The same image uploaded in original size and downscaled by the browser. Compare the sharpness of the dogs eyes.

Photoshop:

Browser:

Things get even worse when you add sharpness in Photoshop after downsizing. But photos are more forgiving in this case, as they typically dont have many sharp edges. Issues with any vector illustrations saved as .png images are much more noticeable. Frequent casewebsite logos.

Asanas logo, initial file:

Resized in Photoshop:

Rendered in browser:

Wecans logo, initial file:

...

20:22

Your code stinks. Heres what you can do about it. freeCodeCamp - Medium

(source/CC0)

Humans stink. Its nothing to be ashamed of: it is the inevitable consequence of our animal nature.

But humans aspire to be more than animals.

Humanitys singular endeavor throughout history has been the journey to eliminate stink. Weve always hated it. Even in antiquity, we sent people on ridiculous journeys around the world in rickety sailboats, and across deserts on tiny horses, to find some remedy for it.

We have iterated for thousands of years to reach a stink-free world. From the invention of soap and toothpaste to the Yankee Doodle Candle Co. and Febrezeour soaps, candles, and sprays now give us a way to make food waste and industrial garbage smell like mountain raindrops and sugar cookies.

Mmmm! Pumpkin spice! (Photo by NeONBRAND on Unsplash)

And yet with each innovation, we find a new way to stink.

Like our battle between antibiotics and bacteria, we have launched an endless arms race between ourselves and our environment. Now were moving beyond the era of physical products.

With our advancement, we have brought stink along with usjust as we always have. We created the information age.

And we created information stink.

Should I drink this?

Garbage comes cloaked in a wonderful variety of smells. As a new father, a door opened for me into an undiscovered country of stink. Previously, I had only heard rumors of this world from the few parents who survived it. Rumors always accompanied by a thousand-yard stare.

Just so, there are many types of stinky information. Teenagers in central Europe write up fake news articles for social media clicks. There is always one more weird trick that doctors dont want you to know.

Today, in this article, were going past all that. Were diving into the very seams of our new information era to learn about the stinks that we Morlocks are creating in our very own products. Im talking about code smell.

Kent Beck and Martin Fowler define code smell as a surface...

20:00

Lets talk about variables and why you should use them in JavaScript. freeCodeCamp - Medium

The main purpose of coding is to solve problems. For example, what happens when you click on a button? Thats a problem for us to solve.

So, lets begin this article by solving a simple problem.

Counting apples

If you have 4 apples and you buy 27 more, how many apples do you have? Take a second and write your answer in your text editor.

Whats your answer?

// This? 
31
// Or this? 
4 + 27

Both answers are right, but the second method is betterbecause youre offloading the calculation to JavaScript. Youre teaching it how to arrive at the answer.

But theres still one problem with the code.

If you look at 4 + 27 without any context from our apple problem, do you know were calculating the number of apples youre currently holding?

Probably not.

So, a better way is to use algebra to substitute 4 and 27 with variables. When you do so, youll get the ability to write code that has meaning:

initialApples + applesBought

The process of substituting 4 with a variable called initialApples is called declaring variables.

Declaring variables

You declare variables with the following syntax:

const variableName = 'value'

There are four parts youll want to take note of:

  1. The variableName
  2. The value
  3. The = sign
  4. The const keyword

The variableName

variableName is the name of the variable youre declaring. You can name it anything, as long as it follows these rules:

  1. It must be one word
  2. It must consist only of letters, numbers, or underscores (09, a-z, A-Z, _).
  3. It cannot begin with a number.
  4. It cannot be any of these reserved keywords

If you need to use two or more words to name your variable, just join the words together but capitalize the first letter of each subsequent word. This weird capitalization is called camel case.

A good example of a camel-cased variable is applesToBuy.

The value

The value is what you want the variable to be. It can be primitives (like strings and numbers) or objects (like arrays and functions).

= in JavaScript

= in JavaScript doesnt work like = in math. Dont get confused.

In JavaScript, = means assignment. When you use =, you set (or assign) the value on the right hand side (RHS) of the = sign to the left hand side (LHS) of the = sign.

In the following statement, you set the variable initialApples to the number 4.

const initialApples = 4

If you console.log this variable, you can see that initialApples is 4.

console.log(initialApples) // 4

Evaluation before assignment

Ev...

18:24

[BONUS] Drive Journal Day 32 School Sucks Project

(AUDIO, 43 minutes) -Albuquerque, NM to Amarillo, TX (even though we weren't sure at the time of recording) -Discussing our visit with the Erwin family today and our exploration of New Mexico -overcoming stress and frustration on both legs of the trip Click HERE to download. On October 15th Brett began a road trip across ...

The post [BONUS] Drive Journal Day 32 appeared first on School Sucks Project.

12:22

React Pattern: Centralized PropTypes freeCodeCamp - Medium

Avoid repeating yourself by centralizing PropTypes

Grand Central Station, New York, NY

There are three popular ways to handle types in React: PropTypes, TypeScript and Flow. This post is about PropTypes, which are currently the most popular.

Since PropTypes provide type warnings at runtime, its helpful to be as specific as possible.

  • Component accepts an object? Declare the objects shape.
  • Prop only accepts a specific list of values? Use oneOf.
  • Array should contain numbers? Use arrayOf.
  • You can even declare your own types. AirBnB offers many additional PropTypes.

Heres a PropType example:

https://medium.com/media/e019278c6f44de68391613cd427f60bf/href

In real apps with large objects, this quickly leads to a lot of code. Thats a problem, because in React, youll often pass the same object to multiple components. Repeatin...

06:24

User Management with AWS Cognito (1/3) Initial Setup freeCodeCamp - Medium

The Complete AWS Web BoilerplateTutorial 1A

Main Table of Contents Click Here
Part A: Initial Setup
Part B: The Core Functionality
Part C: Last Steps to Full Fledged

Download the Github here.

Introduction

Setting up user authentication can take ages, but it is an essential cornerstone of any production app. There are options out there such as AuthO and PassportJS, but they either have hard learning curves, require continual maintenance, or are vulnerable to programmer errors as they require self-setup. If only there was a hands-off, customizable, secure and highly scalable user management service on the cloud.

Introducing Amazon Cognito and Federated Identities. Cognito is the AWS solution for managing user profiles, and Federated Identities help keep track of your users across multiple logins. Integrated into the AWS ecosystem, AWS Cognito opens up a world of possibility for advanced front end development as Cognito+IAM roles give you selective secure access to other AWS services. Want to only allow S3 Bucket access to specific signed on users? Simply connect a Cognito login with an IAM role allowed access to the bucket, and now your bucket is secure! Best of all, the free tier gives you 50,000 monthly active users so you wont have to worry about paying more until youre ready to boom.

This boilerplate is a React-Redux web app that has the full features of AWS Cognito and Federated Identities pre-integrated. Use this boilerplate if you have an app that you want developed with a production-ready authentication service from the very beginning. Indeed this is a powerful launchpad for your next great idea.

Go to AWS Cognito on the AWS console to get started!

Initial SetupCognito

We will be setting up AWS Cognito, which is a custom login pool (such as login with email). Cognito IS NOT a login manager for any type of login (such as Facebook and Gmail), only for custom logins....

06:18

Education without jobs Education, Economy and Society

Todays  ONS Labour Market Bulletin, provides further  data about the changing  relationship between young people, education and employment.  Even if its still much higher than for other age groups, youth unemployment continues to fall.  For July to September 2017, joblessness  for 16 to 24 year olds was 11.9% ( down from  13.1%  a year earlier []

04:27

Roarr! the perfect JSON logger for Node.js and browser freeCodeCamp - Medium

Zero-configuration, out of process transports and adheres to the Twelve Factors

The past 8 months I have been creating GO2CINEMA. This web application allows users to discover showtimes. They can also book cinema tickets across the world.

The platform grew to over +50 distinct services. The services support data aggregation, normalization, validation, analysis, distribution, invalidation, and more. Some of these services run in high replication environments, into the hundreds.

I needed to know when things break. And I needed to be able to correlate logs across all these services to identify the issue.

Running services in high-concurrency you need to be able to pin point when and what breaks.

I needed a logger that did not exist.

Existing loggers

For a long time I have been a big fan of using debug. Debug is simple to use, works in Node.js and browsers, does not require configuration and it is fast. However, problems arise when you need to parse logs. Anything but one-line text messages cannot be parsed in a safe way.

To log structured data, I have been using Winston and Bunyan. These packages are great for application-level logging. I have preferred Bunyan because of the Bunyan CLI program used to pretty-print logs.

However, these packages require program-level configuration. When constructing an instance of a logger, you need to define the transport and the log-level. This makes them unsuitable for use in code designed for use by other applications.

Then there is pino. Pino is a fast JSON logger. Its CLI program is equivalent to Bunyan. It decouples transports, and it has a sane default configuration. Yet you still need to instantiate logger instance at the application-level. This makes it more suitable for application-level logging like Winston and Bunyan.

I needed a logger that:

In other words a logger that:

  • I can use in an application code and in dependencies
  • allows me to correlate logs between the main application code and the dependency code
  • works well with transports in external processes

and it needs to be loud...

Wednesday, 15 November

23:48

How to use SVG as a Placeholder, and Other Image Loading Techniques freeCodeCamp - Medium

Generating SVGs from images can be used for placeholders. Keep reading!

Im passionate about image performance optimisation and making images load fast on the web. One of the most interesting areas of exploration is placeholders: what to show when the image hasnt loaded yet.

During the last days I have come across some loading techniques that use SVG, and I would like to describe them in this post.

In this post we will go through these topics:

  • Overview of different types of placeholders
  • SVG-based placeholders (edges, shapes and silhouettes)
  • Automating the process.

Overview of different types of placeholders

In the past I have written about placeholders and lazy-load of images, and also talked about it. When doing lazy-loading of images its a good idea to think about what to render as a placeholder, since it can have a big impact in users perceived performance. In the past I described several options:

Several strategies to fill the area of an image before it loads.

  • Keeping the space empty for the image: In a world of responsive design, this prevents content from jumping around. Those layout changes are bad from a users experience point of view, but also for performance. The browser is forced to do layout re calculations every time it fetches the dimensions of an image, leaving space for it.
  • Placeholder: Imagine that we are displaying a users profile image. We might want to display a silhouette in the background. This is shown while the main image is loaded, but also when that request failed or when the user didnt set any profile picture at all. These images are usually vector-based, and due to their small size are a good candidate to be inlined.
  • Solid colour: Take a colour from the image and use it as the background colour for the placeholder. This can be the dominant colour, the most vibrant The idea is that it is based on the image you are loading and should help making the transition between no image to image loaded smoother.

04:31

The Forgotten History of How Our Government Segregated the United States Zinn Education Project

 
By Richard Rothstein

Racial segregation characterizes every metropolitan area in the United States and bears responsibility for our most serious social and economic problems it corrupts our criminal justice system, exacerbates economic inequality, and produces large academic gaps between white and African American schoolchildren. Weve taken no serious steps to desegregate neighborhoods, however, because we are hobbled by a national myth that residential segregation is de facto the result of private discrimination or personal choices that do not violate constitutional rights. In truth, however, residential segregation was created by racially explicit and unconstitutional government policy in the mid-20th century, including the racially explicit federal subsidization of whites-only suburbs in which African Americans were prohibited from participating. Only after learning the history of these policies can we be prepared to undertake the national conversations necessary to remedy our unconstitutional racial landscape.

Such a national conversation is now possible. Without minimizing the terrible dangers of todays resurgent white supremacist activity, we also should take hope from the reaction to it: a widespread willingness to confront, in many cases for the first time, the history of African American subjugation. Our previous failure, even refusal to do so, has impeded our ability to eliminate the racial caste conditions that permeate U.S. society.

Not to be underestimated is the wave of Confederate monument removals across the South, and the acknowledgement that these monuments were erected not after the Civil War to commemorate the misguided heroism of Confederate soldiers, but rather during the Jim Crow and post-Brown v. Board of Education eras, for the purpose of celebrating slavery and its residues in second-class citizenship. Who could have imagined, even a few years ago, that a...

02:40

How project managers and developers can both (happily!) give realistic ship dates freeCodeCamp - Medium

Source: Fog Creek

Project managers (PMs) are deadline chasers. They think clients want the earliest possible ship date to reduce costs. But thats a common misconception. What clients really want is the best possible product with the earliest possible ship date.

Quality products need well-written code. Developers should use the 12 development approaches on the Joel Test to ensure good source control, encourage daily builds, and make use of QA testers.

Realistic deadlines need to be based on estimations from track records. Our project teams wanted to verify the accuracy of our estimations and create a feedback loop for our PMs and developers. Weve been doing evidence-based scheduling (EBS) with Fog Creek for two months, and Id like to share what weve learned so far.

Evidence-Based Scheduling without being OCD

We used Fog Creeks EBS to track developers estimates compared to their actual time spent on a project. This data helped us make better project schedules, and also provided a feedback loop for PMs and developers to improve their estimates for individual tasks.

But the emphasis is not on OCD time tracking toolswe trust our developers and PMs to input their times in the project spreadsheet.

Besides what Fog Creek mentions in their EBS blog post, heres what we learned in our implementation.

Break down projects into less than 2-day tasks

A template for our Google spreadsheet for EBS

As I mentioned above, our EBS tracks estimates vs time spent for user stories and features. The individual features are broken down into tasks (GitHub Issues) that should be completed within two days.

Developers still need to map out exactly how a feature will be put together by creating small enough tasks. For example, rather than just saying Create shopping cart, we can break these tasks down into various items, such as Layout cart product list.

This tracking also benefits our clients, because they can see exactly what we are working on for each bi-weekly sprint. They will be notified if features are completed ahead of or behind schedule, and there will be no surprises.

We also track our PMs time estimates, because they are not just account managers. They must have some technical understanding. It is important for PMs to learn from their miscalculations and improve their future estimates.

By comparing their estimates with the developer...

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