The Old New Thing

# Hidden message in a T-shirt, it's been done before

Raymond Chen

While everybody is trying to figure out the hidden message in Joe Belfiore’s T-shirt,¹ I figure I’d give you an easier puzzle.

Here is the pattern of 0’s and 1’s printed on the T-shirt handed given out at the Windows 8 kick-off meeting. Because you don’t have a project until you have a T-shirt.

```              001 01101110 0110
01110011 00100000 01010111
10 01100100 01101111 01110111 011
0000 01001100 01101001 01110110 01100
00000 01001001 01101110 01110100 011001
110010 01101110           1110100 0100010
1111000 0111000             101111 0111001
1100101 011100               01001 0110111
100100 0110111             110011 0010000
010111 01101001           1100100 011011
10111 01110011 00     0 01001100 01101
110 01100101 00100000 01001001 011
0 01100101 01110010 01101110 0
000101 01111000 011100
1 01110010 01100101 0111001001
1001 01101110 01100100 01101111 0111
110011 00100000 01    11 01101001 011011
1100100 0110111            1110011 0010000
01001100 01101                00101 00100000
01001001 0110                  0101 01110010
01101110 0110                  0101 01111000
01110000 01101                10010 01100101
0111001001010111             101110 01100100
1101111 01110111 01110011 00100000 0101011
101001 01101110 01100100 01101111 011101
0011 00100000 01001100 01101001 0111
1 00100000 01001001 01101110 0
10010 01101110 0110
```

The actual shirt clipped many of the digits to make the shape come out smoother. I’ve filled in the partial digits.

There are at least two typos in the shirt.

It didn’t take a room full of developers long to decode the message.

The digits are merely the binary encoding of ASCII characters.

```              001 01101110 0110              // Windo
01110011 00100000 01010111          // ws Wi
10 01100100 01101111 01110111 011      // ndows
0000 01001100 01101001 01110110 01100    //  Live
00000 01001001 01101110 01110100 011001   //  Inte
110010 01101110           1110100 0100010  // rnetE
1111000 0111000             101111 0111001  // xplor
1100101 011100               01001 0110111  // er In
100100 0110111             110011 0010000  // dows
010111 01101001           1100100 011011   // Windo
10111 01110011 00     0 01001100 01101    // ws Li
110 01100101 00100000 01001001 011      // ve In
0 01100101 01110010 01101110 0        // terne
000101 01111000 011100            // tExpl
1 01110010 01100101 0111001001        // orer  typo
1001 01101110 01100100 01101111 0111     // indow
110011 00100000 01    11 01101001 011011   // s Win
1100100 0110111            1110011 0010000  // dows
01001100 01101                00101 00100000 // Live
01001001 0110                  0101 01110010 // Inter
01101110 0110                  0101 01111000 // netEx
01110000 01101                10010 01100101 // plore
0111001001010111             101110 01100100 // r[?nd typo
1101111 01110111 01110011 00100000 0101011  // ows L
101001 01101110 01100100 01101111 011101   // indow
0011 00100000 01001100 01101001 0111     // s Liv
1 00100000 01001001 01101110 0        // e Int
10010 01101110 0110              // ernet
```

¹ Looks like they figured it out.