2.15.2007

OK, We've All Done It

OK, we've all had our weird escapades in the pursuit of love, sex, or whatever. It's common for people to want talk about their sexual conquests, but I want to talk about the times that it didn't work out. These are some of the strangest stories of mine that I can legally put in writing, and I want y'all to leave yours in the comments. This might get a little dirty in places, so if you're squeamish, just back away slowly right now.

Everyone's been there, at least I hope they have, whether they wanted to be or not. It's just something that happens. We can't explain it. Sometimes it's bad, and sometimes it's not. I'm speaking of the most classic romantic mishap of all, the One Night Stand. Almost all of my stories in this blog are going to be one-nighters, but this one stands out because of the peculiar reason why we never got together again. I had met this young lady at a club in Denver we used to call The Wave, and we hit it off really well and ended up at her place for a night (and morning) of really great sex. I tried the whole next week to get her on the phone, but she wouldn't answer. I knew she liked me, we had talked about going out again, so I couldn't understand why she wasn't calling me back. Turns out, she couldn't call me back if she wanted to. You see, I had stolen her phone - more correctly, she left it in my car. I found it about a month later, and by then I guess she changed the number. Anyway, Carrie if you're out there, I very much enjoyed your company and would like to see you again! My number is still the same, but I'm sorry I donated your phone to the women's shelter. I hope that's ok :)

This world is full of diversity and usually I celebrate it, but people are unique in the animal kingdom. We have the wildest array of fetishes and problems of any species on the planet, and even the most normal people are a little wild in the bedroom. This makes it extremely hard to judge people and therefore, extremely easy to wind up with someone who's a little short of a full deck - but only in the bedroom.

Such is the case with a person whose name I do not remember, and I hope I never do. She was simply charming when I met her at a local drag bar. I loved her outfit and attitude and we had a very nice conversation, so I was happy to continue the evening with some drinks back at her place. I didn't find her very attractive really, but she seemed nice enough and I was pretty horny and I had a good buzz too. I'm usually fairly passive and once I let my intentions known, I expect people to initiate things, so I let my intentions be known and was met with typical male behavior, I thought. I guess this person took it to mean that I wanted to be "submissive". Now I'm not talking about submissive in the young Mormon housewife kind of way, I'm talking about being the B in BDSM. With an experienced partner this can be a lot of fun, but on this particular occasion, "yeah that would be cool, just don't hurt me," was kind of a dumb thing to say. Let's just say in ten minutes I was tied to the bed and happily fucking this guy (he had turned back into a guy at this point). I was totally into it and the cuffs and straps weren't too tight or anything and I was having a good time. Two hours later I was not. See, people experienced with this kind of thing know that you can't just tie somebody up and sit on them for two hours. You gotta be inventive. Anyway I had had enough and when they asked me if I'd like to try a ball gag, I got up, said I'm done, and left. I saw the person a few times after that but I never said anything to them.

Some people just occasionally do something completely random that really pisses you off. I met a very nice guy one night and was taken by his good looks and totally hot Australian accent. He was dressed in what appeared to be a soccer outfit though, complete with shorts, socks and shoes. It was a little strange but he seemed like a nice guy so we went back to my place and had a few hours of drunk, somewhat rough sex. Anyway I kicked him out and went to sleep, or passed out I guess. When I woke up the next morning I had teeth marks on my neck. Literal teeth marks, the guy actually bit me. I've had people suck on my neck before but this guy fucking bit me. Wow. Anyway, now when I see him at a bar, I go around and tell all the girls that he bit me. I think it's a public service, especially for the girls who like that kind of treatment. I'm not one though. Anyway, if you saw me at Pridefest 2005 and didn't ask about it, that's what it was, ok. There was not enough makeup to cover it up. Sorry about that. I really hate that guy.

My last story might seem like something I shouldn't mention in a blog about fuck-ups, but it's too funny to leave out. I met a nice tall, large, jolly black man at Charlies, a Denver "cowboy gay bar". He was really good looking, in good shape, and about 6 foot 5 with football-player build. He was a god, and in more ways than that. Nevertheless, I never want to see him again. I took him back to my house and we were talking and having some drinks and I basically got up and sat in front of the couch and started to undo his pants. So, he wasn't "hard" really at all when I reached in and started to get the fun stuff out. Anyway, what I was greeted with reminded me of that magic trick where the guy pulls scarves out of his mouth for like ten minutes. I swear to god this guys cock was 8 inches soft, and pretty thick too. I thought... wow, I'm gonna have a good time with this. Let me tell you this ladies, when it starts at 8 inches and you haven't even done anything yet, you do not want to finish the job. This guy needs to get a job in the porn industry. I gave it a good college try, but I could not handle this situation. I'm sorry Tony, you're out.

