Skip to content

Instantly share code, notes, and snippets.

@DocGreenRob
Last active June 17, 2025 20:24
Show Gist options
  • Save DocGreenRob/a7f08d56bae684f7f00583f446c27e8a to your computer and use it in GitHub Desktop.
Save DocGreenRob/a7f08d56bae684f7f00583f446c27e8a to your computer and use it in GitHub Desktop.
.Net Engineer Pro Tools
Windows Pro Tips
-----------------
powertoys - https://apps.microsoft.com/store/detail/microsoft-powertoys/XP89DCGQ3K6VLD
devtoys - https://apps.microsoft.com/store/detail/devtoys/9PGCV4V3BK4W
Visual Studio 2022 Pro Tips
---------------------------
vscoloroutput - https://marketplace.visualstudio.com/items?itemName=MikeWard-AnnArbor.VSColorOutput
solutionColor - https://marketplace.visualstudio.com/items?itemName=Wumpf.SolutionColor
save vs settings to apply to other computer - https://learn.microsoft.com/en-us/visualstudio/install/import-export-installation-configurations?view=vs-2022
Podcasts
--------
Dev interrupted
Hacking Humans
Cyber Security Headlines
Click Here
Malicious Life
The Stack Overflow Podcast
The Backend Engineering (with Hussein Nasser)
The Changelog: Software Development, Open Source
Tech Stuff
Cyberwire Daily
Techmeme Ride Home
Soft Skills Engineering
Syntax - Tasty Web Development Treats
Cyber Security Today
Software Engineering Daily
Developer Tea
Coding Blocks .NET
The Cloud Cast
JS Party: Javascript, CSS, Web Development
Go Time: Golang, Software Engineering
Cyber
Dev Questions with Tim Corey
Thoughtworks Technology Podcast
.NET Rocks!
Smashing Security
Hanselminutes with Scott Hanselman
Software Engineering
Talk Python To Me
Security Now
Darknet Diaries
Hacked
The .NET Core Podcast
The .NET MAUI Podcast
Kubernetes Podcast from Google
Adventures in .NET
Coding After Work
Base.cs Podcast
The Static Void Podcast
Tools
------
couchbase
honeycomb.io/changelog
firehydrant
logrocket
playwright
openmct
thundra.io
raygun
fly.io
appwrite
sentry.io
https://sourcegraph.com/
https://www.kolide.com/
https://entity.services/
WeekPlan
Docker Extensions
------------------
Ddosify - High-performance load testing tool
- https://github.com/ddosify/ddosify
BurpSuite
- https://portswigger.net/burp
- https://danaepp.com/
VS Tips
--------
Extract method from selected code
- Ctrl + R + M
Ctrl + K + D
Ctrl + R + G
Ctrl + M + Z (Code Maid)
Important
----------
ApplicationInsights SamplingSettings for AzFn
- https://learn.microsoft.com/en-us/azure/azure-functions/functions-host-json
Design Patterns in C#
- https://www.dofactory.com/net/factory-method-design-pattern
- https://github.com/DovAmir/awesome-design-patterns?utm_source=programmingdigest&utm_medium&utm_campaign=1493
Shopify Query
- https://shopify.engineering/reducing-bigquery-costs?utm_source=programmingdigest&utm_medium&utm_campaign=1403
Building Own Operating System
- https://o-oconnell.github.io/2023/01/12/p1os.html?utm_source=programmingdigest&utm_medium&utm_campaign=1493
Debugging Linq
- https://www.red-gate.com/simple-talk/development/dotnet-development/linq-secrets-revealed-chaining-and-debugging/
--> https://michaelscodingspot.com/debug-linq-in-csharp/
Bleeping Computer
- https://www.bleepingcomputer.com/
Utilities
---------
Handle v5.0
- https://learn.microsoft.com/en-us/sysinternals/downloads/handle?WT.mc_id=DT-MVP-5003978
Auto Increment Build #
- https://stackoverflow.com/questions/826777/how-to-have-an-auto-incrementing-version-number-visual-studio
Phylosophy
----------
1. Do I have to have a "purpose" to have an address in the USA?
- if yes, then as a Human being I must have a purpose? Seriously? Ok, a purpose to whom? To whom must I state my pupose or execute or report to about...???
2. System Failure - Zero Day Exploit
3. Good PR example - https://github.com/dotnet/aspnetcore/pull/45587/files
App Insights Log Queries
------------------------
availabilityResults
| where timestamp > datetime("2022-12-19T04:07:00.000Z") and timestamp < datetime("2022-12-20T04:07:00.000Z")
| where customDimensions["WebtestArmResourceName"] == "availability-test-1-app-notepad-physical-activity-dev-eastus"
| where true and true
| extend percentage = toint(success) * 100
| summarize avg(percentage) by bin(timestamp, 1h)
| render timechart
******************************************************************
@DocGreenRob
Copy link
Author

@DocGreenRob
Copy link
Author

Great question — this gets to the heart of modern software architecture vs. legacy (but sometimes still valid) approaches.

Let’s break it down clearly:


⚖️ Stored Procedure vs. Business Logic in Application Code

Aspect Stored Procedures Application-Level Logic (e.g., LINQ, EF, Services)
Performance ✅ Very fast for set-based operations
✅ Precompiled and optimized by SQL Server
⚠️ May be slower for large data sets unless optimized
❌ Not precompiled, relies on EF query generation
Maintainability ❌ Harder to version & maintain
❌ Poor readability, especially for complex logic
❌ Requires DBA or SQL expertise
✅ Easier to version in Git
✅ More readable & testable
✅ Fits with modern CI/CD pipelines
Testability ❌ Difficult to write unit tests
✅ Can write integration tests, but hard to mock
✅ Fully testable with mocks, stubs, unit tests
✅ Better coverage & automation
Deployment ❌ Requires direct DB script deployment
❌ Harder to rollback or track versions
✅ Deploys with the app code
✅ Works with CI/CD pipelines, git-controlled
Reusability ❌ Not easily shared across services unless all touch the same DB ✅ Code reuse through services, interfaces, shared libraries
Security ✅ Can restrict access to just stored procs (minimize SQL injection) ⚠️ Needs more care (e.g., parameterized queries, validation)
✅ EF Core helps with SQL injection
Portability ❌ Tied to a specific RDBMS (e.g., SQL Server T-SQL) ✅ Works across SQL Server, PostgreSQL, MySQL, etc. if ORM is used
Version Control ❌ Often forgotten or manually managed ✅ Git handles code changes, history, rollbacks
Business Logic Location ❌ Logic is in the DB — makes code harder to understand holistically ✅ Logic is centralized in app code — clearer architecture
Legacy Support ✅ Works well in older architectures
✅ Can encapsulate legacy business logic
✅ Preferred for greenfield and modern microservices architectures

💡 Summary

  • Stored Procedures are great for:

    • High-performance batch jobs
    • Legacy systems
    • Tight DBA control environments
    • Data integrity enforcement close to the data
  • App-Level Logic (like what you're doing) is better for:

    • Testability (unit tests, mocking, automation)
    • Maintainability (Git, version control)
    • Scalability (microservices, clean architecture)
    • Developer productivity (modern tooling, CI/CD)

🧠 Final Advice

You're doing the modern, clean approach by keeping business logic out of the DB and inside service layers and EF/LINQ logic. This gives you better test coverage, source control, and clarity across your team.

If you need performance on large data ops, you can combine both: use EF for most of the system, and have a few well-tuned stored procedures for data-heavy reports or batch updates.

Let me know if you want to see a hybrid example or best practices for stored procs in a modern stack.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment