From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-0.7 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,HTML_MESSAGE,MAILING_LIST_MULTI, PLING_QUERY,RCVD_IN_DNSWL_NONE autolearn=ham autolearn_force=no version=3.4.2 Received: from minnie.tuhs.org (minnie.tuhs.org [45.79.103.53]) by inbox.vuxu.org (OpenSMTPD) with ESMTP id 9bfecb07 for ; Sat, 12 Oct 2019 18:00:26 +0000 (UTC) Received: by minnie.tuhs.org (Postfix, from userid 112) id AC25D9BCAE; Sun, 13 Oct 2019 04:00:24 +1000 (AEST) Received: from minnie.tuhs.org (localhost [127.0.0.1]) by minnie.tuhs.org (Postfix) with ESMTP id 872F59B8B2; Sun, 13 Oct 2019 03:59:39 +1000 (AEST) Authentication-Results: minnie.tuhs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="sFJNkSjU"; dkim-atps=neutral Received: by minnie.tuhs.org (Postfix, from userid 112) id 79F629B8B2; Sun, 13 Oct 2019 03:59:37 +1000 (AEST) Received: from mail-ot1-f49.google.com (mail-ot1-f49.google.com [209.85.210.49]) by minnie.tuhs.org (Postfix) with ESMTPS id 21A679B844 for ; Sun, 13 Oct 2019 03:59:37 +1000 (AEST) Received: by mail-ot1-f49.google.com with SMTP id 21so10619731otj.11 for ; Sat, 12 Oct 2019 10:59:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to; bh=EGz20MvbViZEfUggDM0fpeSJsB7zTFitBC6lHEYH2JA=; b=sFJNkSjUZ3PTpP+hqL5y9Q5c4tD+/vZaosg6rTqcPdPPGJBiz4QJSfEhhWwqgc//dG FpZm5MN8sGzi7KJcdSydc70ay6V4taJ/zRNhzLKb1Wc1ye6LXLFmD6RuzxZgesn+YAhr fQy5GpcDbDukO7TxLqgaigw0HPtKKlH3Sc4lFo6WzlKn3XaYRD2FyaQyAkxMIsnrVMzd kyJNOwzcYocvx5ZL+wYC0r6FWDwCXJd+mGUXgob9uj9oxChz5p4tny0250LdJF35rm2v C10QfmK9i357go4wrngT5j374YUTNdJtx9KUHnU25qsT8zMazVnAspaoHdMz+7TJcPPf W9EQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to; bh=EGz20MvbViZEfUggDM0fpeSJsB7zTFitBC6lHEYH2JA=; b=qu9xbj2I+SIirKW91DtF71yWXPadVum7Q1JO/AFF4hQG1U4qq91R6hn4jDYH6xJZrf CgT2YLGu+y3cUzIPHeYnAz0Q2xILUtIW4LvlIW4wigZ4hcoqkRZDiAZQ+EGpO+2atx0R GNTJHH9ZcsuRmD5tcdkYJmnNct7VLOBARmp7Q+/HXo2mNgfWQej5qaqmfbpS5/kbgcW+ Ro8CCqsxm7y/iIGzRouwe1KPaxPQ/2OXIhzJ0UAVugJqKcT2YavSWNgrXjODoLVsXrT8 EQMpD7UD8qHlXnoV0nY6VCPVRy7ftUtPgX5d37wpCWDQO0ViLL1PsMtWo+E4JvTTwpu8 0BFw== X-Gm-Message-State: APjAAAXlGRz+8NkHwc1nUea9o3yQWMlDsPsVJqetVwMBsjAIkdkHy3gy Z9p5O9baa4IeB16Jii5RZ+GMDRu7Wpu2iyrDc09m8zc1 X-Google-Smtp-Source: APXvYqywONVLBS245a4UMv2Q1S6Rx8jpLsDEpOuavnz3vkayKPnRERJbc0KIF6TKyooJfKP0/orKk+uuNbHduVwuktw= X-Received: by 2002:a9d:664:: with SMTP id 91mr17250788otn.189.1570903176063; Sat, 12 Oct 2019 10:59:36 -0700 (PDT) MIME-Version: 1.0 References: <20191010205546.GA29154@minnie.tuhs.org> <3d9ff257-8505-8792-abcf-fd44846b58f1@lycos.com> <20191012030155.GG3558@mcvoy.com> <7F3CB32A-3D7F-4D49-80CC-C9EEE61DCC68@kdbarto.org> In-Reply-To: <7F3CB32A-3D7F-4D49-80CC-C9EEE61DCC68@kdbarto.org> From: Adam Thornton Date: Sat, 12 Oct 2019 10:59:24 -0700 Message-ID: To: The Eunuchs Hysterical Society Content-Type: multipart/alternative; boundary="000000000000c92fab0594ba6567" Subject: Re: [TUHS] What was your "Aha, Unix!" moment? X-BeenThere: tuhs@minnie.tuhs.org X-Mailman-Version: 2.1.26 Precedence: list List-Id: The Unix Heritage Society mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: tuhs-bounces@minnie.tuhs.org Sender: "TUHS" --000000000000c92fab0594ba6567 Content-Type: text/plain; charset="UTF-8" Now I'm trying to remember if I ever had a single epiphanic a-ha moment. I don't think I did. I remember being introduced to Unix the summer before my senior year of high school, when I was a research intern at a physics lab at UT Austin. I learned very little about Unix, but learned how to drive Emacs inexpertly (I remain pretty mediocre at it thirty years later) and how to read and post to Usenet. At Rice, although by my sophomore year I was making beer money as a student systems programmer on our VM/CMS system, I'd gravitated to the Sun3/60 workstations we had around the place. And it would have been, I guess, in the fall of my sophomore year that I started playing around with Linux. By the spring, IIRC, I had gotten 4 more MB of discrete DIP RAM (for my Gateway 2000 386DX/25) and repartitioned my hard disk (65MB RLL, IIRC). The rest of undergrad life and graduate school I multibooted between DOS-Windows, OS/2, and Linux, but my primary environment became Linux/X by, oh, 1997 or so. It became OS X in the early 2000s (too bad BeOS didn't make it) but that is (from my perspective as not-a-kernel-developer) just a BSD with a nice GUI; that's where I've stayed in terms of my favorite interactive environment. As far back as 1998 I remember someone saying to me "I've never seen someone use a GUI as just a collection of terminal windows before." My graduate advisor was Mike Mahoney, so I strongly suspect I absorbed a lot of the Way Things Ought To Be from him. Which is why I guess I feel like the following principles are basically axioms of how you should design an operating system: 1) everything's a file, and a file is just an unstructured stream of bytes. Device drivers look like files and give you byte streams 2) input on stdin, output on stdout, errors to stderr 3) pipe things that do #2 together to compose complex functionality. Record semantics are the responsibility of the communicating applications to know, not the pipeline layer, which just transmits bytes 4) fork() and exec() I am willing to grudgingly recognize that #4 in particular is not a great way to create UI-intensive user-facing apps, and that you do need some sort of threading/lightweight process model to deal with a bunch of asynchronous interrupt-triggered user interactions. But for something operating as a classic transforming filter, which really *is* most computing problems, those four things do nicely. Adam --000000000000c92fab0594ba6567 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable

