Dungeons and Dragons outlawed for outlaws

By alschneider at January 27, 2010 07:09
Filed Under: Gaming

I found this article on the web and had to post it. Some of the arguments presented are laughable… Promotes gang activity? Well, it is a quest based game with parties of varying talents. Although I haven’t found a compendium for Crips, Bloods, and Aryans.

 

MADISON, Wis. — A man serving life in prison for first-degree intentional homicide lost his legal battle today to play Dungeons & Dragons behind bars.

 

Kevin T. Singer filed a federal lawsuit against officials at Wisconsin's Waupun prison, arguing that a policy banning all Dungeons & Dragons material violated his free speech and due process rights.

 

Prison officials instigated the Dungeons & Dragons ban among concerns that playing the game promoted gang-related activity and was a threat to security. Singer challenged the ban but the 7th U.S. Circuit Court of Appeals on Monday upheld it as a reasonable policy.

 

dnd35 Dungeons & Dragons players create fictional characters and carry out their adventures, often working together as a group, with the help of complicated rules.

 

Singer, 33, has been a devoted player of the fantasy role-playing game since he was a child, according to the court ruling. After the ban went into effect, prison officials confiscated dozens of Dungeons & Dragons books and magazines in his cell as well as a 96-page manuscript he had written detailing a potential scenario for the game that players could act out.

 

Prison officials enacted the ban in 2004 after an inmate sent an anonymous letter expressing concern about Singer and three other inmates forming a "gang" focused around playing the game.

 

Singer was told by prison officials that he could not keep the materials because Dungeons & Dragons "promotes fantasy role playing, competitive hostility, violence, addictive escape behaviors, and possible gambling," according to the ruling. The prison later developed a more comprehensive policy against all types of fantasy games, the court said. The appeals court said the prison's policy was reasonable and did not violate Singer's rights.

 

"After all, punishment is a fundamental aspect of imprisonment, and prisons may choose to punish inmates by preventing them from participating in some of their favorite recreations," the court said.

 

Singer was sentenced to life in prison in 2002 after being found guilty of first-degree intentional homicide in the killing of his sister's boyfriend. The man was bludgeoned to death with a sledgehammer.

 

Department of Corrections spokesman John Dipko said the department was pleased with the decision and will continue to enforce rules that are designed to maintain a safe environment.

 

Singer's court-appointed attorney, W.C. Turner Herbert of North Carolina, also did not immediately return a message seeking comment.

What’s new in Visual Studio 2010

By alschneider at January 27, 2010 04:36
Filed Under: Web / Software Development

Just one year ago I upgraded Visual Studio 2005 to Visual Studio 2008. There were a number of enhancements that are ‘behind the scenes’ and some notable improvements to intellisense and AJAX, which motivated me to finally upgrade. Well, that and support for .NET 3.5. But it seems that just as soon as I upgraded I started receiving information about Visual Studio 2010.

 

I took some time to research the product (still in Beta) to see if the list of changes was significant enough to warrant me spending another couple hundred bucks on yet another upgrade. Here’s some of the things I found.

 

Code Editor

The new Code Editor makes code easier to read. You can zoom in on text by pressing CTRL and scrolling with the mouse wheel. Also, when you click a symbol in Visual C# or Visual Basic, all instances of that symbol are automatically highlighted.

 

Better tools for Web Development

