Iconography

Once upon a time I was working on a project at Apple code-name “Pogo” — a few of us had fond memories of Walt Kelly’s old cartoon character, we made up words to fit the acronym, did a T-shirt, and a project was born [actually I don’t think there was a T-shirt].

Anyway, I went into work one Saturday intending to write some code, and found myself in a funk.  So I spent a few hours in an icon editor and made this.  I replaced the icon of our group’s file server and left for the weekend.

A year or two later I saw the icon being used by other groups (one guy had it on his desktop during a presentation).  Funny.

It’s also astonishing how fiddly a 32×32 black-and-white icon is to get “right.”  I think I had a dozen variations on the hair and nose until it looked decent.  Some of the real artists I’ve worked with might have tossed this off in a hurry.  Might be stupid, but 15 years later I’m still kind of proud of it.

Pogo remains one of my favorite comic strips.

 

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

 

//
//  pogo icon, rescued from some postscript i wrote a long time ago
//
using System;
using System.IO;
using System.Collections; namespace XXX
{
    public class YYY
    {
        static byte[] pogo = new byte[]{
            0x00,0x1E,0x70,0x00,0x00,0x31,0x48,0x00,0x00,0x48,0xC5,0x00,0x00,0xC0,0x06,0x80,
            0x01,0x00,0x02,0x80,0x02,0x00,0x00,0x80,0x01,0x80,0x00,0x40,0x06,0x00,0x06,0xE0,
            0x0C,0x00,0x08,0x20,0x08,0x00,0x00,0x10,0x06,0x00,0x02,0xD0,0x08,0x00,0x05,0x30,
            0x08,0x00,0x08,0x10,0x10,0x06,0x08,0x7C,0x0C,0x09,0x09,0xF2,0x08,0x16,0x09,0xA1,
            0x08,0x11,0x01,0x81,0x08,0x10,0x00,0x09,0x08,0x08,0x00,0x15,0x04,0x00,0x00,0x2B,
            0x04,0x00,0x00,0x06,0x03,0x00,0x02,0x0C,0x00,0x80,0x06,0x38,0x00,0xC0,0x0B,0x60,
            0x00,0x30,0x00,0xC0,0x00,0x0C,0x01,0x80,0x00,0x06,0x01,0x00,0x00,0x03,0x81,0x00,
            0x00,0x03,0xE7,0x00,0x00,0x06,0x7F,0x00,0x00,0x0C,0xE6,0x80,0x00,0x0F,0xFF,0xC0
        };
        public static void Main(string[] args)
        {
            for ( int i = 0; i < pogo.Length; i += 4 )             {                 for ( int j = 0; j < 4; ++j )                 {                     for ( int b = 7; b >= 0; --b )
                    {
                        if ( (pogo[i + j] & (1 << b)) != 0 )                             Console.Write("##");                         else                             Console.Write("  ");                     }                 }                 Console.WriteLine();             }         }     } }     

This entry was posted in Rantage. Bookmark the permalink.

13 Responses to Iconography

  1. Kaishaku says:

    Neat. I think WordPress changed the increment on your deepest for from “–b” to “-b”. (it also did a weird thing with the xs in the hex values.)

    For a school project recently I needed to keep track of 2000 booleans (in C) and I was thinking of making a 250 char array and bit shifting…. then decided that the TAs would probably not care or appreciate the 1750 byte savings.

  2. Kaishaku says:

    Oh, it did the same thing to me. It doesn’t like double minus signs.

  3. Abel says:

    Neat code! I don’t think I would’ve gone thru all that logic in my head to save some bytes (Very bad me!).

  4. landon says:

    Yeah, WordPress mangled some of the code as Kaishaku points out. I’ll fix it.  [update: WordPress is valiantly holding onto its own idea of C syntax.  Meh.]

    As for saving bytes, the bitmap representation was a cut-and-paste from ResEdit’s “show as hex” (which got propped into PostScript before landing here), and it was easier to write code to extract the bitmap than to expand the bitmap rep itself once.

  5. Atanas Boev says:

    Wrap your code in these tags:
    [sourcecode language=’css’]
    your code here
    [/sourcecode]
    … it also auto numbers line numbers.

    http://support.wordpress.com/code/

  6. Anon says:

    I thought you were going to talk about the JR “Bob” Dobbs 2×2 character block in the Atari ST character set.

  7. Joe Larson says:

    I never realized how much post script looks like C until just now.

    I think I’m going to do you a favor and try to make a favicon out of this for your site.

  8. landon says:

    That’s C#, not PostScript. I probably wasn’t clear. I had a background of this for all of my printouts at Apple for a while….

  9. Joe Larson says:

    Ah, that explains it. Heh.

    I’ve got your favicon all ready. You’ve got my e-mail, so contact me and I’ll send them on up to you.

  10. Kaishaku says:

    Do you like the C#? It seems like it could be useful for quickly throwing together GUIs.

  11. landon says:

    @Kaishaku: I spent several years working in Java before starting with C# in around 2001. After about a month, I remember thinking: “Thank God, the nightmare is over.”

    I love C# — I have to admit that I’m not up on the latest stuff (haven’t had the opportunity to do a project that needs LINQ, for instance). But it’s a ton of fun to program in.

  12. Joe Larson says:

    Wow. First this. Then I do some research on Pogo, find a cool website that has a few comics, loved them, then one of Walt Kelly’s pogo quotes is quoted on my daily quotes page. (http://www.quotationspage.com/quote/554.html). What a wild coincidence.

    Here’s that favicon I made for you. Just click the link and I hope we’ll be seeing this soon on your site. http://dl.getdropbox.com/u/51874/favicon.ico

  13. Kaishaku says:

    Cool. I’ve only written programs for Windows using C and the Win32 API. I love C but doing Win32 GUI stuff is pretty painful for me. I do like Java, but I’m not a fan of C++. That said, it seems like J# is second-rate compared to C#.

Leave a Reply

Your email address will not be published. Required fields are marked *