Evan Harmon - Memex

Programming

Meta Programming

Project Setup

Design Patterns & Conventions

Technical Documentation & Comments

Practical

Testing & QA

Language

Fundamentals

Programming Concepts

Pattern Generalization

Creating models, rules, principles, and theories for observed patterns

  • e.g. creating a weather model

Binary search tree

Sparse matrices (sparse array)

Composition

Building functions by using other functions

Open upper bound and open lower bound means the upper and lower bound is excluded?

Lazy Evaluation & Eager Evaluation

Lazy Evaluation

  • expression doesn't evaluate until it is needed
  • aka 'call-by-need'

Eager Evaluation

  • aka 'greedy' or 'strict'
  • evaluated as soon as bound to a variable

Concurrent Programming

Atomiticity

Developer Roadmaps

Generics

Type Inference

Syntactic Sugar

List Comprehension

Closure

Similar to a function, but anonymous. Though you would normally assign the closure to a variable and reference it that way. Technically - a record storing a function together with an environment. There are various benefits - unlike a plain function, a closure allows the function to access those captured variables through the closure's copies of their values or references even when the function is invoked outside their scope. So you can't do that with a regular function because you are limited to local and externally scoped vars but with a closure you can access the passed in vars as local - something like that?

Reflection

MapReduce

A programming model and an associated implementation for processing and generating big data sets with a parallel, distributed algorithm on a cluster.

Tools

Issues

Sources

Websites

The Complete Software Developer's Career Guide

The Self-taught Programmer

Clean Code

Small things matter - details

No Excuses

  • When hand-washing was originally recommended for doctors, it was dismissed due to the claim that doctors are too busy to do that.
  • not your managers' fault, your boss, your deadline. It's your fault for letting those expectations get set in the first place
  • If a patient requested his doctor not wash his hands before surgery, the doctor should refuse - and it should be illegal to comply.

Crisp abstractions

  • The words should disappear into clear, decisive intent.

Boy Scout Rule - Leave the campground cleaner than you found it.

Can be read and enhanced by a developer other than its original author.

Kind of a prequel to Uncle Bob's Agile Software Development: Principles, Patterns, and Practices (PPP)

You read code more often than you write code

  • Factor of 10:1
  • Even when writing new code - vast majority of time is reading the existing code.
  • So you should optimize for making code more readable.
  • There's no way to write new code without reading code, so making code easier to read makes it easier to write.

Expressiveness

  • Reduces duplication
  • Creating abstractions early
  • E.g., recognizing you need to search a collection in multiple ways in your program so you write an abstract method and implement it when/how you need it

Rather than wait for bugs, you should always be refactoring and improving your code

Software as craftsmanship - knowledge plus work. - the principles get ground into your gut, fingers, and heart.

Programmers know messes slow them down but still feel pressure to go fast and cut corners, thus slowing them down ad infinitum. Programmers don't take the time to go fast.

Clean code is care

  • "Clean code always looks like it was written by someone who cares. There is nothing obvious that you can do to make it better. All of those things were thought about by the code's author, and if you try to imagine improvements, you're led back to where you are, sitting in appreciation of the code someone left for you - code left by someone who cares deeply about their craft."

Obvious

  • Makes it look like the language was designed for just this problem - no matter the language. The onus for that is on the programmer, not the language.
  • what you expected, no surprises, effortless to read

Smells and Heuristics

  • (Chapter 17)

Clean code is the sum of little techniques applied through a painstakingly acquired sense of cleanliness.

Most of programming is maintenance

Making your code readable is as important as making it executable

Code Complete

Programming Pearls

The Pragmatic Programmer

Automate the Boring Stuff

Curly Bracket

Udacity Nanodegree

Teach Yourself Programming in 10 Years

Bootcamps

Inbox

