.NET For Strippers Project looking for Developers

Published Sun, Jun 20 2004 16:37 | William

A while back, Casey  discussed writing a book called .NET For Strippers.  That was one of my first experiences with Brains-N-Brawn and I immediately realized he had to be one of the coolest dudes in the universe.  Anyway, you may also be aware that I am founder and Supreme All Knowing Mullah of the Sycophant Cult.  As such, I would reallly like to get started on a cool project that highlights this fact.  So, I want to get cracking on a few tutorials a la .NET For Strippers. We'll need a strong object model and I need some help here on the design and analysis.  For instance, we can have “Chick” as a base class.  After we run through the inheritance chain we can whittle out Stripper.  However, Casey will probably demand that we provide full support for PornStar and other cool categories.  But since many porn stars are strippers and vice versa, but there's no requirement in either regard, I want to make sure we model this correctly.  We also need to put some serious thought into StrippersBoyfriend (One implementation could  inherit from Boyfriend -- we could have a lot of fun with this too.) as well as Patron.  Patron may or may not be male so we'd need a model that's flexibile enough to squeeze in everything from Lipstick to Bull/Diesel.  Patron also has a lot of possibilities but the crux of everything needs to be on Stripper.  Anyway, if done correctly, this could be a very funny way to teach OOP and something tells me that it would garner some interest.  Sure, it will probably limit some job prospects but that debate is over.  Besides, what kind of Sycophant Cult Leader/All Knowing Mullah would I be if I let that get in the way.  (Also, because Google has picked up other instances of me calling myself the “All Knowing Mullah“ but  it's a joke.  I'm not a radical Muslim or aspiring Taliban member or any crap like that)  Please don't write me asking to support Hamas or any other a-hole group like it)

 No doubt we can get some support from the Master Himself and get some WSE 2.0 support the project once we hash out the design.  Please let me know if you are interested.

Comments

# William said on June 20, 2004 8:38 PM:

You will need three types of collection/container objects. Club, Car, and Orgy. IE for Club:

Club myClub;
int iNumHotStrippers = METRIC_ASSLOAD;
for(int i=0; i<iNumHotStrippers; i++){
myClub.AddStripper();
}

and we need to randomize the .giveLapDance() method of the Stripper object so that sometimes instead of executing a lapdance it randomlly calls the private method .giveFreebieBlowJob(Swallow=TRUE)

heh this could be a lot of fun.

# William said on June 20, 2004 11:51 PM:

Andy is hereby Promoted to co-Software Architect because of his enthusiasm and wonderful insight. Ok, Club is definitely one of our objects and I'm putting you in charge should you accept the assignment. You can handle Bartender, Bouncer Cocktease/Tail Waitress, DJ and Bouncer. This may be a bit much and we can shift resources if need be.

I want to work on loser boyfriend or BullDyke Lifestyle partner. I have a clever way to segue into Firefighting that will really ruffle some feathers.

Casey will be in charge of Ex Strippers and financial transactions with them.
So far I love what I've been seeing .. .we need every bit of hel we can get. This is going to be cooll.

# William said on June 20, 2004 11:51 PM:

Andy is hereby Promoted to co-Software Architect because of his enthusiasm and wonderful insight. Ok, Club is definitely one of our objects and I'm putting you in charge should you accept the assignment. You can handle Bartender, Bouncer Cocktease/Tail Waitress, DJ and Bouncer. This may be a bit much and we can shift resources if need be.

I want to work on loser boyfriend or BullDyke Lifestyle partner. I have a clever way to segue into Firefighting that will really ruffle some feathers.

Casey will be in charge of Ex Strippers and financial transactions with them.
So far I love what I've been seeing .. .we need every bit of hel we can get. This is going to be cooll.

# William said on June 21, 2004 7:32 AM:

Don't forget Lonely Lapdance Debtor-- the guy who gets talked into lapdance after lapdance and runs a tab on his card -- Obsessed Stripper Fan -- The guy who only goes when his favorite girl is there, and she has to be walked to her car by the bouncer at night.

Actually, that guy could just be the base StripperPatron object, but with ObsessiveTendencies == true; and KindaCreepy == true;

