The Complete Junior to Senior Web Developer Roadmap

All resources and notes from the The Complete Junior to Senior Web Developer Roadmap

Introduction

Don't Be A Junior Developer

SSH

Resources: SSH Command

Windows:
Use PuTTY: https://mediatemple.net/community/products/dv/204404604/using-ssh-in-putty-

Windows 10: https://www.howtogeek.com/336775/how-to-enable-and-use-windows-10s-built-in-ssh-commands/

Extra:

  1. https://www.ssh.com/ssh/putty/windows/
  2. https://www.memset.com/docs/server-security/secure-communication-ssh/using-ssh-windows/

Linux:
You should be able to use the ssh command already, but in case you can't: https://www.makeuseof.com/tag/beginners-guide-setting-ssh-linux-testing-setup/

Optional: Digital Ocean Set Up

More information on apt-get : https://help.ubuntu.com/community/AptGet/Howto
More information on rsync : https://www.tecmint.com/rsync-local-remote-file-synchronization-commands/

Optional: Digital Ocean Server

https://www.digitalocean.com/community/tutorials/how-to-set-up-apache-virtual-hosts-on-ubuntu-16-04

Resources: Asymmetric Encryption

Want to learn more about Asymmetric Encryption? Check out these extra videos : https://www.youtube.com/watch?v=NmM9HA2MQGI
https://www.youtube.com/watch?v=Yjrfm_oRO0w
https://www.youtube.com/watch?v=vsXMMT2CqqE&t=
https://www.youtube.com/watch?v=NF1pwjL9-DE

Quick Note: SSH Into A Server

Also, if you are on Windows, you may have to use GitBash instead of Powershell. Here are the steps that a fellow student followed:

  1. Download, install and open Git Bash - the link is provided at the end of the video.
  2. Type ssh-agent bash and press Enter.
  3. Type ssh-add ~/.ssh/id_rsa_digitalocean and press Enter. You should get confirmation of Identity added.
  4. Try connecting to your digital ocean account again via SSH. Now it shouldn't ask you for the password!

Resources: SSH Into A Server

Recommended ssh-keygen command:

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

Windows:
If you have Git for Windows (which you should), ssh-keygen command should be available: https://gitforwindows.org/
You can read more about this here: https://stackoverflow.com/questions/11771378/ssh-keygen-is-not-recognized-as-an-internal-or-external-command

Another option is to use https://www.ssh.com/ssh/putty/windows/puttygen

pbcopy command: https://superuser.com/questions/472598/pbcopy-for-windows/1171448#1171448

Extra Video:
If you want to learn a little bit more about how SSH works internally, watch this excellent video: https://youtu.be/ORcvSkgdA58

Extra Solution: Set Up SSH on Github

Here is a great visual guide created by a fellow student if you are still having problems solving this exercise (especially on Windows):
https://github.com/antonykidis/Setup-ssh-for-github/blob/master/Setup-ssh-on-github.pdf 

Performance Part 1

3 Keys To Performance

Frontend:

  • Critical Render Path
  • Optimized Code
  • Progressive Web App

Network:

  • Minimize Files
  • Minimize Delivery

Backend:

  • CDNs
  • Caching
  • Load Balancing
  • DB Scaling
  • GZIP

Network Performance

Image File Formats

  • JPG: Usually used for photos, images with no transparency.
  • GIF: Limited number of colors and used for small animations.
  • PNG: Limited number of colors, usually used for logos and can add transparency.
  • SVG: Vector graphics with small size and greatly scalable.

Resources: Image File Formats

https://99designs.com/blog/tips/image-file-types/

https://pageweight.imgix.com/

https://www.sitepoint.com/gif-png-jpg-which-one-to-use/

Additionally, here are some extra resources:

https://www.verexif.com/en/

https://css-tricks.com/snippets/css/media-queries-for-standard-devices/

Media Queries Cheat Sheet

Image Optimizations

  • If you want transparency: use a PNG.
  • If you want animations: use a GIF.
  • If you want colorful images: use a JPG.
  • If you want simple icons, logos and illustrations: use SVG.
  • Reduce PNG with TinyPNG.
  • Reduce JPG with JPEG-optimizer.
  • Try to choose simple illustrations over highly detailed photographs.
  • Always lower JPEG image quality (30-60%).
  • Resize image based on size it will be displayed.
  • Display different sized images for different backgrounds.
  • Use CDNs like imigx.
  • Remove image metadata

Resources: Delivery Optimizations

https://stackoverflow.com/questions/985431/max-parallel-http-connections-in-a-browser

Resources: Async + Defer

https://stackoverflow.com/questions/10808109/script-tag-async-defer

Resources: Performance Tools

PageSpeed Insights WebPageTest

OPTIONAL: React + Redux + Module Bundling

Performance Part 2

Testing

TypeScript

SPA vs Server Side Rendering

Security

Code Analysis

Docker

Redis

Sessions + JWT

AWS

Performance Part 3

CI/CD

Extra Bits

The Final Video

Extras: For Windows Users

Bonus: AMA Video!