<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Sanjay Bhujbal</title>
    <description>The latest articles on DEV Community by Sanjay Bhujbal (@sanjay_bhujbal_533cfed9b6).</description>
    <link>https://dev.to/sanjay_bhujbal_533cfed9b6</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3564895%2Fce1af86d-8454-45be-9815-e5f06e82f391.jpg</url>
      <title>DEV Community: Sanjay Bhujbal</title>
      <link>https://dev.to/sanjay_bhujbal_533cfed9b6</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sanjay_bhujbal_533cfed9b6"/>
    <language>en</language>
    <item>
      <title>Hidden Gems in Azure SQL: Useful Commands, Functions &amp; Keywords You Should Know</title>
      <dc:creator>Sanjay Bhujbal</dc:creator>
      <pubDate>Tue, 14 Oct 2025 16:18:52 +0000</pubDate>
      <link>https://dev.to/sanjay_bhujbal_533cfed9b6/hidden-gems-in-azure-sql-useful-commands-functions-keywords-you-should-know-33fo</link>
      <guid>https://dev.to/sanjay_bhujbal_533cfed9b6/hidden-gems-in-azure-sql-useful-commands-functions-keywords-you-should-know-33fo</guid>
      <description>&lt;p&gt;&lt;strong&gt;Introduction&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;As SQL developers, we often rely on a common subset of T-SQL commands and functions (e.g. SELECT, JOIN, GROUP BY, SUM, COUNT). But beyond the everyday tools lie a number of underutilized SQL constructs, performance‐oriented functions, and keywords that can dramatically improve the efficiency, clarity, and maintainability of your queries—especially in Azure SQL environments. In this post, we’ll explore some of those “hidden gems”: useful, but less familiar, SQL features, and when to use them.&lt;/p&gt;