# William said on June 21, 2004 8:09 AM:

in the spirit of andy's comment:

StripperPatron loser = new StripperPatron();
Bouncer biff;
...

while(lapDance.IsFinished != true) {
if(loser.ObsessiveTendencies == true || loser.KindaCreepy == true) {
biff = stripperBabe.GetBouncer(BouncerBehavior.Belligerent);
biff.TossOutOnAss(loser);
}
}

# William said on June 21, 2004 8:13 AM:

ex-strippers ... bastards :) hey Bill, i definitely remember making the '.NET for strippers' comment, but i just searched the articles and cannot find it. do you have any idea where that originated? i'm actually thinking that i might have stripped (pun intended) that out to get some big name person to link me back then. kicking myself if thats the case :( will have to do a grep on my archives to be sure

# William said on June 21, 2004 10:23 AM:

Phil, good call on the BouncerBehavior enum. That's going to be key.

# William said on June 21, 2004 11:34 AM:

Casey:

It was one of your first articles and it was something written prior to January of last year. I'll see if I can find it. I remember that I read it the same day that I read what was either an article or interview with you where they described your job as something like "When Casey is not writing code he's busy working on revolutionizing the porn industry" or something really kick a33 like that. You were living at the Pennsylvanian at the time too (I know I probably sounds like some sicko Stalker but it just stands out b/c I thought it was soo cool to see an ultra early adopter that was in to so many cool things).

I may well have a copy b/c I know that I saved the text of Freespeech and a few others so I could read them on my PDA.

Well it looks like we have some major Talent getting in on the project. We've got to create an ExStripper Class too and of course a Developer with a GetsPaidByExStripper property. Phil and Andy have already shown some real initiative and we need to keep fleshing this out, but I think we may be sitting on a OOP Tutorial that will generate a lot of interest. Plus, I'm thinking that if we include enough advanced theory/concepts, we could get 'serious' people pointing to it as long as we don't go too far over line. I oriignally had a Class Property (bad choice of words for a property, I know) that would be an enum, Goddess, HighClass, GarbageBox, PimpledA33, StickPig, TotalSkank. Then for total Skank I was going to have VDType. Then I thought nah, be specific so I could like have ChlamydiaType - Festering, CheeseAndSmegma etc. But although this could be quite funny, probably a bit too 'over the top' for most people (I've been told that I'm over the top qutite a bit so I ought to keep it somewhat tame.

# William said on June 21, 2004 11:47 AM:

Phil:

