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_SIGNED,DKIM_VALID, HTML_MESSAGE,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 8546 invoked from network); 12 Jan 2022 04:05:33 -0000 Received: from tb-ob1.topicbox.com (64.147.108.173) by inbox.vuxu.org with ESMTPUTF8; 12 Jan 2022 04:05:33 -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 D32F729728 for ; Tue, 11 Jan 2022 23:05:31 -0500 (EST) (envelope-from bounce.mM93b4aacc25801f87ee0a8666.r522be890-2105-11eb-b15e-8d699134e1fa@9fans.bounce.topicbox.com) Received: by tb-mx0.topicbox.com (Postfix, from userid 1132) id D29BD100C970; Tue, 11 Jan 2022 23:05:31 -0500 (EST) ARC-Authentication-Results: i=2; topicbox.com; arc=pass; dkim=none (no signatures found); dmarc=none policy.published-domain-policy=none policy.applied-disposition=none policy.evaluated-disposition=none (p=none,d=none,d.eval=none) policy.policy-from=p header.from=monkey.org; spf=pass smtp.mailfrom=marius.eriksen@gmail.com smtp.helo=mail-ua1-f45.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:references:in-reply-to:from:date :message-id:subject:to:content-type:list-help:list-id:list-post :list-subscribe:reply-to:content-transfer-encoding :list-unsubscribe; s=sysmsg-1; t=1641960331; bh=ypZsecvyVXv5uTus 6q9hRifMW1G0/ZYs4dEUU3e9hUE=; b=fIHoDI4XtxgQ4crX87/mecxnz/EynnKA AyI05Vtjr2gVmwvNhcFb4Ih/VfA4Dmbe4j8alD/CXfeECYaKMjfShNbuLV/sxZFA HttPZJIYNj407jV+4lBuq/exFSQOQhqa1eVahPdb5Ey1Zi+uwRyoJMwjETtMZsOD kKmNqP5FIR4= ARC-Seal: i=2; a=rsa-sha256; cv=pass; d=topicbox.com; s=sysmsg-1; t= 1641960331; b=quX4GLnyvgY8lCmvhWzs4DZbvsWO44RZE021HHYTM4HUMp7RFv z1lgDvQvJRJRwlbZEcrFgZPvgxEGDRbkWPDHkwNKMsM86zqF3CTd6OsmPPXxqk+k m7uBSyEdj0aPFCuIZsgEDVuDE2zRZ49oPSkkWnIQstBk9KJ83+qLAsj8M= Authentication-Results: topicbox.com; arc=pass; dkim=none (no signatures found); dmarc=none policy.published-domain-policy=none policy.applied-disposition=none policy.evaluated-disposition=none (p=none,d=none,d.eval=none) policy.policy-from=p header.from=monkey.org; spf=pass smtp.mailfrom=marius.eriksen@gmail.com smtp.helo=mail-ua1-f45.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-mx0.topicbox.com; arc=none (no signatures found); bimi=skipped (DMARC did not pass); dkim=none (no signatures found); dmarc=none policy.published-domain-policy=none policy.applied-disposition=none policy.evaluated-disposition=none (p=none,d=none,d.eval=none) policy.policy-from=p header.from=monkey.org; iprev=pass smtp.remote-ip=209.85.222.45 (mail-ua1-f45.google.com); spf=pass smtp.mailfrom=marius.eriksen@gmail.com smtp.helo=mail-ua1-f45.google.com; x-aligned-from=fail; x-google-dkim=pass (2048-bit rsa key) header.d=1e100.net header.i=@1e100.net header.b=fyo+lz+c; x-me-sender=none; x-ptr=pass smtp.helo=mail-ua1-f45.google.com policy.ptr=mail-ua1-f45.google.com; x-return-mx=pass header.domain=monkey.org policy.is_org=yes (MX Records found: mx.monkey.org.cust.b.hostedemail.com); x-return-mx=pass smtp.domain=gmail.com policy.is_org=yes (MX Records found: alt3.gmail-smtp-in.l.google.com,alt4.gmail-smtp-in.l.google.com,alt2.gmail-smtp-in.l.google.com,alt1.gmail-smtp-in.l.google.com,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=0 state=0 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed; d=9fans.net; h= mime-version:references:in-reply-to:from:date:message-id:subject :to:content-type:list-help:list-id:list-post:list-subscribe :reply-to:content-transfer-encoding:list-unsubscribe; s=dkim-1; bh=CmARTjgKAXhMBrW/axL0Mizr0SgfzGETks+4/Xtw5n8=; b=XuBUseh+9w92 6jZmrFXXlZ+8Je0/eWHnwYZBbpx9uonh94NJzqxPK60NpEMNKBKy5NwnRkaxsxze il3OQFNEGTkVVJGCFuNrk0q1BSprgsNDo3kBeGGapsZ7GRgdF1OIwdgBEWN6JsTm vbXbEM4wsRhgXDcbcmJcfP7vb+1DgPU= Received: from tb-mx0.topicbox.com (localhost.local [127.0.0.1]) by tb-mx0.topicbox.com (Postfix) with ESMTP id DDA50100C55C for <9fans@9fans.net>; Tue, 11 Jan 2022 23:05:19 -0500 (EST) (envelope-from marius.eriksen@gmail.com) Received: from tb-mx0.topicbox.com (localhost [127.0.0.1]) by tb-mx0.topicbox.com (Authentication Milter) with ESMTP id 36A2648FA0A; Tue, 11 Jan 2022 23:05:19 -0500 ARC-Seal: i=1; a=rsa-sha256; cv=none; d=topicbox.com; s=arcseal; t= 1641960319; b=m99hLjouWCuRQPBD3CygPU79mO1oEoqifglckqOQigpmCifM+K VogVKujcWPID40NI/wrdEwGZ27yybwZTVKLC2hv7fy3iSX/nplKLTg903JnhZp07 NDbOLonmKvFKVEAdz64/KFYSLJdSWPC9uBjCjyVCUl180otK7iXnAB09zf8550iU BX5aNVa0Ayxp9vUYDeHafPaHV62ZXARkjirphknVQZifTSaPDJcGKo1cYpQ/oi75 L0i1J2RojVzJuPSmVfZSXVx9dhZKuRtqoJvVKKyvnQQV0/FUzb+e8iTsTDozX0UP 91/XDfQnSjDf2XR6OC5Cg0oKi1h/h1XzN+Cw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d= topicbox.com; h=mime-version:references:in-reply-to:from:date :message-id:subject:to:content-type; s=arcseal; t=1641960319; bh=PR6lssYW5DUz/LuOo1YH9acFKg6S8FomtX5ZNUEMu24=; b=ZayoGRoSgCU8 2hhthDXsXE1ZC9Zu6bCVTWZcKz76CQnfYrf0NF8kFJLVHRnVdm9wtcdR1phfNwXr 6DDO96nD4tshpIEpYkwkDvUfygcKkpkjVP3j4i2OwwZccDrRjDRyKpAhMTff85pS PjuM5UOPCgS07v4GSNpZZfpqIskJb3wHhMGe2AyI5aWu2Zgu5ZVF8tYbQJ0yBU33 CuuXpcyqDullFCzNKVunVUj3gV6iM/WFzRED1aaykGYxX3m/dUxNDm9Imar36SLx nz+mVVIEzMTRUHojw+h5kP+oXmYY6+2TI5hqgPzaCqaEoT8e49liTVdNtYwjbVzM hAjFUNRGNg== ARC-Authentication-Results: i=1; tb-mx0.topicbox.com; arc=none (no signatures found); bimi=skipped (DMARC did not pass); dkim=none (no signatures found); dmarc=none policy.published-domain-policy=none policy.applied-disposition=none policy.evaluated-disposition=none (p=none,d=none,d.eval=none) policy.policy-from=p header.from=monkey.org; iprev=pass smtp.remote-ip=209.85.222.45 (mail-ua1-f45.google.com); spf=pass smtp.mailfrom=marius.eriksen@gmail.com smtp.helo=mail-ua1-f45.google.com; x-aligned-from=fail; x-google-dkim=pass (2048-bit rsa key) header.d=1e100.net header.i=@1e100.net header.b=fyo+lz+c; x-me-sender=none; x-ptr=pass smtp.helo=mail-ua1-f45.google.com policy.ptr=mail-ua1-f45.google.com; x-return-mx=pass header.domain=monkey.org policy.is_org=yes (MX Records found: mx.monkey.org.cust.b.hostedemail.com); x-return-mx=pass smtp.domain=gmail.com policy.is_org=yes (MX Records found: alt3.gmail-smtp-in.l.google.com,alt4.gmail-smtp-in.l.google.com,alt2.gmail-smtp-in.l.google.com,alt1.gmail-smtp-in.l.google.com,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=0 state=0 X-ME-VSCause: gggruggvucftvghtrhhoucdtuddrgedvuddrudehgeculddtuddrgeduhedrtddtmdcute fuodetggdotefrodftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpggftfghnshhu sghstghrihgsvgdpuffrtefokffrpgfnqfghnecuuegrihhlohhuthemuceftddtnecune cujfgurhepgghfjgfhfffkuffvtgesrgdtreertddtjeenucfhrhhomhepfdhmrghrihhu shcurgdrucgvrhhikhhsvghnfdcuoehmrghrihhushesmhhonhhkvgihrdhorhhgqeenuc ggtffrrghtthgvrhhnpefhgefhleelteeilefhgfegheejieeggeejkeetleekffehffet veetiedtjedvieenucffohhmrghinhepghhithhhuhgsrdgtohhmpdhmrghilhdqrghrtg hhihhvvgdrtghomhdpthhophhitggsohigrdgtohhmnecukfhppedvtdelrdekhedrvddv vddrgeehnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehinhgvthepvddtle drkeehrddvvddvrdeghedphhgvlhhopehmrghilhdquhgruddqfheghedrghhoohhglhgv rdgtohhmpdhmrghilhhfrhhomhepoehmrghrihhushdrvghrihhkshgvnhesghhmrghilh drtghomheq X-ME-VSScore: 0 X-ME-VSCategory: clean Received-SPF: pass (gmail.com ... _spf.google.com: Sender is authorized to use 'marius.eriksen@gmail.com' in 'mfrom' identity (mechanism 'include:_netblocks.google.com' matched)) receiver=tb-mx0.topicbox.com; identity=mailfrom; envelope-from="marius.eriksen@gmail.com"; helo=mail-ua1-f45.google.com; client-ip=209.85.222.45 Received: from mail-ua1-f45.google.com (mail-ua1-f45.google.com [209.85.222.45]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by tb-mx0.topicbox.com (Postfix) with ESMTPS for <9fans@9fans.net>; Tue, 11 Jan 2022 23:05:19 -0500 (EST) (envelope-from marius.eriksen@gmail.com) Received: by mail-ua1-f45.google.com with SMTP id r15so2486423uao.3 for <9fans@9fans.net>; Tue, 11 Jan 2022 20:05:19 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to; bh=PR6lssYW5DUz/LuOo1YH9acFKg6S8FomtX5ZNUEMu24=; b=fyo+lz+coeHwogp1IHnBWhpGgQ7SJLc9bIZvWsI38+uGurFFJ8wgfcFf9OoVeofm3/ d8CtJbNXQMztUIAU/CKF8i7G8malTOH2+DDR5UMxdJ7FoAhXMlF9fnQ83pXrsRIvCH9c eJZPaA97AvUtLRXh//qvr4azyxggFcOqZMrPFk/+hOAHT0yhk/6d2N7cRhdpPuLcIjch jJ8u063PML78Y38vIjRl8hdJly2S6dHqmlgeu+M4qJrlY04rfc52rf7xaWmXiwhgqajS 4EnGwh7w5XqlzaAvmJKEyBSL45Cq92i6Fv5NM585OpabrSWwLDxwUVRi590V3gdI6sJV Q9/A== X-Gm-Message-State: AOAM531/rFAVAiVL3iukfUwh5hHwuGG3NV5KVT8buWOCj3Ztd3MzgRPq zpaRz8Br7uuM0/Eu3tYVOUEXghmyiAFDDH0zPIBkRf+qUed7rw== X-Google-Smtp-Source: ABdhPJwEiOeTqmwBtzL03FebQtpaULODCrF+eWxmv9F4fcJKwTsOYBQ07dM8/2TFsQc76JBaXkQJpdGTRkKftMd0R6c= X-Received: by 2002:ab0:2411:: with SMTP id f17mr3394572uan.97.1641960318820; Tue, 11 Jan 2022 20:05:18 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: "marius a. eriksen" Date: Tue, 11 Jan 2022 20:05:08 -0800 Message-ID: Subject: Re: [9fans] The development environment from Hell To: 9fans <9fans@9fans.net> Content-Type: multipart/alternative; boundary=00000000000089e8c505d55aad4c Topicbox-Policy-Reasoning: allow: sender is a member Topicbox-Message-UUID: df039812-735c-11ec-8bb1-964008a5eaa4 Archived-At: =?UTF-8?B?PGh0dHBzOi8vOWZhbnMudG9waWNib3guY29tL2dyb3Vwcy85?= =?UTF-8?B?ZmFucy9UNzNmYmI3YTUzM2FlZjc0My1NOTNiNGFhY2MyNTgwMWY4N2VlMGE4?= =?UTF-8?B?NjY2Pg==?= List-Help: List-Id: "9fans" <9fans.9fans.net> List-Post: List-Software: Topicbox v0 List-Subscribe: Precedence: list Reply-To: 9fans <9fans@9fans.net> Content-Transfer-Encoding: 7bit List-Unsubscribe: , Topicbox-Delivery-ID: 2:9fans:437d30aa-c441-11e9-8a57-d036212d11b0:522be890-2105-11eb-b15e-8d699134e1fa:M93b4aacc25801f87ee0a8666:1:f0GTzVp5FGDnyasRcjToJnCSwJgCusJxjmt5dMkfklE --00000000000089e8c505d55aad4c Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable > 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. An alternative is this patch which implements a proper remoting layer for Acme. (Very similar to the way Sam does it: it starts a server over ssh, and then ferries 9p back and forth.) I use this as my daily driver, and it's _very_ close to a local experience. See this thread for some more details. On Thu, Oct 21, 2021 at 11:16 AM Ole-Hjalmar Kristensen < ole.hjalmar.kristensen@gmail.com> wrote: > 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 syst= em > 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 Ubun= tu > 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 VSCod= e, > 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 t= he > 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 gr= ep > 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 pi= pe > 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 / see discussions > + participants > + delivery options > Permalink > > ------------------------------------------ 9fans: 9fans Permalink: https://9fans.topicbox.com/groups/9fans/T73fbb7a533aef743-M93b4a= acc25801f87ee0a8666 Delivery options: https://9fans.topicbox.com/groups/9fans/subscription --00000000000089e8c505d55aad4c Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
> 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 righ= t-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 com= pilation and grep. By adding plumber rules which sends any file which canno= t be found locally to the remotely connected sam, I can right-click on erro= rs and grep results and get sam to go there. The only thing is that to avoi= d recursion in the plumber, I must specifically route the message to the sa= m named pipe instead of to the edit port, which means I need to start sam b= efore the plumber. Also, I have not investigated how I can access the remot= e clangd from my local acme.

An alternative is this= patch which implements a proper remoting layer for Acme. (Very si= milar to the way Sam does it: it starts a server over ssh, and then ferries= 9p back and forth.)

I use this as my daily driv= er, and it's _very_ close to a local experience.

=
See this thread for some more details.




On Thu, Oct 21, 2021 at 11:16 AM Ole-Hjalmar Kr= istensen <ole.hjalma= r.kristensen@gmail.com> wrote:
Not exactly Hell, but rather close: 
ISPOrganizationLatitudeLongitude
NTE Marked ASNot Available63.43= 3310.6833
😀

= This is the tale of a convoluted development environment, not specifically = Plan9, but Plan9port, sam, and acme.

I am working on a largish s= ystem, 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 VP= N. The office desktop is a nice modern AMD Ryzen 9 16-core processor with p= lenty of RAM running Ubuntu. The system cannot (for reasons beyond my contr= ol) 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 i= s a no-go anyway, it is much too slow, so I have not bothered installing WS= L and Docker on it.

I started out running VSCode, which is avail= able both on Windows and Ubuntu, and which has nice remote editing capabili= ties a la sam, and tons of plugins. It is a better experience then Visual S= tudio, 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 a= cme-lsp gives me the same navigation capabilities, and I prefer the user in= terface of acme, so I have reverted to acme on the Ubuntu machine. Works gr= eat, I use acme-lsp on the modules clangd manages to compile, and ag (paral= lel 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 s= ince both Docker and the Ubuntu machine has the same view of the files, eve= rything 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 w= ell, 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 real= ly fast enough for searching through the code. (I can search the 5M lines c= ode base in about 2 seconds with ag on the desktop machine). Copying the wh= ole system to the local machine and do the editing locally, then run Unison= to synchronize, is another possibility, but not ideal.

So I tho= ught about sam, which I also like, although I have not used it as much as a= cme. 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 a= cme windows. This is for compilation and grep. By adding plumber rules whic= h sends any file which cannot be found locally to the remotely connected sa= m, I can right-click on errors and grep results and get sam to go there. Th= e 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 investigate= d how I can access the remote clangd from my local acme.

What do= you think? Suggestions?
<= div id=3D"topicbox-footer" style=3D"margin:10px 0 0;border-top:1px solid #d= dd;border-color:rgba(0,0,0,.15);padding:7px 0;"> 9fans / 9fans / see discussions + participants + delivery&n= bsp;options Permalink = --00000000000089e8c505d55aad4c--