---
title: "Blog - Muhammad Rehan Saeed"
description: "Blog posts and more authored by Muhammad Rehan Saeed."
canonical_url: "https://rehansaeed.com/5/"
meta:
  author: "Muhammad Rehan Saeed"
  "og:description": "Blog posts and more authored by Muhammad Rehan Saeed."
  "og:image": "https://rehansaeed.com/_og/s/o_dec296019c19df59.png"
  "og:image:alt": "Blog - Page 5 - Muhammad Rehan Saeed"
  "og:image:height": "630"
  "og:image:type": image/png
  "og:image:width": "1200"
  "og:title": Blog
  "twitter:image": "https://rehansaeed.com/_og/s/o_dec296019c19df59.png"
  "twitter:image:alt": "Blog - Page 5 - Muhammad Rehan Saeed"
---

> Index of every page on this site: [llms.txt](https://rehansaeed.com/llms.txt)

![Muhammad Rehan Saeed](https://rehansaeed.com/_ipx/s_120x120/images/author/Muhammad-Rehan-Saeed/Logo-192x192.png)

# [Muhammad Rehan Saeed](https://rehansaeed.com)

Software Developer at Microsoft, YouTuber, Open Source Contributor and Blogger

[Youtube](https://www.youtube.com/c/MuhammadRehanSaeed) [Twitch](https://www.twitch.tv/rehansaeeduk) [GitHub](https://github.com/RehanSaeed) [LinkedIn](https://www.linkedin.com/in/muhammad-rehan-saeed) [Stack Overflow](https://stackoverflow.com/users/1212017/muhammad-rehan-saeed) Email [RSS](https://rehansaeed.com/rss.xml)

![Docker](https://rehansaeed.com/_ipx/f_webp&s_2560x1440/images/hero/Docker-1366x768.png)

## [Docker Read-Only File Systems](https://rehansaeed.com/docker-read-file-systems/)

How to use a read-only file system in Docker to secure your Docker containers using the docker run CLI command and Docker compose or docker swarm.

Posted 13 November 2017 - **1 min read**

[ASP.NET Core](https://rehansaeed.com/tag/asp-net-core/) [Docker](https://rehansaeed.com/tag/docker/) [Docker Compose](https://rehansaeed.com/tag/docker-compose/) [Docker Swarm](https://rehansaeed.com/tag/docker-swarm/) [File System](https://rehansaeed.com/tag/file-system/)

![ASP.NET Core-Caching-in-Practice](https://rehansaeed.com/_ipx/f_webp&s_2560x1440/images/hero/ASP.NET-Core-Caching-in-Practice-1366x768.png)

## [ASP.NET Core Caching in Practice](https://rehansaeed.com/asp-net-core-caching-in-practice/)

How to use and implement Cache-Control, Cache-Control Immutable, E-Tag, Last-Modified and If-Modified-Since Caching HTTP headers in ASP.NET Core.

Posted 20 October 2017 - **5 min read**

[.NET](https://rehansaeed.com/tag/net/) [.NET Core](https://rehansaeed.com/tag/net-core/) [ASP.NET Core](https://rehansaeed.com/tag/asp-net-core/) [ASP.NET MVC](https://rehansaeed.com/tag/asp-net-mvc/) [C#](https://rehansaeed.com/tag/c/) [Cache-Control](https://rehansaeed.com/tag/cache-control/) [Caching](https://rehansaeed.com/tag/caching/) [E-Tag](https://rehansaeed.com/tag/e-tag/) [If-Modified-Since](https://rehansaeed.com/tag/if-modified-since/)

![A Very-Generic-Editorconfig-File](https://rehansaeed.com/_ipx/f_webp&s_2560x1440/images/hero/A-Very-Generic-Editorconfig-File-1366x768.png)

## [A Very Generic .editorconfig File (Updated)](https://rehansaeed.com/generic-editorconfig-file/)

An .editorconfig file helps define and maintain consistent coding styles between different editors and IDEs for files with different file extensions.

Posted 1 October 2017 and updated 1 July 2018 - **2 min read**

[.editorconfig](https://rehansaeed.com/tag/editorconfig/) [C#](https://rehansaeed.com/tag/c/) [C# 7.3](https://rehansaeed.com/tag/c-7-3/) [StyleCop](https://rehansaeed.com/tag/style-cop/) [Visual Studio](https://rehansaeed.com/tag/visual-studio/) [Visual Studio Code](https://rehansaeed.com/tag/visual-studio-code/)

![Keeping up-with-Software-Development](https://rehansaeed.com/_ipx/f_webp&s_2560x1440/images/hero/Keeping-up-with-Software-Development-1366x768.png)

## [Keeping Up With Software Development](https://rehansaeed.com/keeping-software-development/)

Keeping up with the changes in the software development industry always feels like a losing battle.

Posted 13 August 2017 - **6 min read**

[RSS](https://rehansaeed.com/tag/rss/) [Software Development](https://rehansaeed.com/tag/software-development/)

![Schema.NET](https://rehansaeed.com/_ipx/f_webp&s_2560x1440/images/hero/Schema.NET-1366x768.png)

## [Structured Data using Schema.NET](https://rehansaeed.com/structured-data-using-schema-net/)

Schema.NET is Schema.org objects turned into strongly typed C# POCO classes for use in .NET.

Posted 2 July 2017 - **2 min read**

[.NET](https://rehansaeed.com/tag/net/) [.NET Core](https://rehansaeed.com/tag/net-core/) [Bing](https://rehansaeed.com/tag/bing/) [C#](https://rehansaeed.com/tag/c/) [Google](https://rehansaeed.com/tag/google/) [Schema.NET](https://rehansaeed.com/tag/schema-net/) [Schema.org](https://rehansaeed.com/tag/schema-org/) [Search Engines](https://rehansaeed.com/tag/search-engines/) [Structured Data](https://rehansaeed.com/tag/structured-data/)

![ASP.NET Core-Lazy-Command-Pattern](https://rehansaeed.com/_ipx/f_webp&s_2560x1440/images/hero/ASP.NET-Core-Lazy-Command-Pattern-1366x768.png)

## [ASP.NET Core Lazy Command Pattern](https://rehansaeed.com/asp-net-core-lazy-command-pattern/)

Move your ASP.NET Core MVC action method logic into lazily loaded commands using the command pattern, to reduce Controller complexity.

Posted 8 April 2017 - **4 min read**

[.NET](https://rehansaeed.com/tag/net/) [.NET Core](https://rehansaeed.com/tag/net-core/) [ASP.NET Core](https://rehansaeed.com/tag/asp-net-core/) [ASP.NET MVC](https://rehansaeed.com/tag/asp-net-mvc/) [.NET Boxed](https://rehansaeed.com/tag/net-boxed/) [.NET Boxed API](https://rehansaeed.com/tag/net-boxed-api/) [C#](https://rehansaeed.com/tag/c/) [Command Pattern](https://rehansaeed.com/tag/command-pattern/) [Lazy](https://rehansaeed.com/tag/lazy/)

![Who Wants-To-Be-A-Millionaire](https://rehansaeed.com/_ipx/f_webp&s_2560x1440/images/hero/Who-Wants-To-Be-A-Millionaire-1366x768.png)

## [dotnet new Feature Selection](https://rehansaeed.com/dotnet-new-feature-selection/)

How to add feature selection to your dotnet new template using symbols (bool, string, choice, computed) and pre-processor directives.

Posted 26 March 2017 - **9 min read**

[.NET](https://rehansaeed.com/tag/net/) [.NET Core](https://rehansaeed.com/tag/net-core/) [ASP.NET Core](https://rehansaeed.com/tag/asp-net-core/) [.NET Boxed](https://rehansaeed.com/tag/net-boxed/) [C#](https://rehansaeed.com/tag/c/) [dotnet new](https://rehansaeed.com/tag/dotnet-new/)

![Cleaning Up-CSPROJ](https://rehansaeed.com/_ipx/f_webp&s_2560x1440/images/hero/Cleaning-Up-CSPROJ-1366x768.png)

## [Cleaning Up CSPROJ](https://rehansaeed.com/cleaning-up-csproj/)

I show how to make the new Visual Studio 2017 .NET Core based csproj XML concise and pretty for hand editing.

Posted 18 March 2017 - **7 min read**

[.NET](https://rehansaeed.com/tag/net/) [.NET Core](https://rehansaeed.com/tag/net-core/) [csproj](https://rehansaeed.com/tag/csproj/) [MSBuild](https://rehansaeed.com/tag/ms-build/) [project.json](https://rehansaeed.com/tag/project-json/) [SDK](https://rehansaeed.com/tag/sdk/) [Visual Studio 2017](https://rehansaeed.com/tag/visual-studio-2017/) [xproj](https://rehansaeed.com/tag/xproj/)

![Dotnet Cake-AppVeyor-Travis](https://rehansaeed.com/_ipx/f_webp&s_2560x1440/images/hero/Dotnet-Cake-AppVeyor-Travis-1366x768.png)

## [Cross-Platform DevOps for .NET Core](https://rehansaeed.com/cross-platform-devops-net-core/)

Learn how to use Cake, AppVeyor and Travis CI continuous integration build systems to perform cross-platform DevOps for .NET Core based projects.

Posted 28 January 2017 - **8 min read**

[.NET Core](https://rehansaeed.com/tag/net-core/) [AppVeyor](https://rehansaeed.com/tag/app-veyor/) [Build](https://rehansaeed.com/tag/build/) [Cake](https://rehansaeed.com/tag/cake/) [Continuous Integration](https://rehansaeed.com/tag/continuous-integration/) [DevOps](https://rehansaeed.com/tag/dev-ops/) [NuGet](https://rehansaeed.com/tag/nu-get/) [Travis CI](https://rehansaeed.com/tag/travis-ci/)

![Microsoft .NET](https://rehansaeed.com/_ipx/f_webp&s_2560x1440/images/hero/Microsoft-.NET-1366x768.png)

## [Custom Project Templates Using dotnet new](https://rehansaeed.com/custom-project-templates-using-dotnet-new/)

How to create project templates using dotnet new and the template.json file. How to share project templates by creating NuGet packages.

Posted 18 January 2017 - **4 min read**

[.NET](https://rehansaeed.com/tag/net/) [dotnet](https://rehansaeed.com/tag/dotnet/) [dotnet new](https://rehansaeed.com/tag/dotnet-new/) [NuGet](https://rehansaeed.com/tag/nu-get/) [Project Template](https://rehansaeed.com/tag/project-template/)

[Previous](https://rehansaeed.com/4/)

**Page 5 of 11**

[Next](https://rehansaeed.com/6/)

```json
{"@context":"https://schema.org","@graph":[{"@id":"https://rehansaeed.com/#website","@type":"WebSite","description":"Software Developer at Microsoft, YouTuber, Open Source Contributor and Blogger","inLanguage":"en-GB","name":"Muhammad Rehan Saeed","url":"https://rehansaeed.com/","author":{"@id":"https://rehansaeed.com/#identity"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://rehansaeed.com/?search={search_term_string}"},"query-input":"required name=search_term_string"}],"publisher":{"@id":"https://rehansaeed.com/#publisher"}},{"@id":"https://rehansaeed.com/5/#webpage","description":"Blog posts and more authored by Muhammad Rehan Saeed.","name":"Blog","url":"https://rehansaeed.com/5/","@type":["WebPage","CollectionPage"],"breadcrumb":{"@id":"https://rehansaeed.com/5/#breadcrumb"},"isPartOf":{"@id":"https://rehansaeed.com/#website"},"potentialAction":[{"@type":"ReadAction","target":["https://rehansaeed.com/5/"]}]},{"@id":"https://rehansaeed.com/#identity","@type":"Person","name":"Muhammad Rehan Saeed","url":"https://rehansaeed.com/about/","image":{"@id":"https://rehansaeed.com/#/schema/image/1"},"sameAs":["https://github.com/RehanSaeed","https://www.linkedin.com/in/muhammad-rehan-saeed","https://stackoverflow.com/users/1212017/muhammad-rehan-saeed","https://www.youtube.com/c/MuhammadRehanSaeed","https://www.twitch.tv/rehansaeeduk"]},{"@id":"https://rehansaeed.com/#publisher","@type":"Organization","logo":"https://rehansaeed.com/images/schema/Publisher-600x60.png","name":"Muhammad Rehan Saeed","url":"https://rehansaeed.com"},{"@id":"https://rehansaeed.com/5/#/schema/item-list/1","@type":"ItemList","itemListElement":[{"@type":"ListItem","name":"Docker Read-Only File Systems","url":"https://rehansaeed.com/docker-read-file-systems/","position":1},{"@type":"ListItem","name":"ASP.NET Core Caching in Practice","url":"https://rehansaeed.com/asp-net-core-caching-in-practice/","position":2},{"@type":"ListItem","name":"A Very Generic .editorconfig File (Updated)","url":"https://rehansaeed.com/generic-editorconfig-file/","position":3},{"@type":"ListItem","name":"Keeping Up With Software Development","url":"https://rehansaeed.com/keeping-software-development/","position":4},{"@type":"ListItem","name":"Structured Data using Schema.NET","url":"https://rehansaeed.com/structured-data-using-schema-net/","position":5},{"@type":"ListItem","name":"ASP.NET Core Lazy Command Pattern","url":"https://rehansaeed.com/asp-net-core-lazy-command-pattern/","position":6},{"@type":"ListItem","name":"dotnet new Feature Selection","url":"https://rehansaeed.com/dotnet-new-feature-selection/","position":7},{"@type":"ListItem","name":"Cleaning Up CSPROJ","url":"https://rehansaeed.com/cleaning-up-csproj/","position":8},{"@type":"ListItem","name":"Cross-Platform DevOps for .NET Core","url":"https://rehansaeed.com/cross-platform-devops-net-core/","position":9},{"@type":"ListItem","name":"Custom Project Templates Using dotnet new","url":"https://rehansaeed.com/custom-project-templates-using-dotnet-new/","position":10}]},{"@id":"https://rehansaeed.com/5/#breadcrumb","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","name":"Blog","item":"https://rehansaeed.com/","position":1},{"@type":"ListItem","name":"Page 5","item":"https://rehansaeed.com/5/","position":2}]},{"@id":"https://rehansaeed.com/#/schema/image/1","@type":"ImageObject","contentUrl":"https://rehansaeed.com/images/author/Muhammad-Rehan-Saeed/Logo-512x512.png","inLanguage":"en-GB","url":"https://rehansaeed.com/images/author/Muhammad-Rehan-Saeed/Logo-512x512.png"}]}
```

## Sitemap

See the full [sitemap](https://rehansaeed.com/sitemap.md) for all pages.
