cory arcangel€¦ · doogle.php 5 1

20
THE SOURC E ISSUE 7 Dooogle Cory Arcangel ;-) 2015 Arcangel Surfware www.arcangelsurfware.biz

Upload: trinhdat

Post on 30-Apr-2018

225 views

Category:

Documents


4 download

TRANSCRIPT

THE SOURCEISSUE 7

Dooogle

Cory Arcangel

;-)

2015Arcangel Surfware

www.arcangelsurfware.biz

readme.txt 3

1

6

11

16

21

26

31

/\\\ /\\\\////\\\ /\\\//

36 \////\\\ /\\\//\////\\\ /\\\///\\\// \////\\\

/\\\// \////\\\/\\\// /\\\ \////\\\

41 \/// \/// \///

Dooogle1

46Cory Arcangel, 2004

http://www.coryarcangel.com

51 Credz: Code help by Michael Frumin, concept help by Michael Connor & Jackie Passmore.

Requirements: Webserver, Pear::SOAP, Google API2.

Search engine which only returns results for Doogie Howser. Originally performed athttp://www.dooogle.com3.

56"Move over Lucifer, I’m more ruthless, leave you toothless." − Biggie

index.html 4

<html><head>

3 <meta http−equiv=” content−type ” content=” text /html ; cha r s e t=UTF−8”><t i t l e>Dooogle</ t i t l e><style>

< !−−body , td ,a ,p , . h{ font−f ami l y : a r i a l , sans−s e r i f ;}

8 . h{ font−s ize : 20px ;}.q{color :#0000 cc ;}//−−>

</ style><script>

13 < !−−f unc t i on s f ( ) {document . f .q . f ocus ( ) ;}// −−>

</ script><LINK REL=”SHORTCUT ICON” HREF=” http ://www. dooogle . com/ dooogle . i c o ”>

18 </head><body bgcolor=#f f f f f f text=#000000 l ink=#0000cc vlink=#551a8b alink=#f f 0 0 0 0 onLoad=s f ( )

><center>

<img src=” logo . g i f ” alt=” Dooogle ”><br>

23 <br><form action=” doogle . php” name=f>

<table cellspacing=0 cellpadding=0><tr>

<td width=25%>&nbsp ;</td>28 <td align=center>

<input maxLength=256 s ize=55 name=query value=””><br><input type=submit value=” Dooogle Search ” name=dooogle><input type=hidden value=”0” name=s t a r t>

</td>33 <td valign=top nowrap width=25%>&nbsp ;</td>

</ tr></ table>

</form><br>

38 <br><font size=−1><a href=about .html>About Dooogle</a></ font><p><font size=−2>&copy ;2009 Dooogle − Search ing 4 ,285 ,199 ,774 web pages</ font></p

></center><script type=” text / j a v a s c r i p t ”>

43 var gaJsHost = ( ( ” https : ” == document . l o c a t i o n . p ro to co l ) ? ” https : // s s l . ” : ” http://www. ” ) ;

document . wr i t e ( unescape ( ”%3Cscr ip t s r c =’” + gaJsHost + ” google−a n a l y t i c s . com/ga .j s ’ type=’ t ext / j a v a s c r i p t ’%3E%3C/ s c r i p t%3E” ) ) ;

</ script><script type=” text / j a v a s c r i p t ”>

t ry {48 var pageTracker = gat . getTracker ( ”UA−12213123−1” ) ;

pageTracker . setDomainName ( ” . co rya rcange l . com” ) ;pageTracker . trackPageview ( ) ;} catch ( e r r ) {}

</ script>53 </body>

</html>

doogle.php 5

1 <?extract ($ GET) ;////////////////////////////////////////////////////////////// This i s example code o f how to query the Google API us ing// Web Serv ices , SOAP, and PHP.

6 //// Author : Geoff Peters , January 6 th 2004.//// To run t h i s s c r i p t you need to ob ta in the Pear : :SOAP package .// You can ob ta in i t from h t t p :// pear . php . net .

11 // The example shown uses Pear : :SOAP ver s i on 0 . 7 . 5 .//// I f you don ’ t have admin i s t r a t i v e acces s to you web server ,// you can p lace the SOAP d i r e c t o r y t ha t conta ins the Pear : :SOAP// source f i l e s somewhere on your server , and then modify the

16 // PHP inc l ude path us ing i n i s e t to in c l ude t h i s d i r e c t o r y .//// For example :/∗

21 // s e t the inc l ude path to use the new pear s t u f fi n i s e t ( ’ i n c l u d e pa t h ’ , ’ . : / home/user / p e a r s t u f f : / usr / l o c a l / l i b /php ’) ;

∗/// Note t ha t Pear : :SOAP has s e v e r a l dependencies on o ther Pear packages ,

26 // which you shou ld a l s o i n s t a l l on your web s e r v e r ./////////////////////////////////////////////////////////////

//// I n i t i a l i z e SOAP web s e r v i c e s

31 //

in i set ( ” inc lude path ” , join ( ” : ” , array (dirname( FILE ) . ”/PEAR” , in i get ( ”inc lude path ” ) ) ) ) ;

36 include ( ”SOAP/ Cl i en t . php” ) ;

$ s o a p c l i e n t = new SOAP Client ( ’ http :// api . goog l e . com/ search / beta2 ’ ) ;$soapopt ions = array ( ’ namespace ’ => ’ urn : GoogleSearch ’ ,

’ t r a c e ’ => 0) ;41 ?>

<html><head>

<LINK REL=”SHORTCUT ICON” HREF=” http ://www. dooogle . com/ dooogle . i c o ”><meta http−equiv=” content−type ” content=” text /html ; cha r s e t=UTF−8”>

46 <t i t l e >Dooogle Search : Doogie Howser</ t i t l e ><s t y l e>

<!−−body , td , div , . p , a{ font−f ami ly : a r i a l , sans−s e r i f }div , td{ c o l o r :#000}

51 . f , . f l : l ink { c o l o r :#6 f 6 f 6 f }a : link , . w, a .w: link , . w a : l ink { c o l o r :#00c}a : v i s i t e d , . f l : v i s i t e d { c o l o r :#551a8b}a : ac t ive , . f l : a c t i v e { c o l o r :#f00 }. t a : link , . t a : ac t ive , . t a : v i s i t e d , . t { c o l o r :#000}

56 . t {background−c o l o r :#e5ec f9 }. k{background−c o l o r :#36c}

doogle.php 6

. j {width :34em}

. h{ c o l o r :#36c}

. i , . i : l ink { c o l o r :#a90a08}61 . a , . a : l ink { c o l o r :#008000}

. z{ d i s p l a y : none}div . n {margin−top : 1ex}. n a{ font−s i z e : 10 pt ; c o l o r :#000}. n . i { font−s i z e : 10 pt ; font−weight : bold }

66 . q a : v i s i t e d , . q a : link , . q a : ac t ive , . q { c o l o r : #00c ; }. b{ font−s i z e : 12 pt ; c o l o r :#00c ; font−weigh t : bo l d }. ch{ cur so r : po in t e r ; cu r so r : hand}. e{margin−top : . 75em; margin−bottom : . 75em}. g{margin−top : 1em; margin−bottom : 1em}

71 //−−></s ty l e><s c r i p t >

<!−−f unc t i on s s (w) {window . s t a t u s=w; re turn true ;}

76 func t i on cs ( ) {window . s t a t u s=’ ’ ;}f unc t i on ga ( o , e ) { i f ( document . getElementById ) {a=o . id . su b s t r i n g (1 ) ; p = ”” ; r =

”” ; g = e . t a r g e t ; i f ( g ) { t = g . id ; f = g . parentNode ; i f ( f ) {p = f . id ; h = f .parentNode ; i f (h) r = h . id ;}} else {h = e . srcElement ; f = h . parentNode ; i f ( f )p = f . id ; t = h . id ;} i f ( t==a | | p==a | | r==a ) return true ; l o c a t i o n . h r e f=

document . getElementById ( a ) . h r e f }}//−−>

</s c r i p t ><s t y l e>

81 <!−−. f l : l ink { c o l o r :#7777CC}−−>

</s ty l e></head>

86 <body onload=”document . gs . r e s e t ( ) ” topmargin=”2” bgco lo r=”#f f f f f f ” marginheight=”2”><t a b l e border=”0” ce l l padd ing=”0” c e l l s p a c i n g=”0”>

<tbody><tr>

<td va l i gn=”top ”><a h r e f=” http ://www. dooogle . com/webhp? h l=en”><img s r c=”logo sm . g i f ” a l t=”Go to Dooogle Home” border=”0” vspace=”12”></a></td>

91 <td></td><td va l i gn=”top ”>

<t a b l e border=”0” ce l l padd ing=”0” c e l l s p a c i n g=”0”><tbody>

<tr>96 <td he ight=”14” va l i gn=”bottom”>

<s c r i p t ><!−−f unc t i on qs ( e l ) { i f ( window . RegExp && window .

encodeURIComponent ) {var qe=encodeURIComponent (document . gs . q . va lue ) ; i f ( e l . h r e f . indexOf ( ”q=” ) !=−1) {e l . h r e f=e l . h r e f . r e p l a c e (new RegExp( ”q=[ˆ&$ ]∗ ” ) , ”q=”+qe) ;} else { e l . h r e f+=”&q=”+qe ;}} re turn 1 ;}

// −−></s c r i p t><t a b l e border=”0” ce l l padd ing=”4” c e l l s p a c i n g=”0”>

101 <tbody><tr>

<td c l a s s=”q”><f ont s i z e=”−1”><f ont c o l o r=”#000000”><b>Web</b></font></font></td>

</tr></tbody>

doogle.php 7

106 </tab le></td>

</tr><tr>

<td>111 <t a b l e border=”0” ce l l padd ing=”0” c e l l s p a c i n g=”0”>

<tbody><tr>

<td nowrap><form name=” gs ” method=” get ” ac t i on=” doogle . php”

><input name=” query ” value=” whatever ” type=”hidden ”><input name=” s t a r t ” value=”0” type=”hidden ”><input name=”q” s i z e=”41” maxlength=”2048” value=”Doogie Howser” type=” text ”><f ont

s i z e=”−1”> <input name=”btnG” value=” Search ”type=”submit”><span id=” hf ”></span></font></

form>116 </td>

<td nowrap>&nbsp;</td></tr>

</tbody></tab le>

121 </td></tr>

</tbody></tab le><t a b l e border=”0” ce l l padd ing=”0” c e l l s p a c i n g=”0”>

126 <tbody><tr>

<td><f ont s i z e=”−1”></font></td></tr><tr>

131 <td he ight=”7”><img a l t=”” he ight=”1” width=”1”></td></tr>

</tbody></tab le>

</td>136 </tr>

</tbody></tab le><?php

i f ( $key == ”” )141 {

/∗You ge t a deve l ope r ’ s key when you r e g i s t e r to use Google ’ s API .A deve l ope r ’ s key i s a unique s t r i n g t ha t i d e n t i f i e s you to Google .You ge t a maximum of 1000 searches per day us ing your deve l ope r ’ s key .

146 ∗/$key = ’ Your Key Here ’ ; // put your deve l ope r ’ s key here .}

i f ( $query != ”” )151 {

// remove the s l a s h e s t ha t are au t oma t i c a l l y added by PHP be f o r e each quo ta t i onmark

$query = stripslashes ( $query ) ;

i f ( $ r e t = search ( $query , $key , $num) )

doogle.php 8

156 {$ r e s u l t s = $ret−>r e su l tE l ements ;

?><t a b l e border=”0” ce l l padd ing=”0” c e l l s p a c i n g=”0” width=”100%”>

161 <tbody><tr>

<td bgco lo r=”#3366cc ”><img a l t=”” he ight=”1” width=”1”></td></tr>

</tbody>166 </tab le>

<t a b l e bgco lo r=”#e5ec f 9 ” border=”0” ce l l padd ing=”0” c e l l s p a c i n g=”0” width=”100%”><tbody>

<tr><td bgco lo r=”#e5ec f 9 ” nowrap><f ont s i z e=”+1”><b>Web</b></font></td>

171 <td a l i g n=” r i g h t ” bgco lo r=”#e5ec f 9 ” nowrap><f ont c o l o r=”” s i z e=”−1”>Resu l t s<b><?php print $ret−>s t a r t Index ;?></b> − <b><?php print $ret−>endIndex

;?></b> o f about <b><?php print $ret−>est imatedTotalResultsCount ;?></b>for <b>Doogie Howser</b>. (<b><?php print $ret−>searchTime;?></b>seconds )</font></td>

</tr></tbody>

</tab le><!−−a−−>

176 <?phpforeach ( $ r e s u l t s as $ r e s ) {

i f (empty( $res−>t i t l e ) ) {?>

181 <p c l a s s=”g”><!−−m−−><a h r e f=”<?php p r in t $res−>URL;?>”>

<?php print $res−>URL;?> <!−−n−−></p>

186 <?php} else {

?><p c l a s s=”g”><!−−m−−><a h r e f=”<?php p r in t $res−>URL;?>”><?php print $res−>t i t l e ;?></a><br><f ont s i z e=”−1”>

191 <?php print $res−>sn ippet ;?><br><f ont c o l o r=”#008000”><?php print $res−>URL;?> − <?php print $res−>cachedSize

;?></ font></font><!−−n−−></p><?php}

196 }}}

?>201 <br c l e a r=” a l l ”>

<div c l a s s=”n”><t a b l e a l i g n=” cente r ” border=”0” ce l l padd ing=”0” c e l l s p a c i n g=”0” width=”1%”>

<tbody><t r a l i g n=” cente r ” va l i gn=” top ”>

206 <td nowrap va l i gn=”bottom”><f ont s i z e=”−1”>Result Page : </font></td><td>

<?php

doogle.php 9

$ length = 10 ;$ lenght2 = 20 ;

211$ i i 2 = ( $ s t a r t / 10) + 1 ;$ i i 3 = $ i i 2 ;

// i f ( $ i i 2 > 10){ $ i i 2 = $ i i 2 − 10;}216 $ i i 2 = $ i i 2 − 10 ;

i f ( $ i i 2 < 0) { $ i i 2 = 1 ;}

g l o b a l $ f l a g e n d ;$ f l a g e n d = 0 ;

221

i f ( $ i i 3 > 1) {?>

<a h r e f=” doogle . php? query=whatever&s t a r t=<?php echo $ s t a r t − 10;?>”><img s r c=” nav prev ious . g i f ” a l t=”” border=”0”><br><span c l a s s=b>Previous</span></a>

226 </td><td>

<?php}else {

231 ?><img s r c=” n a v f i r s t . g i f ” a l t=”” he ight=”26” width=”18”><br>

</td><td>

<?php236 }

for ( $ i i = $ i i 2 ; $ i i < $ length + $ i i 3 ; $ i i ++){

241i f ( $ i i >= 99) { $ f l a g e n d = 1 ; break ; }

i f ( $ i i 3 == $ i i ) {?>

246 <img s r c=nav current . g i f width=16 he ight=26 a l t=””><br><span c l a s s=i><?php echo $ i i ?></span>

</td><td>

<?php}

251else {?>

<a h r e f=” doogle . php? query=whatever&s t a r t=<?php echo ( $ i i −1)∗10?>”><img s r c=” nav page . g i f ” a l t=”” border=”0” he ight=”26” width=”16”><br><?php echo $ i i ?></a>

</td>256 <td>

<?php}

}261

doogle.php 10

i f ( $ f l a g e n d == 0) {?>

<a h r e f=” doogle . php? query=whatever&s t a r t=<?php echo $ s t a r t + 20;?>”><img s r c=nav next . g i f width=100 he ight=26 a l t=”” border=0><br><span

c l a s s=b>Next</span></a></td>

266 </tr><?php} else {?>

<a h r e f=” doogle . php?q=whatever&s t a r t=<?php echo $ s t a r t + 20;?>”><img s r c=nav next end . g i f width=100 he ight=26 a l t=”” border=0><br><span c l a s s=b></span></a></td></tr>

271 <?php}?>

</tbody></tab le>

276 </div><center>

<br c l e a r=” a l l ”><br><t a b l e border=”0” ce l l padd ing=”0” c e l l s p a c i n g=”0” width=”100%”>

<tbody>281 <tr>

<td c l a s s=”k”><img a l t=”” he ight=”1” width=”1”></td></tr><tr>

<td a l i g n=” cente r ” bgco lo r=”#e5ec f 9 ”>286 <br>

<t a b l e a l i g n=” cente r ” border=”0” ce l l padd ing=”0” c e l l s p a c i n g=”0”><form method=” get ” ac t i on=”/ search ”></form>˜\ footnotemark [ 4 ] ˜<tbody>

<tr>291 <td nowrap>

<f ont s i z e=”−1”><input name=”q” s i z e=”31” maxlength=”2048” value=”Doogie Howser” type=” text ”> <input name=”btnG” value=” Search ” type=”submit”><input name=” hl ” value=”en” type=” hidden ”><input name=” l r ” value=”” type=”hidden ”></font>

</td></tr>

</tbody>296 </tab le>

<br></td>

</tr><tr>

301 <td c l a s s=”k”><img a l t=”” he ight=”1” width=”1”></td></tr>

</tbody></tab le>

</center>306 <center>

<p></p><hr c l a s s=”z”><t a b l e border=”0” ce l l padd ing=”2” c e l l s p a c i n g=”0” width=”100%”>

<tbody>311 <tr>

doogle.php 11

<td a l i g n=” cente r ”>&nbsp;</td></tr>

</tbody></tab le>

316 <br><f ont c l a s s=”p” s i z e=”−1”> 2 0 0 9 Dooogle</font></center><s c r i p t type=” text / j a v a s c r i p t ”>

var gaJsHost = ( ( ” https : ” == document . l o c a t i o n . p ro to co l ) ? ” https : // s s l . ” : ” http://www. ” ) ;

document . wr i t e ( unescape ( ”%3Cscr ip t s r c =’” + gaJsHost + ” google−a n a l y t i c s . com/ga .j s ’ type=’ t ext / j a v a s c r i p t ’%3E%3C/ s c r i p t%3E” ) ) ;

321 </s c r i p t ><s c r i p t type=” text / j a v a s c r i p t ”>

t ry {var pageTracker = gat . getTracker ( ”UA−12213123−1” ) ;pageTracker . setDomainName ( ” . co rya rcange l . com” ) ;

326 pageTracker . trackPageview ( ) ;} catch ( e r r ) {}

</s c r i p t ></body>

</html>331 <?php

////////////////////////////////////////////////// Does Google search wi th r e t r y .// Retry i s u s e f u l because sometimes the connect ion w i l l// f a i l f o r some reason but w i l l succeed when r e t r i e d .

336 func t i on search ( $query , $key , &$num ){

$ r e s u l t = fa l se ;$max re t r i e s = 5 ;$ r e t ry count = 0 ;

341while ( ! $ r e s u l t && $re t ry count < $max re t r i e s ){

$ r e s u l t = do search ( $ s ta r t , $query , $key , $num ) ;i f ( ! $ r e s u l t )

346 {print ( ”Attempt $ r e t ry count f a i l e d .<br>\n” ) ;}$ r e t ry count++;}

351 i f ( ! $ r e s u l t ){print ( ”<br>Sorry , connect ion to Google f a i l e d a f t e r r e t r y i n g s e v e r a l t imes . P lease

check that the Google Developer ’ s Key you entered was c o r r e c t . To obta in adeve loper ’ s key or f o r more in fo rmat ion on the Google API , v i s i t <a h r e f =\”http ://www. goog l e . com/ ap i s /\”>Google API home page</a>.<br>\n” ) ;

}re turn $ r e s u l t ;

356 }

////////////////////////////////////////////////////////////// Ca l l s the Google API and r e t r i e v e s the es t imated number o f// search r e s u l t s f o r t ha t query in to $num.

361 func t i on do search ( $ s ta r t , $query , $key , &$num ){

g l o b a l $ s o a p c l i e n t ;g l o b a l $soapopt ions ;

doogle.php 12

366 // Note t ha t we pass in an array o f parameters in t o the Google search .// The parameters array has to be passed by r e f e r ence .// The parameters are w e l l documented in the deve l ope r ’ s k i t on the// Google s i t e h t t p ://www. goog l e . com/ ap i s

371 $query = ”Doogie Howser” ; // Wasss up$ s t a r t = $ GET [ ’ s t a r t ’ ] ;// $ s t a r t = 10;// $ s t a r t = s t r i p s l a s h e s ( $ s t a r t ) ;

376// p r i n t ”START IS : $ s t a r t<BR><BR>\n” ;

g l o b a l $ GET ;g l o b a l $ s t a r t ;

381 $ s t a r t = $ GET [ ’ s t a r t ’ ] ;// p r i n t ”START IS NOW: $ s t a r t<BR><BR>”;$ s t a r t 2 = $ s t a r t ;

$ l ength = 1000 ;386 $ i = 0 ;

for ( $ i i = 0 ; $ i i < $ length ; $ i i ++){i f ( $ s t a r t == $ i i ) { $ s t a r t = $ i ;}$ i = $ i + 1 ;

391 }

i f (empty( $ s t a r t ) ) {$ s t a r t = 0 ;

}396

// p r i n t ”START IS FINALLY: $ s t a r t<BR><BR>\n” ;

$params = array (401 ’ key ’ => $key , // the Developer ’ s key

’ q ’ => $query , // the search query’ s t a r t ’ => $s ta r t , // the po in t in the search r e s u l t s shou ld

Google s t a r t’ maxResults ’ => 10 , // the number o f search r e s u l t s (max 10)’ f i l t e r ’ => false , // shou ld the r e s u l t s be f i l t e r e d ?

406 ’ r e s t r i c t ’ => ’ ’ ,’ s a f eSea r ch ’ => false ,’ l r ’ => ’ ’ ,’ i e ’ => ’ ’ ,’ oe ’ => ’ ’

411 ) ;

// Here ’ s where we a c t u a l l y c a l l Google us ing SOAP.// doGoogleSearch i s the name o f the remote procedure c a l l .

416 $ r e t = $soapc l i en t−>c a l l ( ’ doGoogleSearch ’ , $params ,$soapopt ions ) ;

i f (PEAR: : i s E r r o r ( $ r e t ) ){

421 print ( ”<br>An e r r o r #” . $ret−>getCode ( ) . ” occurred !<br>” ) ;

doogle.php 13

print ( ” Error : ” . $ret−>getMessage ( ) . ”<br>\n” ) ;r e turn fa l se ;}else // We have proper search r e s u l t s

426 {// Resu l t s from the Google search are s t o r ed in the o b j e c t $ r e t .// The f o l l ow i n g b l o c k o f code p r i n t s// out the s t r u c t u r e and con ten t s o f the o b j e c t to the screen :// p r i n t (”\n<br><pre>”) ;

431 $num = $ret−>est imatedTotalResultsCount ;}

re turn $ r e t ;}

436?>

about.html 14

<html><head>

3 <LINK REL=”SHORTCUT ICON” HREF=” http ://www. dooogle . com/ dooogle . i c o ”><meta http−equiv=” content−type ” content=” text /html ; cha r s e t=UTF−8”><t i t l e>Google</ t i t l e><style>

< !−−8 body , td ,a ,p , . h{ font−f ami l y : a r i a l , sans−s e r i f ;}

. h{ font−s ize : 20px ;}

.q{color :#0000 cc ;}//−−>

</ style>13 <script>

< !−−f unc t i on s f ( ) {document . f .q . f ocus ( ) ;}// −−>

</ script>18 </head>

<body bgcolor=#f f f f f f text=#000000 l ink=#0000cc vlink=#551a8b alink=#f f 0 0 0 0 onLoad=s f ( )><center>

<img src=” logo . g i f ” alt=” Dooogle ”><br><br>

23 <form action=”/ grab2 ” name=f></form><p>Dooogle concept by :</p><p>Cory Arcangel<br>

Michael Connor<br>28 Jack i e Passmore

</p><p>Dooogle i s an Eyebeam R + D p r o j e c t . Programmed in Sept + Nov by Cory

Arcangel with he lp<br>from Michael Frumin</center>

</body>33 </html>

images 15

logo.gif

logo sm.gif

nav current.gif

logo.gif

logo sm.gif

nav current.gif

nav first.gif

nav next.gif

nav next end.gif

nav page.gif

nav previous.gif

dooogle.ico

footnotes 16

1 Originally, the project was called ”Doogle” as per ”Google”, though given http://www.doogle.com was already registered,I - obvz - went with http://www.dooogle.com. Anyway, therefore, sometimes it’s seen as ”Doogle”, and others as ”Dooogle”.FYI.

2 The Google API this originally ran on was depreciated some time in the late aughts. I then had the site re-written in anewer API which was - again - depreciate a few years later. At that point, I canned the site which is it’s current state. Allin all, I think this had a good 7-8 years of ”live”.

3 See Figure 1.

4

http://nyti.ms/1IHH4Mr

FASHION & STYLE

What Taylor Swift Can Teach You AboutRompersBy MOLLY YOUNG AUG. 12, 2015

As with any style traditionally worn by babies — pigtails, overalls, pinafores

— a romper carries the risk of making an adult look as if she recently

escaped from her playpen.

It’s a tricky item. In the case of children, there’s an obvious utility: It’s

easier to get a wriggling tot into one piece of clothing than two. Adults with

normal muscle control don’t have to worry about basic maneuverability

when dressing themselves, and yet rompers are everywhere. What’s the

appeal?

To start with the obvious: It’s summer. And a romper is, by definition,

recreational clothing (unless your job description includes romping).

Snapping oneself into a playsuit allows a woman all sorts of conveniences.

“It provides a huge ‘no flashing’ benefit,” said Alexandra Amarotico, a

26-year-old photographer who lives in Hell’s Kitchen and has worn a

romper four out of the last eight days, by her count. “It’s an especially nice

perk in summer because your romper can be even shorter than your dresses

on a hot day.”

Yael Aflalo, founder of the eco-friendly label Reformation, is a fan, too.

“Rompers are great because you can make them work for day or night, and

they let you show off your legs without feeling overexposed,” she said.

Taylor Swift and Karlie Kloss have both been seen loping around town

in rompers from the store. To thwart the “big baby” look, Ms. Aflalo advised

a light hand with finishing touches. “Keep your accessories simple,” she

said. “I like a lace-up flat for day and a chic heel for night.”

Along with daytime looks (onesies that could be lifted straight from the

1962 film adaptation of “Lolita”), Ms. Swift made a case for the formal

romper at last year’s MTV Video Music Awards and again at a pre-Grammy

gala this year. It’s not an unprecedented move: Jerry Hall and Bianca

Jagger wore rompers in the ’70s, during an era when leisure wear oozed

silkily into evening wear.

Still, the best pro-romper argument may be the simplest one, which is

that it cuts morning-outfit deliberation time in half. Why make two choices,

top and bottom, when you can make one?

A version of this article appears in print on August 13, 2015, on page D8 of the New Yorkedition with the headline: Taylor Swift Masters the Romper.

© 2015 The New York Times Company

footnotes 17

Figure 1: ...

fini 18

Cory ArcangelTHE SOURCEIssue 7: Dooogle

;-)

A

RCANGE

L

S

URFWA

R

E

Published by Arcangel Surfware.Designed by Claire Kwong and Cory Arcangel.Special thx: Amanda Schmidt, Gil Gentile, Allie Tepper, Elliot Kaufman.With support from the Creative Capital Foundation.ISBN: 978-0-9966360-6-3

c© 2015 Cory Arcangelwww.arcangelsurfware.biz

1

Change Log 08-17-2015

• Changed www.arcangelsurfware.com on colophon 2 www.arcangelsurfware.biz ... uuuugh.

• Updated current Arcangel Surfware crew.

Change Log 02-27-2015

• Deleted project date from title page

• Changed www.coryarcangel.com to www.arcangelsurfware.biz 2

1$$$$$$$$$$$$$$$$$$$$$$

2Thi$ t3xt wa$ c0pi3d fr0m vari0u$ Can0n 0c3́ Vari0Print�3xtr3gist3r3d mat3rial$.

;-)