Anyway I know we've all got stories like this, so I want to hear 'em! Please post your comments. Do not be afraid to be explicit. We're all adults here.

Have a groovy day!
Jasmine

2.06.2007

C# Objects - Does it create a new one?

In response to whether a new object is created during a particular type of loop, I gave the following answer. It has to do with what type of variable you are using, but sometimes the CLR creates a new object when you wouldn't expect it. Strings are one well-known cause of this, but it's important to understand the reasons why. The string is a special case because of the way C# implements it as an object, not because of some factor of the C# language or the compiler itself - it's an implementation detail, not a language feature. Most object references will not result in a new instance of the object simply from changing its value. For string though...

string s = "myString";
s = "another value";

That results in two instances of the string being created (and the one that says "myString" is now "lost" and will be garbage-collected). This is because strings are implemented as immutable objects, meaning their value can never be changed. In order to allow for normal programming constructs, the CLR simply creates a new string whenever the value is changed, discards the old string and assigns the new string to the reference. There are historical reasons for choosing this implementation, security being one of them (notably, the buffer overrun exploit). The .Net Framework provides the StringBuilder class to overcome performance limitations with strings of this type. For most other types of objects, that doesn't happen. If it's an int, you only get one instance, no materr how often you change the value.

int i = 25;
i++;
i = i+ 20;
for (i = 0;i < 20; i++) {
 //do some stuff
}

That whole block only results in one instance of i, since you're only changing the value. This:

for (int i = 0; i < 20; i++ {
 //do some stuff
}

This also results in only one instance of i. This on the other hand:

for (int i = 0; i < 20; i++) {
 int k = 10;
 //do some stuff with k
}

That will result in 20 instances of k, all of which will be garbage-collectable at the end of the loop. The type doesn't matter there. If you did this with a reference type, a string, whatever... you will get 20 instances of the thing, and they will all be thrown to the garbage collector, unless you pass them as a reference to some other thing. In some cases... this is what you want. Like this:

for (int i = 0; i < 20; i++) {
  ListItem li = new ListItem();
  //add the li to a ListView
  listView1.Items.Add(li);
}

That creates 20 instances of a ListView object (maybe 40, see below), but they will not be garbage-collected after the loop because someone else (the ListView) is holding a reference to those 20 new things. The fact that I called it 'li' each time is of no consequence, I can recycle the variable name as much as I want. Now, here's where it gets confusing. If I did this the other way...

ListItem li = new ListItem();
for (int i = 0; i < 20; i++) {
  //set some values for li and add it to the view
  listView1.Items.Add(li);
}

This will not create 20 instances of li, there will only be one and I can change its values around all I want. So... am I adding the same object to the ListView 20 times, or is the ListView making a copy of the object 20 times, resulting in 21 ListItem objects total? I know it will result in the ListView showing 20 things and they can all have different values... so I think it's generating a copy with the Add() method. I am pretty sure of that, but I'm asking if anyone knows for sure.

My overall point is that you can't use the rule "ref type, one behavior, value type, other behavior", because the situation is more complicated than that. You can see there are some obvious cases where you get a new instance, but there's some other, less obvious cases (such as string), where you get new instances because of some implementation detail of the objects involved. With string, I get a new instance because string is implemented to create a new one when the value is changed, with my ListItem, I'm getting a new instance because of the implementation of the ListItemCollection which I'm adding it to. Am I right about this?

The person who asked this question was asking what is "best" in their case, but it's pretty hard to figure out what is best, and it won't be best in all cases. However, if you know how things operate at a lower level, you can decide what's best with much more confidence. BTW, this is one thing I don't like about .Net (not C# really, I think .Net is the Evildoer here)... I'm not always clear about the performance costs of particular methods, since the .Net Framework likes to create new object instances willy-nilly like memory has no limits.

Clear as mud?
Jasmine :)

 
hit counter script