To me, this is reason enough to upgrade. The publishing and FTP portions of Visual Studio past were a far cry from what Dreamweaver offers. Now with enhanced publishing and rebuilding web.config on the fly, it looks like they have finally caught up.

 

  • Creating Web packages

    The Web Deployment Tool, also known as MSDeploy, enables you to package your Web application for deployment to an Internet Information Services (IIS) Web server. A Web package is a .zip file or a folder structure that includes everything a Web server needs to host your application. It contains Web content, IIS settings, database scripts, components, registry settings, and certificates. The Web Deployment Tool has been integrated into Visual Studio and enables you to create Web packages with one click.

  • One-Click Publish

    You can now publish to a server by using the Web Deployment Tool, FTP, folder copying, or FrontPage Server Extensions in one click. Visual Studio stores all the setting information, such as publish method, server information, and user credentials.

  • Web Configuration Transformations

    You can now configure your project to transform the web.config file during deployment. When you deploy the project, the settings in web.config automatically match the settings on your debug, staging, and production servers.

  •  

    It also includes something completely new:

    Visual F#

    Visual Studio 2010 includes F#, a new .NET Framework language that supports functional programming and traditional object-oriented and imperative (procedural) programming. F# combines the succinct, expressive, and compositional style of functional programming with the runtime, libraries, interoperability, and object model of .NET. In other words, you get the best of both paradigms.

     

    Right now I don’t have the time or patience to try another development product so an actual ‘hands on’ review is not coming anytime soon. For now, I’ll have to rely on what I’m reading in order to form an opinion. I think I’ll also wait for the product to go through it’s first service pack release before upgrading. Maybe by then they’ll have the kinks worked out.

    Hacking it: Old Skool Vol. 1

    By alschneider at January 25, 2010 16:40
    Filed Under: Computers, Marketing

    There are times when I tell someone much younger than me about some of the trials and tribulations of early Internet life.  You know… before DSL and cable modems, before Wi-Fi, before DVD’s. Sometimes they look at me like I was making all of it up just to amuse myself.

     

    Let me start with a little background. I have been a Software Engineer for almost 25 years. I have had many titles and worked for all sized companies, from fortune 100 to mom-and-pop. I was around when the Internet ‘happened’. When this weird, wonderful technological gift was bestowed upon humanity. I’m also old enough to know, for a FACT, that Al Gore did NOT invent the Internet. Ah, those glorious days of my youth, watching as computers progressed from 286 to 386 to Pentium… Watching as hard drives fell in price from a $695 10MB drive to a $60 1TB drive. But I digress.

     

    Such was my early involvement with the Internet that I hold the dubious distinction of building and installing the first Internet accessible dial-in server at the University of Phoenix for student communication. Prior to that they had to use a dial in Bulletin Board system called ALEx (Apollo Learning Exchange). I left there in ‘95 to dedicate my efforts to Internet related activities and joined up with a man who wanted to start his own dial-up ISP. It reached it’s limit at about 1000 subscribers and was giving Primenet (our biggest local competitor) a run for their money. So, with that said, I believe I am pretty well qualified to speak on the historical events and their significance / relevance, peppered with a little humor, sarcasm, and embellishment.

     

    Thus was born the thread Hacking it: Old Skool. Here I will chronicle some of the pitfalls, surprises, achievements, and flat out failures of various Internet activities. So gather around the campfire and I, the eSource tribal elder, will mesmerize you with tales passed down from Sysadmin to Sysadmin. These are the tales of the life force we call Internet spoken by those who were there to experience it many moons ago… (cue howling wolf).

     

    This first article deals with early attempts at email blast marketing and how the perpetrators would hide their tracks. Remember that in the early days of the Internet, our email programs were barely GUI. They had none of the features you kids enjoy today like spam filters (at least ones that worked) or embedded HTML. They were TEXT with simple links and limited styling. Pornography was a budding business back then and people were looking for ways to get people to click to their site thinking they were clicking on something else. Hopefully the person who clicked was A) A guy, B) Looking for porn anyway, and C) Too unfamiliar with the early browsers to release themselves from the shackles of the endless redirect!

     

    Knowing their dial-up ISP would delete their account if they got complaints against them sending such material, they looked for ingenious ways to send emails, make them look like they are from someone else, and completely wash their hands of them. One such technique was called “The Gullible Server.”

     

    In those early days, ISP’s were generally small shops that, as a group, looked out for each other and tried to help out as needed. There were many servers that had security holes, either by choice or incompetence, that left the door wide open to those looking to take advantage of their kindness.

     

    The Gullible Server involved finding an ISP whose SMTP server had lax security / checking. The email marketer would then create their email with fraudulent or unreliable links and create an email list of recipients. Then the following would occur:

    emailscam

    1) The FROM address would be the actual address of the intended recipient

    2) The TO address would be a bogus address at the domain server they were spamming through (say Fake_Address@nowhere.com)

    3) When the email reached the Gullible Server, it tried to deliver it to the bogus address on their server. It would not be found

    4) Trying to be nice, the Gullible Server would send the email back to the FROM address to let them know it was undeliverable

    5) The user listed in the FROM address receives the email and the nefarious email scammer’s plan is put in action

    6) Some angry users call nowhere.com and complain about receiving offensive unsolicited emails

    7) Clueless admin scratches his head trying to find the user Fake_Address@nowhere.com… No luck

     

    If the admin waited more than a couple of days to check the logs and see what user actually sent the email, they were most likely gone or simply did not exist (the logs, not the user). Remember that drive space was at a premium, so keeping long term records on small capacity HD’s was not a priority or a necessity for small, independent ISP’s.

     

    The scam had several variations as different filters and methods were developed for the email servers to combat this sort of thing. For those early hacking pioneers it netted them some benefit and riches. As the popularity of the Internet grew and ISP’s began having to fight and claw to hold on to their customers, the locks got even tighter and eventually this type of email spamming became a thing of the past.

     

    Now, off to bed you little scamps! I’ll regale you with further tales of Internet past some other time! 

    Web Marketing Ideas Can Come From Unlikely Sources

    By alschneider at January 25, 2010 03:01
    Filed Under: Marketing

    How often are you beat about the head and shoulders with some web marketing gimmick? I don’t much care for those pages (called squeeze pages) that trap you on that page, unable to click out of the trap without spawning pop-ups and redirects and slide in windows.

     

    The technique has been around forever and in just about every industry, not just the Internet. There was a car dealership in Phoenix that got in trouble for locking customers in the salesman’s office so they were unable to leave when the salesman went out of the room to talk to the ‘manager’. If you’ve ever bought or read any Internet Marketing get-rich-quick schemes, you know that the focus is to get people to a certain page and keep them there until they buy! Then they make you feel like an idiot for passing up the offer (don’t you want to join the exclusive club that makes thousands a day?).

     

    People nowadays are a little more Internet savvy. They steer clear of the Google ads that are obvious gimmicks and look for sites that truly have what they’re looking for. I never understood that sort of black-hat marketing where you click on something because the search engine told you it was what you searched for only to find it’s something completely different. Do these guys really think that someone searching for “Garden supplies” is going to buy car insurance on a whim from their trap ad?

     

    BTW: A lot of those get-rich-quick Internet Marketing courses that promise overnight wealth simply give you the material to start your own get-rich-quick marketing campaign selling the same course you just bought (or similar).

     

    Anyway, let me get to the point (finally!). There is an unlimited number of ways to get people to visit your site without tricking them or resorting to shady tactics. It just takes one original idea that is popularized by Internet users, not Google ads or pop-ups. People that visit, promote, and frequent those sites generate more real and loyal traffic than any search engine ad placement.

     

    dad Case in point, shitmydadsays. What is it? It’s a twitter / facebook account written by a young man who lives with his elderly father. When his father speaks pearls of wisdom, he posts them on Twitter (Example: "Son, no one gives a shit about all the things your cell phone does. You didn't invent it, you just bought it. Anybody can do that."). It’s very addictive. We all have relatives that have reached that age where they no longer care about what they say or who hears it, but this guy took it to the next level. The concept is so insanely simple that the genius of it escapes many who are still trying the unfriendly blast and trap methods. The Twitter account has over 1.2 million… that’s right, million, subscribers. The facebook page has almost half a million fans.

     

    Justin does not have any ads for his site other than the facebook ones. However, if he put these ramblings on a website and posted just a few simple relevant ad links, he would make bank! The traffic to that site just to check out the quotes would be phenomenal, and thanks to word of mouth the site would continue to grow like the Twitter / facebook pages have.

     

    Want proof that this is an Internet marketing goldmine? Check out the posers on facebook and other sites that are trying to horn in on this guys popularity. Again, do these people really think that someone is going to buy a diet pill because they landed on a site they thought was shitmydadsays? I think not.

     

    The last bit of proof that this honest, niche Internet entertainment source is explosively popular is this: They have a book deal and now CBS is in talks to make a show based on this guys postings! I have no idea how they are going to accomplish this because the beauty of the postings is in the colorful language. Congratulations to him and his family. Y’know why, because he did the right way, he built a simple mechanism to get the word out about his dad’s humor without resorting to the dishonest and slimy tactics of Internet marketers.

     

    My point is this… If you want to drive people to your site, give them some actual substance. Drudgereport is a free site that I visit multiple times a day because it lists headlines from dozens of news sources and doesn’t constantly beat me over the head with ‘buy this product now’ BS, pop-ups, or pop-unders. They rely on a few simple ad links that I click on to send a few nickels their way as a thank you for their website’s service. And if you find a site that provides decent content without those tactics, throw ‘em a bone and click their ads just to say ‘Thanks’.

    Validating email address format on your ASP webpage

    By alschneider at January 24, 2010 13:42
    Filed Under: Web / Software Development, Marketing

    If you’ve been a web developer for more than 5 minutes you know that you can’t create any type of website without getting a user to enter their email address. Sometimes this is done for marketing purposes or to add them to an email list for subscriptions, but whatever the reason the need is there on almost any website to prompt, validate, and record a visitors email address.

     

    An easy way to do this is with a JavaScript chunk of code that will look at the value the user entered and ensure it adheres to certain rules regarding how a standard email address is formatted. This will not validate that the email is a working account at the domain specified (that’s another post), but it will at least catch user input errors they might not be aware of when entering the address in the field.

     

    Test the code out on our email Format Test Page!

     

    Download the ASP and Javascript code used on the test page here: emailFormatExample.zip (2.48 kb)

     

    This file, emailTools.js, contains several functions that take a passed parameter and check the syntax to ensure it is formatted properly.

       1: function checkValidation(emailAddr) {
       2:     var message = 'OK';
       3:     if (stringEmpty(emailAddr)) {
       4:         message = "Error! There is no input value entered.";
       5:     } else if (noAtSign( emailAddr )) {
       6:         message = "Error! The address \"" + emailAddr + "\" does not contain an '@' character.";
       7:     } else if (nothingBeforeAt(emailAddr)) {
       8:         message = "Error! The address \"" + emailAddre;
       9:         message += "\" must contain at least one character before the '@' character";
      10:     } else if (noLeftBracket(emailAddr)) {
      11:         message = "Error! The address \"" + emailAddr;
      12:         message += "\" contains a right square bracket ']',\nbut no corresponding left square bracket '['.";
      13:     } else if (noRightBracket(emailAddr)) {
      14:         message = "Error! The address \"" + emailAddr;
      15:         message += "\" contains a left square bracket '[',\nbut no corresponding right square bracket ']'.";
      16:     } else if (noValidPeriod(emailAddr)) {
      17:         message = "Error! The address \"" + emailAddr + "\" must contain a period ('.') character.";
      18:     } else if (noValidSuffix(emailAddr)) {
      19:         message = "Error! The address \"" + emailAddr;
      20:         message += "\" must contain a two, three or four character suffix.";
      21:     }
      22:     return (message);
      23: }
      24:  
      25: function checkEmailValid (formField) {
      26:     if( checkValidation(formField) == 'OK')
      27:         return true;
      28:     return false;
      29: }
      30:  
      31: function stringEmpty (formField) {
      32:     // CHECK THAT THE STRING IS NOT EMPTY
      33:     if ( formField.length < 1 ) {
      34:         return ( true );
      35:     } else {
      36:         return ( false );
      37:     }
      38: }
      39:  
      40: function noAtSign (formField) {
      41:     // CHECK THAT THERE IS AN '@' CHARACTER IN THE STRING
      42:     if (formField.indexOf ('@', 0) == -1) {
      43:         return ( true )
      44:     } else {
      45:         return ( false );
      46:     }
      47: }
      48:  
      49: function nothingBeforeAt (formField) {
      50:     // CHECK THERE IS AT LEAST ONE CHARACTER BEFORE THE '@' CHARACTER
      51:     if ( formField.indexOf ( '@', 0 ) < 1 ) {
      52:         return ( true )
      53:     } else {
      54:         return ( false );
      55:     }
      56: }
      57:  
      58: function noLeftBracket (formField) {
      59:     // IF EMAIL ADDRESS IN FORM 'user@[255,255,255,0]', THEN CHECK FOR LEFT BRACKET
      60:     if ( formField.indexOf ( '[', 0 ) == -1 && formField.charAt (formField.length - 1) == ']') {
      61:         return ( true )
      62:     } else {
      63:         return ( false );
      64:     }
      65: }
      66:  
      67: function noRightBracket (formField) {
      68:     // IF EMAIL ADDRESS IN FORM 'user@[255,255,255,0]', THEN CHECK FOR RIGHT BRACKET
      69:     if (formField.indexOf ( '[', 0 ) > -1 && formField.charAt (formField.length - 1) != ']') {
      70:         return ( true );
      71:     } else {
      72:         return ( false );
      73:     }
      74: }
      75:  
      76: function noValidPeriod (formField) {
      77:     // IF EMAIL ADDRESS IN FORM 'user@[255,255,255,0]', THEN WE ARE NOT INTERESTED
      78:     if (formField.indexOf ( '@', 0 ) > 1 && formField.charAt (formField.length - 1 ) == ']')
      79:         return ( false );
      80:  
      81:     // CHECK THAT THERE IS AT LEAST ONE PERIOD IN THE STRING
      82:     if (formField.indexOf ( '.', 0 ) == -1)
      83:         return ( true );
      84:  
      85:     return ( false );
      86: }
      87:  
      88: function noValidSuffix(formField) {
      89:     // IF EMAIL ADDRESS IN FORM 'user@[255,255,255,0]', THEN WE ARE NOT INTERESTED
      90:     if (formField.indexOf('@', 0) > 1 && formField.charAt(formField.length - 1) == ']') {
      91:         return ( false );
      92:     }
      93:  
      94:     // CHECK THAT THERE IS A TWO OR THREE CHARACTER SUFFIX AFTER THE LAST PERIOD
      95:     var len = formField.length;
      96:     var pos = formField.lastIndexOf ( '.', len - 1 ) + 1;
      97:     if ( ( len - pos ) < 2 || ( len - pos ) > 4 ) {
      98:         return ( true );
      99:     } else {
     100:         return ( false );
     101:     }
     102: }

    Create a file called emailTools.js ( or download the sample .ZIP file above ) and place it in your sites root directory.

     

    In your .ASPX file, include a reference to the script file by adding the following line of code, preferably toward the bottom with other parts of your scripts.

       1: <script type="text/javascript" src="emailTools.js"></script>

    Next, add the textbox control to your page that will hold the email address the user enters

       1: <asp:TextBox ID="emailaddr" runat="server" MaxLength="50" Style="vertical-align: middle"
       2:     TabIndex="1" Width="300px" CausesValidation="True"></asp:TextBox>

    After the textbox control code that will contain the email address the visitor enters, you need to add a custom validator. Place it on the form so that if the user enters an address that is invalid, the message shows up on top of or below the email address textbox. This way the user can easily see the text when it pops up and make the necessary corrections. The first validator simply reminds the user that they need to enter an email address in order to continue. The second custom validator is what checks to see if the address is formatted correctly.

       1: <asp:RequiredFieldValidator ID="rfvFullname" runat="server" ControlToValidate="emailaddr"
       2:     ErrorMessage="Please enter your email address" Font-Bold="True" Font-Size="12pt" />
       3: <asp:CustomValidator ID="cvEmail" runat="server" Font-Bold="True" Font-Size="12pt"
       4:     ClientValidationFunction="checkEmailAddr" ControlToValidate="emailaddr" ErrorMessage="Email address is not formatted properly. Please correct." />

    Change the ControlToValidate value to the name of your email address textbox control on the form.

     

    Place a button on your form for the user to press when they are done.

       1: <asp:Button ID="Button1" runat="server" Text="Click to continue" OnClick="OnAddEmail" />

    Notice how the button has an OnClick variable that tells it to run our C# code block called OnAddEmail() and not our validation script? That's because the control will never fire the OnClick event until the validation specified in the CustomValidator and RequiredFieldValidator occurs and everything checks out. In our code behind, we have two functions. One to take care of the PageLoad and set our previous page variable, the second is the actual OnAddEmail function that records the users email and returns them to the page that sent them here. I have placed the code within the ASPX file and not in a separate file, but you can do it either way.

       1: <script runat="server">
       2:     public static string sPrevPage = "";
       3:     protected void Page_Load(object sender, EventArgs e)
       4:     {
       5:         // Save the originating page so we can send the user back whe done
       6:         if (!IsPostBack)
       7:         {
       8:             if (Request.ServerVariables["HTTP_referer"] != null)
       9:                 sPrevPage = Request.ServerVariables["HTTP_referer"].ToString();
      10:             else
      11:                 sPrevPage = "~/Default.aspx";
      12:         }
      13:     }
      14:  
      15:     protected void OnAddEmail(object sender, EventArgs e)
      16:     {
      17:         // Use this function to write the email address to a file
      18:         try
      19:         {
      20:             string sFilePath = Request.MapPath("~/emails/") + "visitor.log";
      21:             using (System.IO.StreamWriter sw = new System.IO.StreamWriter(sFilePath, true))
      22:             {
      23:                 sw.WriteLine(emailaddr.Text);
      24:             }
      25:         }
      26:         catch { }
      27:         Response.Redirect(sPrevPage);
      28:     }
      29: </script>

    Now comes the fun part… Insert the code at the bottom of the ASPX file to call the function(s) in our emailtools.js file that will tell us whether or not the email address is at least formatted OK.

       1: <script language="javascript" type="text/javascript">
       2:     var alreadyChecked = false;
       3:     function checkEmailAddr(sender, args) {
       4:         var retVal = checkEmailValid(document.getElementById('<%=emailaddr.ClientID%>').value);
       5:         if (retVal == true && alreadyChecked == false) {
       6:             alert("Your address appears valid. You will now be taken back to the previous page...");
       7:             alreadyChecked = true;
       8:         }
       9:         args.IsValid = retVal;
      10:     }
      11: </script>

    Now, when the user presses Enter or the submit button, the validation scripts fire. If they fail, they warn the user and lets them fix the errors on the form. Once a valid email is supplied, the name is recorded in the Visitors.log file, and they are returned to the previous screen or you can change the code to take them to a “Thank you” type page.

     

    You may be wondering about the variable alreadyChecked. It is needed because the checkEmailAddr function actually fires twice when the user enters a valid email address… Once for the validation and again for the form submission. This variable ensures our textbox message only gets displayed once.

     

    I hope this example helps and / or makes sense enough to help you with validating some of the user input.

    Left 4 Dead 2 - Review

    By alschneider at January 21, 2010 11:55
    Filed Under: Gaming

    I played the original L4D from Valve when it came out… Well, I played the demo version. The game itself was a newer twist on the FPS genre where you act as one of four survivors of a zombie apocalypse. The key is travel with your group (this is key) and get to various locations and cities without the hordes of zombies catching up with you.

     

    Left_4_dead_2pcboxart The game had a good bit of depth in the area of creating different zombie classes with different skills, speeds, and God-awful ways of making you die. This kept the strategy ever changing as you and the other three players tried to formulate a winning play based on the scenario’s terrain, zombie types, and goals. Valve released the Survival Pack months later so that players got the full Versus experience as well as the now-standard timed Survival mode.

     

    When L4D2 came out, my first thought was wow, that was fast. I said that because Valve has a propensity to take their time when it comes to sequels. I got the game and anxiously waited to see if it brought out new dimensions to the game play. It didn’t. Although it had five all new campaigns, this game was more like an aesthetic patch and enhancement of existing features than a whole new type of game. With that said, if you have L4D, keep it and wait for L4D2 to hit the bargain bin (or at least go below $30).

     

    If you have been waiting for an excuse to try L4D2, then the MSRP is well worth the price. It will provide you with hours of single player enjoyment as you master the various levels, weapons, zombies, etc. By all means, please play the single player missions first. It’s not like CoDMW2 in that if you familiar with WWII shooters you can pretty much kick it multiplayer without much more than a couple training missions. L4D2 has five new campaigns and, compared to the first version, has enhanced settings, more modes, and more responsibilities needed to win the level.

     

    Bottom line, if you don’t have it and are a fan of group RPG’s and zombies, by all means get the darn thing! If you have L4D, I would give a solid “M’eh” as to whether or not you should upgrade (at the current price).


    Looking for more stories? Check out
    Shoutwire Shoutwire - Internet News for the Masses

    Help us out by visiting our sponsors!
    Thank you

    Protect Your Business


    Recent Posts

    Recent Comments

    Comment RSS

    What We're Playing




    Who's Watchin' Me?