Fix ERR_CONNECTION_TIMED_OUT in Chrome on Windows 10

I have recently re-installed Windows 10 on my laptop and came across an odd error with Google Chrome. Whenever I tried to use chrome I will randomly get  ERR_CONNECTION_TIMED_OUT error.

Chrome-Err-Connection-Timed-Out

I tried numerous things thinking I was having troubles with my internet connection. But later I observed that I can use Firefox without any issue when Chrome having this problem. I googled and tried clearing up all the browser data, flushing DNS, etc.. but issue was not fixed. Later I found the solution.

It was associated with the “Cryptographic Services” on the windows services. I have linked my user account with Microsoft account. I found that It was used in the Services window to start “Cryptographic Service”. Follow below steps to fix this issue.

  1. Go to services and select “Cryptographic Services”
  2. Stop the service and go to properties using RMB option.
  3. Go to “Log On” tab and select “Local System account” option and also check on “Allow service to interact with desktop”
  4. Press “Ok” and restart the service.
  5. This will fix the “ERR_CONNECTION_TIMED_OUT” issue.

 

 

Practical Guide for Web Development in 2019

Traversy Media is one of my favourite YouTube channels. His tutorials are concise and clearly explained. He have recently published a Web Development In 2019 – A Practical Guide video and I decided to make a roadmap out of it to follow along and improve my skills. This document is hosted on my Github and embedded below for reference.

Web Developer Road Map for 2019

Found this great “Web Development In 2019 – A Practical Guide” from Traversy Media, where he discuss about practical guide for web development in 2019. I decided to list it down and follow along to improve my web development skills.

HTML & CSS – Always the very first thing to learn

semantic HTML elements
Basic CSS (Positioning, box model)
FlexBox & CSS Grid
CSS Variables (Custom Properties)

Responsive Layout – Responsive layouts are no longer a luxury, they are a necessity

Set viewport
Fluid Widths
Media queries
Rem over px
Mobile first
Stacked columns

Basic Deployment – Learn to deploy a static website

Register a doamin name(Namecheap, Google Domains)
Managed shared hosting or VPS (Inmotion, Hostgator, Bluehost)
FTP, SFTP File Upload (Filezilla, Cyberduck)
Static Hosting (Netlify, Github Pages)

SaaS Pre-Processor

Structured CSS
Variables
Nested CSS
Mixings & Functions
Inheritance

Vanilla JavaScript – Start learning JavaScript without any framework

Data types, functions, conditionals, loops, operators
DOM manipulation and events
JSON
Fetch API
ES6 Arrow functions, Promises, async/await, destructuring

HTML/CSS Framework – HTML/CSS frameworks are becoming bit less relevant but I would suggest learning one. They can make your life much easier and great for prototyping

Bootstrap
Materialize
Bulma
Semantic UI

Git & Tooling – Git is absolutely necessary for all web developers. Here are some othe tooling suggestions

Basic Command Line – Use for so much including these tools
Git – Version Control
NPM or Yarn – Installing Packages
Webpack or Parcel – module bundling
Gulp or Grunt – task runners
Editor Extensions – ESLint, Prettier, Live Server etc

Front-end Framework – It is becoming necessity to learn a JS front-end framework

React – Most popular in the industry
Vue – Easy to use and really gaining traction
Angular – Fading a Bit – Used in enterprise
Very popular in the industry
More interactive & interesting UIs
Component & modular front end code
Good for teams

State Management – For larges apps with a framework, you may need to learn methods to manage app-lvel state

Concepts(Immutable state, Stores, Reducers, Mutations, Getters, Actions, Observables)
Redux, Context API
Appollo(GraphQL Client)
VueX
NgRx

Server Side Language – To be a full stack or software engineer, you will need to learn a server-side language /technology

Things to learn – Fundemantal Syntax, Structure & Workflow, Package Management, HTTP/Routing
Node.js
Python
C#
Go
PHP

Server Side Framework – Do not reinvent the wheel. Learn a framework to build better and faster

Node.js – Express, Koa, Adonis
Python – Django, Flask
PHP – Laravel, Symfony
C# – ASP.NET

Database – Most applications will use some kind of database. There are different types, here are some options

Relational Database – MYSQL, PostgreSQL, MS SQL
NoSQL – MongoDB, Couchbase
Cloud – Firebase, AWS, Azure DocumentDB
Lightweight – SQLite, NeDB, Redis

Server Rendered Pages – Frameworks like React, Vue & Angular can also be rendered on the server which can actually make things relatively easy

Next.js – React
Nuxt.js – Vue
Angular Universal – Angular

CMS – Content management systems allow for quick development and give your clients the ability to update their content. May not be a bad idea to pick one up. Great for freelancers.

PHP Based – WordPress, Drupal
JS Based – Ghost, Keystone
Python Based – Mezzazine
.NET – Piranha, Orchard CMS

DevOps, Deployment – Learning languages and frameworks is one thing, setting up environments, testing and deployment is another

