Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1jsBA6-0007Kq-IE for pljava-dev@arkaria.postgresql.org; Sun, 05 Jul 2020 20:22:54 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1jsBA5-0006Be-C7 for pljava-dev@arkaria.postgresql.org; Sun, 05 Jul 2020 20:22:53 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1jsBA5-0006BX-3k for pljava-dev@lists.postgresql.org; Sun, 05 Jul 2020 20:22:53 +0000 Received: from mail-ed1-x536.google.com ([2a00:1450:4864:20::536]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1jsB9x-0003WF-Vr for pljava-dev@lists.postgresql.org; Sun, 05 Jul 2020 20:22:52 +0000 Received: by mail-ed1-x536.google.com with SMTP id dg28so32943826edb.3 for ; Sun, 05 Jul 2020 13:22:45 -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 :cc; bh=qhkeXBchSaktAAEgzTkCFNuLjI38I4GXrraRmpUgCpo=; b=ryM3iGCHHyYDKzxKRQFAGyZWHJIUd9H3FybOwX3z/6gPD5KPqd+3weCv1Q3uQS+kfu 59HGocg+vJMAIaxvJ0SHq00xGhDWoA/fnfNEB6ocJEee+I+oEVb1Xov/S1+TI3dMkWN4 McjOR43M3aqAn07Woj2/CauKPhmGnO5gUCnCMzahAM5vb0G5v1iWsXrPdUeqfkAdeQ7V 0U3u2DHMsFI19X4bS5uY5IN9raiDVFaSPvwZoWxORGqMqAAF6+eFy2DINhzS2RsVnxbS FQmrju8SIT1mPb9e8ZgUZdPHOMXgN4G47nqCBiK/W8ztO9RwIYBvP16MvFs9I2VS159Z Fujg== 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:cc; bh=qhkeXBchSaktAAEgzTkCFNuLjI38I4GXrraRmpUgCpo=; b=V9rduHzvAY7Bq35d8MIwzVdl232wPqMpgOKCkmdEcfpdSbQ+OArIwTE+PgxqMLexUl L2HyMKXZ1cisKwuAeyEY/esby2R2/hAyPEj/O0LISkUxM9t1kFb40tgEGbqSAFL4XSkf W8fqouWoG8C6EfBmkoCTy0jiRqz1I73HDCCfGmmLN5amyYAMNEh4uqKHHcZ0gwn8Cqq6 MOl662D398DBOsm22wqT7mcoHQ+zMZbXma26kRY2q6x/T0m2p9D2k9iy3LNhYA/ev1R+ FUULgWm7/Q4owarNscM1nSjzo8KRYMSqqlBmDckAcA/WKiefwCJqGdun+RQL1uNB7YYq kGnw== X-Gm-Message-State: AOAM530at6QzHsfOgB8UOiGsMoiNIRrwhElMlRat5xcwJAKjFOpR/V2c 37Psbm0coUqkGFulTiSHS/4aF/YpEsXSGGYtF50= X-Google-Smtp-Source: ABdhPJxObkV4AJxQdPzUiK+VWJf3vaHlptoYU3NpNk/cH21OsGHq60VM28je5OW2RSgW6U4EN5fEt7QSNxv2rYSQIs4= X-Received: by 2002:a05:6402:1bdd:: with SMTP id ch29mr41545458edb.134.1593980563978; Sun, 05 Jul 2020 13:22:43 -0700 (PDT) MIME-Version: 1.0 References: <5EFA6C22.8060006@anastigmatix.net> <5EFC18D9.3090108@anastigmatix.net> <5EFD41B1.30009@anastigmatix.net> <5EFE0A4D.8060402@anastigmatix.net> <5F0125BC.5000609@anastigmatix.net> <5F0172D7.3000708@anastigmatix.net> <5F02122C.7040905@anastigmatix.net> <5F021785.905@anastigmatix.net> <5F021A20.1050903@anastigmatix.net> <5F02340C.7030002@anastigmatix.net> In-Reply-To: <5F02340C.7030002@anastigmatix.net> From: Kartik Ohri Date: Mon, 6 Jul 2020 01:52:32 +0530 Message-ID: Subject: Re: PL/Java new build plugin To: Chapman Flack Cc: pljava-dev@lists.postgresql.org Content-Type: multipart/alternative; boundary="0000000000004b7e0505a9b785ea" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --0000000000004b7e0505a9b785ea Content-Type: text/plain; charset="UTF-8" > > But it is a lot of explaining to have to do in a situation where > there is an alternative that doesn't have the problem, and not only > is it easy, it is the way the code did work before you changed it. > > Does that make sense? > Yes, it does. I'll fix this immediately. > --- > > I hope this doesn't sound unkind; it seems like you had a belief > "the OS doesn't allow line separators in pathnames" that turned out > not to be correct. Certainly, I did not know that line separators were allowed in path names and hence made this error. I will keep this in mind from now on. > Happens all the time. When something like that happens > to me, I go through about five stages of processing it: > 1. Hmm, I believed X was true and it isn't. Bummer. > > 2. Can I remember roughly how long I have believed X was true? > > 3. Have I written anything else in that time where I might have used > the belief that X was true? Any of it worth going back to review > or add test cases? > > 4. Can I remember from what source I first got the idea X was true? > > 5. Can I remember any other things Y, Z, ... that I learned from > the same source? Would this be a good time to check Y, Z, ... also? > > --- > > The case of line separators in pathnames makes a prime example of something > that is no problem as far as the core OS is concerned, but is very widely > cautioned against /because/ it may often trigger failures in, ahem, > userland > code that makes too many assumptions. > > And that is a very good reason for people who are using a system, and > choosing how to name things, to be cautious in that way. > > At the same time, it is not a good reason for people who write code > to write the kind of code that makes such caution necessary. > > This reduces to Jon Postel's robustness principle from RFC 760, "be > conservative in what you do, be liberal in what you accept from others." > Thanks for the detailed advice. It will help me to write better code. --0000000000004b7e0505a9b785ea Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
But it is a lot of explaining to have to do in a situati= on where
there is an alternative that doesn't have the problem, and not only
is it easy, it is the way the code did work before you changed it.

Does that make sense?
Yes, it does. I'll fix this = immediately.
=C2=A0
---

I hope this doesn't sound unkind; it seems like you had a belief
"the OS doesn't allow line separators in pathnames" that turn= ed out
not to be correct.
Certainly, I did not know that line se= parators were allowed in path names and hence made this error. I will keep = this in mind from now on.
=C2=A0
Happens all the time. When something like that happe= ns
to me, I go through about five stages of processing it:
=C2=A0
1. Hmm, I believed X was true and it isn't. Bummer.

2. Can I remember roughly how long I have believed X was true?

3. Have I written anything else in that time where I might have used
=C2=A0 =C2=A0the belief that X was true? Any of it worth going back to revi= ew
=C2=A0 =C2=A0or add test cases?

4. Can I remember from what source I first got the idea X was true?

5. Can I remember any other things Y, Z, ... that I learned from
=C2=A0 =C2=A0the same source?=C2=A0 Would this be a good time to check Y, Z= , ... also?

---

The case of line separators in pathnames makes a prime example of something=
that is no problem as far as the core OS is concerned, but is very widely cautioned against /because/ it may often trigger failures in, ahem, userlan= d
code that makes too many assumptions.

And that is a very good reason for people who are using a system, and
choosing how to name things, to be cautious in that way.

At the same time, it is not a good reason for people who write code
to write the kind of code that makes such caution necessary.

This reduces to Jon Postel's robustness principle from RFC 760, "b= e
conservative in what you do, be liberal in what you accept from others.&quo= t;
Thanks for the detailed advice. It will help me to = write better code.=C2=A0
--0000000000004b7e0505a9b785ea--