Some people just don't get it.

The water mark and the sticky thread just isn't cutting it, something more drastic is needed, like say 3 strikes and you're banned for 24 hours.

Then there are a persistent minority with 10+ posts who still don't get it. And why would they when there are plenty of lap-dogs to clean up after them. Unless you put some serious inconvenience in the way, they're just not going to learn.

Just look in the C/C++ forums and see how many posts have been edited by AD recently for code tags. Man, being a mod here must really suck.

Get tough on these lazy people, and dish out a "keep it tidy" infraction along with every edit for code tags.

I'm not going to suggest a cprogramming.com style post checking tool, because that got flamed last time, so there's no point repeating myself.


On a side note, can we have an alias for [inlinecode] which is a tad shorter, say [icode] or maybe [ic].

WolfPack commented: Some good suggestions. +10
iamthwee commented: Nope. -2

Recommended Answers

All 28 Replies

I guess this suggestion was put up before, but the problem being we can't add a 5 point infraction for not using code tags and it also doesn't make any sense. A warning or two or a two point infraction at the max. Plus the ones who come here asking for help don't plan on sticking for long so they obviously don't care. Come to think of it, most of them don't even know what infractions or warnings are !!!

One way we can make them learn is by letting them know that without code tags there is no hope for getting any help...

The carrot and stick approach would seem to be the only one with any chance of working under the circumstances.

Maybe a polite PM to the offending poster pointing them towards using code tags and informing them they are unlikely to get any help unless people can read their code easily.

>>And why would they when there are plenty of lap-dogs to clean up after them

:angry: I resent being called a "lap dog"

>>Unless you put some serious inconvenience in the way, they're just not going to learn

Learn what? how to use code tags? Yes, I've given out a couple warnings about it, but I don't think it was worth the effort. I would rather just quietly add code tags (or correct them) rather than lose a DaniWeb member. Failure to use code tags is not really all that big a deal. What IS a big deal are people who use font and/or color tags on every line of their code. I don't bother to correct them -- don't have the ambition to edit all those lines.

I agree with Salem on some points, but I'm doubtful how much good a short ban would do when most of the people only stay to get their problem fixed. And the people that do stick around longer eventually DO learn it, it's just the newbies that have problems.

The real problem is that everyone new that posts here is so caught-up in their own problems that they fail to see all the warning signs along the way. Too bad.

What IS a big deal are people who use font and/or color tags on every line of their code. I don't bother to correct them -- don't have the ambition to edit all those lines.

But can't you just remove formatting with the top-left button in the edit window that looks like a slanted 'A'?

But can't you just remove formatting with the top-left button in the edit window that looks like a slanted 'A'?

It did nothing to the following example I cut out of another earlier post.

from datetime import date

I agree that it should be a priority to not lose a new DaniWeb member. Sure - they may initially come just to get their one question answered. But if it is a good experience for them, they will return or tell their friends. If their first experience is a negative one because they didn't entirely realize how DaniWeb is set up, then we might have lost a potential tech saavy member who otherwise could have had a lot to offer.

EVERY new member is important and should be thought of as a potential regular ... we have to make them feel welcome enough to want to return or they won't. I would say that about 90% of all regular DaniWeb members first came here because they were having some sort of problem (whether it was with hardware/software or a programming issue or whatnot) they wanted resolved, and then they stayed because they got a quick, friendly reply that encouraged them that this was a nice place. IMO if too many people are posting once and never returning, it's because we're not doing a good enough job welcoming them and encouraging them to stay.

Give DaniWeb newbies some slack because they really just don't know - they're not out to violate the rules. Instead focus your "being irritated" energy on the people who should really know better but violate the rules because they really just don't care or want to troll.

It did nothing to the following example I cut out of another earlier post.

from datetime import date

It will only work if you have matching opening and closing tags. So you need to close that /font as well :) I've also noticed that for some reason the strip button doesn't work in wysiwyg mode, so make sure the top right A button is depressed.

