Skip to content

Commit 7fd6ec5

Browse files
authored
Merge pull request #68 from DataTalksClub/val-seo-experiments
## Implemented title and h1 difference for blog posts Now /articles/ page and each blog post shows the title of the blog post according to these conditions: if h1 exists, show h1 otherwise show title In this case, - the title specifies the title tag that is shown in SERP - h1 allows customization of h1 if we want the h1 tag be different from SEO title ## Added cursor commands for reusable commands under `.cursor/commands/` Custom commands allow you to create reusable workflows that can be triggered with a simple / prefix in the chat input box. These commands help standardize processes across your team and make common tasks more efficient. ## Updated title, subtitle, description, image formatting for SEO for these pages - _posts/2020-11-29-segmentation.md - _posts/2020-12-07-practical-guide-better-code.md - _posts/2020-12-14-data-roles.md - _posts/2020-12-17-ner-reformers.md - _posts/2020-12-17-simplifying-concepts.md - _posts/2020-12-25-data-narrative.md - _posts/2021-01-01-ml-deployment-lambda.md - _posts/2022-05-02-mlops-10-minutes.md - _posts/2022-05-15-devops-and-mlops-same-thing.md - _posts/2022-05-20-starting-career-in-data-science-at-45.md - _posts/2022-06-11-what-dataops-exactly.md ## _posts/2020-12-23-slack-communities.md - Updated cover image - Updated date - Updated intro - Created a table with skip links instead of a simple list - Added images for all Slack communities - Added faq accordion ## _posts/2025-08-16-ultimate-list-of-20-free-online-courses-on-machine-learning.md - Updated cover image - Updated title to put keywords first and add an intent phrase - Updated date - Updated intro - Created a comparison table with skip links - Added "How to Choose the Right ML Course for You" section with factors to consider, list of courses for different scenarios, and skip links - Added images for all courses - Added faq accordion - Added related posts section
2 parents fec2136 + ad04bb2 commit 7fd6ec5

File tree

65 files changed

+863
-335
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

65 files changed

+863
-335
lines changed
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
# Update Description
2+
3+
Based on the page content, generate a SEO-optimized meta description:
4+
- Length: 140-155 characters
5+
- Formula Structure: Problem/Benefit + What's Inside + Soft CTA
6+
- No formatting/markup - plain text only
7+
- Primary keyword early (first 60 characters for search bolding)
8+
- Use action verbs: Learn, Discover, Master, Build, etc.
9+
- Benefit-focused with specific details
10+
- Match content accurately
11+
- Emotional triggers: essential, proven, expert, comprehensive, etc.
12+
- Compelling: Appeals to the target audience

.cursor/commands/seo-images.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
# Update Image Formatting
2+
3+
For each image in the page, update the image formatting to be SEO-optimized:
4+
- Add all the image tags to the page for SEO and optimize them for SEO (src, alt, title, width and height to auto)
5+
- Optimize the image descriptions for SEO (alt, title, width, height)
6+
- Use formatting like here:
7+
```html
8+
loading="lazy" style="max-width: 100%; height: auto; border: 1px solid #ddd; border-radius: 4px;"
9+
```
10+
- If the name of the image is not descriptive, update the name of the image to be descriptive

