hazemalhalabi
2020-3-14 14:42:04

For what it’s worth, the two programming meetups I attend in my city chose to conduct their regular monthly events online (video chat / screen sharing) instead of cancelling/postponing.

I thought it was a good compromise given the uncertainty about the progression of the COVID–19 situation.


spdegabrielle
2020-3-14 15:07:29

Thanks @hazemalhalabi How does that work? Do they have a chair who coordinates different speakers? What tools do they use for the meet-ups ?


laurent.orseau
2020-3-14 15:49:16

Compiling from source raco setup complains about a difference in versions. Any clue?


laurent.orseau
2020-3-14 15:51:12

I also forked the gui package if that’s relevant


laurent.orseau
2020-3-14 15:53:55

Both repos are up to date


laurent.orseau
2020-3-14 15:56:52

Could it be because racket-doc is a separate package and updating the racket repo makes it out of sync with racket-doc (which git pull won’t update since it’s a package). If so, what’s the correct way to update racket-doc? (cloning could work, but would this lead me to do that for every single package?)


mflatt
2020-3-14 15:58:39

It looks like you’re running an old racket executable, since the “base” package has the latest version number but racket claims to be “7.6.0.15". I notice also that raco claims to be raco-dev, so not just a make in the repo root?


vehbi.esref.bayraktar
2020-3-14 16:06:39

@vehbi.esref.bayraktar has joined the channel


laurent.orseau
2020-3-14 16:08:23

raco-dev is a sym link


laurent.orseau
2020-3-14 16:08:44

So I should just make again? i’ll try that


vehbi.esref.bayraktar
2020-3-14 16:09:50

Hi, I was looking for an absolute minimal scheme implementation with pluggable lisp feature packages? I found racket. what else is out there? I am set out to develop a High level Synthesis Language (HLS/A compiler infrastructure - more like a nanopass compiler system) I am going to write a huge programs in scheme/lisp, and introspect the programs to identify the most required circuitry to make it parallel and generate Application Specific Processors in verilog. Obviously this requires pluggable number systems, maybe only floating point , maybe only fixed number. And every system i need must be defining its own language system in a sense should have its own embedded domain specific language. That’s why it is very important for me to figure out the minimal implementation i need to built upon. Also,type system & dispatch system will hold a key importance for me, racket is typeless in essence, typed racket is not exactly what i want. However there was a paper (type systems as macros) which can help me develop a bunch of type systems i need. and also, multi-dispatch will be the key component but as far as i inspected racket it is mostly in favor of single dispatch. That’s why i want to see what my options are other than racket. i am all ears…


soegaard2
2020-3-14 16:15:41

“Minimal” is a bit vague. Why are you looking for a minimal scheme/lisp?


vehbi.esref.bayraktar
2020-3-14 16:25:17

I am set out to develop a High level Synthesis Language (HLS) I am going to write a huge programs in scheme/lisp, and introspect the programs to identify the most required circuitry to make it parallel and generate Application Specific Processors in verilog. Obviously this requires pluggable number systems, maybe only floating point , maybe only fixed number. And every system i need must be defining its own language system in a sense should have its own embedded domain specific language. That’s why it is very important for me to figure out the minimal implementation i need to built upon.


hazemalhalabi
2020-3-14 16:25:44

Any tool that has voice/video conferencing + screensharing should work. I’ll describe how Zoom works since that’s what we used, but I have privately used Discord/Hangouts in a similar manner with a group of friends and it’s more or less the same setup.

Whoever is hosting the meeting should set up a Zoom session and the session can be locked with a password. Anyone with an invitation link can join. It can be set up so users can join even if the host hasn’t joined the session, since it’s technically hosted on a server. Ideally, the ‘host’ user should introduce themselves as people start joining and once everyone is ready, ask everyone to introduce themselves to break the ice etc. Video conferencing is better than voice conferencing since it keeps everyone involved and more interactive. It will initially feel awkward but everyone will get used to it quickly. Voice-only is far more awkward.

What happens next depends on the meetup format.

If it’s a presentation (someone presenting slides or showing a demo/code), then the speaker can share their screen while everyone else listens. The speaker doesn’t need to be the ‘host’ of the Zoom call. Zoom allows any attendee to share their screen.

The speaker should introduce themselves just as they would in a physical session. It’s up to the speaker to decide if they will allow discussions / questions during the session and this should be made clear at the onset of the presentation. You can also ask attendees to mute themselves while the speaker is giving a talk, and then open up mics when the Q/A session starts.