I agree 100% about not wanting to scare away newbies, hence the concept of sending a polite PM suggesting they look at the code tags as this will increase the chances of them getting help.

Of course, if AD and the other mods are happy with correcting the missing code tags - then it really isn't an issue at all :)

commented: Spot on! +12

> we might have lost a potential tech saavy member who otherwise could have had a lot to offer
I disagree. A 'tech savvy' member who has a 'lot to offer' would definitely try to learn how to use code tags and understand the forum rules. Its the kids who don't give a damn to anything as long as their problem gets solved, we are dealing with. :)

> Of course, if AD and the other mods are happy with correcting the missing code tags
Its not happiness, its call of duty. :)

Sorry, I disagree. Picture this scene = You're having a horrible tech issue you've been trying to fix all day and you're completely frustrated. You find this forum from a google search that seems to cover the topic and you decide to give it a chance because you have nothing to lose. You take the minute to register. You take the minute to wait for your confirmation email in your inbox. You take the minute to check your email and activate your account. You take a couple of minutes to find your way around the site and navigate to posting a new thread. You FINALLY get to ask your darn question, knowing you will only have to wait you don't know how long for a reply. At this point, are you really going to make the time investment into reading allll of the forum rules before you even post without even knowing if this site is worth investing even more time in? First you'd see if the site worked for you. If you get a reply which impresses you, then it will make you want to learn more about the site. But for all you know, this site could just be not for you. You're not going to spend an extra 10 minutes before you even get to post reading a long list of rules, only to find out the site doesn't have anyone on it who can answer your question.

Besides, I point you back to Stymiee (our super mod) who initially came here just to make one spam post to advertise his services and then leave.

commented: Very well said Dani. Couldn't have put it better myself. :) +12

> A 'tech savvy' member who has a 'lot to offer' would definitely try to learn how to use code tags and understand the forum rules.
Eventually, most likely. But many wouldn't make the time investment until they see whether or not they like the site ... aka after at least two or three posts.

Come on Dani, even you know very well that people who don't use code tags after they have been warned 2-3 times are not the ones who would like to stick around.

> Besides, I point you back to Stymiee (our super mod) who initially
> came here just to make one spam post to advertise his services and then leave.
No wonder he is so good at detecting spam. :)

> Come on Dani, even you know very well that people who don't use code tags after they have been warned 2-3 times are not the ones who would like to stick around.

I agree with this. I am referring to members who screw up on their first few posts by ignoring the watermark and announcement threads. Reread my scenerio :)

Member Avatar for iamthwee

I agree with Dani, it doesn't make any sense to bad rep newbies for not using code tags.

The moderators instead should be more diligent, and take the time to not only add code tags but also properly indent it for others to read. (Hint, hint)

After all unindented code is worthless. As I see there are still quite a few examples which have yet to be code tagged. :)

It doesn't take long anyway, I'd say at most 30 seconds per post. Very easy. Yup.

[edit] I just had a great idea, Dani could create a query just for the mods, which looks up all posts that have tell tailed programming syntax but no code tags. This will mean every day, when the mods sign in they can quickly check all the posts that need tagging.[/edit]

commented: Hey! No number theory! -2

>>The moderators instead should be more diligent, and take the time to not only add code tags but also properly indent it for others to read

Remember we all do this for free -- none of the mods are paid employees. I normally don't add code tags to code that has not been indented. I first hit the Edit button then look at the code. If its intented then I add the code tags, otherwise I see no point in using code tags. I think its asking to much of us to reformat the code according to OUR formatting standards, and we all probably have different code standards. Then I can see somebody suggesting to Dani that we need standard code formatting rules. No thanks.

Member Avatar for iamthwee

I disagree, it only take 20 seconds max to add code tags and indent the code.

And as long as the format is sensible there is no problem with different standards. As long as it is readable.

Member Avatar for iamthwee

Just in (20 sec to edit)