.cursor/commands/seo-title.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
# Update Title
2+
3+
Based on the page content, generate a SEO-optimized title:
4+
- Should be under 100 characters
5+
- Focus primarily on the main themes and topics in the page content
6+
- Make it clear, keyword-rich, and engaging.
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
- question: "How do I join these Slack communities?"
2+
answer: |
3+
Most communities have a public invitation link that you can click to join directly. For invite-only communities, you'll need to sign up on their website or request an invitation from an existing member. Some require approval before you can join.
4+
- question: "How do I join the MLOps Community Slack?"
5+
answer: |
6+
Go to the <a href="#mlops-community">MLOps Community</a> section and click “Join here.” That link takes you to the community's official signup page for instant Slack access.
7+
- question: "How do I join the dbt Community Slack?"
8+
answer: |
9+
Go to the <a href="#dbt-community">dbt Community</a> section and click “Join here.” That link takes you to the community's official signup page for instant Slack access.
10+
- question: "How do I join the Locally Optimistic Slack?"
11+
answer: |
12+
Go to the <a href="#locally-optimistic">Locally Optimistic</a> section and click “Join here.” That link takes you to the community's official signup page for instant Slack access.
13+
- question: "How do I join the Open Data Science (ODS.ai) Slack?"
14+
answer: |
15+
Go to the <a href="#open-data-science-community">Open Data Science Community</a> section and click “Join here.” That link takes you to the community's official signup page for instant Slack access.
16+
17+
- question: "Is there a list of public Slack communities I can join?"
18+
answer: |
19+
Yes, this page. Browse the table at the top for categories, then jump to any section for a description and a direct join link.
20+
- question: "How do I join Open Data Science (ODS.ai) Slack?"
21+
answer: |
22+
Go to the <a href="#open-data-science-community">Open Data Science Community</a> section and click “Join here.” That link takes you to the community's official signup page for instant Slack access.
23+
- question: "Are these communities free to join?"
24+
answer: |
25+
Yes, all the Slack communities listed here are free to join. However, some may have premium tiers or paid events associated with their broader organizations.
26+
- question: "What should I expect when I first join?"
27+
answer: |
28+
Most communities have an introduction channel where you can introduce yourself as a new member. Take time to read the community guidelines, explore different channels, and observe the conversation style before jumping in. Many have specific channels for beginners or newcomers.
29+
- question: "How active are these communities?"
30+
answer: |
31+
Activity levels vary significantly. Large communities like MLOps Community (27,900+ members) and PySlackers (38,600+ members) have constant activity, while smaller, specialized groups may have more focused but less frequent discussions. We've only included communities that are currently active as of 2025.
32+
- question: "Can I join multiple communities?"
33+
answer: |
34+
Absolutely! You can be a member of several communities to get diverse perspectives and access different types of expertise. Just be mindful of managing notifications across multiple Slack workspaces.
35+
- question: "What if I'm a complete beginner?"
36+
answer: |
37+
Several communities are explicitly beginner-friendly, including Data Science Learning Community, KaggleNoobs, and the general channels in DataTalks.Club. Look for channels labeled "beginners," "newbies," or "help" in any community you join.
38+
39+
- question: "How do I find job opportunities in these communities?"
40+
answer: |
41+
Many communities have dedicated job boards or career channels. MLOps Community, DataTalks.Club, and Data Science Salon are particularly good for job postings. Always read the community guidelines about job posting etiquette before you share opportunities.
42+
- question: "Can I promote my own projects or content?"
43+
answer: |
44+
Most communities allow self-promotion in moderation, but always check the specific rules first. Many have dedicated channels for sharing projects, blog posts, or resources. The key is for you to be genuinely helpful to the community, not just promotional.
45+
46+
- question: "What if a community becomes inactive or the link doesn't work?"
47+
answer: |
48+
Since the Slack ecosystem changes frequently, some links may break over time. We've verified all links as of September 2025, but if you find an issue, try searching for the community's main website or reaching out to current members on other platforms like LinkedIn or Twitter.

