From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED,DKIM_VALID,FREEMAIL_FROM,HTML_MESSAGE,MAILING_LIST_MULTI, RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H4,RCVD_IN_MSPIKE_WL autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 28713 invoked from network); 21 Oct 2021 18:16:18 -0000 Received: from tb-ob1.topicbox.com (64.147.108.173) by inbox.vuxu.org with ESMTPUTF8; 21 Oct 2021 18:16:18 -0000 Received: from tb-mx0.topicbox.com (tb-mx0.nyi.icgroup.com [10.90.30.73]) by tb-ob1.topicbox.com (Postfix) with ESMTP id 24C5C321D0 for ; Thu, 21 Oct 2021 14:16:17 -0400 (EDT) (envelope-from bounce.mMe2086e4438c7fc5148074af1.r522be890-2105-11eb-b15e-8d699134e1fa@9fans.bounce.topicbox.com) Received: by tb-mx0.topicbox.com (Postfix, from userid 1132) id 207A31A4F46; Thu, 21 Oct 2021 14:16:17 -0400 (EDT) ARC-Authentication-Results: i=2; topicbox.com; arc=pass; dkim=pass (2048-bit rsa key sha256) header.d=gmail.com header.i=@gmail.com header.b=N3X34gz0 header.a=rsa-sha256 header.s=20210112 x-bits=2048; dmarc=pass policy.published-domain-policy=none policy.published-subdomain-policy=quarantine policy.applied-disposition=none policy.evaluated-disposition=none (p=none,sp=quarantine,d=none,d.eval=none) policy.policy-from=p header.from=gmail.com; spf=pass smtp.mailfrom=ole.hjalmar.kristensen@gmail.com smtp.helo=mail-lj1-f176.google.com; x-internal-arc=fail (as.1.topicbox.com=pass, ams.1.topicbox.com=fail (message has been altered)) (Message modified while forwarding at Topicbox) ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d= topicbox.com; h=mime-version:from:date:message-id:to :content-type:list-help:list-id:list-post:list-subscribe :reply-to:subject:content-transfer-encoding:list-unsubscribe; s= sysmsg-1; t=1634840177; bh=EptwQF/Uj4KOvwy5WuKU5xuzyG0zMr7PqNvhG OG/l7A=; b=jh1CbyqSXmLueUfVk81yPQVk+2KJyIHnb19yAM1PiLIQ1RQxWlnY9 olZitK1H0X34VrSnWav+516iJhGYD022mhLPhwbYOsVepkNWlugx53UoLC5LVhDd KLZBC1Vtn61goTCyosYL0fHLMiNxzEXUI+KFYQtZSOYRg5EvRN+qts= ARC-Seal: i=2; a=rsa-sha256; cv=pass; d=topicbox.com; s=sysmsg-1; t= 1634840177; b=QBkie02UJ1AR8MODJP6Wwyzy7Hd7CLLv8rB3bz882uB6gNlc07 9mJw3Z5QTNGHUpW8gVtGmduCACv2Wn5VQpEunAVsfrzwKcyCa9Dc3PHoVdby70Ub TtYvD/ijUTC4QhXKkmojjjJfCnuoZYi1bUwD149A1Ne38GE8VAF2SpBV0= Authentication-Results: topicbox.com; arc=pass; dkim=pass (2048-bit rsa key sha256) header.d=gmail.com header.i=@gmail.com header.b=N3X34gz0 header.a=rsa-sha256 header.s=20210112 x-bits=2048; dmarc=pass policy.published-domain-policy=none policy.published-subdomain-policy=quarantine policy.applied-disposition=none policy.evaluated-disposition=none (p=none,sp=quarantine,d=none,d.eval=none) policy.policy-from=p header.from=gmail.com; spf=pass smtp.mailfrom=ole.hjalmar.kristensen@gmail.com smtp.helo=mail-lj1-f176.google.com; x-internal-arc=fail (as.1.topicbox.com=pass, ams.1.topicbox.com=fail (message has been altered)) (Message modified while forwarding at Topicbox) X-Received-Authentication-Results: tb-mx1.topicbox.com; arc=none (no signatures found); bimi=skipped (DMARC Policy is not at enforcement); dkim=pass (2048-bit rsa key sha256) header.d=gmail.com header.i=@gmail.com header.b=N3X34gz0 header.a=rsa-sha256 header.s=20210112 x-bits=2048; dmarc=pass policy.published-domain-policy=none policy.published-subdomain-policy=quarantine policy.applied-disposition=none policy.evaluated-disposition=none (p=none,sp=quarantine,d=none,d.eval=none) policy.policy-from=p header.from=gmail.com; iprev=pass smtp.remote-ip=209.85.208.176 (mail-lj1-f176.google.com); spf=pass smtp.mailfrom=ole.hjalmar.kristensen@gmail.com smtp.helo=mail-lj1-f176.google.com; x-aligned-from=pass (Address match); x-google-dkim=pass (2048-bit rsa key) header.d=1e100.net header.i=@1e100.net header.b=Mi+9i+yn; x-me-sender=none; x-ptr=pass smtp.helo=mail-lj1-f176.google.com policy.ptr=mail-lj1-f176.google.com; x-return-mx=pass header.domain=gmail.com policy.is_org=yes (MX Records found: gmail-smtp-in.l.google.com,alt4.gmail-smtp-in.l.google.com,alt3.gmail-smtp-in.l.google.com,alt2.gmail-smtp-in.l.google.com,alt1.gmail-smtp-in.l.google.com); x-return-mx=pass smtp.domain=gmail.com policy.is_org=yes (MX Records found: gmail-smtp-in.l.google.com,alt4.gmail-smtp-in.l.google.com,alt3.gmail-smtp-in.l.google.com,alt2.gmail-smtp-in.l.google.com,alt1.gmail-smtp-in.l.google.com); x-tls=pass smtp.version=TLSv1.2 smtp.cipher=ECDHE-RSA-AES256-GCM-SHA384 smtp.bits=256/256; x-vs=clean score=-100 state=0 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed; d=9fans.net; h= mime-version:from:date:message-id:to:content-type:list-help :list-id:list-post:list-subscribe:reply-to:subject :content-transfer-encoding:list-unsubscribe; s=dkim-1; bh=b6Y/UC 7KcD8ce4HwZfyUb7l3VCEdeQqDk2YvBHq19yg=; b=qxGybwlqVEn5Y9ipGAzISy r13KKDGSpEEfSNrtsfn/wihmIAS3NrNOnH9/FCs2Srgn0KQQ97Jm4qaCiWi9vJLH 5yWQ3JaA1mzrvrbQ0aAVxEVZmhuE/t26zIZx4HE2GPjeCa/d4K6Ywoju7dAf5ZN3 Sx9IIYmpxPZeM45AIivgw= Received: from tb-mx1.topicbox.com (localhost.local [127.0.0.1]) by tb-mx1.topicbox.com (Postfix) with ESMTP id 739A631252A for <9fans@9fans.net>; Thu, 21 Oct 2021 14:16:02 -0400 (EDT) (envelope-from ole.hjalmar.kristensen@gmail.com) Received: from tb-mx1.topicbox.com (localhost [127.0.0.1]) by tb-mx1.topicbox.com (Authentication Milter) with ESMTP id 9296C67D431; Thu, 21 Oct 2021 14:16:02 -0400 ARC-Seal: i=1; a=rsa-sha256; cv=none; d=topicbox.com; s=arcseal; t= 1634840162; b=on81RNhha+YSy1W4pr3WdS9eqk4FYPBGJ7CnHXu23+3jdFKPcH gthPQ+rx+TT8/o6iaNZx5k6TH21EXC5mtFaCUevCnIhCvE/DX4ioeZS67DFqx9Sh C1QRuxytKzr1zQxAU9PDs0p7gGRC6Bh0U+/WpX6gx1jONOMvghdNHHofBFXpBHPs LUeQWEWfsYNFJfXxKBg0Jla26vEW2sOIeQBzdNdL/rS3wwxwT26vfWgbNjTEMsYe dWw4mzU7Ek69JmSJulJ1T+Owh4n2wVpTm6vxN3N67jOI5XTm3vWyj1K3RpaamtxC eGYDVPKhVatjIxqWI9ay8XOTQ6ZW9a74sWYQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d= topicbox.com; h=mime-version:from:date:message-id:subject:to :content-type; s=arcseal; t=1634840162; bh=1JgIHopgpnKwCOcmUpy4j 8kwwnDmF7dC1H1+BiJRoxo=; b=yhvsOUe39j9trSwSlPWBBNmC3ZMw3d5pGwpSE NauoMyC0s96TrZeTKU2aM7tkUISM1QmTvtas+1JIJcN35I4Q7m0tve4Dvx5s4NsY hE27098RdWbwD+njT3KIU5/ZYBtC7tSCKE7CmxNaNIsiNcnagfW572EQJGvA2H4x anDH7kLgiG6EaZKC5b6j7MHcMadnBEDliL7oRmKCuKMPVCnY2Dpz0Qye2u8VFy4E vwEecUljQnFqYstGUHl1VVyUkyU6wXxepePZe2l2SMOSAt/8oNMupIgV3KhgxEhr iQcPp1zghXTn5fBEL3tLez2JZNPBCn2urIq9usCcChn4KTzlQ== ARC-Authentication-Results: i=1; tb-mx1.topicbox.com; arc=none (no signatures found); bimi=skipped (DMARC Policy is not at enforcement); dkim=pass (2048-bit rsa key sha256) header.d=gmail.com header.i=@gmail.com header.b=N3X34gz0 header.a=rsa-sha256 header.s=20210112 x-bits=2048; dmarc=pass policy.published-domain-policy=none policy.published-subdomain-policy=quarantine policy.applied-disposition=none policy.evaluated-disposition=none (p=none,sp=quarantine,d=none,d.eval=none) policy.policy-from=p header.from=gmail.com; iprev=pass smtp.remote-ip=209.85.208.176 (mail-lj1-f176.google.com); spf=pass smtp.mailfrom=ole.hjalmar.kristensen@gmail.com smtp.helo=mail-lj1-f176.google.com; x-aligned-from=pass (Address match); x-google-dkim=pass (2048-bit rsa key) header.d=1e100.net header.i=@1e100.net header.b=Mi+9i+yn; x-me-sender=none; x-ptr=pass smtp.helo=mail-lj1-f176.google.com policy.ptr=mail-lj1-f176.google.com; x-return-mx=pass header.domain=gmail.com policy.is_org=yes (MX Records found: gmail-smtp-in.l.google.com,alt4.gmail-smtp-in.l.google.com,alt3.gmail-smtp-in.l.google.com,alt2.gmail-smtp-in.l.google.com,alt1.gmail-smtp-in.l.google.com); x-return-mx=pass smtp.domain=gmail.com policy.is_org=yes (MX Records found: gmail-smtp-in.l.google.com,alt4.gmail-smtp-in.l.google.com,alt3.gmail-smtp-in.l.google.com,alt2.gmail-smtp-in.l.google.com,alt1.gmail-smtp-in.l.google.com); x-tls=pass smtp.version=TLSv1.2 smtp.cipher=ECDHE-RSA-AES256-GCM-SHA384 smtp.bits=256/256; x-vs=clean score=-100 state=0 X-ME-VSCause: gggruggvucftvghtrhhoucdtuddrgedvtddrvddviedguddujeculddtuddrgeduhedrtd dtmdcutefuodetggdotefrodftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpggft fghnshhusghstghrihgsvgdpuffrtefokffrpgfnqfghnecuuegrihhlohhuthemuceftd dtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenucfjughrpegghfffkffuvfgt segrtderredttdejnecuhfhrohhmpefqlhgvqdfjjhgrlhhmrghrucfmrhhishhtvghnsh gvnhcuoeholhgvrdhhjhgrlhhmrghrrdhkrhhishhtvghnshgvnhesghhmrghilhdrtgho mheqnecuggftrfgrthhtvghrnhepjefhkeekhfduhfevtdeiudegledufeeugeefgfegte dvuddutdehffeuvdefhfehnecukfhppedvtdelrdekhedrvddtkedrudejieenucevlhhu shhtvghrufhiiigvpedtnecurfgrrhgrmhepihhnvghtpedvtdelrdekhedrvddtkedrud ejiedphhgvlhhopehmrghilhdqlhhjuddqfhdujeeirdhgohhoghhlvgdrtghomhdpmhgr ihhlfhhrohhmpeeoohhlvgdrhhhjrghlmhgrrhdrkhhrihhsthgvnhhsvghnsehgmhgrih hlrdgtohhmqe X-ME-VSScore: -100 X-ME-VSCategory: clean Received-SPF: pass (gmail.com ... _spf.google.com: Sender is authorized to use 'ole.hjalmar.kristensen@gmail.com' in 'mfrom' identity (mechanism 'include:_netblocks.google.com' matched)) receiver=tb-mx1.topicbox.com; identity=mailfrom; envelope-from="ole.hjalmar.kristensen@gmail.com"; helo=mail-lj1-f176.google.com; client-ip=209.85.208.176 Received: from mail-lj1-f176.google.com (mail-lj1-f176.google.com [209.85.208.176]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by tb-mx1.topicbox.com (Postfix) with ESMTPS for <9fans@9fans.net>; Thu, 21 Oct 2021 14:16:01 -0400 (EDT) (envelope-from ole.hjalmar.kristensen@gmail.com) Received: by mail-lj1-f176.google.com with SMTP id n7so1405532ljp.5 for <9fans@9fans.net>; Thu, 21 Oct 2021 11:16:01 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=1JgIHopgpnKwCOcmUpy4j8kwwnDmF7dC1H1+BiJRoxo=; b=Mi+9i+ynyxgZ7f2pRH+Qna4OI7dCFM0pMNNj1yL/0iNDNxXvKtO7ZwGCARmHSNlat4 d7GD44HSjVF64yCwEsS5VtZNqxyMvVXfO3uefYxRy3ygJLWLuechYEB6KSgPL0IOWsWU Zw6kU3o+Pz3TnsJkHoICLujgvSVQk7UJHzQJf2ZFKCsvUcUvHCIOlt2TEWOtpwy8N/42 wPO0KJteF1l+OftD9R37r8ZDejtRQjPm8yEn7ZJCA3SBYv3N/OhMXcbbGJtzOomF9VzO QU56kKnLGniG0N+IsOiO/KeT1iQFTcQu4ETLCB9vGoKae4yBcEUfxja4miXSKK6jASoY aHZQ== X-Gm-Message-State: AOAM533m33xNQLMqAp5AwC/z6Gx/QoU1XWWdXFIJChd8QOvtQcglEwGP 445rWuRIG3qWkZBVgJuOCdzynE3MCDRdDm8IKc8BR5R+bbM= X-Google-Smtp-Source: ABdhPJz8TiYNgCEIoHlcT739Jh9zWRTgYZddEYSygVP2axEjkyCazvDvVwufNvAS5uBFuncBgCw7C7xFKRtHVeuD6kE= X-Received: by 2002:a2e:bd86:: with SMTP id o6mr7425953ljq.221.1634840159836; Thu, 21 Oct 2021 11:15:59 -0700 (PDT) MIME-Version: 1.0 From: Ole-Hjalmar Kristensen Date: Thu, 21 Oct 2021 20:15:48 +0200 Message-ID: To: Fans of the OS Plan 9 from Bell Labs <9fans@9fans.net> Content-Type: multipart/alternative; boundary="000000000000fde61d05cee0e2eb" Topicbox-Policy-Reasoning: allow: sender is a member Topicbox-Message-UUID: f857d86c-329a-11ec-b25a-b9d924b306fa Archived-At: =?UTF-8?B?PGh0dHBzOi8vOWZhbnMudG9waWNib3guY29tL2dyb3Vwcy85?= =?UTF-8?B?ZmFucy9UNzNmYmI3YTUzM2FlZjc0My1NZTIwODZlNDQzOGM3ZmM1MTQ4MDc0?= =?UTF-8?B?YWYxPg==?= List-Help: List-Id: "9fans" <9fans.9fans.net> List-Post: List-Software: Topicbox v0 List-Subscribe: Precedence: list Reply-To: 9fans <9fans@9fans.net> Subject: [9fans] The development environment from Hell Content-Transfer-Encoding: 7bit List-Unsubscribe: , Topicbox-Delivery-ID: 2:9fans:437d30aa-c441-11e9-8a57-d036212d11b0:522be890-2105-11eb-b15e-8d699134e1fa:Me2086e4438c7fc5148074af1:1:fKGQoiWAwHXYZrjuilli9mY6B7l6zMxRssR4Atjuhho --000000000000fde61d05cee0e2eb Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Not exactly Hell, but rather close: ISPOrganizationLatitudeLongitude NTE Marked AS Not Available 63.4333 10.6833 =F0=9F=98=80 This is the tale of a convoluted development environment, not specifically Plan9, but Plan9port, sam, and acme. I am working on a largish system, with about 5M LOC. The setup is as follows. I have a Windows laptop. It needs to be Windows, because of the office automation applications. It is also the only machine I have at home which can connect to the company VPN. The office desktop is a nice modern AMD Ryzen 9 16-core processor with plenty of RAM running Ubuntu. The system cannot (for reasons beyond my control) be compiled on the Ubuntu, it needs specifically CentOS 7, so we run a Docker image with CentOS 7 on the Ubuntu machine. Compiling on the laptop is a no-go anyway, it is much too slow, so I have not bothered installing WSL and Docker on it. I started out running VSCode, which is available both on Windows and Ubuntu, and which has nice remote editing capabilities a la sam, and tons of plugins. It is a better experience then Visual Studio, in my opinion. It has a clangd plugin which can be used to navigate the code, but for some reason clangd chokes on some submodules. acme with acme-lsp gives me the same navigation capabilities, and I prefer the user interface of acme, so I have reverted to acme on the Ubuntu machine. Works great, I use acme-lsp on the modules clangd manages to compile, and ag (parallel grep-like tool) on the rest. So in the office, everything is hunky-dory. I connect to the Docker image from acme by running win docker exec, and since both Docker and the Ubuntu machine has the same view of the files, everything works seamlessly. When working from home, acme is not an ideal solution, since the VPN network has high latency and relatively low bandwith (a fraction of my 500Mbit fiber connection). I run an X server on Windows, and start acme on the Ubuntu machine. Editing files works fairly well, but commands which spew large amounts of text really bogs acme down. I could switch to VSCode, but I would prefer not to. Now, I have experimented with other solutions which could give me a better experience. Running sshfs and a local acme would be one possibility, but it is not really fast enough for searching through the code. (I can search the 5M lines code base in about 2 seconds with ag on the desktop machine). Copying the whole system to the local machine and do the editing locally, then run Unison to synchronize, is another possibility, but not ideal. So I thought about sam, which I also like, although I have not used it as much as acme. Sam has remote editing, which solves the latency and bandwidth problem, but I prefer the acme right-click to navigate compilation errors and grep results. So, can we combine acme and sam in a meaningful way? It turns out we can. From a local acme, I connect to the remote Docker in one or more acme windows. This is for compilation and grep. By adding plumber rules which sends any file which cannot be found locally to the remotely connected sam, I can right-click on errors and grep results and get sam to go there. The only thing is that to avoid recursion in the plumber, I must specifically route the message to the sam named pipe instead of to the edit port, which means I need to start sam before the plumber. Also, I have not investigated how I can access the remote clangd from my local acme. What do you think? Suggestions? ------------------------------------------ 9fans: 9fans Permalink: https://9fans.topicbox.com/groups/9fans/T73fbb7a533aef743-Me2086= e4438c7fc5148074af1 Delivery options: https://9fans.topicbox.com/groups/9fans/subscription --000000000000fde61d05cee0e2eb Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Not exactly Hell, but rather close: ISPOrganizationLatitudeLongitudeNTE Marked ASNot Available63.433310.6833
= 😀

This is the tale of a co= nvoluted development environment, not specifically Plan9, but Plan9port, sa= m, and acme.

I am working on a largish system, with about 5M LOC= . The setup is as follows. I have a Windows laptop. It needs to be Windows,= because of the office automation applications. It is also the only machine= I have at home which can connect to the company VPN. The office desktop is= a nice modern AMD Ryzen 9 16-core processor with plenty of RAM running Ubu= ntu. The system cannot (for reasons beyond my control) be compiled on the U= buntu, it needs specifically CentOS 7, so we run a Docker image with CentOS= 7 on the Ubuntu machine. Compiling on the laptop is a no-go anyway, it is = much too slow, so I have not bothered installing WSL and Docker on it.

I started out running VSCode, which is available both on Windows and= Ubuntu, and which has nice remote editing capabilities a la sam, and tons = of plugins. It is a better experience then Visual Studio, in my opinion. It= has a clangd plugin which can be used to navigate the code, but for some r= eason clangd chokes on some submodules. acme with acme-lsp gives me the sam= e navigation capabilities, and I prefer the user interface of acme, so I ha= ve reverted to acme on the Ubuntu machine. Works great, I use acme-lsp on t= he modules clangd manages to compile, and ag (parallel grep-like tool) on t= he rest. So in the office, everything is hunky-dory. I connect to the Docke= r image from acme by running win docker exec, and since both Docker and the= Ubuntu machine has the same view of the files, everything works seamlessly= .

When working from home, acme is not an ideal solution, since t= he VPN network has high latency and relatively low bandwith (a fraction of = my 500Mbit fiber connection). I run an X server on Windows, and start acme = on the Ubuntu machine. Editing files works fairly well, but commands which = spew large amounts of text really bogs acme down. I could switch to VSCode,= but I would prefer not to.

Now, I have experimented with other = solutions which could give me a better experience. Running sshfs and a loca= l acme would be one possibility, but it is not really fast enough for searc= hing through the code. (I can search the 5M lines code base in about 2 seco= nds with ag on the desktop machine). Copying the whole system to the local = machine and do the editing locally, then run Unison to synchronize, is anot= her possibility, but not ideal.

So I thought about sam, which I = also like, although I have not used it as much as acme. Sam has remote edit= ing, which solves the latency and bandwidth problem, but I prefer the acme = right-click to navigate compilation errors and grep results. So, can we com= bine acme and sam in a meaningful way? It turns out we can. From a local ac= me, I connect to the remote Docker in one or more acme windows. This is for= compilation and grep. By adding plumber rules which sends any file which c= annot be found locally to the remotely connected sam, I can right-click on = errors and grep results and get sam to go there. The only thing is that to = avoid recursion in the plumber, I must specifically route the message to th= e sam named pipe instead of to the edit port, which means I need to start s= am before the plumber. Also, I have not investigated how I can access the r= emote clangd from my local acme.

What do you think? Suggestions?=
= --000000000000fde61d05cee0e2eb--