Programming
Interactive graph
On this page
Programming
Meta Programming
Project Setup
Design Patterns & Conventions
Technical Documentation & Comments
Practical
Testing & QA
Licensing, IP & Open Source
Language
Fundamentals
Programming Concepts
Pattern Generalization
Creating models, rules, principles, and theories for observed patterns
Floating Point Precision
Binary search tree
Sparse matrices (sparse array)
State
Composition
Building functions by using other functions
Open upper bound and open lower bound means the upper and lower bound is excluded?
Lazy Evaluation & Eager Evaluation
Lazy Evaluation
Eager Evaluation
Concurrent Programming
Atomiticity
Developer Roadmaps
https://github.com/kamranahmedse/developer-roadmap
Generics
https://en.wikipedia.org/wiki/Generic_programming
Type Inference
https://en.wikipedia.org/wiki/Type_inference
Syntactic Sugar
https://en.wikipedia.org/wiki/Syntactic_sugar
List Comprehension
https://en.wikipedia.org/wiki/List_comprehension
Closure
https://en.wikipedia.org/wiki/Closure_(computer_programming)
Similar to a function, but anonymous. Though you would normally assign the closure to a variable and reference it that way. Technically - a record storing a function together with an environment. There are various benefits - unlike a plain function, a closure allows the function to access those captured variables through the closure's copies of their values or references even when the function is invoked outside their scope. So you can't do that with a regular function because you are limited to local and externally scoped vars but with a closure you can access the passed in vars as local - something like that?
Reflection
https://en.wikipedia.org/wiki/Reflection_(computer_programming)
https://www.khanacademy.org/computing/computer-science/cryptography/modarithmetic/a/what-is-modular-arithmetic
https://www.toptal.com/developers/sorting-algorithms
https://github.com/j5awry/breakingin/blob/master/advice/toolstipsandtricks.md
MapReduce
https://en.wikipedia.org/wiki/MapReduce
A programming model and an associated implementation for processing and generating big data sets with a parallel, distributed algorithm on a cluster.
Software Architecture
Computer science
Software Development Process
DevOps
Project & Product Management, Ownership, Leadership, & Agile
Data
Text
Web Development
Mobile app development
Tools
IDEs & Text Editors
Issues
Sources
Websites
The Complete Software Developer's Career Guide
The Self-taught Programmer
Clean Code
Small things matter - details
No Excuses
Crisp abstractions
Boy Scout Rule - Leave the campground cleaner than you found it.
Can be read and enhanced by a developer other than its original author.
Kind of a prequel to Uncle Bob's Agile Software Development: Principles, Patterns, and Practices (PPP)
You read code more often than you write code
Expressiveness
Rather than wait for bugs, you should always be refactoring and improving your code
Software as craftsmanship - knowledge plus work. - the principles get ground into your gut, fingers, and heart.
Programmers know messes slow them down but still feel pressure to go fast and cut corners, thus slowing them down ad infinitum. Programmers don't take the time to go fast.
Clean code is care
Obvious
Smells and Heuristics
Clean code is the sum of little techniques applied through a painstakingly acquired sense of cleanliness.
Most of programming is maintenance
Making your code readable is as important as making it executable
Code Complete
Programming Pearls
The Pragmatic Programmer
The Mythical Man-Month
Automate the Boring Stuff
Curly Bracket
Udacity Nanodegree
https://www.udacity.com/course/software-debugging--cs259
https://www.udacity.com/course/programming-foundations-with-python--ud036
https://www.udacity.com/course/intro-to-algorithms--cs215
https://www.udacity.com/course/intro-to-programming-nanodegree--nd000
https://www.udacity.com/course/software-analysis-testing--ud333
https://www.udacity.com/course/intro-to-computer-science--cs101
https://www.udacity.com/course/intro-to-theoretical-computer-science--cs313
https://www.udacity.com/course/design-of-computer-programs--cs212
https://developers.google.com/
Teach Yourself Programming in 10 Years
https://norvig.com/21-days.html
Bootcamps
Inbox