Fortan was created by IBM in 1957 and mainly used for mathematical calculations.
FORTRAN stands for FORmula TRANslation
It is still used today!
FORTRAN stands for FORmula TRANslation
It is still used today!
GCS vs S3 differences
- Buckets are regional or multi-regional (for every storage class) VS regional and zonal
- Cold storage retrieval time: milliseconds (like any other class) VS minutes to hours
- Buckets are regional or multi-regional (for every storage class) VS regional and zonal
- Cold storage retrieval time: milliseconds (like any other class) VS minutes to hours
Focus on being practical and delivering.
Don't be afraid to use standard "old-school" technologies, instead of always going after the hottest framework.
Don't be afraid to use standard "old-school" technologies, instead of always going after the hottest framework.
5 Tools for devs
- IDE: Intellij/VS Code
- Lightweight editors: Vim/Emacs
- Python interactive shell (for small snippets of code, calculator, ...)
- Git: learn it well
- Shell - learn bash/zsh well
- IDE: Intellij/VS Code
- Lightweight editors: Vim/Emacs
- Python interactive shell (for small snippets of code, calculator, ...)
- Git: learn it well
- Shell - learn bash/zsh well
In GCP, identities are represented by Google accounts. There are different types:
- Google accounts. For people
- Service accounts (SAs). For apps, services, vms,...
- Google Groups (of users and SAs)
- G Suite Domain: for orgs
- allAuthenticatedUsers
- allUsers
- Google accounts. For people
- Service accounts (SAs). For apps, services, vms,...
- Google Groups (of users and SAs)
- G Suite Domain: for orgs
- allAuthenticatedUsers
- allUsers
Algorithmic paradigms
- Divide & conquer: combine non-overlapping subproblems. Merge sort
- Dynamic programming: overlapping subproblems + optimal substructure -> optimal solution. Fibonacci
- Greedy: best choice at each step to arrive to optimal global solution. Dijkstra
- Divide & conquer: combine non-overlapping subproblems. Merge sort
- Dynamic programming: overlapping subproblems + optimal substructure -> optimal solution. Fibonacci
- Greedy: best choice at each step to arrive to optimal global solution. Dijkstra
Object-oriented programming (OOP) is a programming paradigm based on the idea of "objects", which can contain attributes and functions to operate on them.
Simula is considered the first language with the primary features of an object-oriented language. It was created in 1967.
Simula is considered the first language with the primary features of an object-oriented language. It was created in 1967.
Classic MATLAB interview question:
What's the difference between A' and A.'?
A' performs conjugate transpose, A.' only tranpose. The results are only different if you're dealing with complex numbers
What's the difference between A' and A.'?
A' performs conjugate transpose, A.' only tranpose. The results are only different if you're dealing with complex numbers
Every application or service you want to develop has:
-Functional requirements: what is it supposed to do?
- Non-functional requirements: security, robustness, scalability, and maintainability
Both are important
-Functional requirements: what is it supposed to do?
- Non-functional requirements: security, robustness, scalability, and maintainability
Both are important
Dijkstra is a greedy algorithm to find the shortest paths between 2 nodes in a graph.
It was developed by Edsger W. Dijkstra in 1956.
In 1968, A* was published. It achieves better performance by using heuristics to guide its search.
It was developed by Edsger W. Dijkstra in 1956.
In 1968, A* was published. It achieves better performance by using heuristics to guide its search.
Errors should never pass silently
Unless explicitly silenced
- The Zen of Python
Unless explicitly silenced
- The Zen of Python
GCP Resource Manager manages
- Organization. Root node in the resource hierarchy. Optional
- Projects. Required to create resources. Prod vs Dev envs
- Folders. Extra level of project isolation. Departments in a company. Optional
- Resources. VMs, load balancers, and so on.
- Organization. Root node in the resource hierarchy. Optional
- Projects. Required to create resources. Prod vs Dev envs
- Folders. Extra level of project isolation. Departments in a company. Optional
- Resources. VMs, load balancers, and so on.
"A computer programmer is a device for turning coffee into bugs."
- Bram Moolenaar
- Bram Moolenaar
You are still writing if-else statements and while loops, like 60 years ago.
Never forget the fundamentals
Never forget the fundamentals
Race condition: the end result of multiple operations depends on the sequence of uncontrollable events
Examples:
- Dirty reads/writes: Client X read/overwrites a value ClientY has written but not commited
- Read/Write skew
- Phantom reads
- Lost updates
Examples:
- Dirty reads/writes: Client X read/overwrites a value ClientY has written but not commited
- Read/Write skew
- Phantom reads
- Lost updates
"Any fool can write code that a computer can understand. Good programmers write code that humans can understand."
- Martin Fowler
- Martin Fowler
Use const (in C++) or final (in Java) when something is not supposed to change.
Compilers can detect if you're attemping to change a const/final variable
Humans will understand better the code.
Compilers can detect if you're attemping to change a const/final variable
Humans will understand better the code.
Can you find what's wrong with this piece of code?
It's supposed to delete the head of a linked list
void removeHead(Node *head){
delete head;
head = head->next;
}
It's supposed to delete the head of a linked list
void removeHead(Node *head){
delete head;
head = head->next;
}