
Practical insights from real-world cloud, data, and applied AI systems
When working with Blazor WebAssembly, JavaScript interop often feels straightforward—until it isn’t. One of the more subtle (and frustrating) issues I’ve run into involves Safari, user-initiated navigation, and async event handlers. This post documents a real-world lesson learned: why I intentionally avoid async when triggering browser navigation (like mailto:) from Blazor, even though async/await is…
Categories:
Written by
on
The DataTables ajax option, documented here, is a common way to retrieve dynamic data from a source, for loading into a table. Typically, I use…
Categories:
Written by
on
The table’s data looks like this: The table uses footerCallback() to populate the footer cell with a total sum of the durations (hours:minutes:seconds) shown…
Categories:
Written by
on
See full details in this blog page. A summary: rows().every(), columns().every() and cells().every() – Use when you want to perform an API method on each selected item,…
Categories:
Written by
on
Here are links to (and notes about) some key pages from the DataTables documentation and web site. The documentation is extensive –…
Categories:
Written by
on
ADO ai angular asian asp.net asp.net core azure ACA azure administration Azure Cloud Architect Azure Key Vault Azure Storage Blazor WebAssembly BLOB bootstrap Branch and Release flow c# c#; ef core css datatables design pattern docker excel framework Git HTML JavaScript jQuery json knockout lab LINQ linux powershell REST API smart home SQL Agent SQL server SSIS SSL SVG Icon typescript visual studio Web API window os wordpress
The information on this weblog is provided “as is,” without warranties of any kind, and confers no rights. The content reflects my personal views and does not represent the thoughts, intentions, plans, or strategies of any organization with which I am affiliated. Discussion and differing viewpoints are welcome; however, I reserve the right to moderate or remove comments that are abusive, profane, rude, or anonymous. Please keep the conversation respectful and constructive.