Sr. Content Developer at Microsoft, working remotely in PA, TechBash conference organizer, former Microsoft MVP, Husband, Dad and Geek.
146583 stories
·
33 followers

Learn Relational Database Design

1 Share

Relational databases are used in many different types of software.

We just posted a course on the freeCodeCamp.org YouTube channel that will help you learn relational database design from the ground up. This course covers SQL fundamentals, entity-relationship modeling, normalization (1NF through BCNF), data types and constraints, indexing strategies, and query optimization.

This course is based on the book Grokking Relational Database Design by Dr. Qiang Hao and Dr. Michael Tsikerdekis (Manning Publications, 2025).

Here are the sections in the course:

  • Relational Databases for Beginners — Tables, Entities, Keys & SQL

  • SQL Filtering & Aggregation

  • SQL Table Commands

  • Foreign Keys in SQL

  • How SQL JOINs Work

  • How to learn SQL on your own

  • Database Design Goals

  • Database Design Lifecycle

  • From Real-World Ideas to Tables

  • Primary Key, Candidate Key, and Super Key

  • Don't Use the Wrong SQL String Type

  • The FLOAT Mistake That Crashed a Stock Exchange

  • SQL Date and Time Types Explained

  • Connecting Entities in an ER Diagram

  • One-to-One Relationships

  • One-to-Many Relationships

  • Many-to-Many Relationships

  • Strong vs Weak Entities

  • First Normal Form - Primary Keys and Atomic Values

  • Second Normal Form - Partial Keys and Functional Dependencies

  • Third Normal Form - Transitive Dependencies

  • The Untold Story of BCNF

  • Primary Key vs Unique Constraints

  • Foreign Key Constraints - ON DELETE & ON UPDATE

  • Other Constraints: NOT NULL, DEFAULT, and CHECK

  • Access Control, Hashing & Encryption

  • B-Tree vs Full-Text Indexes

  • Denormalization

Watch the full course on the freeCodeCamp.org YouTube channel (6-hour watch).



Read the whole story
alvinashcraft
just a second ago
reply
Pennsylvania, USA
Share this story
Delete

Podcast: The Technical Founder's Path: Code, Leadership, and Balance

1 Share

In this podcast, Shane Hastie, Lead Editor for Culture & Methods, spoke to Trisha Ballakur about transitioning from coder to startup CEO, balancing technical leadership with business development, and avoiding burnout on the journey.

By Trisha Ballakur
Read the whole story
alvinashcraft
30 seconds ago
reply
Pennsylvania, USA
Share this story
Delete

Microsoft Adds Custom Copilot Agents for .NET Developers with C# and WinForms Experts

1 Share

Microsoft and GitHub have expanded the Copilot ecosystem with the first .NET-focused GitHub Copilot custom agents, designed to improve productivity and code quality for C# and Windows Forms developers. The announcement, part of the broader Copilot custom agents’ rollout, introduces two purpose-built agents: C# Expert and WinForms Expert in the form of agent instruction Markdown files.

By Edin Kapić
Read the whole story
alvinashcraft
40 seconds ago
reply
Pennsylvania, USA
Share this story
Delete

Azure Functions: The Serverless Powerhouse

1 Share

Learn the benefits of Azure Functions in addressing scaling, cost, and integration complexities faced by modern organizations.

The post Azure Functions: The Serverless Powerhouse appeared first on MSSQLTips.com.

Read the whole story
alvinashcraft
57 seconds ago
reply
Pennsylvania, USA
Share this story
Delete

Day 30: Managing Technical Debt When Shipping Fast

1 Share

The code worked. The code was a mess.

AI had generated features at unprecedented speed. Two months in, I had a product. I also had a codebase that scared me. Inconsistent patterns. Functions doing too much. Tests that passed but didn’t actually test anything. Comments that lied about what the code did.

I’d traded velocity for debt. Now the debt was coming due.

This is the dark side of vibe coding. Speed is addictive. Debt accumulates silently. Then one day you try to add a simple feature and it takes three days because everything is tangled.

