- The Myth of the Real Javascript Developer (junior to intermediate)
- Javascript Masterclass (intermediate to expert)
- The Myth of the Genius Programmer
- Making Badass Developers
- Evolution of a Developer
- Writing Software by David Heinemeier Hansson (creator of RoR)
- “Am I Senior Yet?” Grow Your Career by Teaching Your Peers
- Being Human
- What can programmers learn from pilots?
Last month I borrowed a plenty of books from the library. They all were good books, packed with emotions and plot-twists. Unfortunately, at some points I got very angry/sad/disappointed, so I tore some pages out.
Now the library wants to know how many pages I have torn out for each book.
Your goal is to write a program, which takes a sorted, comma-delimited list of numbers as input and prints the minimum and maximum possible page count I could have torn out. Each line represents a book, each number represents a missing page from the book.
Example input:
'use strict' | |
// Check if every one of the countries have launched 20 or more rockets | |
// using a predicate function | |
const rockets = [ | |
{ country: 'Russia', launches: 32 }, | |
{ country: 'US', launches: 23 }, | |
{ country: 'China', launches: 16 }, | |
{ country: 'Europe(ESA)', launches: 7 }, | |
{ country: 'India', launches: 4 }, |
'use strict' | |
// Check if some of the countries have launched 20 or more rockets | |
// using a predicate function called isAggressive | |
const rockets = [ | |
{ country: 'Russia', launches: 32 }, | |
{ country: 'US', launches: 23 }, | |
{ country: 'China', launches: 16 }, | |
{ country: 'Europe(ESA)', launches: 7 }, | |
{ country: 'India', launches: 4 }, |
'use strict' | |
// Starting array | |
const ages = [7, 24, 21, 18, 22] | |
// Use find to return the age of first age over 21 | |
// using a predicate function | |
const isAdult = (age) => { | |
return age >= 21 | |
} |
'use strict' | |
// Starting array | |
const ages = [7, 24, 21, 18, 22] | |
// Use indexOf to find the position of 21 | |
ages.indexOf(21) // 2 | |
// Use findIndex to find the position of first age over 21 | |
// using a predicate function |
'use strict' | |
// Example array | |
const numsArray = [0, 1, 2, 3, 4] | |
// Filter for odd elements in an array using predicate function | |
const isOdd = (num) => { | |
return num % 2 | |
} | |
odds = numsArray.filter(isOdd) |
'use strict' | |
// Example array | |
const numsArray = [0, 1, 2, 3, 4] | |
// Find the sum of all elements in an array using anonymous arrow function | |
const sum = numsArray.reduce((prev, curr) => prev + curr) | |
// Find the sum of all elements in an array using named arrow function | |
const add = (prev, curr) => { | |
return prev + curr |
- Simplicity !== Easy
- Easy is short term and can sometimes even introduce complexity
- Simplicity allows for easy while avoiding complexity
- Complect == tangling/braiding together
- Complexity is the result of something that has been complected
- Untangle complected code (e.g. decoupling of components)
- Do not chain calls (i.e. Law of Demeter)
- Consider Channels as form of asynchronous flow control
- Ask yourself all the time: "can this thing be moved? does it have well defined boundaries?"
The following principles are very 'high-level' and meant to be used as a quick reference guide, as apposed to the other standards/guideline documents which will focus on specific language idioms and design patterns.