Your Coding Teacher
373 subscribers
10 links
Coding, software engineering & #bitcoin technologies. I'll make you a better thinker, not just a better developer | Ex
Amazon, Senior DevOps @eBay
Download Telegram
"Program testing can be a very effective way to show the presence of bugs, but is hopelessly inadequate for showing their absence." - Edsger Dijkstra
"There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies and the other way is to make it so complicated that there are no obvious deficiencies." —C.A.R. Hoare, The 1980 ACM Turing Award Lecture
There are 6 basic types of values in JavaScript - numbers (64 bits) - strings - Booleans - objects - functions - undefined values
Programmers are good at finding valid reasons for making poor decisions
The best thing about being a developer is that you can work from anywhere at anytime The worst thing about being a developer is that you can work from anywhere at anytime
"When debugging novices insert corrective code. Experts remove defective code." - Richard Pattis
Bash exercise: Read from words.txt and output the word frequency list (in reverse sorted order) to stdout. tr -s ' ' '\n' < words.txt | sort | uniq --count | sort -r | awk '{print $2 " " $1}'
Learn by reverse engineering things How does your favourite service/app work? - Twitter - Netflix - Uber - Instagram - Facebook Pick some feature. Don't expect to build a perfect clone, but expect to learn a lot in the process.
The best way to deliver criticism is to ask questions. People can think about the problem. If they cannot come up with a solution, then you can suggest yours. Much better than approaching them with a "you're wrong" attitude.
All problems in computer science can be solved with another level of indirection. Except for the problem of having too many layers of indirection
3 Random coding tips Choose the right tools, not the ones you like the most Learn design patterns Always ask why
StackOverflow That's it. That's the tweet.
C# was created by Microsoft in 2000 It was designed to combine the computational ability of C++ with the simplicity of Visual Basic C# is comparable to Java. It offers strong typing, lexical scope and it's an object-oriented language Console.WriteLine("Hello World!");
"An ugly system is one in which there are special interfaces for everything you want to do. Unix is the opposite. It gives you the building blocks that are sufficient for doing everything. That's what having a clean design is all about." - Linus Torvalds
JavaScript's falsy values: - false - undefined - null - The number 0 - The number NaN - The empty string
Load balancers - Can be hardware or software (ex: in AWS and GCP) - Act at different network layers: Layer 4 vs Layer 7 - Use different routing algorithms: (Weighted) Round-Robin, (Weighted) least lonnection, etc. - Need health checks (to stop routing to unhealthy servers)
A greedy algorithm is one which makes decisions that are locally optimum and never changes them. This strategy does not always yield the optimum solution. It requires proof that it will arrive at the optimal. Example: Dijkstra's shortest path
Bash exercise: Read file.txt and output the 8th line to stdout. sed -n '8 p' file.txt
Continuous Integration is the practice of frequently pushing code into repository Benefits - Forces you to have automated build an tests - Forces you to have good config management (test, stage, prod) - Tells you at any time the state of the app (is the pipeline green?)
5 JavaScript interview questions What is NaN? How to check if a value is NaN? What does the || operator do? Why are functions called First-class Objects? What does the !! operator do?