Managing debt isn’t about not having debt. It’s about having the right amount of debt and paying it down strategically.

Why AI Code Accumulates Debt Faster

AI code has specific debt patterns:

Inconsistency: Each generation might use slightly different patterns. Small inconsistencies compound into chaos.

Over-engineering: AI often generates more than you need. That extra code is debt you maintain forever.

Shallow testing: AI writes tests that pass, but don’t actually verify behavior. You think you have coverage. You don’t.

Missing context: AI doesn’t know why past decisions were made. It might undo intentional choices.

Copy-paste sprawl: It’s easy to generate similar code instead of abstracting. Duplication is debt.

The Debt Inventory Prompt

Start by knowing what you have:

Analyze this codebase for technical debt.

Categories:
1. Code duplication - similar code that should be abstracted
2. Inconsistent patterns - same thing done different ways
3. Missing tests - code without adequate coverage
4. Missing docs - complex code without explanation
5. Dead code - code that's never executed
6. Outdated dependencies - libraries that need updates
7. Performance debt - known slow paths not optimized
8. Security debt - known vulnerabilities not addressed

For each item:
- Location
- Severity (blocking / painful / annoying)
- Effort to fix (hours)
- Risk if not fixed

Prioritizing Debt

Not all debt is equal. Prioritize by:

Impact on velocity: Does this debt slow down every feature? Fix it.

Risk: Could this debt cause production issues? Fix it soon.

Compounding: Will this debt get worse over time? Address before it spreads.

Effort: How hard is it to fix? Sometimes quick wins are worth doing.

Priority = (Impact × Risk × Compounding) / Effort

High impact, high risk, compounding, low effort = fix immediately. Low impact, low risk, isolated, high effort = maybe never.

The 20% Rule

Reserve 20% of your time for debt reduction.

Every week, every sprint, every cycle: 20% goes to making the codebase better.

  • 4 days on features, 1 day on debt
  • 4 features, 1 cleanup task
  • Every PR improves one thing beyond its scope

This isn’t optional. It’s investment. Skip it, and velocity drops over time.

AI-Assisted Debt Paydown

Use AI to fix what AI created:

Pattern Consolidation

I have the same pattern implemented multiple ways.

Example 1: [paste code]
Example 2: [paste code]
Example 3: [paste code]

Create a single abstraction that handles all these cases.
Then show me how to refactor each usage.

Test Improvement

These tests pass but I don't trust them.

Tests: [paste tests]
Code they test: [paste code]

Identify:
1. What behaviors aren't actually tested?
2. What edge cases are missed?
3. What assertions are too weak?

Generate improved tests that would catch real bugs.

Documentation Generation

This code is complex and undocumented.

Code: [paste code]

Generate:
1. High-level explanation of what this does
2. Inline comments for non-obvious parts
3. Examples of how to use it
4. Known limitations or gotchas

The Debt Log

Track debt explicitly:

# Technical Debt Log

## Critical (fix this sprint)
- [ ] User auth has no rate limiting (security risk)
- [ ] Card search uses N+1 queries (performance)

## High (fix this month)
- [ ] Three different error handling patterns
- [ ] Tests mock at wrong level, don't catch bugs

## Medium (fix this quarter)
- [ ] Duplicate validation logic in 5 places
- [ ] Old migration files never cleaned up

## Low (fix when convenient)
- [ ] Inconsistent naming in legacy module
- [ ] Console.logs left in non-critical paths

## Accepted (won't fix)
- [ ] Old admin panel uses deprecated patterns (replacing soon)

Review this log weekly. Move items up as they become urgent.

Prevention Strategies

Better to not create debt than to pay it down:

Pre-Generation Review

Before asking AI to generate significant code:

I'm about to generate code for [feature].

Before I do, tell me:
1. What existing patterns should this follow?
2. What abstractions already exist that I should use?
3. What could I generate that would create debt?
4. What should I specify to prevent mess?

