|
|
|
[
|
|
|
|
{
|
|
|
|
"id": "basics-of-authentication",
|
|
|
|
"title": "Basics of Authentication",
|
|
|
|
"description": "Learn the basics of Authentication and Authorization",
|
|
|
|
"isNew": true,
|
|
|
|
"type": "textual",
|
|
|
|
"authorUsername": "kamranahmedse",
|
|
|
|
"updatedAt": "2022-09-21T19:59:14.191Z",
|
|
|
|
"createdAt": "2022-09-21T19:59:14.191Z"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"id": "avoid-render-blocking-javascript-with-async-defer",
|
|
|
|
"title": "Async and Defer Script Loading",
|
|
|
|
"description": "Learn how to avoid render blocking JavaScript using async and defer scripts.",
|
|
|
|
"isNew": false,
|
|
|
|
"type": "visual",
|
|
|
|
"authorUsername": "kamranahmedse",
|
|
|
|
"updatedAt": "2021-09-10T19:59:14.191Z",
|
|
|
|
"createdAt": "2021-09-10T19:59:14.191Z"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"id": "what-are-web-vitals",
|
|
|
|
"title": "What are Web Vitals?",
|
|
|
|
"description": "Learn what are the core web vitals and how to measure them.",
|
|
|
|
"isNew": false,
|
|
|
|
"type": "visual",
|
|
|
|
"authorUsername": "kamranahmedse",
|
|
|
|
"updatedAt": "2021-09-05T19:59:14.191Z",
|
|
|
|
"createdAt": "2021-09-05T19:59:14.191Z"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"id": "what-is-sli-slo-sla",
|
|
|
|
"title": "SLIs, SLOs and SLAs",
|
|
|
|
"description": "Learn what are different indicators for performance identification of any service.",
|
|
|
|
"isNew": false,
|
|
|
|
"type": "visual",
|
|
|
|
"authorUsername": "kamranahmedse",
|
|
|
|
"updatedAt": "2021-08-31T19:59:14.191Z",
|
|
|
|
"createdAt": "2021-08-31T19:59:14.191Z"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"id": "ci-cd",
|
|
|
|
"title": "What is CI and CD?",
|
|
|
|
"description": "Learn the basics of CI/CD and how to implement that with GitHub Actions.",
|
|
|
|
"isNew": false,
|
|
|
|
"type": "visual",
|
|
|
|
"authorUsername": "kamranahmedse",
|
|
|
|
"updatedAt": "2021-07-09T19:59:14.191Z",
|
|
|
|
"createdAt": "2021-07-09T19:59:14.191Z"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"id": "sso",
|
|
|
|
"title": "SSO — Single Sign On",
|
|
|
|
"description": "Learn the basics of SAML and understand how does Single Sign On work.",
|
|
|
|
"isNew": false,
|
|
|
|
"type": "visual",
|
|
|
|
"authorUsername": "kamranahmedse",
|
|
|
|
"updatedAt": "2021-07-01T19:59:14.191Z",
|
|
|
|
"createdAt": "2021-07-01T19:59:14.191Z"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"id": "oauth",
|
|
|
|
"title": "OAuth — Open Authorization",
|
|
|
|
"description": "Learn and understand what is OAuth and how it works",
|
|
|
|
"isNew": false,
|
|
|
|
"type": "visual",
|
|
|
|
"authorUsername": "kamranahmedse",
|
|
|
|
"updatedAt": "2021-06-28T19:59:14.191Z",
|
|
|
|
"createdAt": "2021-06-28T19:59:14.191Z"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"id": "jwt-authentication",
|
|
|
|
"title": "JWT Authentication",
|
|
|
|
"description": "Understand what is JWT authentication and how is it implemented",
|
|
|
|
"isNew": false,
|
|
|
|
"type": "visual",
|
|
|
|
"authorUsername": "kamranahmedse",
|
|
|
|
"updatedAt": "2021-06-20T19:59:14.191Z",
|
|
|
|
"createdAt": "2021-06-20T19:59:14.191Z"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"id": "token-authentication",
|
|
|
|
"title": "Token Based Authentication",
|
|
|
|
"description": "Understand what is token based authentication and how it is implemented",
|
|
|
|
"isNew": false,
|
|
|
|
"type": "visual",
|
|
|
|
"authorUsername": "kamranahmedse",
|
|
|
|
"updatedAt": "2021-06-02T20:59:14.191Z",
|
|
|
|
"createdAt": "2021-06-02T20:59:14.191Z"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"id": "session-authentication",
|
|
|
|
"title": "Session Based Authentication",
|
|
|
|
"description": "Understand what is session based authentication and how it is implemented",
|
|
|
|
"isNew": false,
|
|
|
|
"type": "visual",
|
|
|
|
"authorUsername": "kamranahmedse",
|
|
|
|
"updatedAt": "2021-05-26T20:59:14.191Z",
|
|
|
|
"createdAt": "2021-05-26T20:59:14.191Z"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"id": "basic-authentication",
|
|
|
|
"title": "Basic Authentication",
|
|
|
|
"description": "Understand what is basic authentication and how it is implemented",
|
|
|
|
"isNew": false,
|
|
|
|
"type": "visual",
|
|
|
|
"authorUsername": "kamranahmedse",
|
|
|
|
"updatedAt": "2021-05-19T20:59:14.191Z",
|
|
|
|
"createdAt": "2021-05-19T20:59:14.191Z"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"id": "character-encodings",
|
|
|
|
"title": "Character Encodings",
|
|
|
|
"description": "Covers the basics of character encodings and explains ASCII vs Unicode",
|
|
|
|
"isNew": false,
|
|
|
|
"type": "visual",
|
|
|
|
"authorUsername": "kamranahmedse",
|
|
|
|
"updatedAt": "2021-05-14T20:59:14.191Z",
|
|
|
|
"createdAt": "2021-05-14T20:59:14.191Z"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"id": "unfamiliar-codebase",
|
|
|
|
"title": "Unfamiliar Codebase",
|
|
|
|
"description": "Tips on getting getting familiar with an unfamiliar codebase",
|
|
|
|
"isNew": false,
|
|
|
|
"type": "visual",
|
|
|
|
"authorUsername": "kamranahmedse",
|
|
|
|
"updatedAt": "2021-05-04T20:59:14.191Z",
|
|
|
|
"createdAt": "2021-05-04T20:59:14.191Z"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"id": "why-build-it-and-they-will-come-wont-work-anymore",
|
|
|
|
"title": "Build it and they will come?",
|
|
|
|
"description": "Why “build it and they will come” alone won’t work anymore",
|
|
|
|
"isNew": false,
|
|
|
|
"type": "textual",
|
|
|
|
"authorUsername": "spekulatius",
|
|
|
|
"updatedAt": "2021-05-04T12:59:14.191Z",
|
|
|
|
"createdAt": "2021-05-04T12:59:14.191Z"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"id": "dhcp-in-one-picture",
|
|
|
|
"title": "DHCP in One Picture",
|
|
|
|
"description": "Here is what happens when a new device joins the network.",
|
|
|
|
"isNew": false,
|
|
|
|
"type": "visual",
|
|
|
|
"authorUsername": "kamranahmedse",
|
|
|
|
"updatedAt": "2021-04-28T15:48:21.191Z",
|
|
|
|
"createdAt": "2021-04-28T15:48:21.191Z"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"id": "ssl-tls-https-ssh",
|
|
|
|
"title": "SSL vs TLS vs SSH",
|
|
|
|
"description": "Quick tidbit on the differences between SSL, TLS, HTTPS and SSH",
|
|
|
|
"isNew": false,
|
|
|
|
"type": "visual",
|
|
|
|
"authorUsername": "kamranahmedse",
|
|
|
|
"updatedAt": "2021-04-22T15:48:21.191Z",
|
|
|
|
"createdAt": "2021-04-22T15:48:21.191Z"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"id": "asymptotic-notation",
|
|
|
|
"title": "Asymptotic Notation",
|
|
|
|
"description": "Learn the basics of measuring the time and space complexity of algorithms",
|
|
|
|
"isNew": false,
|
|
|
|
"type": "visual",
|
|
|
|
"authorUsername": "kamranahmedse",
|
|
|
|
"updatedAt": "2021-04-03T15:48:21.191Z",
|
|
|
|
"createdAt": "2021-04-03T15:48:21.191Z"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"id": "big-o-notation",
|
|
|
|
"title": "Big-O Notation",
|
|
|
|
"description": "Easy to understand explanation of Big-O notation without any fancy terms",
|
|
|
|
"isNew": false,
|
|
|
|
"type": "visual",
|
|
|
|
"authorUsername": "kamranahmedse",
|
|
|
|
"updatedAt": "2021-03-15T15:48:21.191Z",
|
|
|
|
"createdAt": "2021-03-15T15:48:21.191Z"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"id": "random-numbers",
|
|
|
|
"title": "Random Numbers: Are they?",
|
|
|
|
"description": "Learn how they are generated and why they may not be truly random.",
|
|
|
|
"isNew": false,
|
|
|
|
"type": "visual",
|
|
|
|
"authorUsername": "kamranahmedse",
|
|
|
|
"updatedAt": "2021-03-14T15:48:21.191Z",
|
|
|
|
"createdAt": "2021-03-14T15:48:21.191Z"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"id": "scaling-databases",
|
|
|
|
"title": "Scaling Databases",
|
|
|
|
"description": "Learn the ups and downs of different database scaling strategies",
|
|
|
|
"isNew": false,
|
|
|
|
"type": "visual",
|
|
|
|
"authorUsername": "kamranahmedse",
|
|
|
|
"updatedAt": "2021-02-18T15:48:21.191Z",
|
|
|
|
"createdAt": "2021-02-18T15:48:21.191Z"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"id": "what-is-internet",
|
|
|
|
"title": "How does the internet work?",
|
|
|
|
"description": "Learn the basics of internet and everything involved with this short video series",
|
|
|
|
"isNew": false,
|
|
|
|
"type": "textual",
|
|
|
|
"authorUsername": "kamranahmedse",
|
|
|
|
"updatedAt": "2021-02-29T15:48:21.191Z",
|
|
|
|
"createdAt": "2021-02-29T15:48:21.191Z"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"id": "torrent-client",
|
|
|
|
"title": "Building a BitTorrent Client",
|
|
|
|
"description": "Learn everything you need to know about BitTorrent by writing a client in Go",
|
|
|
|
"isNew": false,
|
|
|
|
"type": "textual",
|
|
|
|
"authorUsername": "jesse",
|
|
|
|
"updatedAt": "2021-01-17T15:48:21.191Z",
|
|
|
|
"createdAt": "2021-01-17T15:48:21.191Z",
|
|
|
|
"canonical": "https://blog.jse.li/posts/torrent/"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"id": "levels-of-seniority",
|
|
|
|
"title": "Levels of Seniority",
|
|
|
|
"description": "How to Step Up as a Junior, Mid Level or a Senior Developer?",
|
|
|
|
"isNew": false,
|
|
|
|
"type": "textual",
|
|
|
|
"authorUsername": "kamranahmedse",
|
|
|
|
"updatedAt": "2020-12-03T12:13:00.860Z",
|
|
|
|
"createdAt": "2020-12-03T12:13:00.860Z"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"id": "design-patterns-for-humans",
|
|
|
|
"title": "Design Patterns for Humans",
|
|
|
|
"description": "A language agnostic, ultra-simplified explanation to design patterns",
|
|
|
|
"isNew": false,
|
|
|
|
"type": "textual",
|
|
|
|
"authorUsername": "kamranahmedse",
|
|
|
|
"updatedAt": "2019-10-09T12:00:00.860Z",
|
|
|
|
"createdAt": "2019-01-23T17:00:00.860Z"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"id": "journey-to-http2",
|
|
|
|
"title": "Journey to HTTP/2",
|
|
|
|
"description": "The evolution of HTTP. How it all started and where we stand today",
|
|
|
|
"isNew": false,
|
|
|
|
"type": "textual",
|
|
|
|
"authorUsername": "kamranahmedse",
|
|
|
|
"createdAt": "2018-12-04T12:00:00.860Z",
|
|
|
|
"updatedAt": "2018-12-04T12:00:00.860Z",
|
|
|
|
"isDraft": true
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"id": "dns-in-one-picture",
|
|
|
|
"title": "DNS in One Picture",
|
|
|
|
"description": "Quick illustrative guide on how a website is found on the internet.",
|
|
|
|
"isNew": false,
|
|
|
|
"type": "visual",
|
|
|
|
"authorUsername": "kamranahmedse",
|
|
|
|
"updatedAt": "2018-12-04T12:00:00.860Z",
|
|
|
|
"createdAt": "2018-12-04T17:00:00.860Z"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"id": "http-caching",
|
|
|
|
"title": "HTTP Caching",
|
|
|
|
"description": "Everything you need to know about web caching",
|
|
|
|
"isNew": false,
|
|
|
|
"type": "textual",
|
|
|
|
"authorUsername": "kamranahmedse",
|
|
|
|
"createdAt": "2018-11-29T17:00:00.860Z",
|
|
|
|
"updatedAt": "2018-11-29T17:00:00.860Z"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"id": "history-of-javascript",
|
|
|
|
"title": "Brief History of JavaScript",
|
|
|
|
"description": "How JavaScript was introduced and evolved over the years",
|
|
|
|
"isNew": false,
|
|
|
|
"type": "textual",
|
|
|
|
"authorUsername": "kamranahmedse",
|
|
|
|
"createdAt": "2017-10-28T17:00:00.860Z",
|
|
|
|
"updatedAt": "2017-10-28T17:00:00.860Z"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"id": "proxy-servers",
|
|
|
|
"title": "Proxy Servers",
|
|
|
|
"description": "How do proxy servers work and what are forward and reverse proxies?",
|
|
|
|
"isNew": false,
|
|
|
|
"type": "textual",
|
|
|
|
"authorUsername": "ebrahimbharmal007",
|
|
|
|
"createdAt": "2017-10-24T17:00:00.860Z",
|
|
|
|
"updatedAt": "2017-10-24T17:00:00.860Z"
|
|
|
|
}
|
|
|
|
]
|