Event Refinement: CGCC Langjam

We have decided to do the CGCC Langjam event! This will be a two-week competition in which participants must create a golfing language in a specific paradigm and use it to solve a series of code golf challenges. This meta post will be used for figuring out the details of the event.

Timing and Event Flow

The event will be two weeks long, and probably start next week if all goes according to plan (September 11th, 2022). We're not sure if the event should occur once a year or twice a year yet. After the competition has ended, participants will post an answer to another meta question with information about their languages. Then, the three observerdesignermoderators will select a number of challenges from CGCC for the languages to compete in. The language with the lowest total byte count wins! (There will probably also be other prizes for, say, "most unique idea".)

What are the prizes?

Rep bounties and bragging rights.

How do I compete?

Anyone can compete in the Langjam! Just make your language according to the rules, and submit it by answering the relevant meta post at the end of the two weeks.

Rules

Currently, there are three rules:

• Work on the language cannot start before the beginning of the competition
• The language's interpreter or compiler must be available online, preferably on GitHub or a Gist
• Languages must not be trivial derivatives of existing languages

To propose a new rule, simply answer this question.

This event will be presided over by myself (Ginger), lyxal, and emanresu A. If you have any questions, simply ping any of us in the dedicated chatroom. If you would like to propose a new rule, paradigm, or change to the event, post an answer to this question.

• It sounds like the ODMs select the challenges after the language entries are posted. Is that intended? I had expected that the ODMs would select the challenges without knowing what the language submissions were. Sep 6 at 15:56
• @DLosc Since the ODMs can't participate, they will be selecting the challenges during the two-week work period. Sep 6 at 16:01
• By that wording, trivial derivatives of existing non-eso/golflangs are permitted?
– att
Sep 6 at 23:39
• "the answer with the lowest score wins" that sounds like vote scores, is that the sum of the byte-counts of what? Sep 7 at 1:19
• @Ginger But they can still be biased...why don't they pick before the event starts? Once the ODMs see what languages people are working on, it'll be tough to not be subconsciously biased toward picking challenges that are easier/harder for those languages to do well in. Sep 7 at 14:12

No "observerdesignermoderators"

To me it doesn't really make sense to make it so that three people interested in the event can't participate. The "observer" part doesn't really seem necessary for a publically visible event, the "designer" part is now all of our responsibility thanks to this meta post, and the "moderator" part can be done with up/downvotes and the typical flag-if-invalid.

As for picking challenges, we could always do something like "every contestant includes a hash of a list of two or three challenges in their post", and once the event is over, we'd all publish our lists and . While everyone would know a few of the challenges, since they'd pick them, optimizing for them wouldn't do much good.

Maybe there's a few people willing to do it this time around, but I'm worried finding three people both interested in the event and okay with not doing it could be a barrier to getting this event started in the future, especially when such a role is almost entirely unnecessary.

• See my above comment on why I think the question-choosing part, at least, is a bad idea. Sep 7 at 11:03
• While I think the name could be better chosen, there is very much a need for observerdesignermoderators. The "observer" part means that people with this role can answer questions people might have about language design/answer any clarifications. You say the "designer" part has been delegated to the community, but this meta post is basically a sounding board for logistical things that we might otherwise not think of. And the "moderator" part is so that someone is running the event - if there's no central body leading the event, it'll go nowhere. Sep 7 at 14:00
• @lyxal I don't agree with any of those. There will always be people interested in answering people's questions in chat, regardless of whether that's an official job. This meta post has been framed as a place for the event to be refined by the community, in the same way that every other event is, without any central team designing the event (think LotM), not just a place to bring up logistical issues. And as for the moderator part, I don't know why you think a central body is necessary, while someone will need to post on meta every six months and count scores, I don't see why they can't compete Sep 7 at 14:05
• The only reason ODMs need to be an official position, or one incapable of also competing, is choosing challenges, which IMO can be done just as well with hash commitments. While once again there might be three people willing to not compete this time around, I doubt more than a few people will be interested in this event after the first few rounds given how much time it will take, so requiring what could possibly be a majority of the people interested to moderate instead of compete doesn't make sense. Sep 7 at 14:11

There are quite a few 2D languages, but not a lot of 2D golfing languages. While I don't expect a 2D language to be able to compete with the best 1D golfing languages, I think there are some interesting possibilities for making 2D languages golfier.

Participants should choose questions

This post has the intention of refining the 'No "Observerdesignermoderator"' idea by proposing concrete rules for selecting questions via participants, and has much of the same motivations as that post.

