Well, we’re a few days into 2012 and no armageddon yet, so it’s probably safe to take a quick glance back over our shoulder at some of the technical stuff that’s flashed past in the preceding 12 months.
Continue reading Looking back at 2011
Tag Archives: Visual Studio
C++: The oldest new kid on the block
Nobody could have failed to notice the recent resurgence of interest in the C++ programming language. In particular, the recent Build conference was the most we’ve seen Microsoft talking about C++ for several years. Why has a language that’s been languishing in the “prehistoric irrelevance” category for so long suddenly come back into vogue?
Continue reading C++: The oldest new kid on the block
Calling MSBuild tasks with F#
The other day I was trying to understand some strange behaviour in msbuild with regard to how it resolves referenced assemblies. I thought I’d try directly invoking the tasks that are used during the build, specifically ResolveAssemblyReference, so that I could experiment with them in F# interactive. It turned out to be pretty straightforward.
Continue reading Calling MSBuild tasks with F#
Generating and plotting random numbers
For a while now I’ve been planning to write a blog post about pricing financial instruments using Monte Carlo techniques in F#. As part of this I needed to generate normally distributed random numbers, and while putting together the code to do it I realised it was interesting enough to warrant its own post.
I’m making use of a few F#/.NET idioms to make the process easier. For instance, sequences (.NET’s IEnumerable
) are used as the source of uniformly distributed random numbers. Also, to verify that the resulting numbers are actually normally distributed, we can easily use existing WPF/silverlight controls to visualise the values direct from within Visual Studio, in a manner similar to this previous post – but without having to write the plotting code ourselves.
Continue reading Generating and plotting random numbers
Pinned DataTips in Visual Studio 2010 Beta 2
Installing Windows SDK breaks F# Visual Studio integration
Beware! If you install the Windows SDK – perhaps to get access to the interesting looking WPF performance tools – you’ll find that it hoses your F# Visual Studio integration. I found that it causes intellisense tooltips to stop appearing, and the integrated F# interactive to crash Visual Studio. Both of these issues are a real pain; especially the inability to see the inferred types “live”, which is pretty much essential for F# development – where the focus is on compile time correctness.
I remembered seeing a post on that Windows SDK blog that I’d come across relating to a similar issue with the XAML editor (I’ve been doing some work with WPF recently, more on that in a later post) so thought I’d try the steps they recommend, in short, re-registering TextMgrP.dll:
regsvr32 "%CommonProgramFiles%\Microsoft Shared\MSEnv\TextMgrP.dll"
…and all my problems went away. Hope you find this useful.
Visual Studio Toggle Brackets Macro
After using a F# heavily for a while, I often found myself wanting to add brackets (or rather, parentheses) around some text. This is normally when adding a type specification to an argument in order to be able to use dot notation, e.g. going from:
let typeName t = t.Name
which causes “error FS0072: Lookup on object of indeterminate type based on information prior to this program point”, to the correct:
let typeName (t:Type) = t.Name
(These are obviously simplistic examples!)
So I broke out the Visual Studio macro editor for the first time in a while, and put together something to toggle brackets around the currently selected text. It’s naive, but, combined with Shift+Alt+Left Arrow to select the previous word, it’s effective:
Public Sub AddBrackets()
Dim s As Object = DTE.ActiveWindow.Selection()
If s.Text.StartsWith(“(“) And s.Text.EndsWith(“)”) Then
s.Text = s.Text.Substring(1, s.Text.Length – 2)
Else
s.Text = “(“ + s.Text + “)”
End If
End Sub
Copy this text into a module within your macro project, and assign a suitable keystroke using Tools|Customize|Keyboard.