"It's hard enough to find an error in your code when you're looking for it. It's even harder when you've assumed your code is error-free." - Steve McConnell
The try/finally structure lets you run cleanup code even if exceptions were raised in the try block. The else block minimizes the amount of code in try blocks. It can be used to perform additional actions after a successful try.
Don't get attached to any particular language, framework or technology. They come and go. Focus on principles.
How to manage access to the resources in a GCS bucket. - ACLs grant access to buckets and individual objects - IAM roles are project or bucket wide permissions Both methods work in tandem. For temporary access to users outside of GCP, use Signed URLs.
Ninety percent of the coding you'll do as a beginner is hunting down bugs.
Make sure your code relies on abstractions. Your classes should know WHAT other classes/functions do But it's better if they don't rely on HOW they do what they do
Design patterns in 1 tweet Observer: A publisher notifies a list of subscribers of changes in a class Ex: People who receive their monthly subscriptions (subscribers/observers) from their favourite maganizes (publishers)
If your bug has a one in a million chance of happening, it'll happen next Friday
If you're overwhelmed by some big complex problem, break it down into small chunks. Focus on each of them individually and then build up your solution. Divide and conquer.
You learn more from "unexpected results" than from getting things right the first time
"The theory behind open source is simple. In the case of an operating system, the source code is free. Anyone can improve it, change it, exploit it. But those improvements, changes, and exploitations have to be made freely available." - Linus Torvalds
The same way musicians practice scales, you should have some exercises to get you up to speed. For example, when I learn a new language, I make sure I implement some algorithms (that I already know) that cover the basics: - Tree traversals - BFS - Mergesort - Etc
7 tips to work more efficiently 1. Have a definition of done for your tasks 2. Define their scope 3. Time estimates are hard 4. Have a rule to decide when to automate a task 5. Work incrementally 6. Premature optimization is the root of all evil 7. Get a rubber duck
Java in 1995 by James Gosling at Sun Microsystems - Originally called Oak - OOP language - Write Once Run Anywhere philosophy - Java applications run on JVMs (machine independent code) - 3 billion devices currently run Java System.out.println("Hello, World!");
"Intelligence is the ability to avoid doing work, yet getting the work done." - Linus Torvalds
ssh 101 - ssh stands for secure shell and is used to securely connect to remote hosts - ssh creates a TCP connection on port 22 - Syntax: ssh username@hostname (or ip address)
Design patterns in 1 tweet There are 3 main types of design patterns - Behavioural. How do objects interact. Ex: Template - Creational. How to create objects. Ex: Builder, Prototype - Structural. How objects are composed to form larger structures. Ex:Adapter, Proxy
Counting sort is applicable when each input is known to belong to a particular set, S, of possibilities.
"Walking on water and developing software from a specification are easy if both are frozen." - Edward V. Berard
5 Random coding tips Modularize your code Improve your communication skills Learn to learn Collaborate cross-team Learn to delegate