Consider Death as Your Goal in Life
The Samurai, a feudal Japanese sword-bearing warrior class with a philosophy incorporating Zen, Buddhism, Confucianism, and Shinto, were known to meditate constantly on achieving a glorious death in the service of their masters. This single component of their incredible range of disciplines maximized courage, allowing them to take appropriate risks to achieve various objectives while reducing the emotional…
Information about Hosting Ukrainians in the United States
This blog post contains information for Ukrainians that intend to relocate to the USA and Americans interested in hosting Ukrainians. I have identified a candidate for some space available in my home, but I have not completed this process, so I apologize for anything that is misleading or incorrect. Americans can initiate sponsorship of Ukrainians…
Ubuntu Linux: Start Edge Browser in Private Mode by Default
This blog post explains a hack that you can use to configure the Microsoft Edge browser on Ubuntu Linux to start in private mode by default, even when clicking links in emails. I wanted to make the icon for the browser in the dock open in private mode by default. To run the browser in…
First Experiences with WebAssembly
This blog post describes my first experiences with WebAssembly. I have always tried to avoid front-end development in general, and JavaScript in particular, especially for anything complex, and increasingly as the library churn has increased and relevant toolchains have demonstrated their significant risks. Recently, I investigated TypeScript, which has some advantages, but is just a…
Lobby USA Representatives for Expedited Ukrainian Immigration
One of the tragedies of the illegal Russian invasion and war in Ukraine is that, though the people of the USA make countless generous housing offers, Ukrainians may now find it almost impossible to be admitted to the country. As an American, if you want to provide a home for a Ukrainian family in the…
Пансіон у США для української сім’ї або окремих осіб/USA Boarding for Ukrainian Family or Individuals
17.July.2022 Update: This opportunity is no longer available. Hello, my name is John West. I am incredibly saddened to think that the tragedy in Ukraine would cause anyone to leave their country. I can offer free room and board in Portland, Oregon, USA for one Ukrainian family of up to four people, or between one…
Linux: Use Ctrl+Esc for Activities Overview
This blog post, intended to assist readers transitioning from Microsoft Windows to Linux, explains how to configure at least Ubuntu 20.04.4 LTS to show the Activities Overview when the user presses Ctrl+Esc, providing functionality that matches existing Windows usage patterns. In the days of Windows 95, keyboards had no “Windows” key (called the “Super” key…
Whether to Store Content Management Data Inline or Separately
This blog post provides perspective on when to store data inline, within a single entry in the content management system, and when to store some of that data in separate entries. If you have perspectives on this topic, please comment on this blog post. The first time that I started writing this blog post, I…
Limitation Forwarding though Godaddy Workspace Email to Google Gmail
This blog post describes a workaround for an issue that I experienced while configuring email forwarding, specifically using godaddy webmail email forwarding to gmail addresses. This issue may apply to other configurations and providers. To summarize, it appears that if you forward through godaddy Workspace Webmail to a gmail address, google does not seem to…

Reusing Modular Blocks with the Contentstack SaaS Content Platform
This blog post suggests patterns for reusing content from modular blocks fields of the Contentstack SaaS content platform. To address multiple possible interpretations of the phrase “reusing modular blocks” in the title: This blog post describes how to use data from modular blocks fields of separate entries when rendering or otherwise processing an entry.This blog…
When to Use Group, Reference, Global, and Modular Blocks Fields in the Contentstack SaaS Content Platform
This blog post provides guidance on when to use group fields, global fields, reference fields, and modular blocks fields with the Contentstack SaaS content platform. Effective use of these data modeling features provides significant capabilities that can improve CMS user experiences as well as developer productivity and satisfaction. If you have perspectives on when to…
External Monitor Support on Ubuntu 20.04.4 LTS (Linux)
This blog post provides suggestions for getting a second monitor working on Linux, specifically Ubuntu 20.04.4 LTS on a Lenovo Legion 5 Pro 16ITH6 with (I believe) an Nvidia RTX 3050 4GB GDDR6 video card. In preparation for Windows 11, I am trying to migrate to Linux. For unknown reasons, the laptop screen was working,…
TypeScript with the Contentstack JavaScript SDK: The signature Stack of Contentstack.Stack is deprecated
This blog post provides a solution for the following deprecation warning message that may appear when using the Contentstack JavaScript content delivery SDK with TypeScript: The signature ‘(api_key: string, access_token: string, environment_name: string, region?: string, fetchOptions?: object): Stack’ of ‘Contentstack.Stack’ is deprecated. ts(6387) Here is an example line of TypeScript that generates this warning: const…

CMS Glossary: Extension
This blog post provides perspective on the term extension as it is used in content management systems, specifically the Contentstack SaaS headless CMS. This post is a member of the following glossary: [Contentstack] [SaaS] [Headless] CMS Glossary Index – Deliverystack.net An extension provides additional functionality to an existing solution, such as to integrate with other…
CMS Glossary: Entry
This blog post provides perspective on the term entry as it is used in content management systems, specifically the Contentstack SaaS headless CMS. This post is a member of the following glossary: [Contentstack] [SaaS] [Headless] CMS Glossary Index – Deliverystack.net An entry, sometimes called an item or an entity, is a record in the content…
CMS Glossary: Headless
This blog post provides perspective on the term headless as it is used in content management systems, specifically the Contentstack SaaS headless CMS. This post is a member of the following glossary: [Contentstack] [SaaS] [Headless] CMS Glossary Index – Deliverystack.net A headless content management system does not provide software for content delivery. To access the…
CMS Glossary: SDK
This blog post provides perspective on the term SDK, or Software Development Kit, as it is used in content management systems, specifically the Contentstack SaaS headless CMS. This post is a member of the following glossary: [Contentstack] [SaaS] [Headless] CMS Glossary Index – Deliverystack.net An SDK is a technology-specific programming library that allows developers to…
CMS Glossary: Webhook
This blog post provides perspective on the term webhook as it is used in content management systems, specifically the Contentstack SaaS headless CMS. This post is a member of the following glossary: [Contentstack] [SaaS] [Headless] CMS Glossary Index – Deliverystack.net A webhook is an outbound HTTPS request from one system to another, typically signaling the…
CMS Glossary: API (Application Programming Interface)
This blog post provides perspective on the acronym API, or Application Programming Interface, as it is used in content management systems, specifically the Contentstack SaaS headless CMS. This post is a member of the following glossary: [Contentstack] [SaaS] [Headless] CMS Glossary Index – Deliverystack.net An API is a computer programming interface that allows access to…
CMS Glossary: Publish
This blog post provides perspective on the term publish as it is used in content management systems, specifically the Contentstack SaaS Headless CMS. This post is a member of the following glossary: [Contentstack] [SaaS] [Headless] CMS Glossary Index – Deliverystack.net Publishing refers to making data from a content management system available to a content delivery…
CMS Glossary: Environment
This blog post provides perspective on the term environment as it is used in content management systems, specifically the Contentstack SaaS Headless CMS. This post is a member of the following glossary: [Contentstack] [SaaS] [Headless] CMS Glossary Index – Deliverystack.net In the context of content management, the term environment can refer to: the difference between…
CMS Glossary: Asset
This blog post provides perspective on the term asset as it is used in content management systems, specifically the Contentstack SaaS Headless CMS. This post is a member of the following glossary: [Contentstack] [SaaS] [Headless] CMS Glossary Index – Deliverystack.net An asset consists of a binary resource and text metadata about that resource, such as…
CMS Glossary: Block
This blog post provides perspective on the term block as it is used in content management systems, specifically the Contentstack SaaS headless CMS. This post is a member of the following glossary: [Contentstack] [SaaS] [Headless] CMS Glossary Index – Deliverystack.net A block is a group of fields. A content type can define a block structure…

CMS Glossary: Field
This blog post provides perspective on the term field as it is used in content management systems, specifically the Contentstack SaaS headless CMS. This post is a member of the following glossary: [Contentstack] [SaaS] [Headless] CMS Glossary Index – Deliverystack.net A field is an individual data element within an entry, where an entry is a…
CMS Glossary: Field Type
This blog post provides perspective on the term field type as it is used in content management systems, specifically the Contentstack SaaS Headless CMS. This post is a member of the following glossary: [Contentstack] [SaaS] [Headless] CMS Glossary Index – Deliverystack.net The type of a field determines the basic function, appearance, storage format, and configuration…
[Contentstack] [SaaS] [Headless] CMS Glossary Index
This blog post is a permanent work-in-progress that intends to provide an index of posts in a glossary of terms and acronyms used in the content management industry. Some of these entries and explanations are specific to, or use examples from, the Contentstack SaaS headless CMS. If you know of additional relevant terms or resources,…
The Big Lie in the Headless CMS World
The big lie in the headless CMS world is that the channel doesn’t matter. I don’t mean that multichannel or omnichannel doesn’t matter. All channels matter or we would not invest in them, and no headless vendor should focus on the web as the only channel. Still, for most of our real-world implementations, the web…

All About the URL Field in the Contentstack SaaS Headless CMS
This blog post contains all the information that I have been able to gather about the URL field in the Contentstack SaaS headless content management system. If you have questions or additional information about the URL field, please comment on this blog post. Read the Contentstack documentation for the URL field: About URL field |…
.NET 6: Normalize JSON Before Deserialization with the Contentstack SaaS Headless CMS
This blog post demonstrates how to use .NET 6 to modify JSON from the Contentstack SaaS headless CMS before deserialization of that data to entry models, which are .NET types arranged to match the structure of the JSON. .NET Core Headless CMS Entry Models and Entry Model Classes – Deliverystack.net Almost any use of a…
.NET 6: Modify JSON in Memory with the System.Text.Json.Nodes Namespace
This blog post contains some notes to help me remember how to use the System.Text.Json.Nodes namespace in .NET 6 and beyond to modify JSON in memory. The C# code that I previously migrated from Newtonsoft.Json to System.Text.Json serialized and deserialized between objects and JSON, but never explicitly updated the JSON. Recently, I had a need…
Previewing without Publishing in the Contentstack SaaS Headless CMS
This blog post describes an experimental technique that uses content delivery APIs to access content management environments in the Contentstack SaaS headless CMS. For solutions that use a limited subset of content delivery APIs, this approach could support CMS previewing environments that render saved content immediately, without the need to publish those changes to a…
Contentstack JSON Data Formats: Complex Fields
This blog post, part of a series about JSON data formats in the Contentstack SaaS headless CMS, describes how Contentstack represents complex field values. Complex fields are those that consist of JSON rather than scalar values. Contentstack JSON Data Formats: Introduction and Scalars – Deliverystack.net Rather than storing zero or more simple, scalar values, complex…
Contentstack JSON Data Formats: Assets and File Fields
This blog post, part of a series about JSON data formats in the Contentstack SaaS headless CMS, describes how Contentstack represents media asset metadata and references as JSON. Contentstack JSON Data Formats: Introduction and Scalars – Deliverystack.net In Contentstack, assets store metadata about files uploaded into the CMS. Technically, assets are like entries in that…
Contentstack JSON Data Formats: Entry Structure
This blog post, part of a series about JSON data formats in the Contentstack SaaS headless CMS, describes how Contentstack represents entries as JSON, where entries are records in the CMS that contain values for the fields defined by the content types associated with those entries. Contentstack JSON Data Formats: Introduction and Scalars – Deliverystack.net…
Contentstack JSON Data Formats: Modular Blocks Fields
This blog post, part of a series about JSON data formats in the Contentstack SaaS headless CMS, describes how Contentstack represents data stored in modular blocks fields as JSON. Contentstack JSON Data Formats: Introduction and Scalars – Deliverystack.net Contentstack modular blocks fields contain blocks of data. In an entry, a modular blocks field may contain…
Contentstack JSON Data Formats: Introduction and Scalars
This blog post introduces a series about JSON data formats used by the Contentstack SaaS headless CMS. Contentstack JSON Data Formats: Introduction and Scalars – Deliverystack.netContentstack JSON Data Formats: Modular Blocks Fields – Deliverystack.netContentstack JSON Data Formats: Entry Structure – Deliverystack.netContentstack JSON Data Formats: Assets and File Fields – Deliverystack.netContentstack JSON Data Formats: Complex Fields…
What Does It Mean for a CMS to Be Headless?
This blog post provides perspectives on what it means for a content management system to be considered headless. A content management system structures and separates data from its use, allowing domain experts to maintain content used by delivery systems such as websites and mobile applications. Rather than providing HTML generation engines, headless CMS expose content…
Coupling in [Headless] CMS
This blog post discusses forms of coupling between content management and content delivery systems in the context of headless CMS. Vendors use the term decoupled rather loosely and inconsistently, generally to indicate that content delivery does not depend on content management, but without describing exactly how. As I tried to understand what decoupled means, a…
Use Static Files and Vercel without the .html Extension in URLs
This blog post explains how you can configure a Vercel website to allow URLs for static HTML files without requiring the .html extension in URLs. By default, Vercel requires that URLs for static HTML files include the .html extension. An HTTP request for the URL /path/file.html will retrieve the file at that path, but an…
Export Child Entry Metadata with Entries from Content Management Systems
This blog post suggests that, when exporting the JSON representation of an entry (record) from a content management system, that JSON should include metadata about the children of the entry based on its URL path. For example, when exporting the JSON representation of the home page at the URL /, that JSON should include metadata…
Render Links to Edit Content When Previewing with Headless CMS
This blog post suggests techniques for rendering links to edit content when previewing or otherwise viewing content rendered from a headless content management system (CMS), which can facilitate CMS users maintaining the site. This post describes the URLs used to edit entries (records) in the Contentstack SaaS headless CMS, but rather than describing an implementation…
Hosting JavaScript Client SDKs for SaaS Systems
This blog post contains perspectives on hosting JavaScript client SDKs for SaaS systems such as headless content management systems. You can host JavaScript client SDKs from SaaS vendors on infrastructure that you manage or you can use infrastructure that the vendor manages. If you have opinions on this topic, please comment on this blog post.…
Deploy a Static File Website to Vercel
This blog post explains how to deploy a solution that consists of static files as a website on the Vercel content delivery network. A static website typically consists of HTML and supporting files such as CSS, JavaScript, and images. Vercel will host small websites with limited services at no cost. You can easily configure Vercel…
Use Your Own Domain for a Vercel Site
This blog post explains how to use your own domain for a site managed by Vercel. For each project, such as a website, Vercel creates subdomains within its own domains. For a project named vercel under the deliverystack Vercel account, Vercel created the following subdomains: vercel-git-main-deliverystack.vercel.appvercel-gamma-self.vercel.appvercel-deliverystack.vercel.app The pattern appears to be projectname-source-branchname-accountname.vercel.app where source is…
Azure .NET Core Headless CMS
This blog post intends to clarify an apparent misunderstanding about .NET with headless CMS, which is that you can use Azure and .NET with any SaaS headless CMS, whether or not that CMS uses .NET internally. If you can use SaaS for headless CMS, then consider all available SaaS headless CMS offerings regardless of underlying…
System Values in the Contentstack SaaS Headless CMS
This blog post describes some values to note when working with the Contentstack SaaS headless content management system. If you know of additional important values for working with Contentstack and Contentstack solutions, please comment on this blog post. Username: The username or email address of the CMS user.Password Hint: A reminder of the password for…
Notes on Static File and Directory Naming for Headless CMS (and Vercel)
This blog post discusses some issues mapping URLs to file system paths and entries in headless content management systems. At least in the context of web solutions driven by content management systems, solutions that involve static files must implement file and directory naming rules. If you have experience or perspectives on this issue, please comment…
CMS and Headless CMS Components and Implementation
This blog post describes major components and features of content management systems, which let non-technical subject matter experts edit content used by downstream systems such as websites. It then lists some aspects specific to headless CMS solutions. If you have any suggestions to add to these lists, please comment on this blog post. This post…
General Page Modeling with the Contentstack SaaS Headless CMS
This blog post presents some perspectives on data modeling to support a simple, generic web page with the Contentstack SaaS headless CMS. This topic considers site data (visible on almost every page), shared data (visible on multiple pages), metadata at the page level, and page data. If you know of additional categories of data or…

Export Data from the Contentstack SaaS Headless CMS to Files
This blog post describes some considerations for exporting data from Contentstack to a file system including both JSON and binary media. I have already implemented a static site generator for .NET and intend to extend that to generate JSON and media files described in this post as time permits (and especially if anyone shows any…
Ahah! Moments with SaaS Headless CMS
This blog post attempts to list some of the main learning points that I have encountered while transitioning from legacy to headless CMS. If you know of additional significant learning points in the headless journey (including SaaS and service-oriented architectures in general), please comment on this blog post. I should mention that this is about…
SaaS Headless CMS Fundamental Concepts
This blog post attempts to provide an overview of some fundamental concepts for working with SaaS headless content management systems. Content Management System (CMS) A content management system separates text and media content from presentation and logic, allowing re-use of content managed by non-technical subject matter experts. Developers write code that retrieves data from the…

Where Do .NET Developers Fit in the Jamstack?
This blog post provides information about opportunities in the Jamstack for .NET developers. There are doubtless other opportunities for .NET developers in the service-oriented software economy. If you have additional suggestions to share, please comment on this blog post. Introduction In general, Jamstack refers to technologies used to manage websites that consist of static HTML…

Quick Introduction to GraphQL with the Contentstack SaaS Headless CMS
This blog post provides pointers for using GraphQL with the Contentstack SaaS headless CMS. I am not an expert on or proponent of GraphQL, but these are some things I have learned from working with Contentstack. GraphQL is a data query and manipulation technology intended for HTTPS service APIs that accept and return JSON. You…

Types of Data in a Content Management System
This blog post contains information about different types of data used in content management systems. If you know of additional types of data or have relevant perspectives to share, please comment on this blog post. In general, content refers to the text and binary media managed by CMS users. The main purpose of the CMS…

Troubleshooting the Contentstack SaaS Headless CMS
This blog post contains guidance for troubleshooting potential issues with the Contentstack SaaS headless content management system. There are many different kinds and causes of potential issues; not all these suggestions apply in every case. Some of this guidance may apply to troubleshooting any system, but especially service-oriented applications on SaaS. If you have additional…
Avoiding Direct Headless CMS Service Access
TThis blog post describes techniques to avoid tighter coupling introduced by calling service-oriented application APIs directly, such as those exposed by headless content management systems (CMS). If you have suggestions for further insulating systems, please comment on this blog post. Service-oriented architectures including headless CMS intend to loosen coupling between systems. Using HTTPS APIs rather…
Differentiating Headless CMS Products
The headless CMS software space is crowded with competitors, which can make it difficult for prospective customers to evaluate available offerings. This blog post presents some criteria that can help to differentiate headless CMS products. If you have additional significant factors by which to evaluate headless CMS products, please comment on this blog post. When…
Approaching SaaS Headless CMS Projects
This blog post lists some questions to start conversations while evaluating architectural requirements for SaaS headless content management projects, which typically include one or more websites. This post is not specific to any individual CMS and much of it could apply to any modern connected system, but I work for Contentstack and so emphasize relevant…
Data Access Points in the Contentstack SaaS Headless CMS
This blog post contains information about techniques that you can use to access data in the Contentstack SaaS headless CMS. First, the Content Management API and Webhooks sections describe facilities not intended for content delivery environments. The remaining sections describe Contentstack content delivery services, also called APIs. Content Management API The content management API is…
Language Fallback with Headless CMS
This blog posts presents some considerations for implementing language fallback with headless content management systems. Language fallback refers to using field values from an alternate language version of an entry when a specific language version does not contain values for those fields or using an alternate language version of an entry when there is no…
CMS Content Migration Opportunities and Concerns
In preparing for a meeting to discuss architecture for migrating data from one CMS to another, I realize that I have written a few things about data migration, but that I need a short list of potential opportunities and concerns. If you have anything to add, please comment on this blog post. ROI: Customers tend…
Comparing Rust and C#
This blog post contains perspectives on similarities and differences between the rust programming language and the C# programming language for .NET. This post focusses on command line and background processes and does not consider native user interface technologies for Windows or Linux, although for now at least, C# is almost certainly more appropriate for Windows…
Let Bloggers Know What Brings You to Their Posts!
I have been blogging for probably about a decade. I speculate that most bloggers spend a significant amount of effort writing relative to the amount of feedback that they receive. I could try to blame copying, caching, reductions in client-side tracking, but in addition to not getting many comments, my blogs do not even record…
Introducing rustapopoulos.com, yet another blog about programming with rust.
I started a separate blog about programming with rust. rustapopoulos.com – Yet another blog about programming with rust
View and Configure Keyboard Shortcut in Visual Studio and Visual Studio Code
Knowledge of a few keyboard shortcuts can significantly increase user and especially developer productivity. Microsoft Visual Studio and Visual Studio Code have countless features and therefore a significant number of keyboard shortcuts. To get the best value from these tools, use the techniques in this post to learn or set keyboard shortcuts fore the features…
Quick Tips for Blogging with WordPress
I honestly think that everyone should have at least one blog. Just start writing about what you know. Get into the habit of writing about everything that you do, even if you never post any of it. This blog post provides my suggestions for blogging on WordPress. Though I am often frustrated with its editor…
Working with Single and Multiple Reference Fields in the Contentstack SaaS Headless CMS
This blog post explains how the Contentstack SaaS headless CMS stores the values of reference fields as lists even when there is only a single referenced entry. In Contentstack, each simple field type can store either a single value, or multiple values. For example, to associate a single date with a event, a developer could…
Contentstack SaaS Headless CMS Content Delivery Differentiating Factors
This blog post describes factors that I believe differentiate Contentstack from competing SaaS headless CMS products considering only features that affect content delivery. I tried to focus on features that are not present in almost every SaaS headless CMS. Contentstack is not the only vendor that provides each of the features listed here, although I…
SaaS Headless CMS Vendor and Customer Responsibilities
This blog post contains some notes on SaaS headless content management system vendor and customer responsibilities. If you have additional perspectives on this topic, please comment on this blog post. Update 24..June.2021: This diagram does not reflect that Customer Applications can deliver data to the Content Delivery tier via HTTPS services and webhooks, nor that…
Oh No, Could Web Tracking Move to the Application Server Tier?
Statistics can be useful but can also lead to false conclusions, especially when the data is inaccurate. Web statistics are no exception, particularly when different systems provide different numbers. For example, I use the WordPress blogging platform, which provides some traffic statistics. I recently upgraded the hosting plan to include google analytics and the numbers…
Fields Absent when Limiting Responses with Only in the Contentstack SaaS Headless CMS
This blog post explains one reason why expected fields may be absent when attempting to limit fields returned for entries in the Contentstack SaaS headless CMS. By default, when you retrieve an entry, the CMS returns all its fields, potentially excluding some system metadata such as workflow state unless explicitly requested. You can use the…
Konabos Konaverse Podcast with Deliverystack.net Author John West
My friend Akshay at @Konabos Consulting invited me to join him in an episode of his #Konaverse podcast series. We did not intend to talk about technology, and I don’t think I even mentioned anything relevant to this blog. Hearing our conversation might help readers get to know a little about me as a person.…
ASP.NET Razor Page Component Model Overview
This blog post describes my oversimplified understanding of the ASP.NET Core razor page component model. Razor is a syntax for embedding HTML and C# in .cshtml files that run on the server to generate HTML. Significant C# belongs in other files, but is used in views for data retrieval, looping, and otherwise. The application determines…
Shortcut/FavIcon with SaaS Headless CMS and ASP.NET Core Razor Pages
This blog post explains one way to let CMS users control shortcut/favorite icons with SaaS headless content management systems and provides an ASP.NET Core razor pages view component implementation. This prototype is almost exactly like the prototype for google analytics that I described in a previous blog post, so I will not repeat that content.…
Google Analytics with SaaS Headless CMS and ASP.NET Core Razor Pages
This blog post explains one way to add tracking for google analytics to a web content delivery solution for a SaaS headless content management system. To add google analytics tracking analytics, we can embed a piece of JavaScript with a google identifier on every page. While .NET provides various techniques for managing store such identifiers,…
Override or Force Routing in ASP.NET Core
This blog post describes a technique that you can use to force the application of routes in ASP.NET Core, overriding routes that would apply otherwise, including catchall routes. Recently, I implemented an ASP.NET Razor solution that uses a catchall wildcard in the @Page directive. I also implemented a Web API that can be hosted as…
SaaS Headless CMS and Service Oriented Application Objectives and Advantages
This blog post describes some of the objectives and advantages of SaaS headless content management systems and service-oriented architectures in general. Of course anything can be implemented well or poorly, and it is possible to build any solution on any platform. SaaS headless CMS systems endeavor to provide the following advantages relative to other content…
Deserializing to Custom Types with System.Text.Json
This blog post contains information about using System.Text.Json (STJ) to deserialize JSON to custom types rather than simple primitives such as string. I am in the process of migrating from Newtonsoft.Json to System.Text.Json (STJ). Migrating C# from Newtonsoft.Json to System.Text.Json for .NET 5 – Deliverystack.net I am not necessarily well-informed, so this is an overview…
Force .NET and ASP.NET Core to Load Available Assemblies
This blog post explains a technique that causes .NET and ASP.NET applications to load all available assemblies into memory. You may want or need to use a technique like this if you use reflection to determine types to instantiate, specifically if the types do not seem to be available when you reflect. Where it feels…
Workaround for Circular Dependencies in .NET and ASP.NET Core
This blog post explains an approach to resolving circular service dependencies in .NET and ASP.NET Core. In this context, services are .NET types that the dependency framework injects into the application, not HTTPS services for exchanging JSON. Sometimes, two services depend on each other. For example, I have an IDeliveryClient implementation that deserializes JSON entries…
Evaluating [SaaS] [Headless] [CMS] Data Modeling Capabilities
This blog post contains information about evaluating data modeling capabilities in SaaS headless content management systems, specifically features available in content types that define different types of structures for data storage. Data modeling is one of the critical features of and differentiating factors between headless content management systems. If you have additional perspectives about modeling…
SaaS Headless CMS ASP.NET Core Razor Pages Data-Driven Breadcrumb View Component
This blog post describes a prototype ASP.NET Core razor pages view component that renders a breadcrumb based on the information architecture of the website as determined by its URL hierarchy. This post is a continuation of a series progressing an ASP.NET razor pages solution architecture using the Contentstack SaaS headless CMS. The following post contains…
ASP.NET Razor Pages Legacy/Vanity URL Redirect Prototype for SaaS Headless CMS
This blog post explains a prototype for a solution that ASP.NET Core razor pages with the Contentstack SaaS headless content management system to manage redirects from legacy and alternate to current URLs with the Contentstack SaaS headless content management system. This post is about the architectural approach rather than the code shown. When a URL…
SaaS Headless CMS ASP.NET Core Razor Pages Data-Driven Top Navigation View Component
This blog post describes a prototype ASP.NET Core razor pages view component that renders a top navigation based on the information architecture of the website as determined by its URL hierarchy. This post is a continuation of a series progressing an ASP.NET razor pages solution architecture using the Contentstack SaaS headless CMS. An ASP.NET Core…
Use JsonConverters to Mimic Dependency Injection During Deserialization
This blog post presents an approach that abstracts access to the entries specified in reference fields in the Contentstack SaaS headless CMS, demonstrating a technique that provides functionality similar to dependency injection during deserialization from JSON with .NET and System.Text.Json. Contentstack content types can include reference fields, which allow entries to reference other entries. The…
Contentstack .NET Group Model for Page Metadata Fields
This blog post explains how I modeled a group of fields that appear in all content types that represent pages in the Contentstack SaaS headless content management system for a solution that uses ASP.NET razor pages. Specifically, this group contains metadata fields used for navigation, sitemap.xml and robots.txt, search results, to control the layout view…
Cannot get the value of a token type ‘StartObject’/converter ‘…’ read too much or not enough
This blog post describes two exceptions that I experienced while converting Newtonsoft JsonConverters to System.Text.Json JsonConverters and the related solutions to both issues in the hopes that it may assist developers that may face the same issue(s). Update 1.June.2021: This is a bit embarrassing, but I eventually remembered/realized that the CMS models a Reference field…
Migrating C# from Newtonsoft.Json to System.Text.Json for .NET 5
This blog post contains my notes in migrating a small C# .NET codebase from Newtonsoft.Json to System.Text.Json (STJ). First, let me thank Newtonsoft, which has close to a billion dowloads, for making JSON processing possible before Microsoft and for shaping STJ. There are plenty of existing resources about this, but to help me remember, these…
Hosting ASP.NET Core Razor Pages and Web APIs in a Single Project
This blog post explains one way that you can host ASP.NET Core Web APIs and Razor Pages in a single project. Performance is best if the client has a fast network connection to the server. The fastest connection is probably from a host to itself. This is not the most scalable configuration for production (so…
ASP.NET Core Web API Prototype, Part IV: Code and Concerns
This is the fourth and final blog post in a series that explains an approach to implementing ASP.NET Core Web API servers and .NET clients and provides an example implementation of a service that maps URL paths to information about corresponding entries in the Contentstack SaaS headless CMS. This entry describes some of the outstanding…
ASP.NET Core Web API Prototype, Part III: Prototype Implementation
This series of blog post explains an approach to implementing ASP.NET Core Web API servers and .NET clients and provides an example implementation of a service that maps URL paths to information about corresponding entries in the Contentstack SaaS headless CMS. This entry describes the prototype implementation. ASP.NET Core Web API Prototype, Part I: .NET…
ASP.NET Core Web API Prototype, Part II: Requirements for Mapping URL Paths to Contentstack Entries
This series of blog post explains an approach to implementing ASP.NET Core Web API servers and .NET clients and provides an example implementation of a service that maps URL paths to information about corresponding entries in the Contentstack SaaS headless CMS. This entry requirements and considerations for the example Web API. ASP.NET Core Web API…
ASP.NET Core Web API Prototype, Part I: .NET Web API Server/Client Overview
This series of blog post explains an approach to implementing ASP.NET Core Web API servers and .NET clients and provides an example implementation of a service that maps URL paths to information about corresponding entries in the Contentstack SaaS headless CMS. ASP.NET Web APIs use JSON to expose data and functionality as HTTPS services. This…
Sort Links and Content by User Preference
Someone recently asked me how to sort links (content) based on site visitor preferences, specifically in the context of generating links for navigation. For example, each visitor accessing a sporting goods site may see their preferred sport(s) as the first link(s) in the main navigation. This blog post provides a short conceptual response. My first…
Layers, Types, and Considerations for Content Delivery Caching with Headless Content Management
This blog post contains information about layers and types of caches in content delivery tiers of headless content management systems. For the purposes of this blog post, features such as edge caches and CDNs are considered as a single layer. While the internals of content management tiers of headless content management systems doubtless leverage database…
Content Modeling with the Contentstack SaaS Headless CMS
A solid, long-term information architecture, specifically in the form of stacks, content types, and collections of entries, optimizes implementation and maintenance. This blog post contains information about content modeling with the Contentstack SaaS headless content management system. If you have additional suggestions about related topics, please comment on this blog post. I am trying to…
Making the Transition to SaaS Headless CMS and Service Architectures
While the concepts are simple, my experience with other systems and architectures presented obstacles to comprehending and adopting SaaS headless content management philosophies and techniques. This blog post intends to provide guidance for architects, developers, and organizations migrating to headless content management systems from other web experience management platforms, though some suggestions are more broad…
CMS and Web Industry Trends, May 2021
In no particular order, this blog post written in May of 2021 presents some perspectives on technical trends in the web application industry, especially the paradigm shifts towards SaaS-hosted service-oriented applications and serverless infrastructure. I don’t expect any of this to be new information to most readers, but maybe it deserved a summary. HTTPS Services…
Headless CMS ASP.NET Razor Pages Partial View Component Architecture
This blog post provides an example of using a modular field in the Contentstack SaaS headless CMS to let the CMS user select an ASP.NET Core Razor Pages partial view to render each block. This blog post depends on information and code provided in the following previous blog posts. .NET Core Headless CMS Entry Models…
Loading…
Something went wrong. Please refresh the page and/or try again.
Follow
Email.