Skip to content

Commit 1e6758b

Browse files
authored
Merge branch 'main' into patch-1
2 parents d05f3d7 + a3f2a6f commit 1e6758b

11 files changed

Lines changed: 377 additions & 73 deletions

File tree

1.04 MB
Loading
992 KB
Loading
1020 KB
Loading

blog/azure-synapse-analytics/index.md

Lines changed: 274 additions & 0 deletions
Large diffs are not rendered by default.

blog/medallion-architecture/index.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ The architecture divides your data journey into three layers:
6161
6262
Each layer has one job. Each layer makes the data a little more trustworthy. By the time data reaches the end, it's reliable, consistent, and ready to power real business decisions.
6363

64-
<!-- ![Three-layer Medallion Architecture flow diagram](./img/medallion-architecture-flow.png) -->
64+
![Three-layer Medallion Architecture flow diagram](./Img/medallion-architecture-flow.png)
6565

6666

6767
## 🥉 Bronze: The "Keep Everything" Layer
@@ -121,6 +121,7 @@ Most of the heavy lifting in a data pipeline lives here. It's not glamorous work
121121
### What Silver looks like in practice
122122

123123
Here's a simple PySpark transformation from Bronze to Silver:
124+
- [Reference code](https://oneuptime.com/blog/post/2026-02-17-how-to-build-a-data-lakehouse-architecture-on-gcp-using-cloud-storage-dataproc-and-bigquery/view)
124125

125126
```python
126127
from pyspark.sql import SparkSession
@@ -276,7 +277,7 @@ In practice, teams often extend the model:
276277
- **Feature layer** — prepared datasets for ML model training, maintained by data science teams on top of Silver
277278
- **Semantic layer** — business-friendly models sitting between Gold and end users for self-serve BI
278279

279-
<!--![Extended Medallion Architecture with optional Landing, Feature, and Semantic layers](./img/medallion-extended-layers.png) -->
280+
![Extended Medallion Architecture with optional Landing, Feature, and Semantic layers](./Img/medallion-extended-layers.png)
280281

281282
The three-tier model is a starting point, not a ceiling. The right number of layers is whatever your team actually needs.
282283

@@ -330,6 +331,7 @@ This is the exact structure we adopted after the revenue incident. Bronze preser
330331
- [RecodeHive - Lakehouse vs Data Warehouse](https://www.recodehive.com/blog/lakehouse-vs-warehouse)
331332
- [RecodeHive - Microsoft Fabric: One Platform, One Lake](https://www.recodehive.com/blog/microsoft-fabric-explained)
332333
- [RecodeHive - Azure Storage & ADLS Gen2](https://www.recodehive.com/blog/azure-storage-options)
334+
- [OneUptime - Build a Data Lakehouse on GCP](https://oneuptime.com/blog/post/2026-02-17-how-to-build-a-data-lakehouse-architecture-on-gcp-using-cloud-storage-dataproc-and-bigquery/view)
333335

334336
## About the Author
335337

docusaurus.config.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -151,8 +151,10 @@ const config: Config = {
151151
value: `<div class="grid grid-cols-3 gap-4">
152152
<a class="border-r col-span-1" href="/interview-prep/" target="_self">Interview Prep</a>
153153
<div class="grid grid-cols-1 col-span-2">
154-
<a href="/interview-prep/" target="_self" class="nav__icons"> 🧩Technical </a>
155-
<a href="/interview-prep/" target="_self" class="nav__icons"> 💡Behavioral </a>
154+
<a href="/interview-prep/?tab=technical" target="_self" class="nav__icons"> 🧩Technical </a>
155+
<a href="/interview-prep/?tab=behavioral" target="_self" class="nav__icons"> 💡Behavioral </a>
156+
<a href="/interview-prep/?tab=companies" target="_self" class="nav__icons"> 🏢Companies </a>
157+
<a href="/interview-prep/?tab=practice" target="_self" class="nav__icons"> 🎯Practice </a>
156158
</div>
157159
</div>`,
158160
},

package-lock.json

Lines changed: 64 additions & 64 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@
6666
"rehype-katex": "^7.0.1",
6767
"remark-math": "^6.0.0",
6868
"styled-components": "^6.4.1",
69-
"tailwind-merge": "^3.2.0",
69+
"tailwind-merge": "^3.6.0",
7070
"tw-animate-css": "^1.2.8",
7171
"vanilla-tilt": "^1.8.1"
7272
},
@@ -78,13 +78,13 @@
7878
"@types/canvas-confetti": "^1.9.0",
7979
"@types/react": "^19.1.9",
8080
"@types/react-dom": "^19.1.7",
81-
"@typescript-eslint/eslint-plugin": "^8.59.2",
82-
"@typescript-eslint/parser": "^8.59.1",
81+
"@typescript-eslint/eslint-plugin": "^8.59.3",
82+
"@typescript-eslint/parser": "^8.59.3",
8383
"autoprefixer": "^10.5.0",
8484
"eslint": "^9.38.0",
8585
"eslint-plugin-react": "^7.37.5",
8686
"husky": "^9.1.7",
87-
"lint-staged": "^17.0.3",
87+
"lint-staged": "^17.0.4",
8888
"postcss": "^8.5.14",
8989
"prettier": "^3.8.3",
9090
"prettier-plugin-tailwindcss": "^0.6.14",

src/database/blogs/index.tsx

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,15 @@ const blogs: Blog[] = [
177177
category: "data engineering",
178178
tags: ["Streaming Pipelines", "Real-Time Data Processing", "Data Consistency", "Data Reliability", "Resource Consumption", "Complexity", "Data Engineering"],
179179

180+
id: 15,
181+
title: "Azure Synapse Analytics: When to Use It (And When to Choose Fabric Instead)",
182+
image: "/img/blogs/azure-synapse-cover.png",
183+
description:
184+
"Azure Synapse Analytics is a unified analytics service that combines big data and data warehousing capabilities. This article explores when to use Azure Synapse Analytics and when to choose Fabric instead.",
185+
slug: "azure-synapse-analytics",
186+
authors: ["Aditya-Singh-Rathore"],
187+
category: "data engineering",
188+
tags: ["Azure", "Synapse Analytics", "Data Warehousing", "Big Data", "Unified Analytics", "Fabric", "Data Engineering"],
180189
},
181190

182191
];

src/pages/interview-prep/index.tsx

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import React from "react";
2-
import { useState } from "react";
2+
import { useState, useEffect } from "react";
33
import Layout from "@theme/Layout";
44
import Head from "@docusaurus/Head";
55
import { motion } from "framer-motion";
@@ -39,6 +39,23 @@ const InterviewPrepPage: React.FC = () => {
3939
const [expandedCategories, setExpandedCategories] = useState<{
4040
[key: string]: boolean;
4141
}>({});
42+
43+
// Handle URL-based tab navigation
44+
useEffect(() => {
45+
if (typeof window !== "undefined") {
46+
const params = new URLSearchParams(window.location.search);
47+
const tabParam = params.get("tab");
48+
if (
49+
tabParam &&
50+
["overview", "technical", "behavioral", "companies", "practice"].includes(
51+
tabParam
52+
)
53+
) {
54+
setActiveTab(tabParam as TabType);
55+
}
56+
}
57+
}, []);
58+
4259
const toggleCategory = (categoryIndex: number) => {
4360
setExpandedCategories((prev) => ({
4461
...prev,

0 commit comments

Comments
 (0)