_data/faqs/free-ml-courses.yml

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
- question: "Do I need to know programming before taking these courses?"
2+
answer: |
3+
Most courses require basic Python knowledge. If you're new to programming, start with Microsoft ML for Beginners or Google ML Crash Course, which include gentler introductions. For intensive programming preparation, consider pairing ML study with foundational Python courses.
4+
5+
- question: "Which course is best for someone with no math background?"
6+
answer: |
7+
Start with Google Machine Learning Crash Course, Microsoft ML for Beginners, or Fast.ai Practical Deep Learning for Coders. These courses teach ML concepts with minimal math prerequisites. Once you're comfortable, you can take the Mathematics for ML Specialization to deepen your understanding.
8+
9+
- question: "Can I really learn ML for free, or do I need to pay for certificates?"
10+
answer: |
11+
Absolutely! All courses listed offer free access to materials. Certificates are optional and mainly useful for LinkedIn/resume credentials. Your portfolio projects (especially from ML Zoomcamp or FreeCodeCamp) will be more valuable to employers than certificates.
12+
13+
- question: "How long does it take to learn machine learning?"
14+
answer: |
15+
For basic competency: 2-3 months with consistent study. For job readiness: 4-6 months including projects. For advanced expertise: 1-2 years of continuous learning and practice. Start with one course (like ML Zoomcamp or DeepLearning.AI Specialization) and build from there.
16+
17+
- question: "Should I take multiple courses simultaneously?"
18+
answer: |
19+
Generally no. Focus on one primary course and one supplementary resource (like Kaggle for practice). Exception: You can pair a math course (Imperial College) with a practical course if you need math foundations.
20+
21+
- question: "What's the difference between ML and AI courses?"
22+
answer: |
23+
Machine Learning is a subset of AI focused on algorithms that learn from data. These ML courses teach core algorithms (regression, neural networks, decision trees). For broader AI topics including agents, LLMs, and automation, check out our [AI Dev Tools Zoomcamp](/blog/ai-dev-tools-zoomcamp-2025-free-course-to-master-coding-assistants-agents-and-automation.html).
24+
25+
- question: "Which courses offer job placement support?"
26+
answer: |
27+
Most free courses don't offer formal placement services, but ML Zoomcamp includes an active Slack community where members share job opportunities, and the capstone project creates a strong portfolio piece. Focus on building projects and networking within course communities.
28+
29+
- question: "Can I get college credit for these courses?"
30+
answer: |
31+
University OpenCourseWare (MIT 6.036, Stanford CS229, etc.) don't offer credit, but platforms like Coursera and edX sometimes offer credit-eligible versions for a fee. Check each platform's credit policies if this is important to you.

_posts/2020-11-29-segmentation.md

Lines changed: 43 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
---
22
layout: post
3-
title: "Not A Regular RFM Analysis"
4-
subtitle: "Why limit to Recency, Frequency and Monetary measures during Customer Segmentation?"
5-
description: "Why limit to Recency, Frequency and Monetary measures during Customer Segmentation?"
3+
title: "Customer Segmentation with RFM+ and K-Means: 7 Segments from Gaming Data"
4+
subtitle: "Build a 5D RFM+ framework, engineer metrics, and segment responders/non-responders with k-means to power targeted in‑game marketing"
5+
description: "Customer segmentation with limited data. Learn a 5D RFM+ framework, engineer metrics, and use k-means to create 7 segments—apply insights now."
66
image: "images/posts/2020-11-29-segmentation/cover.jpg"
77
authors: [nishantmohan]
88
tags: [analytics, clustering]
@@ -35,7 +35,10 @@ So let's start, shall we!?
3535

3636
Let's take a quick look at the available features.
3737

38-
<img src="/images/posts/2020-11-29-segmentation/data.jpg" />
38+
<figure>
39+
<img src="/images/posts/2020-11-29-segmentation/data.jpg" alt="Sample of gaming user-level dataset with purchase dates for base game, expansion packs, and downloadable content" title="User-Level Gaming Dataset Features" loading="lazy" style="max-width: 100%; height: auto; border: 1px solid #ddd; border-radius: 4px;" />
40+
<figcaption><p>Snapshot of available features used for segmentation: base game, expansions, and DLC install dates</p></figcaption>
41+
</figure>
3942

4043
So the last 8 features are the names of either an expansion pack of the game or a downloadable content. The dataset has 500k rows. That's good because it means we can make more segments, right!?
4144

@@ -53,7 +56,10 @@ I tag the users as responders or non-responders based on whether they buy any ad
5356

