I've got a hammer and you're all f**king nails
Interlocked.CompareExchange is magic. No, seriously.
Yes, it does a comparison and replaces a value if the comparison is true. In all cases, it returns the old value. Why is that so interesting?
Well, you can read a value:
value = Interlocked.CompareExchange(ref _location, null, null). If
_location was already
null, it will . . .
Everything old is new again
While working on the new immutable engine of chaos today, I wrote myself into a corner and in the process re-discovered the classic coordinated transaction problem:
If you have two separate transactions that both need to commit together or roll back together, how can you ensure that happens as an atomic operation?
If I . . .
the best thing you'll never use
If you are doing parallel operations on immutable data you may run into a problem. A lot of us are used to using
[ThreadStatic] static fields to hold ambient state that exceeds the built-in ThreadPrincipal or CurrentCulture settings. If you are running in a web context you certainly have access to HttpContext, but otherwise you appear to be . . .
We will change your SSH keys and you will like it
In preparation for a new post, I logged in to GitHub recently. I created my account two years ago in anticipation of being able to open-source more code and I wanted to reserve my name; I had a couple of forked repos but that's it. A new baby and a wife with major back surgery will do that to you.
Imagine my surprise when I . . .
I hope you like public key cryptography
Let's break down a
.mobileprovision file piece-by-piece:
1 - The app ID prefix
<key>ApplicationIdentifierPrefix</key> <array> <string>X00X0X000XX</string> </array>
2 - When the profile was created and when it expires
<key>CreationDate</key> . . .
the post in which I swear a lot
UIPopoverController, why must you be such an odd duck?
I am finally trying to get Storm Sim updated for iOS 7 and since I need a dark theme the default behavior of "dim the background views" is useless. But you can't just turn that off... oh no sir! You have to subclass
UIPopoverBackgroundView and do the whole thing . . .
wherein we make a compiler do the work
The very first question any programmer has when they hear about immutable data structures is "how the hell can that possibly work when I can't change my data?"
The answer is rather simple, at least in an object-oriented language like C#. Instead of setting properties and fields, you call a method that returns a new . . .