Instead of having the odms or some other third-party pick questions, they should be picked by the challenge participants. When a language is submitted, the sha256 hashes of up to two question URLs* should also be submitted as part of the same post. The participant must then reveal the URL to the question within 24 hours after submissions close. For a question to be eligible, at the time of posting, it must be , have a score greater than zero, have at least three answers, have no language restrictions, and its URL's hash must match the one in the submission post. Additionally, the question must remain open for the duration of the Jam and have been posted before the Jam begins. Failure of a question to meet any of the validity constraints results in the question not counting toward scoring.

In the meta post for submissions, there should be a brief section containing a snack snippet to calculate the sha256 hash of a given input, as well as a warning about common pitfalls (think trailing whitespace/query strings).

Clarifications

• Nothing requires participants to submit questions

• There are no penalties for the participant if a question they submit is rejected

• Users can nominate their own questions, should they choose to do so

*For example, the question Scream Very Loudly has a URL of https://codegolf.stackexchange.com/questions/200306/scream-very-loudly which has a sha256 hash of dd5ef66e6bc89a00f11e2d9d27f0d126cef4ac3b79e7e7f78c460070540f73f6.

• I don't like this because it feels needlessly complex and also has the possibility of users, either intentionally or accidentally, submitting questions that don't fit the paradigm. Users could also simply not submit any questions at all, meaning we may not have sufficient questions to run the event. Sep 7 at 11:03
• @Ginger It's hardly "needlessly complex", it's just a hash commitment. And how does a question "not fit a paradigm"? That doesn't even make sense, the paradigm is unobservable assuming I/O exists at all. The last point is the only one that could be potentially problematic, but I doubt it would be, since picking challenges is not only fun and pretty easy, but also a slight competitive advantage. Sep 7 at 14:01
• I like this idea, but I'd like to suggest hashing just the question ID instead of the entire URL, because someone can accidentally get different URLs (http instead of https, different title, or a URL with the user's ID)
– user
Sep 12 at 22:03
• @user That could be brute forced trivially. So could the URL I guess, but you'd need to do an HTTP request for each (or use SEDE), which would slow you down a bit. I think, in order for this to work, it would need to consist of both the URL and a short explanation of why the challenge was chosen, which is different from any in the answer itself, which the poster would need to keep track of and publish alongside the URL. Sep 26 at 0:01

Y'know, like brainfuck. Except obviously we wouldn't make brainfuck clones.

Use a challenge category/tag rather than a paradigm

Right now the top voted paradigm is 2d. The issue with this is that this is a bit subjective, and a language gains a advantage by being as little 2d as possible. Even if a language has instructions to change the direction of the instruction pointer etc. optimal solutions will rarely if ever use them, instead converging to the same solutions as stack based languages and ignoring the 2d features as unoptimal. Stack based is just really really good.

It might be possible to prevent this by setting hard restrictions on alternatives like lambdas or jumps, but I think it would become really hard to close loopholes sufficiently. Rules may also needlessly suppress creativity.

If we artificially cripple these languages it would also lead them to being useless outside of this challenge.

The alternative: Languages focused on a particular type of challenge, eg graphical-output

This way, languages can fill a genuine niche and compete with pre-existing golfing languages, which encourages continued development after the contest is over.

There don't need to be any subjective rules, languages are free to innovate in any way they see fit.

If combined with this idea participants should only be able to choose challenges that have a particular tag.

Tags that could work

I really like since many mainstream golfing languages are bad at it, but some others that could work include:

• Languages that offer many ways to do any one thing
• Languages with lots of built-ins to manipulate graphs
• Linear algebra focused languages
• Languages focusing on string manipulation

Challenges should not be restricted to code-golf only

Controversial, I know.

Golfing languages seem to tend towards very similar structures, one byte builtins, etc. Having a variety of different challenge types to consider may promote variety in the languages we see come out of this.

Should we use CMCs?

When I came up with this event, I planned for the ODMs to choose a selection of CGCC's best challenges and have the languages be used to answer those. But, lyxal proposed another idea: CMCs. lyxal would use Codex to generate a bunch of AICMCs, which myself and emanresu A would look through to find the best ones to challenge the languages with. Should we do this or go the Greatest Hits route?

• CMCs? Maybe a good idea, there's some good ones and they tend to be simple and unrestrictive I/O-wise. AICMCs? Those tend to be either plain bad, plagiarised, or only mildly bad. Sep 26 at 0:02