http://www.daniweb.com/forums/thread84509.html

#include "stdafx.h"
#include <iostream>
#include <cmath>
#include <iomanip>
using std::cin;
using std::cout;
using namespace std;
int main()
{
   const int MONTHS = 12;
   double loan, rate, balance, payment;
   double month;
   double interest;
   double principal;
   double monthlypayment;
   cout << "Loan amount"; //Loan amouny
   cin >> loan;
   cout << "Annual Interest rate:"; //Loan amount
   cin >> rate;
   cout << "Monthly payment:"; //Monthly payment
   cin >> payment;
   cout << endl;
   cout << setw ( 5 ) << "Month"; //Display moth
   cout << setw ( 10 ) << "Interest"; //Dispaly interest
   cout << setw ( 10 ) << "principal"; //Display principal
   cout << setw ( 10 ) << "Monthly payment"; //Display payment
   cin >> payment;
   cout << endl;
   cout << setw ( 5 ) << "Month";
   cout << setw ( 10 ) << "Interest";
   cout << setw ( 10 ) << "Principal";
   cout << setw ( 10 ) << "Balance" << endl; 
   cout << "..............................\n";
   balance = loan;
   double numPayments = loan - payment;
   for ( int x = 1; x <= numPayments; x++ );
   {
      double interest, principal;
      interest = rate / MONTHS * balance;
      if ( x != numPayments )
      {
         principal = payment - interest;
      }
      else
      {
         principal = balance;
         payment = balance + interest;
      }
      double balance = principal;
      cout << setw ( 4 ) << month;
      cout << setw ( 10 ) << interest;
      cout << setw ( 10 ) << principal;
      cout << setw ( 10 ) << balance << endl;
   } 
   return 0;
}

previously... (15 sec to edit)
http://www.daniweb.com/forums/thread84430.html

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Vector;
 
