## C <s>127</s> <s>119</s> <s>116</s> <s>108</s> 65 ##

This one uses the trick of the HTML answer of `^ i & j` getting it to print pretty output would take 1 more char (you can get really ugly output by sacrificing the `a^`).

    a=32,j;main(i){for(;++i<a;)putchar(a^i&j);++j<a&&main(puts(""));}

To make it pretty turn `(32^i&j)` to `(32|!(i&j))` and turn it from `++i<a` to `++i<=a`. However wasting chars on looks seems ungolfish to me.

Ugly output:

	 ! ! ! ! ! ! ! ! ! ! ! ! ! ! !
	""  ""  ""  ""  ""  ""  ""  ""
	"# !"# !"# !"# !"# !"# !"# !"#
	  $$$$    $$$$    $$$$    $$$$
	 !$%$% ! !$%$% ! !$%$% ! !$%$%
	""$$&&  ""$$&&  ""$$&&  ""$$&&
	"#$%&' !"#$%&' !"#$%&' !"#$%&'
		  ((((((((        ((((((((
	 ! ! !()()()() ! ! ! !()()()()
	""  ""((**((**  ""  ""((**((**
	"# !"#()*+()*+ !"# !"#()*+()*+
	  $$$$((((,,,,    $$$$((((,,,,
	 !$%$%()(),-,- ! !$%$%()(),-,-
	""$$&&((**,,..  ""$$&&((**,,..
	"#$%&'()*+,-./ !"#$%&'()*+,-./
				  0000000000000000
	 ! ! ! ! ! ! !0101010101010101
	""  ""  ""  ""0022002200220022
	"# !"# !"# !"#0123012301230123
	  $$$$    $$$$0000444400004444
	 !$%$% ! !$%$%0101454501014545
	""$$&&  ""$$&&0022446600224466
	"#$%&' !"#$%&'0123456701234567
		  ((((((((0000000088888888
	 ! ! !()()()()0101010189898989
	""  ""((**((**0022002288::88::
	"# !"#()*+()*+0123012389:;89:;
	  $$$$((((,,,,000044448888<<<<
	 !$%$%()(),-,-010145458989<=<=
	""$$&&((**,,..0022446688::<<>>
	"#$%&'()*+,-./0123456789:;<=>?

I actually kind of like how it looks. But if you insist on it being pretty you can dock four chars. Pretty Output:

	!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
	! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !
	  !!  !!  !!  !!  !!  !!  !!  !
	  !   !   !   !   !   !   !   !
	!!    !!!!    !!!!    !!!!    !
	!     ! !     ! !     ! !     !
		  !!      !!      !!      !
		  !       !       !       !
	!!!!!!        !!!!!!!!        !
	! ! !         ! ! ! !         !
	  !!          !!  !!          !
	  !           !   !           !
	!!            !!!!            !
	!             ! !             !
				  !!              !
				  !               !
	!!!!!!!!!!!!!!                !
	! ! ! ! ! ! !                 !
	  !!  !!  !!                  !
	  !   !   !                   !
	!!    !!!!                    !
	!     ! !                     !
		  !!                      !
		  !                       !
	!!!!!!                        !
	! ! !                         !
	  !!                          !
	  !                           !
	!!                            !
	!                             !
								  !
								  !

Leaving up the older 108 char, cellular automata version.

    j,d[99][99];main(i){d[0][31]=3;for(;i<64;)d[j+1][i]=putchar(32|d[j][i+2]^d[j][i++]);++j<32&&main(puts(""));}

<s>So I don't think I'm going to get it much shorter than this so I'll explain the code.</s> I'll leave this explanation up, as some of the tricks could be useful.

    j,d[99][99]; // these init as 0
    main(i){ //starts at 1 (argc)
      d[0][48]=3; //seed the automata (3 gives us # instead of !)
      for(;i<98;) // print a row
        d[j+1][i]=putchar(32|d[j][i+2]]^d[j][i++]);
        //relies on undefined behavoir. Works on ubuntu with gcc ix864
        //does the automata rule. 32 + (bitwise or can serve as + if you know
        //that (a|b)==(a^b)), putchar returns the char it prints
      ++j<32&&main(puts(""));
      // repeat 32 times
      // puts("") prints a newline and returns 1, which is nice
    }

Some output

								 # #                               
								#   #                              
							   # # # #                             
							  #       #                            
							 # #     # #                           
							#   #   #   #                          
						   # # # # # # # #                         
						  #               #                        
						 # #             # #                       
						#   #           #   #                      
					   # # # #         # # # #                     
					  #       #       #       #                    
					 # #     # #     # #     # #                   
					#   #   #   #   #   #   #   #                  
				   # # # # # # # # # # # # # # # #                 
				  #                               #                
				 # #                             # #               
				#   #                           #   #              
			   # # # #                         # # # #             
			  #       #                       #       #            
			 # #     # #                     # #     # #           
			#   #   #   #                   #   #   #   #          
		   # # # # # # # #                 # # # # # # # #         
		  #               #               #               #        
		 # #             # #             # #             # #       
		#   #           #   #           #   #           #   #      
	   # # # #         # # # #         # # # #         # # # #     
	  #       #       #       #       #       #       #       #    
	 # #     # #     # #     # #     # #     # #     # #     # #   
	#   #   #   #   #   #   #   #   #   #   #   #   #   #   #   #  
	 # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #