Rocksolid Light

Welcome to novaBBS (click a section below)

mail  files  register  newsreader  groups  login

Message-ID:  

I'm a Lisp variable -- bind me!


computers / alt.bbs.synchronet / Telegram and JavaScript

SubjectAuthor
* Telegram and JavaScriptJohn Dovey
`* Telegram and JavaScriptechicken
 `* Telegram and JavaScriptJohn Dovey
  `* Telegram and JavaScriptechicken
   +* Telegram and JavaScriptJohn Dovey
   |`- Telegram and JavaScriptechicken
   `- Telegram and JavaScriptMRO

1
Telegram and JavaScript

<6261C81F.46818.sync@vert.synchro.net>

  copy mid

https://www.novabbs.com/computers/article-flat.php?id=16029&group=alt.bbs.synchronet#16029

  copy link   Newsgroups: alt.bbs.synchronet
Path: i2pn2.org!i2pn.org!weretis.net!feeder8.news.weretis.net!news.uzoreto.com!news-out.netnews.com!news.alt.net!fdc2.netnews.com!peer01.ams1!peer.ams1.xlned.com!news.xlned.com!peer03.iad!feed-me.highwinds-media.com!news.highwinds-media.com!fx13.iad.POSTED!not-for-mail
From: john.do...@4:920/69.1.remove-g3-this (John Dovey)
Subject: Telegram and JavaScript
Message-ID: <6261C81F.46818.sync@vert.synchro.net>
X-Comment-To: All
Newsgroups: alt.bbs.synchronet
X-FTN-AREA: SYNCHRONET
X-FTN-MSGID: 4:920/69.1 6261c7d2
X-FTN-CHRS: CP437
X-FTN-SEEN-BY: 92/0 1 103/705 154/10 218/700 221/1 240/1120 280/464 301/1 113 341/66
X-FTN-SEEN-BY: 712/848 920/0 1 69 5020/1042 5058/104
X-FTN-PATH: 920/69 92/1 301/1
Content-Type: text/plain; charset=IBM437
Content-Transfer-Encoding: 8bit
X-Gateway: vert.synchro.net [Synchronet 3.19c-Win32 NewsLink 1.113]
Lines: 16
X-Complaints-To: https://www.astraweb.com/aup
NNTP-Posting-Date: Thu, 21 Apr 2022 21:09:52 UTC
Date: Thu, 21 Apr 2022 16:08:34 -0500
X-Received-Bytes: 1496
 by: John Dovey - Thu, 21 Apr 2022 21:08 UTC

Hi,
This probably fits better in Future4Fido, but figured I'd mention here.

Telegram has just updated their Bit spec, and it's now possible to run/launch a JavaScript app
directly from the client.

I'm not much of a JavaScript person, but glancing quickly at the spec and some examples, it occurs to me that one of the gurus in the area could possibly port a lot of the functionality of SBBS across.

Thoughts?

JD
--- AfterShock/Android 1.6.8
* Origin: Firecat Mobile (4:920/69.1)
--- Synchronet 3.19c-Win32 NewsLink 1.113
* Vertrauen - Riverside County, California - telnet://vert.synchro.net

Telegram and JavaScript

<62622020.74677.sync@bbs.electronicchicken.com>

  copy mid

https://www.novabbs.com/computers/article-flat.php?id=16032&group=alt.bbs.synchronet#16032

  copy link   Newsgroups: alt.bbs.synchronet
Path: i2pn2.org!i2pn.org!aioe.org!news.uzoreto.com!news-out.netnews.com!news.alt.net!fdc2.netnews.com!peer02.ams1!peer.ams1.xlned.com!news.xlned.com!peer03.iad!feed-me.highwinds-media.com!news.highwinds-media.com!fx01.iad.POSTED!not-for-mail
From: echic...@ECBBS.remove-an2-this (echicken)
Subject: Telegram and JavaScript
Message-ID: <62622020.74677.sync@bbs.electronicchicken.com>
X-Comment-To: John Dovey
Organization: electronic chicken bbs
Newsgroups: alt.bbs.synchronet
In-Reply-To: <6261C81F.46818.sync@vert.synchro.net>
References: <6261C81F.46818.sync@vert.synchro.net>
X-FTN-PID: Synchronet 3.19c-Linux master/9aaaef9ab Feb 22 2022 GCC 9.3.0
X-FTN-MSGID: 46821.sync@1:103/705 26c81259
X-FTN-REPLY: 4:920/69.1 6261c7d2
X-FTN-CHRS: CP437 2
WhenImported: 20220422032520-0500 412c
WhenExported: 20220422034807Z 412c
ExportedFrom: ECBBS sync 74677
Content-Type: text/plain; charset=IBM437
Content-Transfer-Encoding: 8bit
X-Gateway: vert.synchro.net [Synchronet 3.19c-Win32 NewsLink 1.113]
Lines: 32
X-Complaints-To: https://www.astraweb.com/aup
NNTP-Posting-Date: Fri, 22 Apr 2022 03:48:07 UTC
Date: Fri, 22 Apr 2022 03:25:20 -0500
X-Received-Bytes: 2876
 by: echicken - Fri, 22 Apr 2022 08:25 UTC

To: John Dovey
Re: Telegram and JavaScript
By: John Dovey to All on Thu Apr 21 2022 16:08:34

JD> Telegram has just updated their Bit spec, and it's now possible to
JD> run/launch a JavaScript app directly from the client.

I'd be curious to know more about what this actually means. Got a link?

JD> I'm not much of a JavaScript person, but glancing quickly at the spec and
JD> some examples, it occurs to me that one of the gurus in the area could
JD> possibly port a lot of the functionality of SBBS across.

Porting a Synchronet JS module to some other JS environment means that basically all of this becomes unavailable:

https://synchro.net/docs/jsobjs.html

The script needs to be updated to use whatever analagous things exist on the target platform. That's fairly straightforward when it comes to stuff like the File and Socket classes, the global methods, and some of the console methods, but will get trickier when you get into users, messages, files, etc.

The tricky stuff is often also the reason for the script existing in the first place. If you're writing a script for Synchronet, there's a good chance it's going to access a bunch of BBS-specific data that won't exist on some other platform.

JD> This probably fits better in Future4Fido, but figured I'd mention here.

The FTN stuff might be easier to port, actually, but I'm trying to picture what purpose it would serve when running ... in the Telegram app, I gather? Is it useful to run a binkp mailer inside that app, for example?

---
echicken
electronic chicken bbs - bbs.electronicchicken.com
---
■ Synchronet ■ electronic chicken bbs - bbs.electronicchicken.com
--- Synchronet 3.19c-Win32 NewsLink 1.113
* Vertrauen - Riverside County, California - telnet://vert.synchro.net

Telegram and JavaScript

<6262CB5D.46824.sync@vert.synchro.net>

  copy mid

https://www.novabbs.com/computers/article-flat.php?id=16035&group=alt.bbs.synchronet#16035

  copy link   Newsgroups: alt.bbs.synchronet
Path: i2pn2.org!i2pn.org!aioe.org!news.uzoreto.com!npeer.as286.net!npeer-ng0.as286.net!peer02.ams1!peer.ams1.xlned.com!news.xlned.com!peer03.iad!feed-me.highwinds-media.com!news.highwinds-media.com!fx10.iad.POSTED!not-for-mail
From: john.do...@4:920/69.1.remove-2zh-this (John Dovey)
Subject: Telegram and JavaScript
Message-ID: <6262CB5D.46824.sync@vert.synchro.net>
X-Comment-To: echicken
Newsgroups: alt.bbs.synchronet
In-Reply-To: <62622020.74677.sync@bbs.electronicchicken.com>
References: <62622020.74677.sync@bbs.electronicchicken.com>
X-FTN-AREA: SYNCHRONET
X-FTN-MSGID: 4:920/69.1 6262cb34
X-FTN-REPLY: 46821.sync@1:103/705 26c81259
X-FTN-CHRS: CP437
X-FTN-SEEN-BY: 92/0 1 103/705 154/10 218/700 221/1 240/1120 280/464 301/1 113 341/66
X-FTN-SEEN-BY: 712/848 920/0 1 69 5020/1042 5058/104
X-FTN-PATH: 920/69 92/1 301/1
Content-Type: text/plain; charset=IBM437
Content-Transfer-Encoding: 8bit
X-Gateway: vert.synchro.net [Synchronet 3.19c-Win32 NewsLink 1.113]
Lines: 32
X-Complaints-To: https://www.astraweb.com/aup
NNTP-Posting-Date: Fri, 22 Apr 2022 15:36:01 UTC
Date: Fri, 22 Apr 2022 10:35:16 -0500
X-Received-Bytes: 2184
 by: John Dovey - Fri, 22 Apr 2022 15:35 UTC

To: echicken

e> Re: Telegram and JavaScript
e> By: John Dovey to All on Thu Apr 21 2022 16:08:34

JD>> Telegram has just updated their Bit spec, and it's now possible to
JD>> run/launch a JavaScript app directly from the client.

e> I'd be curious to know more about what this actually means. Got a link?

It's a long description, but you can start here : https://core.telegram.org/bots/samples

JD>> This probably fits better in Future4Fido, but figured I'd mention here.

e> The FTN stuff might be easier to port, actually, but I'm trying to picture
e> what purpose it would serve when running ... in the Telegram app, I gather?
e> Is it useful to run a binkp mailer inside that app, for example?

Off the top of my head, a few of the things that might fit with a bot integration might be
- access to file areas
- download of mail (like a QWK door)
- a binkp like transfer of mail packets
etc

JD
--- AfterShock/Android 1.6.8
* Origin: Firecat Mobile (4:920/69.1)
--- Synchronet 3.19c-Win32 NewsLink 1.113
* Vertrauen - Riverside County, California - telnet://vert.synchro.net

Telegram and JavaScript

<6262F803.74681.sync@bbs.electronicchicken.com>

  copy mid

https://www.novabbs.com/computers/article-flat.php?id=16036&group=alt.bbs.synchronet#16036

  copy link   Newsgroups: alt.bbs.synchronet
Path: i2pn2.org!i2pn.org!aioe.org!news.uzoreto.com!newsreader4.netcologne.de!news.netcologne.de!peer02.ams1!peer.ams1.xlned.com!news.xlned.com!peer02.iad!feed-me.highwinds-media.com!news.highwinds-media.com!fx97.iad.POSTED!not-for-mail
From: echic...@ECBBS.remove-l5h-this (echicken)
Subject: Telegram and JavaScript
Message-ID: <6262F803.74681.sync@bbs.electronicchicken.com>
X-Comment-To: John Dovey
Organization: electronic chicken bbs
Newsgroups: alt.bbs.synchronet
In-Reply-To: <6262CB5D.46824.sync@vert.synchro.net>
References: <6262CB5D.46824.sync@vert.synchro.net>
X-FTN-PID: Synchronet 3.19c-Linux master/9aaaef9ab Feb 22 2022 GCC 9.3.0
X-FTN-MSGID: 46825.sync@1:103/705 26c8e54f
X-FTN-REPLY: 4:920/69.1 6262cb34
X-FTN-CHRS: CP437 2
WhenImported: 20220422184627-0500 412c
WhenExported: 20220422184809Z 412c
ExportedFrom: ECBBS sync 74681
Content-Type: text/plain; charset=IBM437
Content-Transfer-Encoding: 8bit
X-Gateway: vert.synchro.net [Synchronet 3.19c-Win32 NewsLink 1.113]
Lines: 26
X-Complaints-To: https://www.astraweb.com/aup
NNTP-Posting-Date: Fri, 22 Apr 2022 18:48:11 UTC
Date: Fri, 22 Apr 2022 18:46:27 -0500
X-Received-Bytes: 2375
 by: echicken - Fri, 22 Apr 2022 23:46 UTC

To: John Dovey
Re: Telegram and JavaScript
By: John Dovey to echicken on Fri Apr 22 2022 10:35:16

JD>>> Telegram has just updated their Bit spec, and it's now possible to
JD>>> run/launch a JavaScript app directly from the client.

JD> https://core.telegram.org/bots/samples

Ah, bots. I thought you were talking about something completely different. (I'm not sure what "run/launch a JavaScript app directly from the client" means here; bots typically run standalone / implement the client themselves.)

JD> Off the top of my head, a few of the things that might fit with a bot
JD> integration might be - access to file areas
JD> - download of mail (like a QWK door)
JD> - a binkp like transfer of mail packets
JD> etc

Using a bot as a mailer seems a bit janky to me, but I'm probably missing something. We've already got systems in place for moving packets around. Is the goal to use Telegram's network for mail transfers, eg. my bot exchanges mail with your bot, with each BBS/node running its own bot?

---
echicken
electronic chicken bbs - bbs.electronicchicken.com
---
■ Synchronet ■ electronic chicken bbs - bbs.electronicchicken.com
--- Synchronet 3.19c-Win32 NewsLink 1.113
* Vertrauen - Riverside County, California - telnet://vert.synchro.net

Telegram and JavaScript

<62632FC5.46830.sync@vert.synchro.net>

  copy mid

https://www.novabbs.com/computers/article-flat.php?id=16038&group=alt.bbs.synchronet#16038

  copy link   Newsgroups: alt.bbs.synchronet
Path: i2pn2.org!i2pn.org!weretis.net!feeder8.news.weretis.net!newsreader4.netcologne.de!news.netcologne.de!peer01.ams1!peer.ams1.xlned.com!news.xlned.com!peer02.iad!feed-me.highwinds-media.com!news.highwinds-media.com!fx96.iad.POSTED!not-for-mail
From: john.do...@4:920/69.1.remove-9zo-this (John Dovey)
Subject: Telegram and JavaScript
Message-ID: <62632FC5.46830.sync@vert.synchro.net>
X-Comment-To: echicken
Newsgroups: alt.bbs.synchronet
In-Reply-To: <6262F803.74681.sync@bbs.electronicchicken.com>
References: <6262F803.74681.sync@bbs.electronicchicken.com>
X-FTN-AREA: SYNCHRONET
X-FTN-MSGID: 4:920/69.1 62632f03
X-FTN-REPLY: 46825.sync@1:103/705 26c8e54f
X-FTN-CHRS: CP437
X-FTN-SEEN-BY: 92/0 1 103/705 154/10 218/700 221/1 240/1120 280/464 301/1 113 341/66
X-FTN-SEEN-BY: 712/848 920/0 1 69 5020/1042 5058/104
X-FTN-PATH: 920/69 92/1 301/1
Content-Type: text/plain; charset=IBM437
Content-Transfer-Encoding: 8bit
X-Gateway: vert.synchro.net [Synchronet 3.19c-Win32 NewsLink 1.113]
Lines: 38
X-Complaints-To: https://www.astraweb.com/aup
NNTP-Posting-Date: Fri, 22 Apr 2022 22:45:09 UTC
Date: Fri, 22 Apr 2022 17:41:07 -0500
X-Received-Bytes: 3375
 by: John Dovey - Fri, 22 Apr 2022 22:41 UTC

To: echicken

e> Ah, bots. I thought you were talking about something completely different.
e> (I'm not sure what "run/launch a JavaScript app directly from the client"
e> means here; bots typically run standalone / implement the client
e> themselves.)

Yes, sorry. My sausage fingers typed bit instead of not.

JD>> Off the top of my head, a few of the things that might fit with a bot
JD>> integration might be - access to file areas
JD>> - download of mail (like a QWK door)
JD>> - a binkp like transfer of mail packets
JD>> etc

e> Using a bot as a mailer seems a bit janky to me, but I'm probably missing
e> something. We've already got systems in place for moving packets around. Is
e> the goal to use Telegram's network for mail transfers, eg. my bot exchanges
e> mail with your bot, with each BBS/node running its own bot?

That's what I was thinking.
https://core.telegram.org/bots/webapps
This is probably a better url than the one I shared before.
I was thinking that just like the web interface allows access to the BBS using a web browser, it might be possible to do the same using the Telegram client

This would do a number of things.
Broaden the access (especially on mobile) to BB systems (especially on mobile) by making it possible on the devices and in the format that the modern users would find familiar.
The app is already installed on millions of devices and being used, so this would then just be one more "contact" for them that happened to be a BBS.
The Bot talks to "clients" by polling Telegram servers, so it should be possible for an SBBS installation to have a local bot to which many users could connect. The bot would simply provide an interface to services tbe BBS provides (echos, Netmail, file areas etc).
One of the interesting things is that it would get around the problem I'm having with ENat... so more people could run it without having issues of people not being able to connect (telnet etc) to their boards
This same advantage would apply to a binkp type bit which would also make the system accessible even behind a NAT or firewall.

JD
--- AfterShock/Android 1.6.8
* Origin: Firecat Mobile (4:920/69.1)
--- Synchronet 3.19c-Win32 NewsLink 1.113
* Vertrauen - Riverside County, California - telnet://vert.synchro.net

Telegram and JavaScript

<626370B9.74687.sync@bbs.electronicchicken.com>

  copy mid

https://www.novabbs.com/computers/article-flat.php?id=16039&group=alt.bbs.synchronet#16039

  copy link   Newsgroups: alt.bbs.synchronet
Path: i2pn2.org!i2pn.org!weretis.net!feeder8.news.weretis.net!newsreader4.netcologne.de!news.netcologne.de!peer02.ams1!peer.ams1.xlned.com!news.xlned.com!peer02.iad!feed-me.highwinds-media.com!news.highwinds-media.com!fx12.iad.POSTED!not-for-mail
From: echic...@ECBBS.remove-xhe-this (echicken)
Subject: Telegram and JavaScript
Message-ID: <626370B9.74687.sync@bbs.electronicchicken.com>
X-Comment-To: John Dovey
Organization: electronic chicken bbs
Newsgroups: alt.bbs.synchronet
In-Reply-To: <62632FC5.46830.sync@vert.synchro.net>
References: <62632FC5.46830.sync@vert.synchro.net>
X-FTN-PID: Synchronet 3.19c-Linux master/9aaaef9ab Feb 22 2022 GCC 9.3.0
X-FTN-MSGID: 46831.sync@1:103/705 26c95e62
X-FTN-REPLY: 4:920/69.1 62632f03
X-FTN-CHRS: CP437 2
WhenImported: 20220423032129-0500 412c
WhenExported: 20220423032440Z 412c
ExportedFrom: ECBBS sync 74687
Content-Type: text/plain; charset=IBM437
Content-Transfer-Encoding: 8bit
X-Gateway: vert.synchro.net [Synchronet 3.19c-Win32 NewsLink 1.113]
Lines: 36
X-Complaints-To: https://www.astraweb.com/aup
NNTP-Posting-Date: Sat, 23 Apr 2022 03:24:37 UTC
Date: Sat, 23 Apr 2022 03:21:29 -0500
X-Received-Bytes: 4244
 by: echicken - Sat, 23 Apr 2022 08:21 UTC

To: John Dovey
Re: Telegram and JavaScript
By: John Dovey to echicken on Fri Apr 22 2022 17:41:07

JD> https://core.telegram.org/bots/webapps
JD> This is probably a better url than the one I shared before.

Yes, thanks for that. This is sort of like what I thought you were describing at first.

I'm of two minds about this.

On one hand, it's a neat idea. Your bot can launch a mini website inside the Telegram app and present whatever UI it likes. You're no longer constrained to a typical chatbot interaction (typing commands, etc.). There's no need for the user to log in, Telegram makes assertions about who they are. It "feels" like part of the app; you don't have to leave the app; it's better than typing a bunch of commands to a bot.

On the other hand, the user could just go to a website instead, or we could have a mobile app. I'm not entirely sure what's being gained. Maybe a chatbot should just be a chatbot? I dunno. I'm sure my subconscious will ponder this for a while.

JD> for them that happened to be a BBS. The Bot talks to "clients" by polling
JD> Telegram servers, so it should be possible for an SBBS installation to
JD> have a local bot to which many users could connect. The bot would simply
JD> provide an interface to services tbe BBS provides (echos, Netmail, file
JD> areas etc). One of the interesting things is that it would get around the

When I say "maybe a chatbot should just be a chatbot" I mean that typing questions/commands to it is the natural order of things, and interacting with it "should" be like having a chat. That said, typing a bunch of stuff on a mobile device is a miserable experience, so they're probably onto something here.

I'll go off on a tangent now and talk about an (unoriginal) idea I had a few years ago for a Synchronet bot "stack". Essentially there would be low level messaging-protocol drivers (eg. IRC, Telegram, Discord, BBS message bases) and high level bot modules providing functionality. It'd be running on the BBS and have full access to BBS data. The user experience would be pretty much the same no matter which protocol they were interacting with the bot via. (Unfortunately that only works if the UI is chat-based, unlike these Telegram WebApps.) That'd be one way of exposing BBS data to users on some chat system, though.

Other tangent: as cool as it might be to write the above, or simply create a Telegram bot that runs on Synchronet, it might be better to just create a proper web API for Synchronet. You could then write a bot using some existing bot framework, in your language of choice, and get data in and out of the BBS that way. This opens the door to many other possible integrations, and saves the work of writing a Telegram bot from scratch when it's already been done and done and done.

Anyway, that's my rambling on this topic for the moment. I'll be thinking about it.

---
echicken
electronic chicken bbs - bbs.electronicchicken.com
---
■ Synchronet ■ electronic chicken bbs - bbs.electronicchicken.com
--- Synchronet 3.19c-Win32 NewsLink 1.113
* Vertrauen - Riverside County, California - telnet://vert.synchro.net

Telegram and JavaScript

<626401DE.6697.sync@bbses.info>

  copy mid

https://www.novabbs.com/computers/article-flat.php?id=16040&group=alt.bbs.synchronet#16040

  copy link   Newsgroups: alt.bbs.synchronet
Path: i2pn2.org!i2pn.org!aioe.org!news.uzoreto.com!news-out.netnews.com!news.alt.net!fdc2.netnews.com!peer03.ams1!peer.ams1.xlned.com!news.xlned.com!peer03.iad!feed-me.highwinds-media.com!news.highwinds-media.com!fx48.iad.POSTED!not-for-mail
From: mro...@BBSESINF.remove-dus-this (MRO)
Subject: Telegram and JavaScript
Message-ID: <626401DE.6697.sync@bbses.info>
X-Comment-To: echicken
Organization: bbses.info
Newsgroups: alt.bbs.synchronet
In-Reply-To: <6262F803.74681.sync@bbs.electronicchicken.com>
References: <6262F803.74681.sync@bbs.electronicchicken.com>
X-FTN-PID: Synchronet 3.19b-Win32 master/a2a9dc027 Jan 2 2022 MSC 1928
X-FTN-MSGID: 46832.sync@1:103/705 26c9f583
X-FTN-REPLY: 46825.sync@1:103/705 26c8e54f
X-FTN-CHRS: CP437 2
WhenImported: 20220423084046-0500 c168
WhenExported: 20220423090921-0500 c168
ExportedFrom: BBSESINF sync 6697
Content-Type: text/plain; charset=IBM437
Content-Transfer-Encoding: 8bit
X-Gateway: vert.synchro.net [Synchronet 3.19c-Win32 NewsLink 1.113]
Lines: 36
X-Complaints-To: https://www.astraweb.com/aup
NNTP-Posting-Date: Sat, 23 Apr 2022 14:09:28 UTC
Date: Sat, 23 Apr 2022 08:40:46 -0500
X-Received-Bytes: 2730
 by: MRO - Sat, 23 Apr 2022 13:40 UTC

To: echicken
Re: Telegram and JavaScript
By: echicken to John Dovey on Fri Apr 22 2022 06:46 pm

> Re: Telegram and JavaScript
> By: John Dovey to echicken on Fri Apr 22 2022 10:35:16
>
> JD>>> Telegram has just updated their Bit spec, and it's now possible to
> JD>>> run/launch a JavaScript app directly from the client.
>
> JD> https://core.telegram.org/bots/samples
>
> Ah, bots. I thought you were talking about something completely different.
> (I'm not sure what "run/launch a JavaScript app directly from the client"
> means here; bots typically run standalone / implement the client
> themselves.)
>
> JD> Off the top of my head, a few of the things that might fit with a bot
> JD> integration might be - access to file areas
> JD> - download of mail (like a QWK door)
> JD> - a binkp like transfer of mail packets
> JD> etc
>
> Using a bot as a mailer seems a bit janky to me, but I'm probably missing
> something. We've already got systems in place for moving packets around. Is
> the goal to use Telegram's network for mail transfers, eg. my bot exchanges
> mail with your bot, with each BBS/node running its own bot?

you guys might want to consider doing a relay bot for telgram.
i have one 'teleirc' hooked up to my irc server and my telegram channel and it makes things more fun. if i post a video or image on telegram it's hosted on the server and it generates a link.
voice msgs are in .oga format.
---
■ Synchronet ■ ::: BBSES.info - free BBS services :::
--- Synchronet 3.19c-Win32 NewsLink 1.113
* Vertrauen - Riverside County, California - telnet://vert.synchro.net

1
server_pubkey.txt

rocksolid light 0.9.8
clearnet tor