5457
Now I can begin defining my key metrics for segmenting the responders:
5558

56-
<img src="/images/posts/2020-11-29-segmentation/recency.jpg" />
59+
<figure>
60+
<img src="/images/posts/2020-11-29-segmentation/recency.jpg" alt="Recency distribution showing user activity recency across years with higher activity in 2019" title="Recency Distribution of Player Activity" loading="lazy" style="max-width: 100%; height: auto; border: 1px solid #ddd; border-radius: 4px;" />
61+
<figcaption><p>Recency metric: days since last activity, highlighting more recent engagement in 2019</p></figcaption>
62+
</figure>
5763

5864

5965
### Recency
@@ -62,7 +68,10 @@ This is the number of days passed since the user was seen active on the gaming p
6268

6369
The chart shows that more users have been active in 2019, as compared to the users in 2017.
6470

65-
<img src="/images/posts/2020-11-29-segmentation/frequency.jpg" />
71+
<figure>
72+
<img src="/images/posts/2020-11-29-segmentation/frequency.jpg" alt="Frequency distribution of days played since installation, skewed toward fewer active days" title="Frequency of Gameplay Days" loading="lazy" style="max-width: 100%; height: auto; border: 1px solid #ddd; border-radius: 4px;" />
73+
<figcaption><p>Frequency metric: number of active days since install, skewed toward fewer days for most players</p></figcaption>
74+
</figure>
6675

6776
### Frequency
6877

@@ -71,7 +80,10 @@ Since the day a player installed the game, how many days did he play the game?
7180
The chart is concentrated towards left, meaning that most players are active for lesser days. However, it should be noted that new players have less number of days where they could be active, as compared to older players.
7281

7382

74-
<img src="/images/posts/2020-11-29-segmentation/monetary-value.png" />
83+
<figure>
84+
<img src="/images/posts/2020-11-29-segmentation/monetary-value.png" alt="Monetary value distribution of player spending based on mapped add-on prices" title="Monetary Value of Player Spend" loading="lazy" style="max-width: 100%; height: auto; border: 1px solid #ddd; border-radius: 4px;" />
85+
<figcaption><p>Monetary value metric: spend estimated by mapping store prices to user add-on purchases</p></figcaption>
86+
</figure>
7587

7688

7789
### Monetary Value
@@ -80,7 +92,10 @@ Since this information is not available in the data, I went to the game store we
8092

8193
Most players spend less than a hundred bucks. This is expected because the base game costs 55 bucks. And the downloadable content is generally cheap!
8294

83-
<img src="/images/posts/2020-11-29-segmentation/responses.png" />
95+
<figure>
96+
<img src="/images/posts/2020-11-29-segmentation/responses.png" alt="Distribution of number of add-ons purchased per player showing most buyers purchase one" title="Responses: Add-ons Purchased per Player" loading="lazy" style="max-width: 100%; height: auto; border: 1px solid #ddd; border-radius: 4px;" />
97+
<figcaption><p>Responses metric: count of prior add-on purchases per player; most buyers purchase only one</p></figcaption>
98+
</figure>
8499

85100

86101
### Responses
@@ -89,7 +104,10 @@ How many add-ons did the player buy previously? This will not be correlated with
89104

90105
It can be seen that most people who bought any add-on, only bought one.
91106

92-
<img src="/images/posts/2020-11-29-segmentation/purchase-frequency.png" />
107+
<figure>
108+
<img src="/images/posts/2020-11-29-segmentation/purchase-frequency.png" alt="Histogram of purchase intervals showing peaks near expansion launch windows" title="Purchase Frequency Over Time" loading="lazy" style="max-width: 100%; height: auto; border: 1px solid #ddd; border-radius: 4px;" />
109+
<figcaption><p>Purchase frequency metric: intervals between purchases with peaks around expansion release periods</p></figcaption>
110+
</figure>
93111

94112