Post-Generation Cleanup

After AI generates code, before committing:

Review this AI-generated code for debt indicators:

[paste code]

Check for:
- Duplicates what exists elsewhere?
- Inconsistent with established patterns?
- Over-engineered for the need?
- Missing tests for important paths?
- Hardcoded values that should be config?

What should be cleaned up before committing?

The PR Checklist

Before every merge:

□ Follows existing patterns (or intentionally changes them)
□ No new duplication
□ Tests cover actual behavior
□ No unnecessary complexity
□ No new warnings or linting issues
□ Documentation updated if needed
□ One thing improved beyond the feature

Debt Sprints

Sometimes you need focused cleanup:

Every quarter, schedule a debt sprint. One week focused entirely on debt reduction.

  • No new features
  • Only cleanup, consolidation, testing, documentation
  • Measure: lines deleted, patterns consolidated, test coverage increased

One week of cleanup buys months of velocity.

The Strangler Pattern for Legacy AI Code

When you have AI-generated code that needs major improvement:

  1. Don’t rewrite all at once
  2. Build new code correctly alongside old
  3. Route new features to new code
  4. Gradually migrate old features
  5. Delete old code when nothing uses it

AI can help:

I have legacy code that needs replacement.

Old code: [paste]
What it does: [describe]

Generate a new, cleaner implementation.
Show me how to run both in parallel during migration.

Signs You Have Too Much Debt

  • Features take longer and longer
  • Every change breaks something unrelated
  • New developers can’t understand the code
  • You avoid touching certain areas
  • Tests pass but production breaks
  • Simple bugs take hours to fix

When you see these signs, stop features and pay down debt.

Tomorrow

Final day. You’ve learned tactics for AI-assisted development. Tomorrow we’ll build your personal playbook: the practices you’ll keep, the workflow you’ll use, the principles that guide your vibe coding.


Try This Today

  1. Pick one area of your codebase that scares you
  2. Run the debt inventory prompt on it
  3. Fix one thing. Just one.

Small, consistent debt payment beats occasional massive rewrites. Start today. Continue tomorrow. In a month, the scary area is manageable.

Debt is normal. Unmanaged debt is the problem.

Read the whole story
alvinashcraft
1 minute ago
reply
Pennsylvania, USA
Share this story
Delete

Azure SDK Release (January 2026)

1 Share

Thank you for your interest in the new Azure SDKs! We release new features, improvements, and bug fixes every month. Subscribe to our Azure SDK Blog RSS Feed to get notified when a new release is available.

You can find links to packages, code, and docs on our Azure SDK Releases page.

Release highlights

AI Foundry 1.2.0-beta.1 for .NET

This major update brings feature support for Microsoft Foundry Agents Service, integration with the new Azure.AI.Projects.OpenAI package, expanded evaluation capabilities, insights, red teaming, schedules, and more. It’s a significant expansion of AI capabilities for .NET developers working with Azure AI services.

Azure AI Search 11.8.0-beta.1 for .NET

This release adds support for the 2025-11-01-preview service version with many new features including multiple facet aggregation types (avg, min, max, cardinality), new knowledge source types (web, remoteSharePoint, indexedSharePoint, indexedOneLake), and support for new Azure OpenAI models (gpt-5, gpt-5-mini, gpt-5-nano). Note that this release includes breaking changes where Knowledge Agent has been renamed to Knowledge Base across all APIs and models.

Functions Extension for WebPubSub for SocketIO 1.0.0 for .NET

The stable release of the Azure Functions extension for Web PubSub for SocketIO has shipped. This library enables developers to build real-time, bidirectional communication applications using the familiar Socket.IO programming model with Azure Web PubSub as the backend.

Initial stable releases

Initial beta releases

Release notes

The post Azure SDK Release (January 2026) appeared first on Azure SDK Blog.

Read the whole story
alvinashcraft
7 hours ago
reply
Pennsylvania, USA
Share this story
Delete
Next Page of Stories