-
Notifications
You must be signed in to change notification settings - Fork 2
/
absolute-beginners-unix-for-art-students-part-3.html
868 lines (442 loc) · 39.5 KB
/
absolute-beginners-unix-for-art-students-part-3.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=510">
<link rel="stylesheet" href="/and/style/in/reset.css" type="text/css" />
<link rel="stylesheet" href="/and/style/in/grid.css" type="text/css" />
<link rel="stylesheet" type="text/css" href="/and/style/in/baseline.css" />
<link rel="start" href="/and/" title="Home" />
<link rel="alternate" type="application/atom+xml" title="Recent Entries" href="/and/feed/us/recent_entries.xml" />
<script type="text/javascript" src="/and/scripts/being/jquery-1.11.0.min.js"></script>
<script type="text/javascript" src="/and/scripts/being/scripts.js"></script>
<title>I like tight pants and absolute beginners: unix for art students – part 3</title>
<meta property="og:title dc:title" content="I like tight pants and absolute beginners: unix for art students – part 3"/>
<meta property="og:type" content="article"/>
<meta property="og:url" content="http://i.liketightpants.net/and/absolute-beginners-unix-for-art-students-part-3"/>
<meta property="og:image" content="http://i.liketightpants.net/and/assets/called/sex_differences_are_here_to_stay.jpg"/>
<meta property="og:site_name" content="I like tight pants and mathematics"/>
<meta property="og:description dc:description"
content="Using a set of unix commands to lay out Jenny Holzer tweets."/>
<meta name="description"
content="Using a set of unix commands to lay out Jenny Holzer tweets."/>
<meta property="fb:admins" content="1488294875"/>
<meta property="mt:entry_basename" content="absolute-beginners-unix-for-art-students-part-3" />
<meta property="dc:modified" content="2014-03-27T10:59:13" />
</head>
<body>
<div id="header" class="container_7">
<div class="grid_2">
<h1><a href="/and/">i . like tight pants . net</a></h1>
</div>
<div class="grid_3">
<ul>
<li ><a href="/and/hybrid-publishing-back-to-the-future-publishing-theses-at-the-kabk">latest</a></li>
<li><a href="/and/about">about</a></li>
<li ><a href="/and/archives">index</a></li>
</ul>
</div>
<div class="grid_2">
<p class="byline" id="recent_entries">New entries published Monday and Thursday, 22:00 CET (<a href="/and/feed/us/recent_entries.xml">RSS</a>)</p>
</div>
</div>
<div id="content" class="container_7">
<div class="sidebar grid_1">
<img src="/and/assets/that/are/pictures/of/author/baseline.png" style="width:100px;height:100px;" alt="" />
<h4 class="author" property="dc:created" content="2012-01-15T23:46:09">January 15, 2012</h4>
<h4 class="author">by <span property="dc:creator">baseline</span></h4>
<p> </p>
<hr />
<h4>Other articles by baseline</h4>
<dl>
<dt><a href="/and/i-need-my-generic-font-medicine">I Need My Generic Font Medicine</a></dt>
<dd>October 9, 2013 7:55 PM</dd>
<dt><a href="/and/48-hours-of-writing-stylesheets-with-etherpad-and-a-gong">48 Hours of Writing Stylesheets with Etherpad and a Gong</a></dt>
<dd>October 8, 2013 8:06 PM</dd>
<dt><a href="/and/the-most-barebones-online-font-editor-possible">The Most Barebones Online Font Editor Possible</a></dt>
<dd>April 18, 2013 7:59 PM</dd>
<dt><a href="/and/drawing-logos">Drawing logo’s</a></dt>
<dd>April 24, 2012 3:06 PM</dd>
<dt><a href="/and/my-favourite-logo-ever-is-for-gnu-pascal">My favourite logo ever is for GNU Pascal</a></dt>
<dd>April 7, 2012 11:53 PM</dd>
<dt><a href="/and/why-would-europes-largest-open-source-convention-identify-itself-with-a-large-shrivelled-brain">Why Would Europe’s Largest Open Source Convention Identify Itself With a Large Shrivelled Brain?</a></dt>
<dd>February 3, 2012 6:55 PM</dd>
<dt><a href="/and/physical-hyperlinks-that-glitter">Physical Hyperlinks that Glitter</a></dt>
<dd>September 22, 2011 2:11 PM</dd>
<dt><a href="/and/the-fortran-automatic-coding-system-for-the-ibm-704">The Fortran Automatic Coding System for the IBM 704</a></dt>
<dd>August 3, 2011 8:22 PM</dd>
<dt><a href="/and/illustration">Illustration</a></dt>
<dd>February 20, 2011 7:12 PM</dd>
<dt><a href="/and/beta">Beta</a></dt>
<dd>September 4, 2010 10:15 PM</dd>
</dl>
<h4>baseline’s comments</h4>
<ul>
<li>It’s nice that over the course of a decade they ... <a href="/and/hackers-culture-and-the-fear-of-wysiwyg#comment-309" title="full comment on: Hacker Culture and the Fear of WYSIWYG">read more</a></li>
<li>Its layout is a re-appraisal of one of the core ... <a href="/and/hackers-culture-and-the-fear-of-wysiwyg#comment-308" title="full comment on: Hacker Culture and the Fear of WYSIWYG">read more</a></li>
<li>I never opened a font for which FontForge did not ... <a href="/and/ufo2otf-makes-otfs-webfonts-and-css-from-ufo#comment-270" title="full comment on: ufo2otf Makes OTF’s, Webfonts and CSS From UFO’s">read more</a></li>
<li>With OSP we made a series of typefaces that are ... <a href="/and/no-one-starts-from-scratch-type-design-and-the-logic-of-the-fork#comment-255" title="full comment on: No-one Starts From Scratch: Type Design and the Logic of the Fork">read more</a></li>
<li>Limousine by OSP, a fork of the Free Sans. An ... <a href="/and/no-one-starts-from-scratch-type-design-and-the-logic-of-the-fork#comment-253" title="full comment on: No-one Starts From Scratch: Type Design and the Logic of the Fork">read more</a></li>
<li>It might be so that definition languages for typeface have ... <a href="/and/i-need-my-generic-font-medicine#comment-242" title="full comment on: I Need My Generic Font Medicine">read more</a></li>
<li>With OSP we tried to exploit Postscript’s potential as a ... <a href="/and/i-need-my-generic-font-medicine#comment-240" title="full comment on: I Need My Generic Font Medicine">read more</a></li>
<li>I know Gert Dumbar, his students and the Zeebelt theatre ... <a href="/and/no-one-starts-from-scratch-type-design-and-the-logic-of-the-fork#comment-233" title="full comment on: No-one Starts From Scratch: Type Design and the Logic of the Fork">read more</a></li>
<li>Yeah you are right it is good to note that ... <a href="/and/etherpad-or-the-textarea-is-a-lonely-place#comment-211" title="full comment on: Etherpad Or The Textarea Is A Lonely Place">read more</a></li>
<li>If I remember well, Pierre and Gijs did the logic and Steph the UI, and ... <a href="/and/the-most-barebones-online-font-editor-possible#comment-203" title="full comment on: The Most Barebones Online Font Editor Possible">read more</a></li>
</ul>
<hr />
<h4>Other writers</h4>
<ul>
<li>glit</li>
<li>jenseits</li>
<li>habitus</li>
<li>tellyou</li>
<li>baseline</li>
<li>bnf</li>
</ul>
</div>
<div class="post grid_5">
<p class="byline">
<a href="/and/i-like-ziggy-over-zarathustra">Previous</a>
/ <a href="/and/hybrid-publishing-back-to-the-future-publishing-theses-at-the-kabk">Next</a>
</p>
<div class="article grid_3 alpha omega suffix_2">
<h4 property="mt:entry_title">Absolute Beginners: Unix for Art Students – part 3</h4>
<article property="mt:entry_id" content="40" class="entry" id="entry-40">
<p><a href="/and/assets/called/sex_differences_are_here_to_stay.jpg">
<img src="/and/assets/scaled/to/830/wide/and/called/sex_differences_are_here_to_stay.jpg" alt="In what is probably an office space or design studio (you can make out a laser printer, the back of a flatscreen monitor) a text is tacked to the wall constructed of a number of A4 sheets collated together: SEX DIFFERENCES ARE HERE TO STAY" style="width:830px;height:553px;" title="" />
</a></p>
<p>After working through the <a href="/and/absolute-beginners-unix-for-art-students-part-1" title="I like tight pants and absolute beginners: unix for art students ââ¬â part 1">first</a><a href="/and/absolute-beginners-unix-for-art-students-part-2" title="I like tight pants and absolute beginners: unix for art students — part 2">two</a><a href="/and/installing-compilers" title="I like tight pants and installing compilers">parts</a> of Absolute Beginners: Unix for Art Students <a href="/and/i-have-relocated-to-brussels" title="I like tight pants and i have relocated to brussels">Fabien</a> asked me how you can than actually use the terminal to make something. That is a good question. In <a href="/and/absolute-beginners-unix-for-art-students-part-1" title="I like tight pants and absolute beginners: unix for art students — part 1">part 1</a> glit writes that it is commendable to find a more intimate way of dealing with your computer, but that does not enter the question <em>what</em> you could be doing with your terminal. Taking cues from a <a href="http://schr.fr/hypermap" title="HYPERMAP | schr.fr">design installation</a> we developed for the Performance Studies International festival, I would like to show an example of using the command line to create graphic images, and the kind of design processes that it can accommodate.</p>
<h3>Building pipelines</h3>
<p>The unix command line is built around passing around text. Programs generate text, and other programs can take this as their input. You can start to create whole ‘pipelines’ of programs all connected together.</p>
<p>As our input today we take the <a href="http://twitter.com/jennyholzer" title="Twitter | Jenny Holzer">tweets of Jenny Holzer</a>. I do not know if you’ve heard of her, but Jenny Holzer is an artist who’s work prefigures contemporary social media: long before the advent of Facebook and twitter she has been claiming public space with her written truisms that, <a href="http://i.liketightpants.net/and/i-like-ziggy-over-zarathustra#jennyholzer" title="I like tight pants and ziggy over zarathustra">like habitus says</a>, always precipitate on the edge between worn clichés and individual confessions (<em>with you inside me comes the knowledge of my own death</em>).</p>
<p>Seeing how Holzer has built her oeuvre and her career around the logic of the status update since well before it existed, it was a small step for her to take her work to twitter.</p>
<p>Today we are not going to visit the twitter website, we are going to access it via the terminal. To get the latest tweet from Jenny Holzer we use the command:</p>
<pre><strike>curl "http://twitter.com/statuses/user_timeline/jennyholzer.json?count=1"</strike>
curl --silent https://twitter.com/jennyholzer</pre>
<p>The output will be something like:</p>
<pre>[{"coordinates":null,"truncated":false,"place":null,"geo":null,"in_reply_to_user_id":null,"retweet_count":36,"favorited":false,"in_reply_to_status_id_str":null,"user":{"listed_count":1572,"contributors_enabled":false,"lang":"en","profile_text_color":"000000","protected":false,"location":"","statuses_count":359,"profile_background_image_url":"http:\/\/a0.twimg.com\/images\/themes\/theme1\/bg.png","name":"Jenny Holzer","default_profile":false,"profile_link_color":"D73030","url":"http:\/\/en.wikipedia.org\/wiki\/Jenny_Holzer","utc_offset":-18000,"description":"Abuse of power comes as no surprise.","friends_count":0,"profile_background_color":"D73030","following":true,"profile_background_tile":false,"followers_count":37419,"profile_image_url":"http:\/\/a2.twimg.com\/profile_images\/25643062\/jenny_holzer_normal.jpg","default_profile_image":false,"geo_enabled":false,"created_at":"Wed May 30 19:07:47 +0000 2007","profile_sidebar_fill_color":"F0F0F0","profile_background_image_url_https":"https:\/\/si0.twimg.com\/images\/themes\/theme1\/bg.png","favourites_count":0,"is_translator":false,"show_all_inline_media":false,"follow_request_sent":false,"notifications":false,"profile_sidebar_border_color":"000000","profile_image_url_https":"https:\/\/si0.twimg.com\/profile_images\/25643062\/jenny_holzer_normal.jpg","screen_name":"jennyholzer","id_str":"6451032","verified":false,"id":6451032,"profile_use_background_image":false,"time_zone":"Eastern Time (US & Canada)"},"in_reply_to_screen_name":null,"created_at":"Fri Jan 13 15:34:55 +0000 2012","in_reply_to_user_id_str":null,"retweeted":false,"source":"\u003Ca href=\"http:\/\/twitter.com\/#!\/download\/iphone\" rel=\"nofollow\"\u003ETwitter for iPhone\u003C\/a\u003E","id_str":"157848105683922945","in_reply_to_status_id":null,"id":157848105683922945,"contributors":null,"text":"SEX DIFFERENCES ARE HERE TO STAY"}]</pre>
<p>Curl is a program that gets the contents of a document on the web, and prints it out to the terminal.</p>
<p>We have requested the status from twitters API, which is a way for twitter to present the data in a format that is more easy for computer programs to consume. It uses JSON format, which is great and all, but it’s just a little bit to new-fashioned for our means: we want plain old fashioned text.</p>
<p>To go from the JSON to the old fashioned text, we are constructing the first part of our timeline.</p>
<p>Try:</p>
<pre><strike>curl "http://twitter.com/statuses/user_timeline/jennyholzer.json?count=1" | sed 's/.*"text":"\([^"]*\)".*}]/\1/g'</strike>
curl --silent https://twitter.com/jennyholzer | grep -m 1 "tweet-text" | sed 's/.*>\([^<]*\)<.*/\1/g'</pre>
<p>The output is:</p>
<pre>SEX DIFFERENCES ARE HERE TO STAY</pre>
<p>The <code>|</code> symbol feeds the output from the curl command to the sed command. The exact arguments we are using for sed we will not go into today, because it is a bit daunting if you are just getting into this sort of thing, but it suffices to understand that sed manipulates it input so that everything but the little part inside text=" " is maintained.</p>
<p>Now we have the plain text as output, which we could use as input for another program. For example:</p>
<pre><strike>curl "http://twitter.com/statuses/user_timeline/jennyholzer.json?count=1" | sed 's/.*"text":"\([^"]*\)".*}]/\1/g' | figlet</strike>
curl --silent https://twitter.com/jennyholzer | grep -m 1 "tweet-text" | sed 's/.*>\([^<]*\)<.*/\1/g' | figlet</pre>
<pre> ____ _______ __
/ ___|| ____\ \/ /
\___ \| _| \ /
___) | |___ / \
|____/|_____/_/\_\
____ ___ _____ _____ _____ ____ _____ _ _ ____ _____ ____
| _ \_ _| ___| ___| ____| _ \| ____| \ | |/ ___| ____/ ___|
| | | | || |_ | |_ | _| | |_) | _| | \| | | | _| \___ \
| |_| | || _| | _| | |___| _ <| |___| |\ | |___| |___ ___) |
|____/___|_| |_| |_____|_| \_\_____|_| \_|\____|_____|____/
_ ____ _____ _ _ _____ ____ _____ _____ ___
/ \ | _ \| ____| | | | | ____| _ \| ____| |_ _/ _ \
/ _ \ | |_) | _| | |_| | _| | |_) | _| | || | | |
/ ___ \| _ <| |___ | _ | |___| _ <| |___ | || |_| |
/_/ \_\_| \_\_____| |_| |_|_____|_| \_\_____| |_| \___/
____ _____ _ __ __
/ ___|_ _|/ \\ \ / /
\___ \ | | / _ \\ V /
___) || |/ ___ \| |
|____/ |_/_/ \_\_|
</pre>
<p>Now we have Jenny Holzer ascii art!</p>
<p>We are going to go a bit further with this. What we want to do is layout this plain text in such a way that we could display it or print it. For this we are going to use a program called pango-view. It comes as part of pango, which we will have to install:</p>
<pre>brew install pango</pre>
<p>In fact, pango-view, spoils the fun somewhat, because it doesn’t let you use it as part of a pipeline. We’ll have to store the Jenny tweet into a text file:</p>
<pre><strike>curl "http://twitter.com/statuses/user_timeline/jennyholzer.json?count=1" | sed 's/.*"text":"\([^"]*\)".*}]/\1/g' > jennytweet.txt</strike>
curl --silent https://twitter.com/jennyholzer | grep -m 1 "tweet-text" | sed 's/.*>\([^<]*\)<.*/\1/g' > jennytweet.txt</pre>
<p>The <code>></code> lets you store text output into a file. So we are storing the output of are pipeline, the plain text tweet, into the file <code>jennytweet.txt</code>.</p>
<p>Pango-view lets us lay-out the text and output it as a picture:</p>
<pre>pango-view jennytweet.txt -q -o jennytweet.png</pre>
<p>
<img src="/and/assets/called/jennytweet-plain.png" style="width:353;height:39;" alt="‘SEX DIFFERENCES ARE HERE TO STAY’ set in pango-view’s default font" title="" />
</p>
<p>If you type <code>man pango-view</code> you get an overview of the different options you have. <code>-q</code>, for example suppresses the default behavior to also display the result in a window. <code>-o</code> specifies the output file, in this case jennytweet.png. Next to these two options, we also specify an <em>argument</em>, which is the inputfile to use. The program knows it is an argument instead of option, because it is not preceded by a dash and an option name.</p>
<p>In the man page, we read that we can use <code>--font</code> to specify a font. It does not tell you the format to do so, which is the name followed by the size:</p>
<pre>pango-view jennytweet.txt -q -o jennytweet.png --font "Futura 36"</pre>
<p>
<img src="/and/assets/called/jennytweet-banner.png" style="width:882;height:83;" alt="‘SEX DIFFERENCES ARE HERE TO STAY’ set in Futura" title="" />
</p>
<p>By default, pango-view thinks in pixels. So the Futura will have an x-height of 36 pixels. If we don’t specify any measurement for the width, the text will by laid out on one line like a long banner, the width determined by the width of the text.</p>
<p>If we want to produce the look of a laid-out piece of text, we will have to specify a width:</p>
<pre>pango-view jennytweet.txt -q -o jennytweet-laidout.png --font "Futura 36" -w 400</pre>
<p>
<img src="/and/assets/called/jennytweet-laidout.png" style="width:553;height:146;" alt="‘SEX DIFFERENCES ARE HERE TO STAY’ set in Futura, laid out to a maximum width" title="" />
</p>
<p>The cool thing about pango-view is that it can also generate vector files: pdf, but also svg and postscript. You just change the filename, and it does it automatically.</p>
<pre>pango-view jennytweet.txt -q -o jennytweet-laidout.ps --font "Futura 36" -w 400</pre>
<p>(Check out the resulting file in preview with <code>open jennytweet-laidout.ps</code>.)</p>
<p>Why postscript? Well, we have this really cool old-school postscript utility called poster. And we are going to use this to create a tiling version of the image we just created, that spans many sheets of paper. First install poster:</p>
<pre>brew update
brew install poster</pre>
<p>(You do no have the brew command? See tellyou’s post about homebrew). To generate a poster, you can do:</p>
<pre>poster -s 4.4 jennytweet-laidout.ps > jennyposter.ps</pre>
<p>The -s 4.4 scales our original image 4.4 times. The original image has no real size declared in cm, so I did not know beforehand how big the result was going to be. I just came up with this 4.4 value by trail and error.</p>
<p><a href="/and/assets/called/jennytweet-pages.png">
<img src="/and/assets/scaled/to/490/wide/and/called/jennytweet-pages.png" style="width:421px;height:490px" />
</a></p>
<p>VoilÃÂ . One can open this in preview and print it. Heck, one can even print it from the command line:</p>
<pre>lpr jennyposter.ps</pre>
<p>Let’s hang it on the wall.</p>
</article>
<h4 class="comments-header">10 Comments</h4>
<div id="comments" class="comments">
<div class="comments-content">
<div property="mt:comment_id" content="109" id="comment-109" resource="/and/absolute-beginners-unix-for-art-students-part-3#comment-109" class="comment">
<div class="comment-editor" property="mt:comment_text">
<p>
Of course one could have used a vector illustration program to layout this text and print it tiling? I guess the difference is that now we have a pipeline in place… If you run the program a week later, Holzer will have a new tweet in place, and we won’t have to change a thing but we will still get a new poster.
</p>
</div>
<p class="byline" >
<img src="/and/assets/that/are/pictures/of/author/tellyou.png" width="18" height="18" />
by <a property="dc:creator" href="http://i.liketightpants.net/authors#tellyou">tellyou</a> - <a href="/and/absolute-beginners-unix-for-art-students-part-3#comment-109"><span property="dc:created" content="2012-01-16T00:21:05">January 16, 2012 12:21 AM</span></a><br />
<a title="Reply" href="javascript:void(0);" onclick="mtReplyCommentOnClick(109, 'tellyou')">Reply</a>
</p>
</div>
<div class="comments-parent-container" style="margin-left: 20px;">
<div property="mt:comment_id" content="111" id="comment-111" resource="/and/absolute-beginners-unix-for-art-students-part-3#comment-111" class="comment comment-reply">
<div class="comment-editor" property="mt:comment_text">
<p>
What we did <a href="http://schr.fr/hypermap" title="HYPERMAP | schr.fr">in Utrecht</a> was a variation on this. The workflow as such: dancers go around the conference and post status updates to a private Facebook group. A script checks for new messages, then sends them through pango-view and poster: these are printed on graphing paper. The dancers then return into the space to further interpret their own status messages, in attaching them to the wall.
</p>
</div>
<p class="byline" >
<img src="/and/assets/that/are/pictures/of/author/baseline.png" width="18" height="18" />
by <a property="dc:creator" href="http://i.liketightpants.net/authors#baseline">baseline</a> - <a href="/and/absolute-beginners-unix-for-art-students-part-3#comment-111"><span property="dc:created" content="2012-01-19T23:40:45">January 19, 2012 11:40 PM</span></a><br />
<a title="Reply" href="javascript:void(0);" onclick="mtReplyCommentOnClick(111, 'baseline')">Reply</a>
</p>
</div>
<div class="comments-parent-container" style="margin-left: 20px;">
<div property="mt:comment_id" content="112" id="comment-112" resource="/and/absolute-beginners-unix-for-art-students-part-3#comment-112" class="comment comment-reply">
<div class="comment-editor" property="mt:comment_text">
<p>
After alleviating the basic layout to a script you have gained the space to design a social protocol…
</p>
</div>
<p class="byline" >
<img src="/and/assets/that/are/pictures/of/author/habitus.png" width="18" height="18" />
by <a property="dc:creator" href="http://i.liketightpants.net/authors#habitus">habitus</a> - <a href="/and/absolute-beginners-unix-for-art-students-part-3#comment-112"><span property="dc:created" content="2012-01-19T23:45:06">January 19, 2012 11:45 PM</span></a><br />
<a title="Reply" href="javascript:void(0);" onclick="mtReplyCommentOnClick(112, 'habitus')">Reply</a>
</p>
</div>
<div class="comments-parent-container" style="margin-left: 20px;">
<div property="mt:comment_id" content="115" id="comment-115" resource="/and/absolute-beginners-unix-for-art-students-part-3#comment-115" class="comment comment-reply">
<div class="comment-editor" property="mt:comment_text">
<p>
Well yeah, but a lot of design decisions are still visual: using the graphing paper, the green dots, the erratic font (the latin characters of a Japanese open source font). Though they all impact the social process in one way or another.
</p>
</div>
<p class="byline" >
<img src="/and/assets/that/are/pictures/of/author/baseline.png" width="18" height="18" />
by <a property="dc:creator" href="http://i.liketightpants.net/authors#baseline">baseline</a> - <a href="/and/absolute-beginners-unix-for-art-students-part-3#comment-115"><span property="dc:created" content="2012-01-19T23:50:19">January 19, 2012 11:50 PM</span></a><br />
<a title="Reply" href="javascript:void(0);" onclick="mtReplyCommentOnClick(115, 'baseline')">Reply</a>
</p>
</div>
<div class="comments-parent-container" style="margin-left: 20px;">
</div>
</div>
<div property="mt:comment_id" content="113" id="comment-113" resource="/and/absolute-beginners-unix-for-art-students-part-3#comment-113" class="comment comment-reply">
<div class="comment-editor" property="mt:comment_text">
<p>Once your pipelines get more complex, you will usually start to package them in scripts. You can make scripts from a sequence of terminal commands, or you can use any of the computer programming languages that you have available on your system.<!--<a href="/and/making-unix-programs">--><!--</a>--></p>
<p>The terminal maintains a central place in the unix scheme. This is where you you run commands, including the scripts you have written yourself. It is the go to place for manipulating files, and experimenting with commands.</p>
</div>
<p class="byline" >
<img src="/and/assets/that/are/pictures/of/author/bnf.png" width="18" height="18" />
by <a property="dc:creator" href="http://i.liketightpants.net/authors#bnf">bnf</a> - <a href="/and/absolute-beginners-unix-for-art-students-part-3#comment-113"><span property="dc:created" content="2012-01-19T23:46:31">January 19, 2012 11:46 PM</span></a><br />
<a title="Reply" href="javascript:void(0);" onclick="mtReplyCommentOnClick(113, 'bnf')">Reply</a>
</p>
</div>
<div class="comments-parent-container" style="margin-left: 20px;">
</div>
</div>
</div>
<div property="mt:comment_id" content="110" id="comment-110" resource="/and/absolute-beginners-unix-for-art-students-part-3#comment-110" class="comment">
<div class="comment-editor" property="mt:comment_text">
<p>
I wish there were more than just sex differences, perhaps six?
</p>
</div>
<p class="byline" >
by <a property="dc:creator" href="http://mccuskey.nl">Love</a> - <a href="/and/absolute-beginners-unix-for-art-students-part-3#comment-110"><span property="dc:created" content="2012-01-19T13:48:42">January 19, 2012 1:48 PM</span></a><br />
<a title="Reply" href="javascript:void(0);" onclick="mtReplyCommentOnClick(110, 'Love')">Reply</a>
</p>
</div>
<div class="comments-parent-container" style="margin-left: 20px;">
</div>
<div property="mt:comment_id" content="116" id="comment-116" resource="/and/absolute-beginners-unix-for-art-students-part-3#comment-116" class="comment">
<div class="comment-editor" property="mt:comment_text">
<p>
BTW, for this article I was inspired by <a href="http://ospublish.constantvzw.org/" title="OSP — Open Source Publishing ââ¬â Design Tools For Designers">OSP</a>’s excellent workshop <a href="http://ospublish.constantvzw.org/works/index.php?/projects/pc--mmd/" title="PC | MMD : OSP Works">Please Computer Make Me Design</a>. I had been using the terminal but only really got the pipes etc. after I followed this…
</p>
</div>
<p class="byline" >
<img src="/and/assets/that/are/pictures/of/author/baseline.png" width="18" height="18" />
by <a property="dc:creator" href="http://i.liketightpants.net/authors#baseline">baseline</a> - <a href="/and/absolute-beginners-unix-for-art-students-part-3#comment-116"><span property="dc:created" content="2012-01-20T00:01:29">January 20, 2012 12:01 AM</span></a><br />
<a title="Reply" href="javascript:void(0);" onclick="mtReplyCommentOnClick(116, 'baseline')">Reply</a>
</p>
</div>
<div class="comments-parent-container" style="margin-left: 20px;">
</div>
<div property="mt:comment_id" content="139" id="comment-139" resource="/and/absolute-beginners-unix-for-art-students-part-3#comment-139" class="comment">
<div class="comment-editor" property="mt:comment_text">
<p>
jenny holzer is fine, but her mom is better (srsly)
http://twitter.com/jennyholzermom
</p>
</div>
<p class="byline" >
by <a property="dc:creator" href="">luluganeta</a> - <a href="/and/absolute-beginners-unix-for-art-students-part-3#comment-139"><span property="dc:created" content="2012-02-13T10:44:52">February 13, 2012 10:44 AM</span></a><br />
<a title="Reply" href="javascript:void(0);" onclick="mtReplyCommentOnClick(139, 'luluganeta')">Reply</a>
</p>
</div>
<div class="comments-parent-container" style="margin-left: 20px;">
</div>
<div property="mt:comment_id" content="152" id="comment-152" resource="/and/absolute-beginners-unix-for-art-students-part-3#comment-152" class="comment">
<div class="comment-editor" property="mt:comment_text">
<p>Ah you can also pipe your output to the <code>say</code> program then it will use the Mac’s built in text to speech to read it out to you. Jenny is talking to you!</p>
<pre>curl "http://twitter.com/statuses/user_timeline/jennyholzer.json?count=1" | sed 's/.*"text":"\(.*\)"}]/\1/g' | say</pre>
</div>
<p class="byline" >
<img src="/and/assets/that/are/pictures/of/author/tellyou.png" width="18" height="18" />
by <a property="dc:creator" href="http://i.liketightpants.net/authors#tellyou">tellyou</a> - <a href="/and/absolute-beginners-unix-for-art-students-part-3#comment-152"><span property="dc:created" content="2012-04-03T09:59:33">April 3, 2012 9:59 AM</span></a><br />
<a title="Reply" href="javascript:void(0);" onclick="mtReplyCommentOnClick(152, 'tellyou')">Reply</a>
</p>
</div>
<div class="comments-parent-container" style="margin-left: 20px;">
<div property="mt:comment_id" content="162" id="comment-162" resource="/and/absolute-beginners-unix-for-art-students-part-3#comment-162" class="comment comment-reply">
<div class="comment-editor" property="mt:comment_text">
<p>
So what we also tried with the students is the overlay multiple pdf’s on top of each other. You need to <code>brew install podofo</code>, create a file that lists all the pdf’s, and in the same folder download a recipe for the imposition: See <a href="http://stdin.fr/Bazar/PoDoFo">stdin’s bazaar</a>.
</p>
</div>
<p class="byline" >
<img src="/and/assets/that/are/pictures/of/author/tellyou.png" width="18" height="18" />
by <a property="dc:creator" href="http://i.liketightpants.net/authors#tellyou">tellyou</a> - <a href="/and/absolute-beginners-unix-for-art-students-part-3#comment-162"><span property="dc:created" content="2012-04-21T13:44:13">April 21, 2012 1:44 PM</span></a><br />
<a title="Reply" href="javascript:void(0);" onclick="mtReplyCommentOnClick(162, 'tellyou')">Reply</a>
</p>
</div>
<div class="comments-parent-container" style="margin-left: 20px;">
</div>
</div>
<a title="Reply" href="#reply">Reply</a>
</div>
<div class="comments-open" id="comments-open">
<h4 class="comments-open-header">Leave a comment</h4>
<div class="comments-open-content">
<div id="comment-greeting"></div>
<form method="post" action="/comments.cgi">
<input type='hidden' name='csrfmiddlewaretoken' value='7ZJCxq9j1z3iTXve7WY2wWFLWtEXKrj8' />
<input id="id_parent" name="parent" type="hidden" />
<input id="id_entry" name="entry" type="hidden" value="40" />
<div id="comments-open-data">
<div id="comment-form-name">
<div class="alpha grid_1"><label for="id_author" class="span-4">Name</label></div>
<div class="omega grid_2"><input id="id_author" maxlength="300" name="author" required="required" size="30" type="text" /></div>
</div>
<div id="comment-form-email">
<div class="alpha grid_1"><label for="id_email" class="span-4">Email address</label></div>
<div class="omega grid_2"><input id="id_email" maxlength="381" name="email" required="required" size="30" type="email" /></div>
</div>
<div id="comment-form-url">
<div class="alpha grid_1"><label for="id_url" class="span-4">URL</label></div>
<div class="omega grid_2"><input id="id_url" maxlength="765" name="url" size="30" type="url" /></div>
</div>
</div>
<div id="comment-form-reply" style="display:none">
<input type="checkbox" id="comment-reply" name="comment_reply" value="" onclick="mtSetCommentParentID()" />
<label for="comment-reply" id="comment-reply-label"></label>
</div>
<div id="comments-open-text">
<label for="id_text">Text:</label><br />
<p class="byline">For formatting your post, you can use html tags like <p> and <br />. Whitespace for now is eaten up, like in HTML. we are sorry—we will have a more friendly commenting option in place shortly!</p>
<textarea cols="40" id="id_text" name="text" required="required" rows="15" style="width:100%">
</textarea>
<!-- <textarea id="comment-text" name="text" rows="15" style="width:100%;" onfocus="mtCommentFormOnFocus()"></textarea> -->
</div>
<p class="byline" id="comments-open-license">By submitting your comment, you agree to license it under the <a href="http://creativecommons.org/licenses/by-sa/3.0/">Creative Commons Attribution Share-Alike license</a>, the same license used for the text of the blog.</p>
<div id="comments-open-captcha">
<div class="alpha grid_1"><label for="id_captcha_code">Anti-spam: What is the last name of David?</label></div>
<div class="omega grid_2"><input id="id_captcha_code" name="captcha_code" required="required" size="30" type="text" /></div>
</div>
<div id="comments-open-footer">
<!-- <input type="submit" accesskey="v" name="preview_button" id="comment-preview" value="Preview" onclick="this.form.preview.value='1';" /> -->
<input type="submit" accesskey="s" name="post" id="comment-submit" value="Submit" />
</div>
</form>
</form>
</div>
</div>
</div><!-- / comments -->
</div> <!-- / article grid_3 -->
<hr />
</div> <!-- / post grid_5-->
<div class="sidebar grid_1">
<h4>Latest articles</h4>
<dl>
<dt><a href="/and/hybrid-publishing-back-to-the-future-publishing-theses-at-the-kabk">Hybrid Publishing Back To The Future Publishing Theses at the KABK</a></dt>
<dd>May 10, 2018 10:07 AM</dd>
<dt><a href="/and/finding-red-letterboxes-in-belgium">Finding Red Letterboxes In Belgium</a></dt>
<dd>May 10, 2018 10:05 AM</dd>
<dt><a href="/and/the-underwater-screen-or-lessons-from-wordperfect">The Underwater Screen Or Lessons From Wordperfect </a></dt>
<dd>June 10, 2014 6:21 PM</dd>
<dt><a href="/and/hackers-culture-and-the-fear-of-wysiwyg">Hacker Culture and the Fear of WYSIWYG</a></dt>
<dd>May 22, 2014 11:40 PM</dd>
<dt><a href="/and/graphic-design-is-a-nostalgic-field"> Graphic Design Is A Nostalgic Field </a></dt>
<dd>February 19, 2014 7:02 PM</dd>
<dt><a href="/and/who-makes-standards">Who gets to write the web: the power struggles around the standards</a></dt>
<dd>November 20, 2013 9:08 PM</dd>
<dt><a href="/and/ufo2otf-makes-otfs-webfonts-and-css-from-ufo">ufo2otf Makes OTF’s, Webfonts and CSS From UFO’s</a></dt>
<dd>November 5, 2013 8:57 PM</dd>
<dt><a href="/and/no-one-starts-from-scratch-type-design-and-the-logic-of-the-fork">No-one Starts From Scratch: Type Design and the Logic of the Fork</a></dt>
<dd>October 9, 2013 8 PM</dd>
<dt><a href="/and/i-need-my-generic-font-medicine">I Need My Generic Font Medicine</a></dt>
<dd>October 9, 2013 7:55 PM</dd>
<dt><a href="/and/48-hours-of-writing-stylesheets-with-etherpad-and-a-gong">48 Hours of Writing Stylesheets with Etherpad and a Gong</a></dt>
<dd>October 8, 2013 8:06 PM</dd>
</dl>
<h4>Latest Comments</h4>
<ul>
<li><strong>Sujon Ahmad:</strong> Keep it up <a href="/and/release-early-release-often-version-numbers-for-typefaces#comment-338" title="full comment on: Release Early Release Often Version Numbers For Typefaces">read more</a></li>
<li><strong>Carly Durocher:</strong> I really like the stylized penrose triangle would you mind ... <a href="/and/illustration#comment-337" title="full comment on: Illustration">read more</a></li>
<li><strong>michaël:</strong> The recent evolution of MediaWiki is worth mentioning. One of ... <a href="/and/hackers-culture-and-the-fear-of-wysiwyg#comment-336" title="full comment on: Hacker Culture and the Fear of WYSIWYG">read more</a></li>
<li><strong>jaromil:</strong> Check the Linux Action Show on Tomb https://www.dyne.org/software/tomb there can ... <a href="/and/hackers-culture-and-the-fear-of-wysiwyg#comment-335" title="full comment on: Hacker Culture and the Fear of WYSIWYG">read more</a></li>
<li><strong>Ian Hickson:</strong> The member list is the one on the charter (it's ... <a href="/and/who-makes-standards#comment-334" title="full comment on: Who gets to write the web: the power struggles around the standards">read more</a></li>
<li><strong>habitus:</strong> Dear Ian, thank you for taking the time to respond. ... <a href="/and/who-makes-standards#comment-333" title="full comment on: Who gets to write the web: the power struggles around the standards">read more</a></li>
<li><strong>Ian Hickson:</strong> The part about the WHATWG membership is wrong. The WHATWG ... <a href="/and/who-makes-standards#comment-332" title="full comment on: Who gets to write the web: the power struggles around the standards">read more</a></li>
<li><strong>Erik:</strong> Good points. Also: writing UI is hard. <a href="/and/the-underwater-screen-or-lessons-from-wordperfect#comment-327" title="full comment on: The Underwater Screen Or Lessons From Wordperfect ">read more</a></li>
<li><strong>nike shox:</strong> do not want to be t basket vans femme pas ... <a href="/and/no-one-starts-from-scratch-type-design-and-the-logic-of-the-fork#comment-324" title="full comment on: No-one Starts From Scratch: Type Design and the Logic of the Fork">read more</a></li>
<li><strong>Tolan Blundell:</strong> As someone who's written a moderately complex CMS from scratch ... <a href="/and/hackers-culture-and-the-fear-of-wysiwyg#comment-323" title="full comment on: Hacker Culture and the Fear of WYSIWYG">read more</a></li>
</ul>
</div>
</div>
<div id="bar"> </div>
<!-- Piwik, Open Source Analytics,
let’s not give Google more data then necessary! Eric -->
<script type="text/javascript">
var pkBaseURL = (("https:" == document.location.protocol) ? "https://var.schr.fr/piwik/" : "http://var.schr.fr/piwik/");
document.write(unescape("%3Cscript src='" + pkBaseURL + "piwik.js' type='text/javascript'%3E%3C/script%3E"));
</script><script type="text/javascript">
try {
var piwikTracker = Piwik.getTracker(pkBaseURL + "piwik.php", 2);
piwikTracker.trackPageView();
piwikTracker.enableLinkTracking();
} catch( err ) {}
</script><noscript><p><img src="http://var.schr.fr/piwik/piwik.php?idsite=2" style="border:0" alt="" /></p></noscript>
<!-- End Piwik Tracking Code -->
<!--[if !(lt IE 8)]><!-->
<script type="text/javascript">
(function(){var e=document.createElement("script");e.type="text/javascript";e.async=true;e.src=document.location.protocol+"//d1agz031tafz8n.cloudfront.net/thedaywefightback.js/widget.min.js";var t=document.getElementsByTagName("script")[0];t.parentNode.insertBefore(e,t)})()
</script>
<!--<![endif]-->
</body>
</html>