I'm loving your concept there. Let me ask you something though (this is actually a design meeting that won't bore me to death). I want to implement this is a pretty thorough discussion of OOP that will be humorous, advanced and technically correct. I definitely see how TossOutOnAss would be implemented as a method (that's the most natural fit). Wondering though if it should be static or if we should restrict it to instance. All Bouncers throw out dumbasses. Then I was thinking, we need some events. So the stripper could raise, DumbAssPinchedMyAss and consequently, OnDumbAssPinchedMyAss().

Now, when this event is raised, the wealth of the patron will come into play. So we need a Intoxicated Enumeration as well as Wealth b/c that's how we'll be able to automatically dispatch the bouncer. DumbAssPatron needs to have a BeerMuscles property (true/false?) or something similar.

And we NEED to include full support for Bathroom Pissboy. Although these guys are usually really nice and all, we could still have a lot of fun here. We also need a StrippersUglyFriend class and a few others I can think of.

So if you would, do me a favor and think of any other objects we need in our Enterprise. When we write it up, we'll do it totally seriously, and speak of the Enterprise instead of StripClub and then discuss how we wished the Stripper's Architecture were a little more "Service Oriented" We could even delve into Aspect Oriented Programming and use Attributes store our metaData.

The most ridicule needs to go to dumbass drunk dude, Hard Ass Wannabe, StrippersUglyCockBlockingFriend, ChumpLosingAllHIsMoney etc. You always have great insights so please, if you can think of anything let me know.

I'm going to start drawaing the UML diagrams tonight in Rational Rose (Microsoft will probably break my neck if they catch me doing this with Visio)

Oh yea one other thing.. .Just to piss off the linux guys, we'll have an implementation for Mono - This can be really brutal. We can also have "LinuxUser" as the bottom of the barrel on one of the Loser Enums we have for stripper Boyfriend (and of course, this guy would only be the LoserBoyfriend of Male strippers).

Keep the good ideas coming - you guys rock.

# William said on June 21, 2004 12:26 PM:

bill: as far as TossOutAnAss(...) goes, you could do it either way. the difference depends on how far you'd go with the Bouncer class. obviously if it's static TossOutAnAss will more or less be the same fo every Bouncer instance. however, if we decide to have a ClubEmployeeBase base class, and then implement an IBouncer interface (and also have IBarTender, IWaitress, etc... which is good, because than you can do things like have some girl implement both the IWaitress and IStripper interfaces... which might provide a decent example of how to use multiple interface inheritance or interface-based programming and some polymorphic behavior as well.), the method would then have to be class based. this would definitely give you more flexibility because then you can have TossOutAnAss throw the guy through the window, or take all his money first, or put the guy through a wall...(depending on whose implementing it)you could have definitions like:

public class ExFootballPlayer : ClubEmployeeBase, IBouncer {}

public class ExConvict : ClubEmployeeBase, IBouncer {}

This way you can have some common methods for every club employee, but than you can mix and match their roles. We could use the same pattern for patrons too.

i also think a novel approach might be using a decorator pattern for constructing some of the strippers. might be pretty cool too (instead of attributes) this way you can have your concrete class decorated with different kinds of features for each stripper like tattoos, different kinds of props, acts, or different kinds of "special talents." i could also be going over the deep end here....(kind of like how the IO stream classes work)

# William said on June 21, 2004 3:03 PM:

Phil,

so staying in the same vein, we would have ClubPatronBase class, which would give similar data to all patron types like bool runTab, and cashOnHand.

Then, we have a few interfaces like IPervert, ILoser

which leads to

public class LoserBoyfriend : ClubPatronBase, ILoser {}

public class Stalker : ClubPatronBase, IPervert, ILoser ()

To what Bill was saying, I think the ClubPatrons should raise events that the ClubEmployees consume. So, ClubPatron fires the CashRemovedFromPocket event, the Stripper is listening for that event and on seeing it the WorkHimForALapdance method goes off. ClubPatron raises FinishedDrink and Bartender fires Refill().

Similarly, if the ClubType does not allow for touching during a lapdance, the Bouncer should really be listening for the ClubPatron firing the GrabHerAss event when his arousal iterator reaches a certain threshold so that the Bouncer can react to the event, because the Stripper may not care about that event herself and let it just bubble up.

Maybe there is room to work reflection in here (although that isn't strictly an OO topic)...the bouncer is going to have to load the patrons into memory and make decisions that way.

# William said on June 21, 2004 3:32 PM:

scott: exactly. i like the events too. we could make a custom strongly-typed collection that holds types of ClubPatronBase and this class would be a member in the Club class itself. that way when a call is made like:

Stalker linuxGuy = new Stalker();
LoserBoyfriend openSourceZealot = new LoserBoyfriend();
DeadBeat iWasOutsourced = new DeadBeat();

patronCollection.Add(linuxGuy);
patronCollection.Add(openSourceZealot);
patronCollection.Add(iWasOutSourced);

foreach(ClubPatron in patronCollection) {
IBouncer meatHead = new ExCon(BouncerBehavior.ExtremePrejudice);

if(patron is IBroke)
meatHead.TossOutOnAss(patron);
}

that'a one possible way of de-coupling the patrons from the bouncers.


# William said on June 23, 2004 12:32 AM:

Ok, the namespace on GotdotNet will be on GotDotnet tomorrow. This is going to be cool. Very open design processes.... just want the stuff to rock.

# William said on June 23, 2004 11:34 AM:

I'm hopeful that many are welcome in contributing?

-J

# William said on June 23, 2004 5:04 PM:

Justice:

Yes, by all means please feel free to join. The more the merrier!

# William said on June 24, 2004 3:44 AM:

OK... so if this is to be a good 'case study' type application for CS students then how about we turn it into a simulation type system.

Such that we can use it to simulate all sorts of things to do with a club (olr a group of clubs). E.g. we could use our model to simulate the economics of a club... or the spread of a contagious disease. etc...

We could maybe use some agent modelling techniques...

# William said on June 24, 2004 9:28 AM:

Chris:

Well here's the deal. I finally got my girlfriend to more or less agree to do the documentation in HTML Help, and we're all still in the brainstorming phase. I think the main purpose is to do somehting amusing and funny. In so doing we can create a project that will have the side effect ot teaching .NET in an intriguing way.

Once the objects are created we can do all sorts of stuff with it. The idea of simulation is pretty interesting to me. I mean, with a solid framework in play you could easily modify the thing and build it such that some groups are made in a class each one representing one of the parties in the program. THen you could give them a bunch of rules and they are free to build characters within those rules and guidelines.

You could employ some simple Game THeory scenarios using Chamgpagne Rooms for instance - a simple modification to something like the Prisoner's dilemma as an example. You could also do use Linear Programming to show optimization... I have $100.00 - what actions would I take to maximize the number of drinks I got and the number of dances etc. The possibilities are endless. However the core task is building the base objects and showing the desingn and analysis part of this. I had a lot of fun in economics and econometrics and I can easily see that you could make a game implementation based no a framework like this. That will be a separate projects(s) but I'm absolutely interested and would love to get working on some of those implementations once we get everything rolling. I'd love to hear any ideas you or anyone else has. Let me know what you're thinking and we can start looking at ways we can build stuff to ultimately accomodate this sort of functionality. Also, we could do some basic probablity with it (If you were a bouncer, what are the chances that everyone you work with will be having PMS on the same day)

We also need some female involvement. I mean at present, we're going to have a bunch of Virgin BiSexual Stripper objects with perfect T & A and only love .NET programmers. Then the club will be filled with really good looking studly C# prorgrammers who also have really funny blogs. To this end we probably need some diversity b/c the way things are looking, there are going to be a bunch of Linux and Mac users that the strippers ignore so they can come talk to the C# guys. Anyway some female perspective could be pretty funny and make a great addition.

So by all means if you know anyone that wants to participate, let me know.

# William said on June 24, 2004 9:34 AM:

hey guys..sorry to be off topic here...anybody know of a blog community in english, with .net as main course who's currently taking registrations??

again, sorry to be a mung bean and break your blog but doing the google-thing is proving rather inadequate atm!

# William said on June 25, 2004 7:32 PM:

Hi Brian:

Have you tried eBlogger or Blogspot? www.blogspot.com .I think .NETJunkies still has some too. If you are active in .NET Development, Derek is still taking people over at www.Devbuzz.com and if you are interested, let me know. We are primarily a CF site but we are expanding to all things .NET so let me know.

Cheers,

Bill

# TrackBack said on June 28, 2004 9:41 AM:

.NET For Strippers

# William said on June 28, 2004 6:04 PM:

I've not seen the most important aspect of the Stripper: cocaine

if(lapDance.IsFinished = true) {
stripper.DoLine(2);
if(stripper.LinesDone = 10) {
stripper.GoToHospital
}
}

You also have to put in those rare instances when if you give 'extra' money you get 'extra' 'service'. Or also those other rare instances when you don't have to pay, a stripper takes a break, takes you to her car and bangs your brains out.

# William said on June 29, 2004 9:53 AM:

Bill:

finally got set up...dotnetjunkies seemed a good place..thanks for the tips guys.

and you know my beliefs on CF..i stay away from it...but thanks for the offer anyways

# William said on June 30, 2004 12:06 PM:

Brian:

You never got back to me on the CF issue, is it the CF you hate or Cold fusion?

# TrackBack said on May 13, 2005 8:12 AM:

# William said on June 18, 2005 5:05 PM:

This would be the coolest OOP book of all time.

Search

This Blog

Tags

Community

Archives

News

My other sites

Cool Stuff

Book Stuff

Security

ORM

Data Access

Funny Stuff

Compact Framework Stuff

Web Casts

My KnowledgeBase Articles

My MVP Profile

Design Patterns

Performance

Debugging

Remoting

My Fellow Authors

My Books

LINQ

Misc

Speech

Syndication

Email Notifications