public class HangMan
{
   String dictionary[] =
      { 
        "boy", "girl", "mother", "father", "sister",
        "love", "sky", "wind", "water", "study", "ball", "cat", "dog",
        "puppy", "kitten", "apple", "pear", "lemon", "mango", "peach",
        "apricot", "chips", "steak", "fries", "cheese", "patato", "wedge",
        "heel", "hand", "foot", "arm", "leg", "nose", "face", "mouth",
        "tongue", "fingers", "toes", "line", "space", "phone", "cord",
        "core", "grass", "trees", "birds", "animals", "lazy", "funny",
        "king", "queen", "heart", "heat", "cold", "sun", "moon", "movie",
        "theater", "hairy", "big", "small", "large", "huge", "pig",
        "donkey", "cow", "chicken", "pizza", "bread", "stones", "sticks",
        "leaves", "letters", "alphabet", "soup", "hungry", "tired",
        "sleepy", "noisy", "caring", "friends", "month", "day", "light",
        "toothbrush", "savings", "bank", "account", "teller", "paper",
        "pencil", "tea", "coffee", "spirit", "ghost", "can", "melon",
        "necklace", "screen", "balloon", "string", "calendar", "work",
        "toys", "kids", "school", "class", "campus", "freedom", "liberty",
        "happiness", "university", "message", "marker", "crayon", "eraser",
        "music", "lyrics", "songs", "ballads", "shapes", "triangle",
        "circle", "rectangle", "square", "oval", "show", "video", "player",
        "team", "sport", "basketball", "football", "soccer", "softball",
        "baseball", "tennis", "hockey", "lacrosse", "volleyball", "circuit",
        "blade", "scratch", "hit", "home", "house", "safe", "safety",
        "number", "count", "bear", "goose", "llama", "panda", "lion",
        "tiger", "cheetah", "computer", "crackers", "rice", "fan", "shoes",
        "book", "story", "princess", "prince", "jester", "court", "jury",
        "judge", "bench", "scandal", "name", "newspaper", "press", "shove",
        "tear", "cry", "magic", "tricks", "cereal", "breakfast", "lunch",
        "dinner", "main", "course", "fork", "spoon", "knife", "lamp",
        "desk", "bottle", "highlighter", "cap", "medicine", "six", "seven",
        "flower", "rose", "petal"
      };
   String wordInMemory = null;
   String hang[] = {"(", "0", "0", ")", "-", "<", "=", "<"};
   public HangMan()
   {
      super();
   }
   public void startHangman()
   {
      boolean done = false;
      BufferedReader input = new BufferedReader ( new InputStreamReader ( System.in ) );
      do
      {
         System.out.print ( "\t\tEnter your selection:\n\t\t1. Play Hangman \n\t\t2.Exit program\n\t\tChoice = " );
         int choice = 0;
         try
         {
            choice = Integer.parseInt ( input.readLine() );
         }
         catch ( NumberFormatException e )
         {
            e.printStackTrace();
         }
         catch ( IOException e )
         {
            e.printStackTrace();
         }
         switch ( choice )
         {
         case 0:
         {
            System.out.println ( "Press 1 or 2" );
            break;
         }
         case 1:
         {
            play();
            break;
         }
         case 2:
         {
            done = true;
            break;
         }
         default:
         {
            System.out.println ( "Press 1 or 2" );
            break;
         }
         }
      }
      while ( !done );
   }
   private void play()
   {
      int rand_no = ( int ) ( Math.random() * 200 );
      if ( rand_no > 200 )
      {
         rand_no = 200;
      }
      wordInMemory = dictionary[rand_no];
      int numberOfLetters = wordInMemory.length(); 
      int falseAttempts = 0;
      int pendingLetters = numberOfLetters;
      boolean won = false;
      String letterGuess = null;
      Vector successAttempt = new Vector();
      Vector wordInVector = new Vector();
      Vector wordTyped = new Vector();
      for ( int ini = 0; ini < numberOfLetters; ini++ )
      {
         successAttempt.addElement ( " _ " );
         wordInVector.addElement ( "" + wordInMemory.charAt ( ini ) );
      }
      System.out.println();
      System.out.print ( "\t\tWORD : " );
      for ( int i = 0; i < numberOfLetters; i++ )
      {
         System.out.print ( successAttempt.elementAt ( i ) );
      }
      System.out.println ( "\n\n" );
      BufferedReader inBuff = new BufferedReader ( new InputStreamReader ( System.in ) );
      do
      {
         System.out.print ( "\t\tEnter your guess = " );
         try
         {
            letterGuess = inBuff.readLine().toLowerCase();
            if ( wordTyped.contains ( letterGuess ) )
            {
               System.out.println ( "\t\tYou already guessed this letter early " );
               continue;
            }
            else
            {
               wordTyped.addElement ( letterGuess );
               if ( wordInMemory.contains ( letterGuess ) )
               {
                  for ( int j = 0; j < numberOfLetters; j++ )
                  {
                     String letter = ( String ) wordInVector.elementAt ( j );
                     if ( letterGuess.equals ( letter ) )
                     {
                        successAttempt.setElementAt ( letterGuess, j );
                        pendingLetters--;
                     }
                  }
                  if ( pendingLetters == 0 )
                  {
                     won = true;
                  }
               }
               else
               {
                  falseAttempts++;
               }
            }
            System.out.println();
            System.out.print ( "\t\tWORD : " );
            for ( int i = 0; i < numberOfLetters; i++ )
            {
               System.out.print ( successAttempt.elementAt ( i ) );
            }
            System.out.println();
            System.out.print ( "\n\t\t" );
            for ( int f = 0; f < falseAttempts; f++ )
            {
               System.out.print ( hang[f] );
            }
            System.out.println();
            System.out.print ( "\n\t\tNo: of Attempts Left : " + ( 8 - falseAttempts ) );
            System.out.println();
            if ( falseAttempts == hang.length )
            {
               System.out.println ( "\n\t\t Word is " + wordInMemory );
            }
            System.out.println();
         }
         catch ( Exception e )
         {
            e.printStackTrace();
         }
      }
      while ( ( falseAttempts < 8 ) && !won );
      if ( won )
      {
         System.out.println ( "\t\tYou guessed it right !" );
      }
      else
      {
         System.out.println ( "\t\tYou lose !" );
      }
   }
   public static void main ( String[] args )
   {
      HangMan man = new HangMan();
      man.startHangman();
   }
}