Now I'm trying to reme= mber if I ever had a single epiphanic a-ha moment.

I don't think I did.=C2=A0 I remember being introduced to Unix the sum= mer before my senior year of high school, when I was a research intern at a= physics lab at UT Austin.=C2=A0 I learned very little about Unix, but lear= ned how to drive Emacs inexpertly (I remain pretty mediocre at it thirty ye= ars later) and how to read and post to Usenet.

At = Rice, although by my sophomore year I was making beer money as a student sy= stems programmer on our VM/CMS system, I'd gravitated to the Sun3/60 wo= rkstations we had around the place.=C2=A0 And it would have been, I guess, = in the fall of my sophomore year that I started playing around with Linux.= =C2=A0 By the spring, IIRC, I had gotten 4 more MB of discrete DIP RAM (for= my Gateway 2000 386DX/25) and repartitioned my hard disk (65MB RLL, IIRC).=

The rest of undergrad life and graduate school I = multibooted between DOS-Windows, OS/2, and Linux, but my primary environmen= t became Linux/X by, oh, 1997 or so.=C2=A0 It became OS X in the early 2000= s (too bad BeOS didn't make it) but that is (from my perspective as not= -a-kernel-developer) just a BSD with a nice GUI; that's where I've = stayed in terms of my favorite interactive environment.

As far back as 1998 I remember someone saying to me "I've ne= ver seen someone use a GUI as just a collection of terminal windows before.= "

My graduate advisor was Mike Mahoney, s= o I strongly suspect I absorbed a lot of the Way Things Ought To Be from hi= m.=C2=A0 Which is why I guess I feel like the following principles are basi= cally axioms of how you should design an operating system:

1) everything's a file, and a file is just an unstructured str= eam of bytes.=C2=A0 Device drivers look like files and give you byte stream= s
2) input on stdin, output on stdout, errors to stderr
3) pipe things that do #2 together to compose complex functionalit= y.=C2=A0 Record semantics are the responsibility of the communicating appli= cations to know, not the pipeline layer, which just transmits bytes
4) fork() and exec()

I am willing to grudgi= ngly recognize that #4 in particular is not a great way to create UI-intens= ive user-facing apps, and that you do need some sort of threading/lightweig= ht process model to deal with a bunch of asynchronous interrupt-triggered u= ser interactions.=C2=A0 But for something operating as a classic transformi= ng filter, which really *is* most computing problems, those four things do = nicely.

Adam
--000000000000c92fab0594ba6567--