Sign in

Rick Strahl

@rickstrahl.west-wind.com
716 followers 122 following 87 posts

Wind, waves, code, punk rock and everything in between. Markdown, .NET and all things Web.

PostsRepliesMedia
Rick Strahl @rickstrahl.west-wind.com · 21/08/2025
And it's crazy SLOOOOOOW! 5+ seconds to sign a single file and batches go one at a time.
200
Rick Strahl @rickstrahl.west-wind.com · 21/08/2025
Blogged: Using the new WebView2 AllowHostInputProcessing Keyboard Mapping Feature Finally finished this post that describes a new WebView feature that allows passing through keystrokes from WebView->Host to naturally handle Windows behaviors correctly. weblog.west-wind.com/posts/2025/A...
weblog.west-wind.com
Using the new WebView2 AllowHostInputProcessing Keyboard Mapping Feature
If you've used the WebVIew2 control for a UI interactive Hybrid active you've probably run into some odd keyboard behavior, where some keys cannot be captured properly in the host application or are n...
040
Rick Strahl @rickstrahl.west-wind.com · 21/07/2025
Blogged: Fighting through Setting up Microsoft Trusted Signing weblog.west-wind.com/posts/2025/J...
weblog.west-wind.com
Fighting through Setting up Microsoft Trusted Signing
It's that time of year again to update my CodeSigning certificate, only to find out that the rules have changed since I last did this. Certs now require either a physical hardware key or a online serv...
150
Rick Strahl @rickstrahl.west-wind.com · 23/06/2025
I'm working in Net472 for this tool, but I verified the same thing happens in Core (see the LinqPad example).
010
Rick Strahl @rickstrahl.west-wind.com · 23/06/2025
Blogged: Unpacking Zip Folders into Windows Long File Paths Wrote up some notes from my recent misadventures with the #dotnet ZipFile class and unpacking long filenames. weblog.west-wind.com/posts/2025/J...
weblog.west-wind.com
Unpacking Zip Folders into Windows Long File Paths
Ah, long file paths bit me again today - this time with `ZipFile.ExtractToDirectory()` not unzipping long path files, even when specifying long path syntax for the output folder. In this post I briefl...
320
Rick Strahl @rickstrahl.west-wind.com · 14/06/2025
That’s what we call a Whiteout! Insane day on the water today with gusts to 50mph and mast high swell rolling down the river. Not forecast either which makes it all the better! #gorgelife
040
Rick Strahl @rickstrahl.west-wind.com · 11/06/2025
Are you feeling it yet? www.youtube.com/watch?v=5zFz...
youtube.com
Anti-Trust - The Masters of Disaster
YouTube video by Anti-Trust Punk Rock Music
000
Rick Strahl @rickstrahl.west-wind.com · 10/06/2025
Blogged: Adding Runtime NuGet Package Loading to an Application The post discusses adding NuGet support to my .NET LiveReloadServer tool and it's dynamic loose Razor page support recently. Been really useful to me for several 'Sites with Benefits'. weblog.west-wind.com/posts/2025/J...
weblog.west-wind.com
Adding Runtime NuGet Package Loading to an Application
It's not a common use case, but if you need need to dynamically add external code at runtime, NuGet packages are the most familiar way for developers to add that functionality besides old-school direc...
000
Rick Strahl @rickstrahl.west-wind.com · 21/04/2025
Blogged: The Strong ARM of .NET: Wrestling with x64 and Arm64 Desktop App Deployment weblog.west-wind.com/posts/2025/A...
weblog.west-wind.com
The Strong ARM of .NET: Wrestling with x64 and Arm64 Desktop App Deployment
.NET works great for cross-platform development making it easy to build apps that are cross-platform and cross-architecture specifically for x64 and Arm64. However, building a distributable applicati...
031
Rick Strahl @rickstrahl.west-wind.com · 25/03/2025
Blogged: Using Windows Media Speech Recognition in WPF Wrote up some of the struggles I've shared over the last week while integrating Windows SDK, WinRT and speech recognition in a WPF app. End result: 👍 weblog.west-wind.com/posts/2025/M...
weblog.west-wind.com
Using Windows.Media SpeechRecognition in WPF
Windows has a pretty capable SpeechRecognition engine built-in via Windows Media services. In .NET these features are accessible via the Windows SDK (WinSdk) that expose these Windows features to .NET...
020
Rick Strahl @rickstrahl.west-wind.com · 16/03/2025
Yeah it's used for anything that binds logical values - checks, radios, single value props like readonly/disabled that are boolean to indicate whether they are not present at all so that model state can stay consistent.
000
Rick Strahl @rickstrahl.west-wind.com · 15/03/2025
I think that actually what Razor does for TagHelpers. When I checked there are extra fields that get send (__invariant_modelkeyname) - I think those are meant for disabled, readonly, checkboxes etc. values that can have nullable state.
110
Rick Strahl @rickstrahl.west-wind.com · 15/03/2025
That would work, but frankly if you want the readonly behavior it's there already, and you can restyle use tabindex to get the behavior you want. Dealing with the extra field seem like a lot more effort than that.
010
Rick Strahl @rickstrahl.west-wind.com · 13/03/2025
Blogged: Accessing Windows Settings Dialogs from Code via Shell Commands Quick blog post for reference that also points at the resource key links available for the protocol handler. weblog.west-wind.com/posts/2025/M...
141
Rick Strahl @rickstrahl.west-wind.com · 09/03/2025
Evening session…. Klein aber fein!
070
Rick Strahl @rickstrahl.west-wind.com · 05/03/2025
Ooops! This is what breaking off a harness hook looks like 😱 Aluminum hook was worn and ripped right off. Quite the slam… sometimes it’s better not to know what happens after you go down 😂🏴‍☠️
020
Rick Strahl @rickstrahl.west-wind.com · 02/03/2025
Kava and I having a golden moment 😀
3180
Rick Strahl @rickstrahl.west-wind.com · 28/02/2025
Blogged: Inline Confirmations in JavaScript Html UI weblog.west-wind.com/posts/2025/F...
010
Rick Strahl @rickstrahl.west-wind.com · 26/02/2025
Blogged: Retrieving Images from the Clipboard Reliably in WPF Revisited weblog.west-wind.com/posts/2025/F...
weblog.west-wind.com
Retrieving Images from the Clipboard Reliably in WPF Revisited
The WPF Clipboard is notoriously bad for retrieving image data, mainly because of the funky behavior of the ImageSource control into which clipboard data is loaded. WPF cuts a lot of corners when retr...
062
Rick Strahl @rickstrahl.west-wind.com · 26/02/2025
Oh yeah... totally real 😂
010
Rick Strahl @rickstrahl.west-wind.com · 21/01/2025
The memory utilization however is very different with the default configuration (1) running with 10x less memory just like the comparison between 8.0 and 9.0. So you might be right - most of the small perf difference likely comes from this feature flag change.
010
Rick Strahl @rickstrahl.west-wind.com · 21/01/2025
So tried it - doesn't make much of a difference in performance. Pretty close. However, flipping back and forth I see around 164k/sec (0) vs 160k/sec (1) between the two modes.
010
Rick Strahl @rickstrahl.west-wind.com · 21/01/2025
Yeah good point - it's easy enough to do especially if just re-running the 9.0 runs.
000
Rick Strahl @rickstrahl.west-wind.com · 21/01/2025
LOL! Thanks. Fixed already. Was screwing around with some feature work in Markdown Monster last night and must have published by accident at some point. The post was already cleaned up but not re-published.
010
Rick Strahl @rickstrahl.west-wind.com · 21/01/2025
Posted my annual .NET version comparison throughput tests along with some initial perceptions of moving to .NET 9.0. This year is a little... different. weblog.west-wind.com/posts/2025/J...
weblog.west-wind.com
Comparing Raw ASP.NET Request Throughput across Versions: 8.0 to 9.0 Edition
Once again I'm taking a look at the newish .NET release and how it compares to the previous release - this time .NET 9.0 from .NET 8.0. I'll run my simple load tests to compare performance and also di...
343
Rick Strahl @rickstrahl.west-wind.com · 20/01/2025
That's probably a good thing!
120
Rick Strahl @rickstrahl.west-wind.com · 19/01/2025
Dropped a new single from the forth coming Anti-Trust album: War Machine Never forget: War is the REAL Enemy! open.spotify.com/album/3x1R7W...
open.spotify.com
War Machine
Anti-Trust · Single · 2024 · 1 songs
031
Rick Strahl @rickstrahl.west-wind.com · 12/01/2025
Evening session…
040
Rick Strahl @rickstrahl.west-wind.com · 11/01/2025
Screwing around with building a very simple runtime expression evaluator that doesn't need to compile - just parse and invoke. So far so easy but once you get to methods with parameters the easy part's done with 😂
040
Rick Strahl @rickstrahl.west-wind.com · 03/01/2025
Markdown monster has support for publishing to word press.
020
Rick Strahl @rickstrahl.west-wind.com · 01/01/2025
Last ride of 2024… Small waves and trying out a new camera mount. Result: another broken GoPro mount…
131
Rick Strahl @rickstrahl.west-wind.com · 01/01/2025
Priorities! 😀
010
Rick Strahl @rickstrahl.west-wind.com · 30/12/2024
I didn't show it in the original example file but the script parser also supports raw C# code blocks so you can write raw C# code inline: It ain't as pretty Razor, but it sure works better in generic editors than Razor syntax.
000
Rick Strahl @rickstrahl.west-wind.com · 30/12/2024
Scripting for this lib has been built in since the beginning. What's new is Layout Page/Section support and revamped Partial rendering. For now updates live on a separate branch. A few more things to iron out before it goes into master. For now on `NewScriptProcessor` branch.
000
Rick Strahl @rickstrahl.west-wind.com · 30/12/2024
Updating the C# scripting engine in Westwind.Scripting to support layout pages. I finally got fed up with trying to shoehorn other script engines into my templating solutions - Razor especially (both hosted and internal). This is plain old, raw C# code being rendered. github.com/RickStrahl/W...
220
Rick Strahl @rickstrahl.west-wind.com · 29/12/2024
So the issue turns out to be due to the cross assembly usage of the anonymous types. It works intra assembly as that's internal usage, but extra assembly the internal is not visible to dynamic to access. Reflection works cause (surprisingly) default GetProperty() supports private reflection.
020
Rick Strahl @rickstrahl.west-wind.com · 29/12/2024
Ironically KavaDocs was an MM addin meant as a doc solution. Did a lot of this & would've supported this but it got canned. Looking into building a doc solution right now again as Help Builder is starting to be a pain in the ass to use. But it'll be separate product not in MM as that was a pain.
010
Rick Strahl @rickstrahl.west-wind.com · 29/12/2024
To be clear the code that is shown as text, is generated and compiled and executed on the fly (it's a script) using Roslyn. I've tried to duplicate this as a simplified scenario in LinqPad with and the same scenario appears to work there:
010
Rick Strahl @rickstrahl.west-wind.com · 29/12/2024
Running into a weird issue with dynamic and anonymous types while updating my C# scripting library. I'm passing in a model that's an anon type, cast to dynamic, and access to dynamic props then fails. But using Reflection works (ie. the type is there).
262
Rick Strahl @rickstrahl.west-wind.com · 29/12/2024
This is a very weak feature in MM at this point. I don't use it, so it gets no love. But it could be made into something more and this might be a good reason to do this. It's more like a documentation solution where you can have a TOC that controls the structure and order of topics.
120
Rick Strahl @rickstrahl.west-wind.com · 29/12/2024
Hmmm... that's a good idea. MM has a concept of a project into which you can store documents that can be reopened and can store some 'state' about a bunch of documents or folders (ie. root path, project wide options). But no support for output ordering.
120
Rick Strahl @rickstrahl.west-wind.com · 28/12/2024
But... is it any good? 😆
100
Rick Strahl @rickstrahl.west-wind.com · 28/12/2024
Yup tried that too and it works. Combining docs and then opening them might a be a nice command line feature for Markdown Monster.
120
Rick Strahl @rickstrahl.west-wind.com · 28/12/2024
Blogged: Back to Basics: Using the Parallel Library to Massively Boost Loop Performance Posting a follow up to recent tweet regarding converting a linear for loop to parallel and gaining huge performance improvements. weblog.west-wind.com/posts/2024/D...
weblog.west-wind.com
Back to Basics: Using the Parallel Library to Massively Boost Loop Performance
I recently had another occasion to add Parallel.ForEachAsync() into an application to improve performance of an Http look up operation drastically. When I tweeted a note on X there was quite a bit of ...
0114
Rick Strahl @rickstrahl.west-wind.com · 27/12/2024
Pandoc. Probably two steps: Merge, then convert.
140
Rick Strahl @rickstrahl.west-wind.com · 23/12/2024
Always nice to get an easy win: Switching to a Parallel loop with literally a couple of lines of code and getting massive perf improvements. Link checking in Markdown Monster on one of my old blog posts with lots of links went from 20 seconds down to 2.5 seconds.
1110
Rick Strahl @rickstrahl.west-wind.com · 21/12/2024
It's worse when they type with two hands, but it's just as bad as one!
110
Rick Strahl @rickstrahl.west-wind.com · 20/12/2024
New Anti-Trust music from the upcoming Anti-Trust - The Masters of Disaster album. This video is based on themes from Corey Doctorow's discussions on Enshittification of our ever more digital lives. www.youtube.com/watch?v=Ftgw...
youtube.com
Anti Trust - Enshittify
YouTube video by Anti-Trust Punk Rock Music
020
Rick Strahl @rickstrahl.west-wind.com · 18/12/2024
Pushed up a new version of LiveReloadServer today. It's a local, self-contained, x-platform static Web server that also supports loose Razor pages and built-in Markdown rendering plus LiveReload. Updated to .NET 9.0 and fixed a few small issues. github.com/RickStrahl/L...
0141
Rick Strahl @rickstrahl.west-wind.com · 11/12/2024
It was a very challenging day on the water today. Massivevwaves and funky wind make for a precarious situation - got rinsed good a couple of times today. Still managed some good ones though 😀🌊
070