previously ( 20 sec to edit)
http://www.daniweb.com/forums/thread84102.html

#include <stdio.h>
struct list
{
   int stn[10];
}
var;
char choice, ans;
int x = 1, st2;
main()
{
   clrscr();
   printf ( "[1] View Vacant Seats\n" );
   printf ( "[2] REserve a Seat\n" );
   printf ( "[3] CAncel a Reservation\n" );
   printf ( "[4] Exit\n" );
   printf ( "enter choice: " );
   choice = getch();
   switch ( choice )
   {
   case '1':
      view();
   case '2':
      reserve();
   case '3':
      cancel();
   case '4':
      clrscr();
      printf ( "Thanks! Come Again!" );
      getch();
      exit ( 0 );
   default:
      printf ( "Invalid Input!" );
      getch();
      main();
   }
}
view()
{
   clrscr();
   if ( x > 10 )
   {
      printf ( "All Seats are occupied!" );
      main();
   }
   else
   {
      for ( x = 1; x <= 10; x++ )
      {
         printf ( "enter seat no. : " );
         scanf ( "%d", &var.stn[x] );
         printf ( "\nReserve Another? (y/n)" );
         ans = getch();
         if ( ans == 'y' || ans == 'Y' )
         {
            reserve();
         }
         else
         {
            main();
         }
      }
   }
}
cancel()
{
   clrscr();
   if ( x == 0 )
   {
      printf ( "No reservation to cancel" );
      main();
   }
   else
   {
      printf ( "Enter Seat No. : " );
      scanf ( "%d", &stn2 );
      if ( stn2 == var.stn[x] )
      {
         x--;
      }
      else
      {
         printf ( "seat no. is not reserved!" );
      }
   }
}

So I don't see what the problem is?

>>So I don't see what the problem is?
The problem is that I don't want to manually space out all those lines.

But I found a happy solution Here is an on-line code beautifier that seems to do the trick quickly and effortlessly. Just past the code into the edit box and press Submit button.

The moderators instead should be more diligent, and take the time to not only add code tags but also properly indent it for others to read. (Hint, hint)

I have to disagree with you on this one, iamthwee. While it's a nice thing for moderators to add code tags to posts, they shouldn't be obligated to do it. Here's why: code tags are a benefit to readers. If the readers don't have the time to read untagged code, they're going to move on. It's the poster's fault if they don't add the code tags and don't receive help, but have you ever considered that moderators, who are volunteers, don't always have time to add code tags to every single post out there?

As for the PMs, will someone please explain why a "friendly PM" works any better than giving a link to the code tags sticky? Maybe it's going to have a minimal impact, but it certainly isn't going to stop the steady flow of newbies that post untagged code.

Without starting a flame war again, I'd like to say that in my opinion, an automated script that displays an error to the poster when it encounters untagged code would be the most feasible option. At least it's the poster that has to do the work, not the moderators.

Member Avatar for iamthwee

no i disagree, it doesn't take long to edit each post. Looks like the mods are at least trying now. Now why didn't they do this sooner? :)

A script, as discussed before is not a feasible option. The reason being anything that makes it "more difficult for newbies to post will be discounted." -Dani

As I said all dani needs to do is give the mods a query which shows them all the code that is not code tagged.

Newbies should not be blamed for their stupidity. We don't want to ignore them, we want to help them. I think that is that.

(Note to Dani) If you are using Ancient Dragon's online parser you need to choose the "Put the code again in the input box above after submit." Otherwise you aren't getting plain text but html.