&lt;p&gt;Whether you’re working on Azure SQL Database, Managed Instance, or comparable SQL Server versions, these techniques can boost your productivity and performance.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why These Matter in Azure SQL&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Azure SQL is a managed environment: you don’t control hardware, so query performance and cost efficiency depend heavily on how well your SQL is written.&lt;/li&gt;
&lt;li&gt;The cost model (DTU / vCore, IO, compute) makes every inefficiency impactful.&lt;/li&gt;
&lt;li&gt;Azure has newer T-SQL additions and optimizations (e.g. GREATEST / LEAST) that aren’t in older SQL Server versions.&lt;/li&gt;
&lt;li&gt;Knowing “lesser-known” commands can help you diagnose, optimize, or simplify tricky queries.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Useful (But Less Common) SQL Commands, Functions &amp;amp; Keywords&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Below are commands, functions, or keywords that many developers may not use daily—but that can prove very valuable in the right context.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;What It Does / Why It’s Useful&lt;/th&gt;
&lt;th&gt;Example / Notes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;GREATEST(...) &amp;amp; LEAST(...)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Returns the greatest (or least) value among a list of expressions &lt;em&gt;within the same row&lt;/em&gt;. This is different from &lt;code&gt;MAX()&lt;/code&gt; over a column. Azure SQL supports &lt;code&gt;GREATEST&lt;/code&gt; and &lt;code&gt;LEAST&lt;/code&gt; in recent versions. (&lt;a href="https://www.mssqltips.com/sqlservertip/7064/azure-sql-database-greatest-least-functions/?utm_source=chatgpt.com" rel="noopener noreferrer"&gt;MSSQLTips.com&lt;/a&gt;)&lt;/td&gt;
&lt;td&gt;&lt;code&gt;sql SELECT GREATEST(score1, score2, score3) AS topScore, LEAST(score1, score2, score3) AS bottomScore FROM MyTable;&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;Query Hints&lt;/strong&gt; (&lt;code&gt;OPTION ( … )&lt;/code&gt;, &lt;code&gt;WITH (… )&lt;/code&gt;)&lt;/td&gt;
&lt;td&gt;Hints let you override or nudge the optimizer’s behavior: force an index, disable parallelism, control join types, etc. Use cautiously. (&lt;a href="https://en.wikipedia.org/wiki/Hint_%28SQL%29?utm_source=chatgpt.com" rel="noopener noreferrer"&gt;Wikipedia&lt;/a&gt;)&lt;/td&gt;
&lt;td&gt;E.g. &lt;code&gt;SELECT * FROM MyTable WITH (INDEX(idx_MyTable_ColA)) WHERE ColA = 42;&lt;/code&gt; or &lt;code&gt;… OPTION (MAXDOP 1)&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;Forced Parameterization&lt;/strong&gt; (via Azure SQL Advisor recommendation)&lt;/td&gt;
&lt;td&gt;Helps reduce plan cache pollution by parameterizing literal values automatically. Good when you see many similar queries differing only by literal constants. (&lt;a href="https://learn.microsoft.com/en-us/azure/azure-sql/database/database-advisor-implement-performance-recommendations?view=azuresql&amp;amp;utm_source=chatgpt.com" rel="noopener noreferrer"&gt;Microsoft Learn&lt;/a&gt;)&lt;/td&gt;
&lt;td&gt;When enabled, &lt;code&gt;SELECT * FROM Orders WHERE CustomerId = 123&lt;/code&gt; and &lt;code&gt;SELECT * FROM Orders WHERE CustomerId = 456&lt;/code&gt; may reuse plan.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Automatic Tuning / Advisor Recommendations&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Azure SQL can suggest or even auto-apply index creation/drop or plan fixes. Leverage it for continuous improvements. (&lt;a href="https://learn.microsoft.com/en-us/azure/azure-sql/database/database-advisor-implement-performance-recommendations?view=azuresql&amp;amp;utm_source=chatgpt.com" rel="noopener noreferrer"&gt;Microsoft Learn&lt;/a&gt;)&lt;/td&gt;
&lt;td&gt;In Azure Portal, go to &lt;em&gt;Intelligent Performance&lt;/em&gt; → &lt;em&gt;Recommendations&lt;/em&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Batching / Bulk operations&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Instead of issuing many individual SQL calls, group operations to reduce network overhead and latency. Azure SQL emphasizes batching to improve performance. (&lt;a href="https://learn.microsoft.com/en-us/azure/azure-sql/performance-improve-use-batching?view=azuresql&amp;amp;utm_source=chatgpt.com" rel="noopener noreferrer"&gt;Microsoft Learn&lt;/a&gt;)&lt;/td&gt;
&lt;td&gt;For example, insert multiple rows in one &lt;code&gt;INSERT&lt;/code&gt; statement or send grouped updates&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Intelligent Insights / Performance Patterns&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Azure SQL can detect patterns (e.g. resource bottlenecks, memory pressure, locking) automatically via &lt;em&gt;Intelligent Insights&lt;/em&gt;. Use them to spot hidden issues. (&lt;a href="https://docs.azure.cn/en-us/azure-sql/database/intelligent-insights-troubleshoot-performance?utm_source=chatgpt.com" rel="noopener noreferrer"&gt;Azure Docs&lt;/a&gt;)&lt;/td&gt;
&lt;td&gt;Monitor metrics like wait stats, memory grant waits, or lock escalations&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Query Store / Query Performance Insight&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Helps capture query execution history, identify top resource-consuming queries, and compare over time. Very handy for tuning. (&lt;a href="https://learn.microsoft.com/en-us/azure/azure-sql/database/query-performance-insight-use?view=azuresql&amp;amp;utm_source=chatgpt.com" rel="noopener noreferrer"&gt;Microsoft Learn&lt;/a&gt;)&lt;/td&gt;
&lt;td&gt;Use Query Store views (e.g. &lt;code&gt;sys.query_store_query&lt;/code&gt;, &lt;code&gt;sys.query_store_runtime_stats&lt;/code&gt;) to examine performance trends&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Window Functions &amp;amp; OLAP / Ranking Functions&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Functions like &lt;code&gt;ROW_NUMBER() OVER(...)&lt;/code&gt;, &lt;code&gt;RANK()&lt;/code&gt;, &lt;code&gt;PERCENT_RANK()&lt;/code&gt;, &lt;code&gt;LEAD()&lt;/code&gt; / &lt;code&gt;LAG()&lt;/code&gt; are extremely powerful for analytics, running totals, gaps &amp;amp; islands, etc. (Many devs know basics, but advanced usage is underutilized.)&lt;/td&gt;
&lt;td&gt;E.g. &lt;code&gt;SELECT *, ROW_NUMBER() OVER(PARTITION BY Category ORDER BY Date DESC) AS rn FROM Sales;&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Common Table Expressions (CTEs) / Recursive CTEs&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Better readability, modular queries, and recursive logic (e.g. hierarchical data). Useful to break down complex logic.&lt;/td&gt;
&lt;td&gt;&lt;code&gt;;WITH cte AS ( SELECT … ) SELECT … FROM cte JOIN …&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;CROSS APPLY / OUTER APPLY&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Allows invoking table-valued functions or subqueries for each row. Very handy for lateral joins or applying filters per row.&lt;/td&gt;
&lt;td&gt;&lt;code&gt;SELECT a.*, b.* FROM TableA a CROSS APPLY ( SELECT TOP 1 * FROM TableB b WHERE b.aId = a.Id ORDER BY b.Date DESC ) b;&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;INTERSECT / EXCEPT&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Set operations to find common or difference of two result sets. Cleaner and sometimes more efficient than &lt;code&gt;IN&lt;/code&gt; or manual joins.&lt;/td&gt;
&lt;td&gt;&lt;code&gt;SELECT col1 FROM A INTERSECT SELECT col1 FROM B;&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;TRY_CONVERT, TRY_CAST, TRY_PARSE&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;These safe cast functions return &lt;code&gt;NULL&lt;/code&gt; instead of error if conversion fails—helpful in data cleansing or ETL scenarios.&lt;/td&gt;
&lt;td&gt;&lt;code&gt;SELECT TRY_CONVERT(int, SomeVarchar) FROM MyTable;&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;STRING_AGG (… WITHIN GROUP)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Aggregates string values from rows into a delimited string. Very useful for reporting or concatenated lists.&lt;/td&gt;
&lt;td&gt;&lt;code&gt;SELECT Dept, STRING_AGG(EmployeeName, ', ') AS Employees FROM Emp GROUP BY Dept;&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;JSON functions &amp;amp; &lt;code&gt;OPENJSON&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;If your data or payloads include JSON, these functions help parse, query, and transform JSON without manual parsing logic.&lt;/td&gt;
&lt;td&gt;&lt;code&gt;SELECT * FROM OPENJSON(@json) WITH (id INT, name NVARCHAR(50));&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;**&lt;br&gt;
Tips &amp;amp; Best Practices When Using These Features**&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Don’t overhint&lt;/strong&gt;: Hints are powerful but can backfire if data or distribution changes. Use sparingly and test under real workload.
-** Enable Query Store early**: It gives you historical insights. Use it to spot plan regressions or regression changes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Leverage automatic tuning&lt;/strong&gt;: Use Azure’s built-in recommendations as a safety net for continuous tuning.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Batch your operations&lt;/strong&gt;: Network latency and round trips are expensive in cloud environments.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Test with representative data&lt;/strong&gt;: Some features may behave differently under skewed distributions or large datasets.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Version awareness&lt;/strong&gt;: Some features (e.g. GREATEST / LEAST) may be newer in Azure SQL and may not exist in older on-prem versions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Monitoring &amp;amp; metrics&lt;/strong&gt;: Always monitor waits, memory grants, tempdb usage, and other diagnostic stats to catch regressions.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Sample Use Cases &amp;amp; Scenarios&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Ranking &amp;amp; Top-N per group&lt;/strong&gt;: Use ROW_NUMBER() OVER partition to get top 3 sales per region.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Concatenating values&lt;/strong&gt;: Use STRING_AGG(...) to combine multiple string rows into a single comma-separated list.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Comparing columns within a row&lt;/strong&gt;: Use GREATEST to pick the highest of multiple score columns.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Safe data import&lt;/strong&gt;: Use TRY_CONVERT / TRY_CAST to gracefully handle malformed inputs.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;5.** Dynamic lateral join logic**: Use CROSS APPLY to select the “best matching” sub-row per outer row.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Combining set results&lt;/strong&gt;: Use INTERSECT / EXCEPT to find overlapping or differing datasets quickly.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Tuning and maintenance&lt;/strong&gt;: Review advisor recommendations, and selectively implement index suggestions or forced parameterization via automatic tuning.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Conclusion &amp;amp; Next Steps&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;By incorporating even a few of these “hidden” SQL features into your toolkit, you’ll elevate your productivity, make your queries more expressive, and optimize performance—especially in managed environments like Azure SQL.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Next steps:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Pick one or two features (e.g. GREATEST, STRING_AGG, CROSS APPLY) and try them in a sandbox environment with your data.&lt;/li&gt;
&lt;li&gt;Use Query Store and performance dashboards to compare before/after metrics.&lt;/li&gt;
&lt;li&gt;Gradually incorporate hints or automatic tuning suggestions in non-critical workloads, and monitor.&lt;/li&gt;
&lt;li&gt;Document which features or syntax your team adopts so others can learn.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>azure</category>
      <category>sql</category>
      <category>database</category>
      <category>performance</category>
    </item>
    <item>
      <title>Azure SQL’s latest features</title>
      <dc:creator>Sanjay Bhujbal</dc:creator>
      <pubDate>Tue, 14 Oct 2025 16:05:54 +0000</pubDate>
      <link>https://dev.to/sanjay_bhujbal_533cfed9b6/azure-sqls-latest-features-2e06</link>
      <guid>https://dev.to/sanjay_bhujbal_533cfed9b6/azure-sqls-latest-features-2e06</guid>
      <description>&lt;h2&gt;
  
  
  &lt;strong&gt;Free Platforms to Publish SQL / Technical Blogs&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;If you want to share your SQL or technical knowledge with a wide audience, there are several free platforms designed specifically for developers and professionals. Below is a guide comparing the most popular and effective options.&lt;br&gt;
