Your Coding Teacher
379 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
Some "real life" applications of hash tables:

- Compilers symbol tables: to keep track of variables
- Games: from chessboard position to what to do next
- Caches
- DNS: from domain to server IP
- Spell checkers: from wrong spelling to list of words the user meant to type
In 2003, James Strachan created Groovy as an improvement on Java

It is both a static and dynamic language with features similar to those of Python, Ruby, and Smalltalk.

print "Hello World!\n"
Ruby was created by Yukihiro Matsumoto in 1995

- Combines ideas from various other languages like Perl, Small talk, BASIC, Lisp
- Ruby is most commonly found in web development
- It also includes dynamic typing and garbage collection

puts 'Hello, world!'
Challenges of building distributed systems:

- How to connect different networks, OS, hardware, programming languages, ...
- How to extend them
- How to handle security
- How to scale them: algorithms, concurrency, infrastructure, ...
- How to make them fail-tolerant
Deleted code is debugged code
"I do not fear computers.
I fear the lack of them."
- Isaac Asimov
Be a doer.

Not a talker.
Compiler warnings are to be taken seriously

Otherwise, just disable them, at your own peril.
Blame doesn't fix bugs
"Code is like humor. When you have to explain it, it's bad."
- Cory House
"C++ is designed to allow you to express ideas, but if you don't have ideas or don't have any clue about how to express them, C++ doesn't offer much help."
- Bjarne Stroustrup
Merkle trees, also known as binary hash trees, are a type of binary tree.

hey can be used to efficiently verify the integrity of large sets of data.

They are used in both blockchain and non-blockchain-related projects.
Types of programming languages, based on "types":

- Strongly vs Weakly typed -> whether you are required to declare types for variables/functions.
- Statically vs Dynamically typed -> whether type checking is done at compile-time or run-time.
Coding is easy.

Writing good code is hard.
Anything that can go wrong will go wrong

Anything that can't go wrong will go wrong anyway
Software is more like science that mathematics.

You cannot prove that you'r software is correct (no bugs).

You can write a bunch of tests to show that your code hasn't failed (so far).
It's possible to "increase the available RAM" on a Linux machine using disk.

The Linux virtual memory system can move data from memory disk and viceversa, in a process called swapping.

The disk area used to store memory pages is called swap space.
The first 90% of a project takes 90% of development time.

The last 10% takes the other 90% of the time.
In C++, to prevent resource leaks, use RAII

Resource Acquisition Is Initialization

Acquire resources in constructors and release them in destructors
//TODO comments end up being //Never do's
"Debugging is like being the detective in a crime movie where you are also the murderer."
- Filipe Fortes