I noticed an issue yesterday in the production website for my Ruby on Rails app, Anki Books. I had recently migrated the website from being served from a laptop I...
I made a small realization today about a different way to instantiate EF Core entities compared to what Iāve been doing. In the past when defining constructor methods for my...
In the React app that is part of my project, there is a Bootstrap navigation bar with a logout button. For small screen widths, the bar collapses, hiding the navigation...
Today I refactored a base class of service classes in an ASP.NET Core project, so that instead of two services (IHttpContextAccessor and IAuthorizationService in this example) being injected, an IServiceProviderWrapper...
As I implemented resource-based authorization in my project recently, I also did the initial work of a demo feature, where clicking this āTry it out!ā button will create a demo...
I added resource-based authorization to my ASP.NET Core project today; the approach that I used was to add a property UserId to an abstract entity class and then a requirement...
Today I did some refactoring of an ASP.NET Core project with a controller-service-repository architecture to add resource-based authorization. As a result of this, my service classes are derived from an...
A problem I encountered recently was implementing tracking if the user is logged in in a React app that is not being used within a framework. I solved the problem...
Recently I bought the domain name larder.lol for $1.80 (with a $6 TLS certificate too), which I thought was a pretty good deal, and I set up my project web...
Before learning .NET, I had a lot more experience with Ruby on Rails. One of the ideas I found in .NET development that I hadnāt encountered in Ruby on Rails...
Recently I did some work to set up continuous deployment for a practice project (Larder), which is an ASP.NET Core web API with a React app frontend. This post is...
While writing this post, a few times I considered a reader might say it does not show the best security practices, and I donāt necessarily disagree with that. In this...
As I move on from one project to the next, this post is to note some thoughts. No more Windows Subsystem for Linux For a while now the amount of...
I scrapped a lot of the old color scheme and refactored to a simpler but overall better looking one. I also added some UI to the sources area of the...
After writing the post yesterday, I was thinking about it some more, and wondering about the design. I also noticed some other small issues while writing the post: I didnāt...
In my app, an article can have many elements, and each article element has a unique ordinal position from 0 up to 1 less than the total number of elements...
This post shows an example of unit testing an ASP.NET Core model validation property. [RegularExpression] enforces the property matches the regex: public class ClozeNote : Card { [Required] [RegularExpression($".*{clozeMarkersRegex}.*", ErrorMessage...
I spent some time understanding Resource-based authorization in ASP.NET Core today and implemented a simple example using it (also see Policy-based authorization in ASP.NET Core). This post is an alternative...
Iām sure nobody has noticed this but I was trying to write a blog post every day. I wrote a draft of one today and didnāt really like it and...
Itās common for a single page application to request data from an API. In my Blazor web app, the same Razor components that would request data over HTTP can be...
I noticed a problem with serializing a list of objects that derive from a base class as a list of the base class where the data of the derived type...
I wrote this, I accidentally deleted the file which had not been git added yet, and here I am writing it again. Anki Books has a design following clean architecture....
I reissued the TLS certification for my website today (ankibooks.io) which is the third time Iāve done this TLS stuff with namecheap. There are two gotchas that wasted some of...
I tried a few ways today (about one month ago, but I wrote the beginning of this post, except for this part, a month ago) to implement a drag and...
Iāve been using Blazor for a bit now, itās good so far I guess. I started with an ASP.NET Core web API and standalone Blazor WebAssembly app and it was...
In the initial development of my app (an ASP.NET Core Web API and Blazor Webassembly client), Iām currently using the in-memory database provider while Iām mostly focused on learning Blazor....
When I was looking into adding some new features to an existing Anki add-on, I had to make sense of some files with the .ui extension that had some Qt...
I used the STI pattern in my little Rails app today, the second time I used this in a Rails app and I really like the pattern. The first time...
Rails provides some help for building a complex HTML form that can edit multiple objects/database records at the same time. However, it is not everything needed for a form that...
I had the following error trying to build and run Anki from source following the instructions in development.md and linux.md using WSL2 with Ubuntu (using the ./run script after installing...
I had an idea today while thinking about the difficulty of understanding a software system as it becomes larger and more complex. The idea was that it might be useful...
I had an unexpected error today when starting my Rails app after experimenting running it inside Docker containers yesterday. The problem was due to the system user inside the Docker...
This post describes the ghost methods in the Anki Record gem that are defined with the Note#method_missing method. BasicObject#method_missing normally throws an exception when an object is called with a...
Today I wanted to recurse through all of the values in some parsed JSON Ruby objects (I had a practical reason for this). I approached the problem in a very...
I am going to explain the source code of two Anki add-ons that I wrote while I was in medical school, in the hopes that it will be useful to...
Launch School is a website that teaches a course on web development fundamentals (it is not a coding bootcamp). Instead of focusing on any particular frameworks, the focus is on...