Deployment – Linux, SSH, Git, Server Software (Nginx, Apache)
Platforms – Digital Ocean, AWS, Heroku, Azure
Virtualization – Docker, Vagrant
Testing – Unit, Integration, Functional, System

Mobile Development – There are some frameworks that allow us to create native apps with web technologies

React Native – Build Native apps with React
NativeScript – Angular, TypeScript, JavaScript
Ionic – Hybrid apps with HTML/CSS/JS
Flutter – Mobile SDK for Android & iOS (Uses Dart)
Xamarin – Mobile apps with C#

Desktop Apps with Electron – Electron is used to build powerful cross-platform desktop applications using JavaScript

Used Chromium & Node.js
Compatible with Windows, Mac & Linux
Crash reporting, debugging & profiling

GraphQL & Apollo – GraphQL is a revolutionary new way to think about APIs. Query language is much less rigid that standard REST.

Ask for only what you want
Front & back end can collaborate more smoothly
Writing queries are very easy and similar to JSON
Apollo is a client to make requests to a GraphQL server
Used with the Gatsby static site generator

TypeScript – TypeScript is a superset of JS with additional features including static typing

Types of variables, functions
Classes
Other ES6 like features
Used in Angular but can be implemented in React & Vue

Serverless Architecture – Eliminate the need for creating and managing your own server

Used 3rd party services to execute Serverless Functions (Faas)
Examples are AWS, Netlify & Firebase
Popular with Gatsby static sites
Serverless framework – toolkit for building serverless apps

AI & Machine Learning – AI & ML have been huge in almost every area of programming & technology including web development

Machine learning can allow web apps to adapt over time
AI has a long way to go but I suspect we will see more of it in web development
Used heavily in Python but we also have JS libraries like Tensorflow.js and Brain.js

Blockchain Technology – Companies are using blockchain for digital transactions in order to make them more efficient and secure.

Solidity – Language for implementing contracts
Mist – Used for Storing Ethereum, sending transactions and contracts
Coinbase API – Blockchain des can easily build apps and integrate Bitcoin

Progressive Web Apps – PWA are regular web apps but give the user a native app experience in terms of layout and functionality

Responsive to fit any form factor
Service workers for offline availability
App-like interactions
HTTPS
Reliable, Fast & Engaging

Web Assembly – Assembly-like binary format for code that can be executed by the web browsers. Can be generated from higher level languages like C/C++ *& Rust.

Faster than JavaScript
Secure – Enforces same origin & security policies in the browser
Open & debuggable

NVM for Windows

With the dawn of new year I decided to self-learn full-stack technologies. I started from Node JS. As usual I begin at the documentation and read several articles on medium, freecodecamp and watched lots of videos tutorials. All the tutorials were either on Linux or Mac and shown the power of handy utility NVM – Node Version Manager.

It’s a clever idea that allow us having several versions on Node installed and use the selected node version for our project. I wanted to have same utility on my Windows machine and after quick google search I came across same utility implementation on Go language for windows by Corey. Try it out and It really make developers life easy.

Here is the cheat sheet of commands I found helpful.

nvm arch Show if node is running in 32 or 64 bit mode.
nvm install <version> [arch] The version can be a node.js version or “latest” for the latest stable version.

Optionally specify whether to install the 32 or 64 bit version (defaults to system arch).

Set [arch] to “all” to install 32 AND 64 bit versions.

Add –insecure to the end of this command to bypass SSL validation of the remote download server.

nvm list [available] List the node.js installations. Type “available” at the end to see what can be installed. Aliased as ls.
nvm on Enable node.js version management.
nvm off Disable node.js version management.
nvm proxy [url] Set a proxy to use for downloads. Leave [url] blank to see the current proxy. Set [url] to “none” to remove the proxy.
nvm node_mirror [url] Set the node mirror. Defaults to https://nodejs.org/dist/. Leave [url] blank to use default url.
nvm npm_mirror [url] Set the npm mirror. Defaults to https://github.com/npm/cli/archive/. Leave [url] blank to default url.
nvm uninstall <version> The version must be a specific version.
nvm use [version] [arch] Switch to use the specified version. Optionally specify 32/64bit architecture.

nvm use <arch> will continue using the selected version, but switch to 32/64 bit mode.

nvm root [path] Set the directory where nvm should store different versions of node.js. If <path> is not set, the current root will be displayed.
nvm version Displays the current running version of nvm for Windows. Aliased as v.
nvm ls List down all the installed node versions
nvm use <version> Use the selected version of the node js

 

 

Improving Problem Solving Skills

Happy New Year World!!!

2019 arrived and I decided to start blogging and hope to continue this practice. As a new year resolution I have finally decided to form a coding habit and dive into world of JavaScript. I have started #100DaysOfCode challenge and forcing myself to code at least 1 hour every day on personal projects to make coding a daily habit. 🙂

To enforce the challenge I looked at Project Euler and decided to solve a problem everyday. I will post my solutions on the GitHub and if the challenge is exciting and worth sharing I will write up a blog post on how I solved it.

Keep learning and improve yourself!!!