95113
### Purchase Frequency
@@ -104,7 +122,10 @@ While most players buy everything soon after they buy the game, we see other hig
104122

105123
Using the 5 key metrics, I apply k-means clustering to segment the users.
106124

107-
<img src="/images/posts/2020-11-29-segmentation/elbow.jpg" />
125+
<figure>
126+
<img src="/images/posts/2020-11-29-segmentation/elbow.jpg" alt="Elbow method chart indicating optimal k around five clusters for k-means" title="Elbow Method for Optimal k" loading="lazy" style="max-width: 100%; height: auto; border: 1px solid #ddd; border-radius: 4px;" />
127+
<figcaption><p>Elbow plot suggests k=5 as a balanced choice for k-means clustering complexity and cohesion</p></figcaption>
128+
</figure>
108129

109130
Looking at the chart, I select 5 as the optimum number of clusters/segments. This gives me a balance between homogeneity within clusters and complexity of the analysis.
110131

@@ -113,23 +134,32 @@ Looking at the chart, I select 5 as the optimum number of clusters/segments. Thi
113134

114135
Since these are the users who have not interacted much, we only have two measures to judge them: Recency and Frequency.
115136

116-
<img src="/images/posts/2020-11-29-segmentation/recency-vs-frequency.jpg" />
137+
<figure>
138+
<img src="/images/posts/2020-11-29-segmentation/recency-vs-frequency.jpg" alt="Scatter plot of recency versus frequency used to segment non-responders by activity threshold" title="Recency vs Frequency for Non-Responders" loading="lazy" style="max-width: 100%; height: auto; border: 1px solid #ddd; border-radius: 4px;" />
139+
<figcaption><p>Non-responder segmentation using a recency threshold to separate recently active from lapsed users</p></figcaption>
140+
</figure>
117141

118142
As can be seen in the above chart, I segment such users by a threshold of 1000 days. That is, those who have been active in last 200 days are in Cluster 6, others are in Cluster 5 (Cluster 0–4 being the responders).
119143

120144
## Analysis and Strategy
121145

122146
Following table gives means of all the features across the user segments.
123147

124-
<img src="/images/posts/2020-11-29-segmentation/segments.jpg" />
148+
<figure>
149+
<img src="/images/posts/2020-11-29-segmentation/segments.jpg" alt="Table of means for key metrics across identified customer segments" title="Segment Means Across Metrics" loading="lazy" style="max-width: 100%; height: auto; border: 1px solid #ddd; border-radius: 4px;" />
150+
<figcaption><p>Summary statistics by segment for recency, frequency, responses, monetary value, and purchase cadence</p></figcaption>
151+
</figure>
125152

126153
Look at the first row. On average, players in Cluster 0 were active for nearly 15 days, bought 1.5 add-ons, were active 477 days from the beginning (long back), spent 65 bucks, and purchased an add-on every 33 days. Since these were active long back, they have probably forgotten about the game. So, in-game marketing may not work on them! On the other hand, email marketing might!
127154

128155
Now look at the second row. On average, players in Cluster 1 were active for a whopping 92 days, bought nearly 3 add-ons, were active fairly recently, have spent much more than others have, but purchase relatively rarely. These could be the players who have recently bought an add-on. These are the customers who seem to be loyal. We could target them with more exciting features!
129156

130157
Following figure gives similar summary of each cluster/segment.
131158

132-
<img src="/images/posts/2020-11-29-segmentation/strategy.jpg" />
159+
<figure>
160+
<img src="/images/posts/2020-11-29-segmentation/strategy.jpg" alt="Per-segment strategy summary visualization guiding targeted marketing actions" title="Per-Segment Strategy Overview" loading="lazy" style="max-width: 100%; height: auto; border: 1px solid #ddd; border-radius: 4px;" />
161+
<figcaption><p>Actionable strategy guidance for each segment to tailor in-game and email marketing</p></figcaption>
162+
</figure>
133163

134164
## Conclusion
135165

0 commit comments

Comments
 (0)