diff --git a/apps/website/src/app/articles/2023/12/01/[slug]/Content.tsx b/apps/website/src/app/articles/2023/12/01/[slug]/Content.tsx
index 0a6cdbe..b5e5c4e 100644
--- a/apps/website/src/app/articles/2023/12/01/[slug]/Content.tsx
+++ b/apps/website/src/app/articles/2023/12/01/[slug]/Content.tsx
@@ -4,6 +4,9 @@ import {Slogan} from '@/styled-components'
import {Keyword} from '@/components/SEO'
import EcmascriptHarmonyRiseCompilers from '@/blog/lectures/ecmascript-harmony-rise-compilers'
+import HoldingPerformancePromises from '@/blog/lectures/holding-performance-promises'
+import RailsConf2015StrongCodeReviewCulture from '@/blog/lectures/rails-2015-implementing-strong-code-review-culture'
+import DockerKubernetes from '@/blog/courses/docker-kubernetes-fundamentals'
const Content = () => {
const listStyle = 'list-disc mx-6 mt-0 mb-5'
@@ -30,6 +33,9 @@ const Content = () => {
+
+
+
Video presentations:
@@ -38,6 +44,15 @@ const Content = () => {
+
+
+
+
+
+
+
+
+
>
)
diff --git a/apps/website/src/blog/courses/docker-kubernetes-fundamentals.tsx b/apps/website/src/blog/courses/docker-kubernetes-fundamentals.tsx
new file mode 100644
index 0000000..9c7b67a
--- /dev/null
+++ b/apps/website/src/blog/courses/docker-kubernetes-fundamentals.tsx
@@ -0,0 +1,36 @@
+'use client'
+
+import TargetBlankLink from '@/components/TargetBlankLink'
+import BlogLectureTitle from '@/components/BlogLectureTitle'
+import BlogLectureDescription from '@/components/BlogLectureDescription'
+
+const Component = () => {
+ const title =
+ 'Docker Containers and Kubernetes Fundamentals: Full Hands-On Course'
+
+ return (
+
+
+
+ <>
+ Learn how to use Docker and Kubernetes in this complete hand-on course
+ for beginners, how to containerize applications with the Docker CLI
+ and Visual Studio Code, push and pull container images on Docker Hub,
+ a container registry, and create multi-container applications using
+ Docker Compose. Learn about the Kubernetes architecture and how it
+ works. Run it locally and use the Kubernetes CLI and Visual Studio
+ Code to run, debug and troubleshoot applications and services. Learn
+ about pods and the different workloads available.
+ >
+
+ Video:
+
+
+ )
+}
+
+export default Component
diff --git a/apps/website/src/blog/lectures/holding-performance-promises.tsx b/apps/website/src/blog/lectures/holding-performance-promises.tsx
new file mode 100644
index 0000000..363a904
--- /dev/null
+++ b/apps/website/src/blog/lectures/holding-performance-promises.tsx
@@ -0,0 +1,36 @@
+'use client'
+
+import TargetBlankLink from '@/components/TargetBlankLink'
+import BlogLectureTitle from '@/components/BlogLectureTitle'
+import BlogLectureDescription from '@/components/BlogLectureDescription'
+
+const Component = () => {
+ const title =
+ 'Holding on to your Performance Promises - Maya Lekova and Benedikt Meurer'
+
+ return (
+
+
+
+ <>
+ Lecture Info: The ES2015 revision of JavaScript introduced Promises as
+ primitives for asynchronous operations and generators as primitives
+ for concurrent programming. On top of that ES2017/18 added async
+ functions and generators. This talk briefly explores these primitives,
+ and dives into the performance peculiarities of Promises-based
+ programming paradigms. We’ll especially look into how these operations
+ perform in V8, the JavaScript engine that powers both Node.js and
+ Chrome.
+ >
+
+ Video:
+
+
+ )
+}
+
+export default Component
diff --git a/apps/website/src/blog/lectures/rails-2015-implementing-strong-code-review-culture.tsx b/apps/website/src/blog/lectures/rails-2015-implementing-strong-code-review-culture.tsx
new file mode 100644
index 0000000..b565c41
--- /dev/null
+++ b/apps/website/src/blog/lectures/rails-2015-implementing-strong-code-review-culture.tsx
@@ -0,0 +1,36 @@
+'use client'
+
+import TargetBlankLink from '@/components/TargetBlankLink'
+import BlogLectureTitle from '@/components/BlogLectureTitle'
+import BlogLectureDescription from '@/components/BlogLectureDescription'
+
+const Component = () => {
+ const title = 'Implementing a Strong Code-Review Culture'
+
+ return (
+
+
+
+ <>
+ Code reviews are not about catching bugs. Modern code reviews are
+ about socialization, learning, and teaching. How can you get the most
+ out of a peer’s code review and how can you review code without
+ being seen as overly critical? Reviewing code and writing
+ easily-reviewed features are skills that will make you a better
+ developer and a better teammate. You will leave this talk with the
+ tools to implement a successful code-review culture. You’ll
+ learn how to get more from the reviews you’re already getting
+ and how to have more impact with the reviews you leave.
+ >
+
+ Video:
+
+
+ )
+}
+
+export default Component