Advertisement · 728 × 90

Posts by Dave Curylo

Add a Floppy Drive to a Virtual Machine in theVMware Host Client Use a physical floppy drive or a floppy image to add a floppy drive to a virtual machine.

One of my favorite pastimes while waiting on builds is to install Windows 95 using a virtual stack of virtual floppy disks. This is one of the strengths that VMware brings to Azure. techdocs.broadcom.com/us/en/vmware...

4 months ago 0 0 0 0
Post image

Justified as it may well be - it’s not not true 😂

11 months ago 200 16 11 0

I meant that I considered using Myriad _instead of_ AI to generate the code.

1 year ago 1 0 0 0

I even considered Myriad, but would have to write a parser AND THEN a generator.

1 year ago 0 0 1 0

I agree - it worked in this case because the service was pretty small so I could check it. The alternatives were broken enough that “chatbot-accurate” was better than existing tooling. I definitely would rather spec-to-code be deterministic.

1 year ago 0 0 1 0
Post image

Yes, there are client generators all over, but no server stubs, for suave, falco or really even vanilla aspnetcore. The giraffe one was very outdated and I spent a while on updating it before just giving up.

I’m impressed with how accurate this one was, with one little adjustment:

1 year ago 0 0 0 0
Preview
ChatGPT - Suave Server Stub F# Shared via ChatGPT

After spending hours wading through all the unmaintained openapi generators and then trying to implement a typespec emitter myself, I eventually just asked copilot to generate an #fsharp server stub for suave.

I asked ChatGPT the same thing so I could share:

chatgpt.com/share/67cee5...

1 year ago 5 0 2 0
Post image

I hope to get it totally working soon, it's really cool to see F# code able to do integrate something so seamlessly that I can use certificates from an Azure Key Vault like regular files.

The real-world use is that secrets and certificates have to rotate, and now they are immediately in place.

1 year ago 0 0 0 0
Preview
Failing to create a thread shouldn't assume that this an out of memory issue · Issue #71761 · dotnet/runtime Description The code here: https://github.com/dotnet/runtime/blob/main/src/coreclr/vm/threads.cpp#L812 Assumes that failing to create a thread means that we run out of memory. This result in this e...

I suspect something about running a libfuse plugin in multithreaded mode is causing the runtime to fail creating threads, and it unfortunately always calls this an OutOfMemoryException.

github.com/dotnet/runti...

1 year ago 0 0 0 0
Advertisement
Preview
KeyVaultFuse/src/dotnet/KeyVaultFuse/Fuse.fs at 7ebb39e1f171273a256d5b9622c3eaadd72b18fa · ninjarobot/KeyVaultFuse Creates a FUSE filesystem for Azure Key Vault. Contribute to ninjarobot/KeyVaultFuse development by creating an account on GitHub.

Anyway, cool #fsharp stuff these days, and I hope this gives people some examples for all the native interop you can do nicely in F#:

* Structs: github.com/ninjarobot/K...
* Callbacks: github.com/ninjarobot/K...
* Type-safe marshalling: github.com/ninjarobot/K...

1 year ago 1 0 2 0
Preview
Thread.StartInternal gets OutOfMemoryException when running in systemd · Issue #2 · ninjarobot/KeyVaultFuse While the application runs fine in single-threaded mode (KeyVaultFuse some-keyvault -o allow_other -f -s /kvfs), when launched by systemd, it seems to encounter an issue creating a thread on the fi...

FUSE filesystems use multiple threads, and running as a regular application, I used a single-thread option. When it's a systemd mount, it's multithreaded. As soon as I make a call to Azure Key Vault, I get exceptions on Thread.StartInternal.

github.com/ninjarobot/K...

CC: @chethusk.bsky.social

1 year ago 0 0 1 0

libfuse is all callbacks, so it is a natural fit for F# - that part went really well. Compiling dotnet to native also worked nicely, and before long, I had a FUSE filesystem in F#, and I could use my KeyVault like a directory. When I tried to use it as a systemd mount, things got dicey...

1 year ago 0 0 1 0
Post image

This is also really helpful when implementing a callback with several struct parameters, because it's not just a bunch of IntPtrs:

1 year ago 0 0 1 0
Post image

Marshaling a managed struct to native is type-safe and very straightforward:

1 year ago 0 0 1 0

That means when you marshal code in and out of a pointer, it's not just an IntPtr that could point to anything...it's an IntPtr that points to a very specific type of struct.

1 year ago 0 0 1 0

In a decade of F#, I never did native interop, and this is an area the language designers did some really cool work. In C#, you're handling IntPtr. In F#, you have nativeptr<'t>.

1 year ago 0 0 1 0
Post image

I'm getting into some areas I used independently, but never together: #fsharp, P/invoke, and #libfuse.

This is for a project to use an Azure KeyVault as if it were a Linux filesystem: github.com/ninjarobot/K...

1 year ago 3 2 1 0