The idea is to learn a new technology, code something fun and share knowledge, opinions and experience. The scope is meant to be rather small. It's something one should be able to hack together in an evening of work.

Post your ideas here. Once an idea is chosen, post your solutions in the JavaScript chat room, or hang out there and examine others' solutions.

Format:

Language/Framework/Library

Task: Description here

Please try to suggest something new that it is unlikely room members already did:

Here's an example:

Scala

Task: Write a parser in scala that accepts a .json file and reads all the numbers in the file. The output is a JSON file containing all the numeric values in an array. You may not use any existing JSON parsers.

As you can see - it uses a non-JS technology (Scala) has a clear and small goal and is doable.

Voting and submitting ideas will start today and end in 5 days.

You may vote even if you're not going to participate. If you're not a room regular in the JS chat room you're welcome to join us in the challenge.

FWIW: I support using meta to coordinate this sort of thing because it reduces the isolation otherwise inherent in chat: folks can learn the rules for participation without having to have spent the past n months lurking in the room. For better or worse, chat is a part of Stack Overflow - therefore, questions regarding the rules and traditions of chat are nominally on-topic here. Also, I cleared a bunch of mostly-irrelevant comments here; if you're interested, see Félix's chat link.
– Shog9♦Dec 1 '14 at 18:12

I followed the right sidebar link here, to be somewhat surprised that JS Room's monthly challenge is neither monthly nor in JavaScript. That is, of course, fine: thank you for organizing it.
– dcorkingDec 5 '14 at 14:44

I gotta tell ya, being a hungarian, I'm quite offended by "reverse-screw Hungarian".... nah, just kidding! name it however you like it :)
– Karoly HorvathDec 3 '14 at 10:38

No offense but the I would like to learn anything but Erlang at this time. I have never seen an add whereby Erlang/Elixir was up on the job market. It seems a time-waste in a practical sense.
– samayoDec 3 '14 at 22:19

15

@samaYo While the market for Brainfuck, LOLCODE and Shakespear programmers is in a constant inflation! It's not about learning something practical, the challenge is to challenge you to learn something new and different. Practicality optional.
– ZirakDec 3 '14 at 22:21

Task: Create an interface for suggesting and voting on monthly challenge ideas. I originally said this on the chat as a joke, but it seems within the difficulty target, and would let us avoid opening Meta questions each month that routinely get put on hold.

Front-end only, with a mock REST API for the backend. (Actual backend would be need to be implemented separately... or perhaps next month?)