&lt;strong&gt;1. Medium — &lt;a href="https://medium.com" rel="noopener noreferrer"&gt;https://medium.com&lt;/a&gt;&lt;/strong&gt;&lt;br&gt;
✅ Pros:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Popular among developers and tech enthusiasts.&lt;/li&gt;
&lt;li&gt;Easy-to-use editor with professional formatting.&lt;/li&gt;
&lt;li&gt;Great discoverability through tags like #Azure, #SQLServer, #Database.&lt;/li&gt;
&lt;li&gt;Join publications such as 'Towards Data Science' or 'The Startup' to expand reach.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;⚠️ Cons:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Limited customization without a paid plan.&lt;/li&gt;
&lt;li&gt;Paywall may restrict free readers.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;💡 Tip: Submit your blog to a publication for greater visibility.&lt;br&gt;
&lt;strong&gt;2. Dev.to (DEV Community) — &lt;a href="https://dev.to"&gt;https://dev.to&lt;/a&gt;&lt;/strong&gt;&lt;br&gt;
✅ Pros:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;100% free and built for developers.&lt;/li&gt;
&lt;li&gt;SEO-friendly and visible in Google quickly.&lt;/li&gt;
&lt;li&gt;Markdown editor and strong community interaction.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;⚠️ Cons:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Minimal visual customization.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;💡 Tip: Use tags like #azure, #sql, #dotnet, #cloud, and #database.&lt;br&gt;
&lt;strong&gt;3. Hashnode — &lt;a href="https://hashnode.com" rel="noopener noreferrer"&gt;https://hashnode.com&lt;/a&gt;&lt;/strong&gt;&lt;br&gt;
✅ Pros:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Free personal domain (yourname.hashnode.dev).&lt;/li&gt;
&lt;li&gt;Great for long-term blogging and portfolio building.&lt;/li&gt;
&lt;li&gt;Markdown editor with rich embeds and GitHub integration.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;⚠️ Cons:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Slightly smaller audience than Medium, but growing fast.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;💡 Tip: Ideal for creating a professional personal tech site.&lt;br&gt;
&lt;strong&gt;4. Substack — &lt;a href="https://substack.com" rel="noopener noreferrer"&gt;https://substack.com&lt;/a&gt;&lt;/strong&gt;&lt;br&gt;
✅ Pros:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Clean design with built-in email newsletter.&lt;/li&gt;
&lt;li&gt;Readers can subscribe for updates.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;⚠️ Cons:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Not developer-specific.&lt;/li&gt;
&lt;li&gt;Limited code formatting.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;💡 Tip: Great for tech newsletters like 'Azure SQL Weekly'.&lt;br&gt;
&lt;strong&gt;5. GitHub Pages — &lt;a href="https://pages.github.com/" rel="noopener noreferrer"&gt;https://pages.github.com/&lt;/a&gt;&lt;/strong&gt;&lt;br&gt;
✅ Pros:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;100% free hosting for static sites.&lt;/li&gt;
&lt;li&gt;Full design control using Jekyll, Hugo, or Next.js.&lt;/li&gt;
&lt;li&gt;Great for tech-savvy users.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;⚠️ Cons:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Manual setup and no built-in community.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;💡 Tip: Ideal for creating a portfolio-style blog (e.g., sanjaybhujbal.dev).&lt;br&gt;
&lt;strong&gt;6. LinkedIn Articles — &lt;a href="https://linkedin.com" rel="noopener noreferrer"&gt;https://linkedin.com&lt;/a&gt;&lt;/strong&gt;&lt;br&gt;
✅ Pros:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Professional audience and easy publishing.&lt;/li&gt;
&lt;li&gt;Auto-notifies your network when you post.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;⚠️ Cons:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Limited formatting and no syntax highlighting.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;💡 Tip: Share summaries or highlights linking back to your main blog.&lt;br&gt;
&lt;strong&gt;Recommended Approach&lt;/strong&gt;&lt;br&gt;
🥇 Use Hashnode as your main platform (e.g., sanjaybhujbal.hashnode.dev).&lt;br&gt;
🥈 Cross-post on Dev.to and share links on LinkedIn for visibility.&lt;br&gt;
This combination provides both branding and community reach.&lt;br&gt;
&lt;strong&gt;Example Setup Plan&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Create a Hashnode account and personalize your blog.&lt;/li&gt;
&lt;li&gt;Write your first article: 'Latest Features in Azure SQL (2025 Edition)'.&lt;/li&gt;
&lt;li&gt;Cross-post on Dev.to using canonical links.&lt;/li&gt;
&lt;li&gt;Share links on LinkedIn and Azure/SQL communities.&lt;/li&gt;
&lt;/ol&gt;

</description>
    </item>
  </channel>
</rss>