It gets tricky if the format is more casual (no formal presentation etc), especially if the number of attendees is 5 or more. Unlike real life discussions which can break into smaller subgroups if needed, it’s really hard to do so while everyone is on the same voice channel online. Therefore I highly recommend that the host should take the role of a moderator. I recommend having an informal agenda ahead of time of topics to discuss and what things will be shared if any (e.g. show-and-tell personal projects etc).

During the session, the host should try to moderate the discussion and keep it loosely following the agenda. There will be major tangents in discussion (smalltalk, discussing the news etc) and the host should be actively involved in steering the discussion back on track if this goes on for too long (e.g. longer than 10 minutes at a time), and I think it will be easier if a free-discussion time is designated at the end, after the items on the agenda have been discussed.

Another common issue is asking questions or making points without making it clear who you’re addressing. Unlike physical meetings, online meetups lack the body language cues we use to understand who’s addressing who. What happens is someone asks a question without addressing someone in particular, and then it’s followed by silence since there is confusion about who should answer. This is why I recommend always being explicit about who’s being addressed by a statement or question. Always name the person you’re addressing, or use terms like ‘everyone’ when you’re addressing no one in particular. e.g. "I have a question for everyone: what do you think of X?" is much better than just "What do you think about X?"

Sometimes, there will be attendees who aren’t participating in the discussion for a while. It usually happens because no one wants to interrupt and ,online, we lack the physical cues we normally use to determine when to speak. Part of the moderator’s role is to keep an eye on who hasn’t spoken for a while, and to ask them about their opinion directly so they can get back into the discussion. e.g. “I’m curious to hear what [NAME] thinks about this” etc

I think the success of the session will mostly depends on providing useful discussions (on-topic) and making sure everyone is involved, and this only comes with good moderation.

Finally, if the session is being streamed/recorded, consent must be taken from everyone before any of that happens. Not everyone is going to be fine with their casual conversations/discussions being recorded.

Some downsides: Zoom sessions are free up to 40 minutes at a time I think. You can start a new one once the time is up, but it can be jarring for attendees since they have to connect via a new link. Also, Zoom requires installation on client devices (no browser access, I think). Ideally the owner of the session should use a paid account to avoid the 40 min limit, and they can host it without attending. Hangouts / Discord do not have this limitation if the number of attendees is small, but I haven’t checked the details in a while. Allocate a test session with attendees to verify all of this stuff a few days before the real session just to be on the safe side. Also, allocate a ~20 minutes period at the start of the official session to make sure everyone has their connection working well etc

Some upsides: Due to the convenience of online meetings (no commutes, no venue), you can easily increase the frequency of your meetings (compared to your previously scheduled physical meetings). It comes at no extra cost and allows really interested attendees to interact and collaborate more often. If the default format is casual discussion, there is no stress in preparing a presentation for each meeting. I think once every 2 weeks is a good frequency. Especially now, due to COVID–19, more attendees are likely to show up since there is not much else going on socially for many people at the moment. Even if only 3 attendees show up at a time, it’s good because it builds core attendance for your meetup later on.

I know a lot of the above sounds really obvious but it wasn’t for me personally. I hope it helps.


samdphillips
2020-3-14 16:28:33

This wall of text is very informative!


soegaard2
2020-3-14 16:31:57

Well, you can use the Racket module system to define your own minimal dialects.


vehbi.esref.bayraktar
2020-3-14 16:38:25

yeah i realized that, however the type system & dispatch system will hold a key importance for me, racket is typeless in essence, typed racket is not exactly what i want. However there was a paper (type systems as macros) which can help me develop a bunch of type systems i need. and also, multi-dispatch will be the key component but as far as i inspected racket it is mostly in favor of single dispatch. That’s why i want to see what my options are other than racket.


deactivateduser60718
2020-3-14 17:18:35

If you cannot find the implementation most suited to your needs but have an abundance of time, you could start from https://github.com/marcpaq/arpilisp


deactivateduser60718
2020-3-14 17:19:13

Not suggesting you jump on arpilisp too soon, since it sounds like there’s quite a bit of work between what I interpret as “miminal” and what you seem to want.


vehbi.esref.bayraktar
2020-3-14 17:24:16

Also,type system & dispatch system will hold a key importance for me, racket is typeless in essence, typed racket is not exactly what i want. However there was a paper (type systems as macros) which can help me develop a bunch of type systems i need. and also, multi-dispatch will be the key component but as far as i inspected racket it is mostly in favor of single dispatch. That’s why i want to see what my options are other than racket. If you have more suggestions , i am all ears…


azhong.934
2020-3-14 17:38:19

@azhong.934 has joined the channel


laurent.orseau
2020-3-14 18:09:27

that worked, thanks. updating pattern matching database for when to run make… Done.