StackOverflow Chat FAQ
(Note: If you do not already have a StackOverflow account and the 20 points needed for chat, then PLEASE read the Trello Card on the Rebol Bookmarks page: Introduction to the StackOverflow Q&A site and its Culture)
(Note: Red now has a Gitter chat room, where most Red-specific discussion takes place.)
If you're reading this, odds are you probably joined the StackOverflow chat room for the Rebol and Red programming languages. Why? Was it idle curiosity? Did you merely click the wrong button?
Hopefully it was on purpose. :-) But even if not, we're glad you're here...keep reading!
Before the open-sourcing of Rebol, its community wasn't known for carrying out its discussions in public. Yet now [Rebol and Red] is one of the top active chat rooms on StackOverflow, easily averaging more than 2,000 chat posts per week. The room is always inclusive and encouraging to curious newcomers...so anyone dropping by who expresses a sincere interest—regardless of experience level—is valued! We won't try to sell you any Tupperware, but we may just permanently change the way you look at programming. (For the moment let's assume that is good.)
This room is usually occupied by one or more room owners. While there's no guarantee they'll actually be awake, it has usually been the case since Rebol's open-sourcing announcement that someone in a time zone somewhere has been around. You may be noticed and greeted, but if not, do feel free to introduce yourself. Also: don't be afraid if we read your profile to figure out what parts of Rebol might catch your attention, we're not going to stalk you!
Right now you need 20 reputation points to engage in chat. You get those points by participating in Q&A on the main site. This StackExchange policy is designed to reduce spam, and while twenty points is trivial to get...it can still be a speedbump to someone with a new account who just wants to come in and talk. But if you are hanging around silently in the room and ask a question or answer a question, we'll notice this since any activity (both Q&A) tagged with
red is posted in the room and we'll vote you up.
(Assuming you're not writing nonsense, of course!! Note that it may take a little bit of time before the chat site knows about your score increase on StackOverflow, so be patient...)
Philosophically speaking, Rebol is not so much a language as it is a language construction set. There's strong overlap with Lisp's idea of a common structure used for both code and data. Because of this you can write things like:
>> code: [print "Hello"] >> do code Hello >> replace code "Hello" "Goodbye" >> do code Goodbye
Which is very cool if you haven't seen a language working this way (this property is called homoiconicity). Yet where Lisp has a "one size fits all" approach of symbols in series that are delimited by parentheses, the number of brick types in Rebol's box of parts is much more expansive. Douglas Crockford, who is known for making JSLint and JSON, said basically that...and has credited Rebol as a strong inspiration in his design of JSON. From a Yahoo! dev talk in 2009:
"Rebol's a more modern language, but with some very similar ideas to Lisp, in that it's all built upon a representation of data which is then executable as programs. But it's a much richer thing syntactically.
Rebol is a brilliant language, and it's a shame it's not more popular, because it deserves to be."
Red is a related language, that should eventually be compatible with a large subset of Rebol code. It arrived on the scene much more recently (Rebol has been around in some form since 1998!) It differs less in language semantics but more in terms of the implementation. Rebol is a conservatively-coded interpreter that can build on almost any ANSI C toolchain--and it has performance characteristics that make it appropriate for about the same range of uses that Ruby would be good for. But Red's approach is more radical: to build a layered system that compiles to native code, and can tackle the "full stack" of programming using a Rebol-like syntax.
We'll stop there, as this specific page is just here to inform you about the chat room, not the languages. Just introduce yourself to the room and we can look at your SO user profile or homepage, and perhaps even tailor an explanation to you of what might be interesting to you about the language. You can also check out the StackOverflow tag wiki for Rebol which is a jumping off point for exploration.
The general idea is that it's a place for people who are interested in Rebol-family languages to hang out, and have discussions ranging from coding to social. The concept is similar in spirit to how IRC channels for programming languages or libraries have traditionally been used.
It's possible to carry on multiple conversations at a time reasonably due to the "reply to" function of chat, and the notification system when you have been spoken to works pretty well. But to the extent that there's a ranking of "topic priorities", it's sort of like:
Rebol and Red from a language user point of view. This means processing Q&A on the main StackOverflow site, teaching people from the Rebol community how to use SO effectively, and welcoming curious users who stop by to introduce them to the ideas.
The development of the internal pieces of the interpreters/compilers that implement the languages, including bugfixes and design tradeoffs.
Opinions on the larger roadmap for the projects, and how happy or not-happy one is with how the greater political situation is going.
Everything else (what just arrived in the mail for you that you bought off Amazon, movies coming out, photos of cats.)
If no one else is talking, there's no problem just chatting and getting to know people better. Although the chat is persistently stored and publicly searchable/linkable (watch what you say about someone behind their back!) it is not supposed to be a sanitized record of institutional technical knowledge. But if a discussion yields an interesting solution to a problem, then that should be captured formally in a StackOverflow Q&A.
If you hover over the message you want to reply to, you will see a small bent arrow icon in the bottom right of the message box. This will insert the ID of that message into the reply box and will render your message as a reply to the one with the ID you referenced with a click-able link that can take someone back to the message being replied to even if it has long scrolled off.
Another benefit of replying to another message in this way is that the chat system will highlight all the linked messages when you hover over any in the chain of replies.
If you install the SE Chat Modification script (mentioned in a following section) each message will be rendered with an ID so that you can type it in yourself (if you find this quicker to do than using the mouse to click on the reply-to icon).
Instead of pressing Enter to send the message, press Shift-Enter to add a newline.
For a one-liners, or inline code, use backtick quotes (`) to surround the text you want to appear in a fixed-width font, or indent the text using 4 spaces. For longer code segments, you can enter multiple lines by using Shift-Enter or paste in multi-line code from the clipboard. Once you have more than one line entered, the chat system will add a fixed-font button right next to the send button. If you use this to send the text it will use a monospaced font and retain its formatting.
If you feel using backticks to mark out
code doesn't stand out very well in chat because it doesn't use a separate background color, you might want to, for a single line of code, to make it bold. Alternatively, if you use this script, code that is marked up using back-ticks will have a darker background to stand out from surrounding text.
Many "markdown" commands that work on GitHub and StackOverflow work in chat. This includes doing
**bold** to get bold, or
[link text](http://example.com) to get link text. Note that if you paste multiple lines (or create them deliberately with Shift-Enter) this will disable interpretation of markup, and this is by design.
For more, see the chat FAQ. If you want some 'extras' (e.g. shortcuts, some extra sugar), install the chat modification script. (To run that script in Firefox, you'll need to have Greasemonkey or Scriptish extensions installed. Or if you're using Chrome, install something like Tampermonkey.)
You can find more chat-related scripts here.
One keyboard shortcut you don't need to install an extension to use is pressing the up arrow to edit your last message. You can edit for 2 minutes to fix wording or markup errors. You can also delete a post entirely.
If you notice that other people have cool square avatar icons and yours is a funny pattern, you can go upload a picture of something to use on your StackOverflow profile page. This update seems to take a while to propagate to the chat, much like reputation increases. So don't be concerned if it doesn't show up immediately, just wait a good while and refresh the page.
If you want to try out different chat features (e.g. markup, specific replies, one-boxing, etc) you can use the Sandbox chat room.
The chat can detect whether you are using mobile device and switch you to the mobile interface. If you wish to switch between the two, at the bottom right of the screen you will see a mobile link. However, be warned that if you are using the mobile interface and switch to full, switching back again is tricky because you can not reach the mobile link easily on a small screen.
If you haven't been on for hours, days, or weeks...you may come back and find it hard to catch up. If you are specifically mentioned with
@YourName, you'll get a notification. But because we've chosen to put everything in a single channel, you might be doing a lot of scrolling from the point of your last time speaking until now.
We could make a separate chat room for every topic, and use StackOverflow Chat's ability to monitor and flip between chat rooms. If you want to try this out, log into the Rebol room and then also log into the Chat Sandbox. You can experiment with flipping between rooms and typing anything in the sandbox to see how the room list on the right works.
For the moment, it is theorized (note passive voice) that having a lively, engaging, public gathering place for all topics Rebol and Red is worth more than splintering off for the sake of making it "convenient to catch up". One way to catch up is when you join to say "hey folks, what did I miss?", but there are many other tools.
One tool is "starring" posts by others that you think are interesting. It's treated as a sort of vote system for what messages are called out in the right hand side panel. To visit any one of them in context, click on the date hyperlink. You can also see them all in reverse chronological order.
Another tool is the ability to search for keyword combinations that interest you. You can search and order the results by which are newest or which are most relevant. Not only that, but you can subscribe to an RSS feed based on a search, such as this one for the word "red". (The RSS link is at the bottom of the page.)
Finally, one of the most important methods for dealing with this is that if anything truly interesting comes up... a question with an interesting answer, it shouldn't be left up to a wandering chat. Go to StackOverflow, make questions and answers. It's easy to subscribe to the
red tags on StackOverflow with email notifications using the tag sets feature, or via RSS if you prefer.