(I'm open to other languages than Dart if we want this task but not the language; it's just something that's been on my list of things to try for awhile)

EDIT: please only upvote this if you think it would actually be a good programming challenge; not simply because you don't want this thread here.

I think this is kind of abusive since it'll get upvotes from people who don't like the thread here.
– Benjamin GruenbaumDec 1 '14 at 19:23

1

I mean, we could always just ask people not to upvote this just because they don't like this thread here.
– RetsamDec 1 '14 at 19:25

1

@BenjaminGruenbaum wouldn't it be in fact the best challenge that could be accepted this month? People genuinely interested in this being repeated over the months will have an interface to push the concept further, and people not wanting this here will not see it here :). there's a drawback: probably less people would see that interface compared to having a question on meta per month...
– Félix Gagnon-GrenierDec 2 '14 at 20:15

Task: Write a program that chooses a random number from 1 to 100. The user then attempts to guess this number. After each guess the program tells the user if his/her guess was bigger or smaller than the correct number, or correct. Finally, the program should tell the user how many guesses he/she took.

Random number generation

Since brainfuck doesn't have good ways of seeding the random number generator, it's enough that the numbers are seemingly random the first time the program is run - that is, it's okay to generate the same numbers on the second run. The numbers may not, however, be hardcoded. They must be generated in a way that a (normal) human cannot predict the generated numbers.

A valid way of seeding the random numbers, and I actually recommend doing this as a potential bonus task, is asking the user for a random seed. The user may then proceed to faceroll his/her keyboard, and the program uses the input as the random number generator's seed.

A very simple program, however I think brainfuck in itself will f**ck your brain. Learning the language is the easiest task imaginable, but looking at it and understanding the code is very intimidating.

And who did not write this program when they learned programming? I remember my algorithm teacher having us write this program before he explained to us what binary search was.
– LundinDec 3 '14 at 14:17

Good luck generating random numbers in a language without random number generator (as deterministic as it gets).
– Konrad BorowskiDec 3 '14 at 14:18

@xfix You do realize most languages simply have libraries that support pseudo-random number generation? With brainfuck you just have to code it yourself. This was the first thing I found googling: link
– Olavi MustanojaDec 3 '14 at 14:21

@OlaviMustanoja: You would need to seed the initial seed somehow, which is pretty much impossible, however. If you read the example, you will notice you need to define seed. You cannot use random number generator for generating seed, because it wasn't seeded. Using the same seed will make the random number generator generate the same numbers.
– Konrad BorowskiDec 3 '14 at 16:39

@xfix so what's the issue? I didn't say the numbers can't be the same, only that they should be seemingly random
– Olavi MustanojaDec 3 '14 at 16:46

"you may be able to find it online cough cough" Are suggesting that people should violate Mr. Dalgaard's/Springer's copyright and obtain that book without paying for it?
– Andrew MedicoDec 1 '14 at 23:39

Sorry benjamin-gruenbaum. I read "JS Room ...." title and think that using js to do some task. So now I change my suggest from Javascript to Bash. I saw my teacher using bash to solve "Ping-pong" kata. So how if we using bash to solve my old suggest?
– Lionel NguyenDec 2 '14 at 10:11

Task: Read in the factbook.xml and display for each country in the world the population of this country and the difference in the number of inhabitants compared to all its neighboring countries. Based on the estimated population growth (and the assumption this number is steady for the next ten years), also return how much the difference will grow/shrink.

For all JS folks out there as a reminder that there still is XML in this world and although it is not as cool as Json, it can do very nice things. XQuery is a functional language intended for processing XML. I would restrict this to XQuery 3.0 (the most current spec), which has nice higher order functions and lots of functional features. Popular Implementations are eXist or BaseX (full disclosure: I am a member of BaseX).

Task: Write a program to calculate the factors of an arbitrary number and display them in a sorted list. Goals should be readability and brevity of the source (which will resemble an amateurish play).

While Shakespeare isn't truly a practical language, it does force the programmer to deal with more esoteric concepts and understand what is actually driving the code to work, as opposed to learning the ins-and-outs of a framework.

I do have the dependencies. Seem to get errors about undefined references to 'yylineno' in grammar.tab.c
– Some GuyDec 4 '14 at 13:33

@SomeGuy Sounds like you're running into an issue with your Flex dependency, as yylineno is a module within Flex. I'd give it a go reinstalling to see if that fixes your problem.
– Josh BurgessDec 4 '14 at 18:04

Thanks. I reinstalled but it didn't work. It did after I ran make clean in the root directory, though. There are still problems with the translated code, sadly :/
– Some GuyDec 5 '14 at 10:07

Write a short POP3 Client that fetches the last mail available on the Server and stores it into a local file. The Client doesn't need to support any encryption, plain text connections are enough (feel free to support it anyway).

Task : Use crafty.js in conjugation WebkitSpeechRecognition api to copy a simple SIMON so you basically speak :P as you press too fun for kids. (So basically you speak what you want your card to perform)).

WebkitSpeechRecognition might make an interesting challenge, crafty.js might make an interesting challenge, but both together is too much I think. (And the problem itself sounds beyond the "single night of work" criteria)
– RetsamDec 1 '14 at 2:19

@Retsam its pretty single night of work. WebkitSpeechRecognition is pretty straightforward, it is an event stream, talking about the rest of it meh I'd probably be able to do it in single night or maybe 2 but oki ^_^ i get what you are sayin :-)
– ShrekOverflowDec 1 '14 at 8:00

2

What if i reduce the challenge from crafty pokemon to just SIMON ?
– ShrekOverflowDec 1 '14 at 8:01

2

So your challenge idea is what? Designing a card game or using WebkitSpeechRecognition? I don't think it is an appropriate challenge the way it is presented at this moment. Something simple like Simon makes more sense to me because the point of this challenge is not to invent a card game but to use new technologies. So the challenge should be a well defined idea to be implemented and not so much a general thought to be expanded on.
– user1596138Dec 1 '14 at 14:57