Which will cause problems for characters such as <> etc

. Looks like the mods are at least trying now. Now why didn't they do this sooner? :)

we have -- maybe you just were not paying attention.

As for the PMs, will someone please explain why a "friendly PM" works any better than giving a link to the code tags sticky? Maybe it's going to have a minimal impact, but it certainly isn't going to stop the steady flow of newbies that post untagged code.

Because it provides a personal touch, a connection with a real person, that a link does not.

Because it shows that we have noticed the poster, that they are not being ignored.

Because it shows that we are more than automatons, that we are a community and that we care.

For starters :)

It won't stop that steady flow, I agree. But then I don't think that anything will for all the reasons that Dani has so eloquently related already. But it does allow us to make a connection to the membership beyond just answering or ignoring a question. Isn't that what being a community is all about?

A nice PM does indeed work wonders -- at least it did for one member. Some people, like him, just didn't understand how code tags worked. The use of warnings and infractures would probably have been counterproductive. Now his most recent post this morning contains correct code tags.

> no i disagree, it doesn't take long to edit each post.
I disagree. I absolutely refuse to add code tags to posts of those members who have been already warned a number of times. Maybe you have a lot of time firing up your favorite IDE, indenting it and reposting it -- many don't.

> Newbies should not be blamed for their stupidity.
Stupidity yes, casualness and carelessness no. And come to think of it, this thread has been started keeping exactly these kind of people in mind who never bother using code tags.

> We don't want to ignore them, we want to help them.
Help begets help. If someone ignores me repeatedly, I would probably do the same.

And last but not the least, I completely am in favor of a script which reminds the newbies to use code tags along with the link to the page which shows how to use code tags. Considering that they won't be able to make their post, they would definitely consider reading the announcements more carefully. But considering most people block scripts from sites, a client side script won't do the job...

Member Avatar for iamthwee

>I completely am in favor of a script which reminds the newbies to use code tags

Not gonna happen. Dani won't compromise on anything that makes it more difficult to post. And all the rest of it...


>Help begets help. If someone ignores me repeatedly, I would probably do the same

In that case be prepared to repeat yourself over and over. Much like Salem is doing right now. Do you see them chaning I don't. Doesn't take long to format as I have proved, 20 secs max if not less.

Ok moderators have no incentive waste their time (?), Dani does however. Dunno, I've laid it down.

I don't have a problem any more prettying-up people's code. But I'll be darned if I'm going to fix all those color and font tags that are in some people's posts. The A button in the upper-left corner of he message box only works when there are matching close tags for each open tag. I would like Dani to have a script that forbits color and font tags, or just quietly remove them when posted.

commented: Ever heard of regex, use it to create a generic expression to remove font tags etc? -2
commented: I am sure AD has seen more books than the regexes you have crafted Iamthwee... +25

For what it's worth, I've created a poll in the Software Development Lounge regarding a code tag-checking script. Maybe it should have been posted in this forum instead. Whatever.

Several points:

Other sites I use just have a note above the post window, reminding users to use quote or code tags. The watermark is hard to read, and is annoying.

Other sites have buttons with the actual tags they make on the buttons. This site has undecipherable bbeilroglyphics.

The ones from Word are known, but the following ones are strange:
- AA (it's blurry, so that means Alcoholics Anonymous)
- A/A
- the world with an infinity sign
- A crossed-out infinity sign
- A cartoon talk balloon
- A number sign (or hexadecimal???)
- A TV Set
- What looks like a tax form (eeyutch!)

Might I suggest some icons with equally ambiguous meaning?
- Spongebob Squarepants
- A clown throwing a pie
- A tuba
- The three balls of a pawnshop (meaning that two-to-one you won't get it back)
- The half of the world Microsoft left off the IE busy sign.
- A brick
- A muddy tennis shoe
- A record changer

And put the code button on the quick reply window.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.