38
\$\begingroup\$

Whereas:

I have some questions for you:

  • Why are you here, aside from "to have fun?" For veteran users: Why do you continue to visit the site? For new users: What brought you here, and what made you stay?

  • How do you think PPCG can "fit in" to SE in general more? What benefit can it provide to SE that facilitates SE's ultimate goal?

  • In what ways do you think we can continue to innovate and expand? How can users who can't or don't want to golf participate on such a "golf-centric" site?

Basically, should PPCG have a more well-defined purpose as a Stack Exchange site? What should it be (other than "solving tasks / spec writing / etc. is inherently fun")?

If you had thirty seconds to convince a random stranger you met in an elevator (who happens to be a programmer) to join PPCG, what would your elevator pitch be? What should it be—how do you want PPCG to change, grow, and expand for the better?

related posts on many many other sites on the SE network

\$\endgroup\$
  • 5
    \$\begingroup\$ There's an awkward situation that people are posting personal reflections and then getting downvotes from people who disagree with their suggestions, which can create bad feelings. Looking back, I think it would have been better if the "why are you here" and "what do you thing we should do" were split up. Oh well, too late now. \$\endgroup\$ – xnor Feb 7 '16 at 9:29

15 Answers 15

26
\$\begingroup\$

Who are you?

Hi there! I'm Alex. I'm a moderator pro tempore an elected moderator on this site.

Why are you here?

What brought me here

Once upon a time I was working on a project for my job that involved learning a new programming language. However, no one at the company knew that language, so I had no one to go to for questions. So I joined Stack Overflow.

My participation on Stack Overflow steadily increased and I became completely hooked on the Stack Exchange network. One day (14 December 2014, to be specific), while looking at an R question on Stack Overflow, I noticed a post called Most common number on the Hot Network Questions sidebar, from some site called "Programming Puzzles & Code Golf." So I took a look at the question. "I know how to do this," I thought to myself, "this is just asking to find the mode of a list. Easy peasy, lemon sqeezy." So I made an account on the site and posted my answer. "Alright, that was fun," I thought. "Well, back to Stack Overflow."

A few days passed and I found myself checking out Programming Puzzles & Code Golf again. I answered. More days passed, I posted a couple more answers. I wasn't actively engaged, but I was having fun writing short code.

My activity on the site gradually picked up. And then it really picked up. I became addicted to writing short code. Code golf went from being a casual little activity I'd do occasionally to an actual passion.

Why I'm still here

"What sparked that passion?" you may ask. Well, I'm a naturally curious person and I love problem solving. Solving a programming challenge is nice! But what really got me into it was learning more about my favorite languages to find clever methods for getting the most out of every character in the code. Indeed, I've learned more about my favorite languages by golfing than I ever have from work, school, or anything else.

And now here we are. I've visited the site for 335 consecutive days (and counting) and I was appointed as a moderator on this most wonderful of sites in August of 2015. I can hear you saying, "Good lord, 335 consecutive days?! WHY?!" Well, it's fun! But it's more than that. It's instructive. I can't recall a single one of these past 335 days where I haven't come across something new and exciting on the site.

Our place in the Stack Exchange network

It's no secret that we're kind of a black sheep in the Stack Exchange network. While the other sites are for questions and answers, ours is for challenges and solutions. That's not to say that this isn't a good home for us though! Consider this excerpt from the "about" page:

Founded in 2008 by Joel Spolsky and Jeff Atwood, the company was built on the premise that serving the developer community at large would lead to a better, smarter Internet.

Are we serving the developer community? ABSOLUTELY!

We provide a different kind of service to developers: A place for them to stretch their brain by solving new and varied tasks, and to hone their programming skills by learning how to shorten their code. I would call this our purpose as a Stack Exchange site.

The role of code golf on this site

In my opinion, code golf is what makes the site what it is. It's what makes us unique. We compete with sites like r/codegolf and Anarchy Golf to be the go-to place for code golf.

Code golf isn't all we are; we have other challenge types based on a variety of scoring mechanisms. But it's our bread and butter.

How we can innovate

I don't think that deviating from our golf-centric roots is necessarily the answer. However, I think we can continue to innovate by making a concerted effort to find new, intellectually stimulating problems and formulating them into challenges.

I've been pondering a way to include a challenge type for those who want to participate but don't want to golf. I don't think popularity contests are the answer. Perhaps we can find new scoring mechanisms for s that have a lower barrier to entry than code golf. While something like a "free code" challenge (i.e. post whatever you want as long as it solves the problem) might draw a lot of varied traffic, I think it would go against the our rules of objectivity that we've worked hard to build and enforce.

Our elevator pitch

This is what I usually tell people:

Code golf is a type of programming challenge where you solve a task with the shortest amount of code possible. CodeGolf.SE is a site on the Stack Exchange network for posing and competing in these challenges.

Note how I only mention code golf. This is because, as I said, it's what makes us unique. I could say we're a site for programming challenges, but what is some rando in an elevator going to remember, "generic programming challenges" or "shortest code to solve a challenge"?

Going forward

I think if we can continue to bring good, fresh content to the site, we'll continue to thrive. But I know that whatever the future brings for our little site, I want to be a part of it.

\$\endgroup\$
  • 2
    \$\begingroup\$ I think one way to encourage more good content is to reward challenges more. \$\endgroup\$ – DJMcMayhem Jan 17 '16 at 19:13
  • 2
    \$\begingroup\$ @DJMcMayhem If we were to increase the reputation awarded for challenge upvotes, I think that would encourage more content in general. I don't know whether that would necessarily encourage more good content. \$\endgroup\$ – Alex A. Jan 17 '16 at 21:18
  • \$\begingroup\$ You are no pro temp mod anymore. Now you'll have to stay here forever. \$\endgroup\$ – flawr Jun 3 '16 at 9:43
  • \$\begingroup\$ @flawr I can always rewrite history :P \$\endgroup\$ – Alex A. Jun 3 '16 at 20:28
19
\$\begingroup\$

Took me long enough to answer this, didn't it?

Who are you?

I'm Martin. You may have seen me around. I spend way too much time on this site and for the past 11 months or so I've had a symmetric quadrilateral next to my name to prove it.

Why are you here?

I don't quite remember which post drew me to the site, but it must have been through the HNQ. I do remember that it wasn't plain code golf. Probably a KotH. I'm also pretty sure that I didn't answer it. At some point I did start answering code golf challenges and was hooked pretty quickly. At some point I joined chat and stayed.

Why do I keep coming here? I enjoy the challenges, I enjoy learning new (often esoteric) programming languages to solve problems and I really enjoy learning things from others' solutions and my own attempts. A really big factor is the community though. There are a lot of very nice and very clever folks here, that make PPCG a very nice place to spend time on. The competition is very friendly and most of the time people are more interested in finding the best possible solution through collaboration and building off each others' ideas in a respectful way.

How can we fit into SE in general?

Ah, heck, I'll jump straight to the next question, because that's relevant to this one.

How can we innovate and expand?

I think code golf will (at least for the foreseeable future) remain the focus of this community. I don't even think it's the best and coolest we have to offer, but it's good fun if you're willing to give it a go, so I don't think it's a problem. I've said elsewhere that code golf isn't so popular because writing short code is the best thing in the world. It's because objective winning criteria are important — it doesn't matter much what that criterion is, but it's necessary to have one to inspire competition and creativity. Having an objective winning criterion gives you a reason to improve even if there's no one around to beat! It just happens that code golf works really well as an objective winning criterion. It's easy to measure, does not depend on a comparison being done on the same machine, the score doesn't change over time as hardware gets better, and it's very clear how changing a part of your solution affects your score, and it works for pretty much any problem. , , optimisation all fail to meet some of these criteria. Those challenges are often great fun and also elicit amazing answers, but they're just not as simple to set up. So far, we've failed to come up with any challenge type that can provide these benefits as easily as code golf. If we ever do, I'm sure it can be as successful as code golf and provide an alternative to people who don't like golfing. That aside, people who do dislike golfing should really consider giving it a try — because the fun is in learning about your language, improving your problem-solving skills and discovering new, unexpected ways to solve a challenge, not in writing code that's useless in production environments.

I do hope we innovate in terms of challenge types. The past couple of years have brought some very interesting challenges, mainly and , in my opinion. Neither of them are perfect yet, but they seem to draw a lot of (good) attention, encourage collaboration, and are generally a lot of fun. Let's try to improve how we run those challenges, and maybe come up with a few new ones. Diversity is a good thing.

There is another way we could innovate though. So there's all this talk about PPCG not being a Q&A site (which I kicked loose I guess) and I definitely would like some things to change. But maybe we could also make this Q&A background our unique selling point? We do have the occasional non-challenge question, but they are very rare, partly because only very few types of non-challenge questions are allowed (really only tips lists and asking for golfing advice). That's already something that doesn't really exist on other recreational/competitive programming communities. What if we could leverage the Q&A side of things to create something unique and more than just a site where we post and answer (mostly code golf) challenges? It seems to me that the main reason why there is opposition in the community to non-challenge posts is that they dilute the challenges. If challenges and questions are all mixed up it becomes harder to find the actual challenges. So let's dream for a moment and suppose that SE would implement some custom code that allowed us to host the challenges separately from the Q&A (imagine it looks a bit like Q&A, but tailored to challenges with leaderboards and what not). We'd now have a regular SE instance that doesn't contain any challenges whatsoever. What could we do with that? We could still have golfing advice there. But now we could really expand our scope to all the things the people here care about (as evidenced from chat). We could have questions about writing challenges. We could have questions about advice for participating in other types of challenges than code golf. We could have questions about (esoteric) language design (which were recently ruled off topic). Most of all, we could allow questions about using esolangs. Stack Overflow has a tag for esoteric languages. It has some very decent and answerable questions, but unless the language is Brainfuck, it can take a while to get an answer and even then I find the quality of the answers often somewhat lacking. This community has the expertise to answer them as well as the people who are interested in them. We could give them a home here. Maybe we could even have questions about programming games? What I'm saying is we could be come a community for recreational programming in all its facets while still holding our challenges, which are a big part of that. I'd love to be part of such a community, and it might be easier to draw in more users from esolangs.org or other places with such a somewhat expanded scope.

Of course, we don't have that separation of challenges and questions. And it's questionable whether we'll ever get it. But maybe becoming this community would be worth giving it a try even without the separation? Maybe we need to show SE that there's a need for the separation, because currently there isn't really with the low volume of non-challenges we have. Anyway, I'm sure there'll be opposition to this and some people will always prefer to focus exclusively on challenges, but I figured it's something to think about.

So how do we fit into SE in general?

Well, if those things up there actually happened, we'd be a Q&A site for recreational programming (which fits as well as Puzzling or Arqade or any other site really), plus we'd also host our challenges, allowing people to partake in the activity they're discussing right here.

Even if we don't, we do have a place here, I think (as some of the other answers already mention). We do build a useful content base for future visitors, it's just that here the "questions" are the lasting value, in that this site builds a repository of programming challenges of all difficulties for anyone to try their hands at. I personally also think, we generate some useful content in the answers, at least for people in the code golf community, because we have some of the shortest known solutions to common programming problems (the same would in principle go for any other winning criterion, but for the reasons stated above code golf is obviously the most well explored). We also fit into the network in that it is still dominated by technical topics, and we provide a different angle to becoming a better programmer. (And yes, code golf does teach you useful skills for production programming.)

\$\endgroup\$
18
\$\begingroup\$

Who are you?

I'm the most active old-timer. I created my account on PPCG a week after the first question was posted. Previously I had participated for about a month on the CS Theory site.

Why are you here?

I've been both programming and doing mathematics as recreational activities since I was a child, and I find that PPCG is a good source of intellectual stimulation.

How can PPCG fit into SE?

That depends on what you see SE's goal as. If it's just a place to share knowledge, then we can't fit, because this site is about creating new things rather than explaining things we've learnt from others. But if, as far as the programmer-related sites are concerned, it's about enabling programmers to develop their abilities, PPCG provides:

  • A source of (ideally well-specified) simple programming tasks which people can borrow as katas without any need to contribute back to the community.
  • Objectives which force you out of your usual thinking patterns and broaden your mind.
  • Feedback and interaction which other golfing sites don't have.

What about non-golfers?

I see three reasons why is the predominant winning criterion:

  • The original purpose of the site was to provide a new home for the questions which were no longer welcome on Stack Overflow as a result of that site's narrowing of scope. (Other sites in the network - e.g. Programmers - were also spun off in a similar way). There's an inertia.
  • is great at differentiation. Other winning criteria suffer from having too few distinct scores. E.g. will nearly always need a tie-breaker.
  • It's the most recreational criterion. Optimising for running time is something that a lot of programmers do as a matter of course in their day jobs. Golfing is anathema in production code, so it's fun to break with the norm. (See also my second point in the previous section).

Of these, the first is purely historical; the third is a minor barrier to having a significant number of non-golf questions; and the second is the one which provides the greatest challenge to making the site attractive to non-golfers. Writing an interesting which differentiates well (i.e. avoiding the case where all of the answers take under 1 second) but isn't too heavy (i.e. all of the answers take over 1 hour, so iterative improvements to your code are slooooow) is not easy. takes a lot of investment, and we've seen in some cases that the OP just drops out and lets it die because it's too much effort to run.

If you want specific ideas, we could combine the core concepts of the and the "Best Of" and designate a fortnight for a particular emphasis on non-golf questions. I would suggest giving advance notice of a week so that people can sandbox their questions, and politely asking people whose questions normally hit the HNQ to hold them for after the push, because HNQ is probably our most effective advertising. Then at the end of the fortnight we could vote a winner on meta, and offer a bounty or two on winning questions to attract more attention.

Elevator pitch

PPCG is a site where we challenge each other to optimise code against unusual criteria. As intellectual stimulation, it beats sudoku hands down.

\$\endgroup\$
  • 5
    \$\begingroup\$ The stats page strongly backs up the HNQ being our main traffic source claim. \$\endgroup\$ – FryAmTheEggman Jan 17 '16 at 22:01
13
\$\begingroup\$

PPCG was my first Stack Exchange site I signed up for and remains the one I'm most active on by far (I have over 8x more reputation here than all other sites combined, not counting association bonuses). I've dabbled in other SE sites, but I always come back to here. Why?

I don't remember when I discovered PPCG, nor how, but the first question I remember was American Gothic in the palette of Mona Lisa: Rearrange the pixels. At this point, I was new to programming and certainly had never golfed code. The more impressed I became with the amazing solutions to that challenge and others, the more I thought, How will I ever be good enough to answer a challenge?

So I waited. I looked at other users' code, particularly JavaScript, which I knew best. The first answer I posted was straightforward, but I was amazed by the feedback I received. Besides the upvotes (I'm sure you can remember the thrill of your first reputation gained), I was impressed with the suggestions other users offered to me.

As funny as it may sounds to a cynical outsider, code golfing has substantially improved my programming skill, from learning obscure features of a language to considering different algorithms. I believe PPCG is uniquely beneficial to any new programmer. It provides short, fun challenges to solve; free feedback from experienced coders; and, most importantly, freedom from worrying about best practices and style. While they are important, a new user should be getting to know the language instead of stressing over perfect comments and indentation.

\$\endgroup\$
8
\$\begingroup\$

Who are you, and why are you here?

I'm just your average 1k-something user. I'm not a programmer (although I've programmed as a hobby as long as I can remember), but an engineering student. I came to StackOverflow because any error message I googled got me there, posted a question or two that nobody could answer because my laptop turned out to be haunted, answered a question or two coming to the conclusion that I am not an expert programmer, and then noted PPCG in the HNQ.

I'm here because I like programming, but need the challenge; programming for university coursework can sometimes provide that, and sometimes I can provide my own challenge, but generally, those projects drag on and on, with the spec changing at every compiler error, and at every intermediary result. PPCG provides me with challenges so I can keep up programming as a hobby.

How does PPCG fit in the SE network?

PPCG is the mini-game in the MMO we call StackExchange. We all love putting a lot of effort into researching and writing good answers and earning fake internet points. Each question is a challenge due to the gamification of SE, and each answer is a solution. PPCG is the same thing: challenges are posted, and solutions provided. In that regard, PPCG fits perfectly into SE. A difference is that the rest of SE pretends to be good Samaritans by saying that they're helping each other out, and we just openly admit we just do it for the fun of delving into a good challenge.

However, format-wise, PPCG really doesn't fit in. In the SE network, votes are the only measure that differentiates answers. Here, answers are differentiated by language, score and votes. Writing challenges here is an art, whereas on the rest of SE, any question that is clearly stated and properly researched is a good question. Sure, we abuse the runnable snippets to get some kind of scoreboard, and have a dysfunctional sandbox for creating challenges. But really, PPCG is the odd one out, and please keep it that way. The SE format is a Q&A format. Please don't try and squeeze PPCG into that format. If anything, try and convince the big bosses of SE that we could do with some customized features (say, a nice [scoreboard] tag in the editor, instead of hiding the scoreboard behind an ugly runnable stack snippet button), because we're not a Q&A.

How can we improve?

Right now, the challenge part is going great*. We're very strict in creating objective challenges, and that's working out well. The answer part... not so much. Other than answers that obviously have not understood what the challenge is about (e.g., ungolfed entries), downvotes are rare. Additionally, in my opinion, at the very least, explanations should be the norm, instead of a nice bonus that will get you some upvotes. Answers that do not contain an explanation, should get a default comment saying that they should include one. Answers should only be upvoted if they contain clever hacks, and downvoted if they're just production code with shortened variable names. Place the emphasis on creating the most clever answers, instead of the shortest (I love C entries because their #defines allow for such clever optimizations, even though they're in general 5x the size of a Pyth answer). I would love a feature to filter the answers based on language, or a scoreboard that allows for a handicap factor for various languages. Again, we're not a Q&A, and we need features to allow for that.

*OK, there are some issues. As noted at various places across the meta, we need more interesting challenges; like challenges that allow for multiple approaches, challenges that use interesting scoring methods (my personal favorite), etc.

Elevator pitch

So, there's... 4 elevators in this building right? And... 8 floors, 64 people on average per floor. They all get in between 8 and 9 am, and leave between 5 and 6 pm, and during their time inside, they go to a different floor and back to their own every hour on average. Do you think you can think of a smart algorithm for that? Or a smart way of choosing which elevator to take?

Interested? I have just the site for you.

\$\endgroup\$
  • 1
    \$\begingroup\$ I have been putting off writing my own answer for this, because I'm not entirely sure where to start... but "The SE format is a Q&A format. Please don't try and squeeze PPCG into that format. If anything, try and convince the big bosses of SE that we could do with some customized features (say, a nice [scoreboard] tag in the editor, instead of hiding the scoreboard behind an ugly runnable stack snippet button), because we're not a Q&A." or something very similar would definitely have been part of it. :) \$\endgroup\$ – Martin Ender Jan 22 '16 at 13:28
  • \$\begingroup\$ @MartinBüttner Well. Saved you the effort then :) \$\endgroup\$ – Sanchises Jan 22 '16 at 13:37
  • \$\begingroup\$ Some of those features can (and have) been implemented with a userscripet. \$\endgroup\$ – J Atkin Jan 22 '16 at 17:07
  • 1
    \$\begingroup\$ @JAtkin nice. Missed that one. But I consider that as an addition to the list of workarounds we have around here. \$\endgroup\$ – Sanchises Jan 22 '16 at 21:30
  • \$\begingroup\$ I would agree, but this (unlike some others) is completely invisible (after installation, of course ;). I also just found something that may help with the sandbox, stackapps.com/questions/6757/ppcg-sandbox-viewer. \$\endgroup\$ – J Atkin Jan 22 '16 at 21:46
  • 2
    \$\begingroup\$ @JAtkin The after installation is what prevents new users, lazy users, and users with restricted environments from enjoying these features, as convenient as they are. \$\endgroup\$ – Zgarb Jan 23 '16 at 0:26
  • \$\begingroup\$ @Zgarb Point taken, it's still a nice feature though. \$\endgroup\$ – J Atkin Jan 23 '16 at 4:05
8
\$\begingroup\$

Who am I?

I'm Zgarb. You probably know me from my challenges, since that's what I mostly do here: create challenges for others to solve. I do sometimes golf, especially if I can think of a novel approach, and take part in KOTHs and other more uncommon challenge types.

Why am I (still) here?

In real life, I'm a researcher of mathematics and computer science, and my first contact with the SE network was when I searched for some theorem or formula on Mathematics or MathOverflow. I never actually participated on either site, though, so they were (and still are) just sources of information to me. A few weeks later, I noticed Redraw an image with just one closed curve on the HNQ list, and clicked on it. It's still one of my favorite challenges here, even if the spec is somewhat vague by today's standards, and the answers are amazing too. I didn't participate or create an account yet, but decided to lurk around and get a feel of the site, in case something easier would pop up. I finally registered to participate in the KOTH Treasure Hunting on a Deserted Island, then answered a couple of golfs in Haskell, and pretty soon wrote the challenge Generalized Quine Generator. I've been hooked ever since.

I'd say that what caused me to come to PPCG and stay here were the intellectual challenge and the community. I enjoy posing problems and closing loopholes in specifications, and if I come across an interesting research problem that I can't work on myself, I may later distill it into a code-golf or some other type of challenge and post that here. I'm always pleasantly surprised when the community solves them in unexpected ways, using obscure language features, esoteric languages, or novel algorithms.

Speaking of esoteric programming languages, I'm a big fan of them. PPCG has introduced me to such awesome languages as APL, J, Marbelous and Prelude. I also find golfing language design an extremely interesting topic, even if I haven't created or even really used one myself.

Last but not least, the core userbase is a bunch of awesome and friendly people who share many of the above interests. It's because of the community events, culture of collaboration and off-topic chat that I keep coming back, and I feel this is one of our greatest assets over other golfing sites.

What's our place on SE?

This is a tough one for me, since PPCG is the only SE site where I actively participate, and it's very different from all the others (except perhaps Puzzling). I consider code golf and other programming challenges primarily a fun hobby and intellectual excercise. It's possible to view them as a way of practicing one's skills, discovering gotchas and obscure features of programming languages, and learning to decipher convoluted code, but in my case, these feel like afterthoughts.

As far as I know, PPCG was created as an ad hoc forum for questions that no longer fit StackOverflow's Q&A format. Because of that, we're still fighting against the technical limitations of a Stack Exchange site. As suggested by sanchises, it'd be very beneficial for us if we could slightly drift away from the standard SE format with custom features.

How can we improve?

Code golf is the reason for PPCG's existence, and it should remain the site's main topic. However, not everyone is as enthusiastic about it as we are, and it seems that unconventional challenges, like popularity contests, KOTHs and cops-and-robbers, are really good at luring new users to PPCG. More often than not, some low-rep user even posts a comment along the lines of "I don't golf, so these challenges are always interesting", and others concur with upvotes. The problem is that these challenges take a lot of insight and/or hard work to create. What would be great is some new challenge type, one that's versatile and easy to score, and doesn't require so much work on the part of the challenge author. Unfortunately, I have little idea about what that would be.

Another possibility would be to lower the threshold for writing good non-golf challenges. A dedicated server for running fastest-code and KOTH competitions, preferably integrated into the site itself in some way, would be a huge improvement. As it stands, these challenges always require the asker to run and score all submissions themselves, and I/O formats and language restrictions vary wildly. I know that there has been some effort in creating such a server, but for some reason, it's never really caught wind (at least to my knowledge).

Elevator pitch

Hey, do you know about code golf? It's when you are given a specification for a program, like "output the first 1000 Fibonacci numbers", and you try to satisfy that spec with the shortest possible program. ... Well, of course it's going to be unreadable. That's half the fun! Anyway, there's this active online community where we compete in who can write the shortest programs. We do lots of other programming competitions too, like write bots that battle against each other.

\$\endgroup\$
  • 2
    \$\begingroup\$ So many great users found their way here via HNQ! \$\endgroup\$ – Alex A. Jan 23 '16 at 0:13
  • 1
    \$\begingroup\$ I really like your first paragraph under "how can we improve." I think you've nailed it with the balance between actual golf and other kinds of questions that new users who don't want to golf can participate in. \$\endgroup\$ – Doorknob Jan 23 '16 at 1:40
8
\$\begingroup\$

Why am I here?

I was browsing through StackOverflow one day, and decided to check out some of the other StackExchange sites. I found this one, registered, started participating, and the rest is history.

How do I think PPCG can "fit in" to SE in general more? What benefit can it provide to SE that facilitates SE's ultimate goal?

StackExchange, when taken at face value, is a collection of Q&A sites. When you look at it that way, PPCG doesn't really fit in; we're more of a "challenge and solution" site, which has some pretty major differences from other sites. However, I think that viewpoint is naïve and limiting. To me, StackExchange is a trove of knowledge. It's a place to learn about a huge variety of different things, including video games, science fiction and fantasy, and electrical engineering (just to name a few other sites I've joined). Certainly, PPCG fits into that model. It's a creative outlet where users can learn more about the nuances of various programming languages, learn more programming languages, and learn about the process of designing and creating programming languages. While our primary purpose is for entertainment, we do frequently learn a lot of things useful outside of PPCG, and occasionally make interesting contributions to the world of mathematics. PPCG is a trove of knowledge, and therefore it fits in the StackExchange model.

In what ways do I think we can continue to innovate and expand? How can users who can't or don't want to golf participate on such a "golf-centric" site?

I am all for the creation of new challenge types. was the original challenge type, and so it will probably always be the most popular, but we've created several new challenge types over the years (whether that was for better or for worse is another topic altogether). If we want to expand, we need to continue expanding the types of challenges we pose.

Additionally, we need to emphasize more that challenges are more of challenges within languages than between languages. While there is a single objective winner, users should never be discouraged from posting a solution in an unused language simply because it has no chance of being the absolute-shortest solution. More solutions in different languages is beneficial and essential for site health - having lots of answers to questions pushes those questions to the Hot Network Questions list, the source of a huge part of our traffic. However, quality should not be sacrificed in this pursuit. We don't want 50 crappy challenges per day; we want 10 awesome questions per day.

The Sandbox is also a bit of a contested issue. Some important debates we've had concerning it include:

  • Should we get rid of the Sandbox?
  • Should the Sandbox be on Meta or Main?
  • How can we encourage use of the Sandbox for getting feedback on challenges before posting them to Main?
  • How can we encourage users to provide more feedback on Sandboxed questions (i.e. how to get people other than Peter to regularly give feedback on Sandboxed questions)?

Answering those questions is essential for site health. The Sandbox in its current state sort of works, but questions frequently leave the Sandbox without all the rough edges worked out. We need to solve these issues so that we can continue to improve question quality. I personally believe the current state of the Sandbox is to blame for our relatively low questions per day (compared to other SE sites) - it acts as a bottleneck for challenges, because it can take a long time to get sufficient feedback for a challenge to be ready for posting to Main (sometimes the sufficient feedback never even comes).

On a related note, we don't really have a guide for how to create a good challenge. We have a list of things to not do, but we are woefully lacking a list of things that would-be challenge authors probably should do. These lists can't ever be definitive because formulating and posting challenges can't be reduced to a to-do list, but they would definitely help with outlining what makes a good challenge versus a bad challenge.

\$\endgroup\$
  • 4
    \$\begingroup\$ I feel that the last paragraph (emphasizing that challenges are separate competitions within each language) is important, especially with the recent explosion of new golfing languages, which may be intimidating for new users. \$\endgroup\$ – Zgarb Jan 25 '16 at 5:23
  • \$\begingroup\$ It is important to encourage people to participate even when there is no chance of winning (cough matlab), the recommendation (that pops up in every other challenge) of viewing the challlenges as challenges within languages is somewhat hypocritical in my experience. I do not really feel satisfied because I have a particularly short solution within my language (I am often the only one with matlab, and if not, I try helping the one who answered first instead of posting my own) but because I can show off my skills and get approval for that, via msgs/comments or via green internet points. \$\endgroup\$ – flawr Jan 28 '16 at 9:43
7
\$\begingroup\$

Why are you here?

I had already tried PPCG before in Unscramble the Source Code but that didn't really kick me into code golf. I made five answers to the question, the highest voted being +1 over the course of two days.

It was my first day at work (a summer job looking after some servers) and over 8 months since my first batch of posts. I needed to know how to use some tool, so I went over to Stack Overflow. I noted the HNQ's, seeing Swap capitalization of two strings, a relatively simple task which I knew I could solve, even if I couldn't golf it very well.

So I wrote my answer up in Python, checked it and posted it only to be told that it didn't pass all the tests. So I went and checked and sure enough, my code was broken. So I did what anyone would do: panic for a bit and try to fix my code as quickly as possible before it accumulated any downvotes. Twenty minutes later, I uploaded my fixed code.

I got an upvote.

Whoever told me the code was broken had almost certainly given it to me. I felt good. Who knew not-really-real internet points could do that? The two upvotes I got on my previous answers weren't as good.

Why?

I had improved my code. It conformed to the spec. It did what it should have done.

What does PPCG do for the SE community?

It teaches in a safe environment. No crucial code to accidentally mess up, no real pressure from the voices above. If the worst comes to the worst, you've just got a couple of people telling you your code's wrong and sometimes giving pointers on how to fix it.

PPCG has taught me lots about the language I like to use and even a new one, Pyth, which I now actually use in simple tasks.

In Make your language unusable and Self-Mutilating Program I showcased what I had learnt about code objects barely a week earlier. They are the answers I'm still most proud with and they're also amoung my most upvoted. I shared my knowledge with other users, preaching the versatility of Python even to the point of stupidity (I mean who really wants to write code that changes the program you're running?)

What does PPCG need to change?

In my opinion? Almost nothing.

I personally really like challenges like the two I've mentioned above because they forced me to think. They aren't typical code-golf's in that the way to solve the question is immediately obvious and simply getting a valid solution counts as a success to me. They were interesting challenges with interesting solutions.

\$\endgroup\$
  • 3
    \$\begingroup\$ It makes me really glad that one of my own challenges helped bring a user to the community who's now as prominent as muddyfish is. :) Thanks for the answer! \$\endgroup\$ – Doorknob Jan 21 '16 at 22:08
  • 1
    \$\begingroup\$ I really like this answer. What you said about sharing knowledge really resonated with me; I think it's another example of how we actually do fit into the Stack Exchange network, despite being an atypical site in most other regards. \$\endgroup\$ – Alex A. Jan 21 '16 at 22:23
6
\$\begingroup\$

Why are you (still) here?

I enjoy the mathematical/theoretical side of this site. People here are much smarter than I, and I enjoy learning about the latest OEIS sequence, or the best algorithm to fit uniquely distanced pixels.

With that, I enjoy the game theory behind the many KoTHs here. I really enjoy coming up with new ideas for KoTHs (more than I'll likely ever be able to run). In fact, the Create your own Wolf was the very first challenge I ever saw on this site, leading to becoming a regular.

How can PPCG fit in better?

Perhaps I'm biased here, but I feel like all of these one-off golfing challenges don't provide much. They keep the site active (which is super important), but they don't feel like real "content" to me. SE is committed to being a knowledge warehouse, but I simply don't see "Draw this ascii house" really being knowledge that anybody wants to have.

Challenges that cover new ground is really what we need. It's really hard to come up with such challenges, but we have to do it.

One other point here: Golfing languages. They are really cool and all, but they don't communicate knowledge very well. Users are often pretty good about explaining what the code is doing, but it still makes it hard for new users to really learn and get excited. Not sure of a good solution.

How do we grow into other "non-golf" areas?

This is basically my goal. Only my most recent challenge is really about golfing, and even then, its about data compression.

Currently, if somebody posts an interesting challenge (one that would expand our site), the default is to make it . However, a lot of these challenges should really be , but the OP doesn't want to run all of the submissions (it is a big commitment). We get around that by having "must run under a minute" requirements, or GOLF CPU, or other possibilities.

If we could get a actual server that would run all submissions and it becomes the norm, then I feel like we would see a large amount of growth here. We need to be more than just golfing!

Do we need a more well-defined purpose?

Yes. We need to be a site that teaches people how to be clever with their code. We aren't writing clean code, that's the job of Code Review. We all love the process of learning about things you didn't know you could do in your favorite language, but we aren't finding as many "clever" ways lately.

Elevator pitch

I usually talk about the latest KoTH I've done, and try to get them to submit a submissions.

\$\endgroup\$
  • 2
    \$\begingroup\$ About you point on making fastest code challenges. The reason I don't want to make them (and I have many ideas that would work) is because I don't want to install large amounts of code that I know nothing about (language runtime), posing a security risk for me, without considering large amount of time to compile and run each submission... \$\endgroup\$ – J Atkin Jan 19 '16 at 3:47
6
\$\begingroup\$

I didn't think i would answer this question but it seems to me that 2 benefits of this site have not been mentioned in the other answers:

  • this site as a place to study programming languages comparatively;
  • this site as a place to train obfuscation/deobfuscation.

A little bit of background: i am not a programmer nor did i ever learn computer science formally. I am a micropaleontologist (I study fossil plankton), so learning programming was not exactly part of my cursus, as you would imagine. Yet I do need to program on an every day basis as my field of study entered the age of 'big data', and that modelling is taking an increasing importance in what we're doing. So naturally I learned R and trained on stackoverflow (first reading then answering), which helped me transition from beginner to advanced user. Later (3 years ago) I joined PPCG, which helped me transition to expert user: in particular, golfing taught me the inner working of R and how to control side effects of functions.

Tags like and also taught me a lot about obfuscation, and therefore, maybe more interestingly, about deobfuscation. Again, i am no professional programmer, but i can only imagine that it has to have some useful applications (in computer security first probably). For me, as i became involuntarily the R programming helpdesk in my institute, it helped me considerably in disentangling codes that were passed and modified by generations of researchers having little understanding of the tool they were using.

Tags like and , typically, are also polyglots, gathering answers in many different languages, solving the same task, often with similar algorithms. As I said, i never had any formal training in programming. Yet today I not only program, in the context of my research, in R but also in Python and, maybe more interestingly, i do not program in C, Java and Fortran but I am able to read code written in those languages and replicate them in R or Python if needed (it happened to me recently with a software written in Java and a routine written in Fortran that I needed to modify to adapt them to my research and therefore rewrote in Python and R, respectively).

I didn't mention the place that esoteric languages occupy on this site before, but they did, for me, benefit as I, as i said before, have no formal training in computer science, they helped me understand how programming languages work on a more basic and fundamental level.

\$\endgroup\$
2
\$\begingroup\$

Who are you?

I'm isaacg. I'm a very involved member of the site, mainly in code-golf. I wrote Pyth, a popular code-golfing language.

Why are you (still) here?

I love programming for fun. In addition, I have a competitive streak - I love to compete against other people in whatever I do.

Code Golf gives a great avenue to program for fun in a competitive way. As an outgrowth of this, I decided to write Pyth, which has been a wonderful experience. It's an entirely separate avenue along which to compete and have fun. In addition, the PPCG community has helped support and add to Pyth, with bug reports, requests from features, creating the online Pyth compiler and more.

Our place in the Stack Exchange network

To me, PPCG is the natural home of all recreational programming on the Stack Exchange network. That includes what we've defined as our mission so far, namely programming challenges.

However, I think we should go farther than that. I believe programming puzzles should be on topic, even if no winner can be selected. I believe discussion of outside recreational programming sources/websites should be on topic. I believe discussion of recreational programming projects, like building golfing languages, should be on topic.

How to improve

We've gotten too obsessed with objectively answerable questions. We need to think about what's best for our community. This is not the type of site that Stack Exchange's core guidelines were built for, so we need to figure out what works best for us, no just try to use the existing rules.

\$\endgroup\$
  • 3
    \$\begingroup\$ While I would also like to see us expand our scope to to other aspects of recreational programming (including challenge writing, discussion of off-site puzzles, esolangs...), I think that the objectivity is a very important part of the challenges we have (and the competition you seek). Ideally, there would be a way to separate the challenges from the Q&A part, so that non-challenge questions wouldn't dilute the challenges, and would provide a less strict avenue to new content. But that would require substantial dev effort from the SE team. \$\endgroup\$ – Martin Ender Jan 27 '16 at 9:30
  • 1
    \$\begingroup\$ @MartinBüttner I'm not sure what you are envisioning as "a way to separate the challenges". Would a tag be sufficient? (Why not?) \$\endgroup\$ – Nathan Merrill Jan 30 '16 at 4:27
  • 1
    \$\begingroup\$ @NathanMerrill In an ideal world the software would separate them, and provide some specific features for challenges (including some meta data for answers which we almost always need, like language and score, so that we wouldn't have to hack our own leaderboard). Yes, tags are the best workaround we have at the moment, but they don't really solve the problem if we did get a lot more questions (i.e. non-challenges), because then using tags for filtering would be kinda mandatory to look just at recent challenges. Plus, it would take up another of the 5 available tags per post. \$\endgroup\$ – Martin Ender Feb 2 '16 at 15:43
-3
\$\begingroup\$

Why am I here?

I'm here for a multitude of reasons. I'm here because, well, I enjoy getting challenges on a daily feed that I can stretch my mind with. I love getting to know new things about programming (and even programmatic thought) on a daily basis. And I honestly am also here because the community was inviting, supportive, and generally just an awesome group of people that I enjoyed working with on breaking bettering code. I have stayed here for exactly that latter thought - the working with other people in this community (and further) is simply awesome. I'm connecting with people all around the globe working together on figuring out random things, and that connection honestly feels pretty great.

How do I think PPCG can "fit in" to SE in general more? What bene... zzz... why is this question so LONG?

While Code Golf fits into SE like a triangle fits into a circle, I think it can be said that we can fit in pretty well.

What is Stack Exchange Code Golf?

Stack Exchange Code Golf is a growing network of individual communities, each dedicated to serving experts [or noobs] in a specific field the art and process of Code Golf and the fields thereof. We build libraries of high-quality questions challenges and answers, focused on each community's area of expertise.

We're... actually not that far off.

Our expertise is in taking advantage of aspects of languages in order to receive some beneficial outcome. You never know - one day, scientists might use Pyth to reduce the file size of any programs they need on spacecraft (though unlikely). We also focus on other programming aspects, which causes us to teach users more skills, improving programming "health", if you will.

In what ways do you think we can continue to innovate and expand? How can users who can't or don't want to golf participate on such a "golf-centric" site?

Even though our main purpose is CG (let's face it - how many challenges are there that are not CG in relation to those that are?), we are not CG alone. As I mentioned before, we focus on many programming aspects. But aside of that, we're also an amazing community of people - one of my first golfs was halved by help from the community. People who don't want to code golf are wrong have other options, while also those people who don't quite know how to code golf yet can access plenty of resources that we ourselves have published on this site (though it's a little hard to find. Featured tags for general tips). We will continue to expand nonetheless, as we are a programming site with a competitive nature that teaches programming. Past that, we are a great community. As far as I can see, we're already doing all we can to expand. As for innovation - that will come as a result of the users. "Innovation will take it's own course..." - some guy at some point.

Elevator Pitch

I don't need to do one. Everyone in the universe is obviously eventually drawn to PPCG anyway.

In all seriousness, though, this is what I would say:

PPCG is a really cool site - the people are wonderful, the challenges are interesting, and you get a lot of programming experience. I know that I wouldn't be nearly as practiced in programming if I had never found this site. So, if you wanna program skillfully, know your lang fully, and you want to find a good way to execute on that, join PPCG.

sign

\$\endgroup\$
-3
\$\begingroup\$

Why are you here, aside from "to have fun?"

To learn Lua/golflua and Fortran better by abusing the crap out of them.

Why do you continue to visit the site?

I visit when I can because I find some challenges interesting. I miss a huge chunk of the posts simply due to work schedule (I work 12 hour days, commute included, and this site is, very sadly, blocked at work). So when I pop in once or twice a week, I try a challenge or two that appeals to me (based mostly on click-bait titles, so keep that up).

How do you think PPCG can "fit in" to SE in general more? What benefit can it provide to SE that facilitates SE's ultimate goal?

Honestly, it can't. We're here to try winning at challenges by making the smallest code (usually in the most unreadable code), not provide a repository of answers to questions about subject X like all the other SE sites.

And I think that this is a great aspect to this site. I don't want that to change. I think that this site works because of how different it is from the canonical SE sites.

In what ways do you think we can continue to innovate and expand?

ATM, I've not visited enough to push an opinion.

How can users who can't or don't want to golf participate on such a "golf-centric" site?

If you know a kid doesn't want to play in your sandbox, don't invite him to your sandbox. It's that simple.

If he can't play, show him how to play. And preferably not with esoteric languages at first, show some nice golfed C-family languages, get him interested in the idea of reducing their typical language to near-indiscernible levels. I think that the Pyths, CJams, etc are great (despite not knowing how to read or write them), but they are likely too esoteric and scare of potentially interested parties.

\$\endgroup\$
-4
\$\begingroup\$

Who am I?

I am a new user. I do not know much programming, but I know enough to write some questions. I don't know the abc of golfing. I am 15 years old and want to become a researcher in theoretical computer science one day.

Why am I here?

To earn rep. I have an account at Puzzling SE where I have put quite a few puzzles up. It is much easier to earn rep here. Also this site is a bit interesting, though I don't understand a significant amount. I'll probably earn 4k rep and leave (temporarily, until I become a professional, probably).

How can PPCG fit with SE?

IMHO, sites should only strive to stick to what they think their community would like, even if this means they don't fit exactly in SE. In fact, SE should make site-specific functionality on request of the community. For example, I had written a meta post at Puzzling SE on the need for a private sandbox, because the public sandbox used here wouldn't work too well there. However, no progress was made because existing site functionality could not be used.

Even PPCG exploits the existing functionality in ways it wasn't intended. I'm not a regular here, but I can still imagine some site-specific functionality that would be really good here.

tl,dr SE should let sites get their own site-specific features, instead of being forced to adopt the existing features entirely.

How can users who don't want to golf participate

They can't really, under the current system. There are other sites on SE to discuss non-golfed algorithms, but I don't think contests are really allowed there. If PPCG wants users who don't golf also to participate, they must just be a lot more flexible in terms of what is on-topic.

Elevator pitch

Sorry, I would never tell a random stranger about this site. However, I had told some of my friends about it and they are fascinated by the concept of SE, even if they aren't active users.

\$\endgroup\$
  • 1
    \$\begingroup\$ -1 because this isn't actually a helpful/constructive answer \$\endgroup\$ – Mego Jan 29 '16 at 17:22
  • 5
    \$\begingroup\$ God forbid we get an honest answer from someone who isn't completely in love with the site. \$\endgroup\$ – Geobits Feb 1 '16 at 3:19
  • 1
    \$\begingroup\$ Now that we're graduating, site specific functionality may be on the way. \$\endgroup\$ – mbomb007 Mar 8 '16 at 16:34
  • \$\begingroup\$ So, you say non-golfers can't really participate on the site while you're one of them. There's a reason why reputation is called "reputation" \$\endgroup\$ – Bálint Jun 5 '16 at 15:09
  • \$\begingroup\$ @Balint 1. I've somewhat lost interest in earning rep now, usually post nowadays only for the fun of it. 2. I have made all my rep solely from questions, not answers. While I don't plan to do it, I don't think it is that hard to really earn 4k rep in a few weeks, if I put in that much effort/time everyday. \$\endgroup\$ – ghosts_in_the_code Jun 5 '16 at 17:15
-8
\$\begingroup\$

Why did I join?

Being an active SE chatter, I noticed that you guys had an active chatroom. I went to check it out and boom! I joined this place. Being not the best programmer, I did not really try out the challenges. However, I did have fun helping with one of the fornightly challenges (when this was a thing!), the genetic algorithms one. However, I did not do much until I was back from a long hiatus on SE. By November, I came back and started joining the fun. "And that is my PPCG story" (like those advertisements and Twitter discussions! :P).

Why am I here? Because it is fun! But more importantly, it has taught me a thing or two about programming. While golfing is not something to do for professional programming, I have been able to practice my programming skills and use my brain once in a while code. I have even learned about a new paridgm of programming know as stack-based programming. I certainly do think that being here improved my programming skills.

Fitting in

What is SE's goal? It is to help as many people find the knowledge they need. Currently, our community is not helping people directly. However, let us think about what we do here. We solve programming challenges. That is our community's purpose. To write programming challenge and solve them. How does this help others? Well, it helps others practice their programming skills (except the Code Review guys do the same!). In fact, the person answering the questions, which happen to be challenges, are helping themselves! It also can help others who visit this site to find ideas for more practical tasks.

When I originally joined, I was really interested in neural networks, and still am. I wanted to write up a neural network. But I really wasn't sure where to start. I thought maybe I could find some well written code over here and even if it was golfed, there would probably be an explanation with it. I could not find anything so I decided to make a neural network challenge. So I was told by others to write up a challenge where neural networks would be a way of solving it. To this today, the challenge is still in the Sandbox (because I am very lazy!) but the point is, you could be helping others write code and solving programming problems.

The ingenious ideas people come up with in is community is very important and is an important contribution. People would definitely like using such code. However, golfed code isn't very useful for programming. Which lease me to the third and last question.

Golfing

We should place less importance on golfing. Golfing code has no use in regular programming. In fact, my coding habits were bad to begin with. but being on this website, it has made it worse because I keep golfing my code. If we want to help others who visit this site to solve programming problems with our answers, we need to show them code that makes sense, that looks professional, that is modular. This is not possible with code golf challenges.

Because of the emphasis of code golf in our community, people think this is a joke site. I mean, when we even have "Code a Golf" in our community name, why blame them? I think we need to keep as more of a side activity, something for fun. More important types of challenges should be and . For the former, depending on the scoring criteria, good, developed code can win, and that is what we want. For the latter, good code also wins because people will like it, meaning upvote. So I think we should move the focus away from and towards the other two.

Purpose

I think the purpose should simply be, "to help empower programmers through challenges". It kind of fits our community better into the SE goal of helping people through Q&A, as I already described.

Elevator Pitch

"Programming Puzzles and Code Golf is a place where you can solve fun programming puzzles and challenges. Come and join the fun, and empower your programming skills as Programming Puzzles and Code Golf"

\$\endgroup\$
  • 14
    \$\begingroup\$ You're blaming your bad coding habits on code golf and suggesting we have less code golf challenges, and you're wondering why you're getting downvoted? \$\endgroup\$ – Mego Jan 17 '16 at 8:42
  • 4
    \$\begingroup\$ The original question was how to better align this site with Stack Exchange's aims. This answer is "have a broader remit and focus less rigidly on golfing challenges". I think that all the downvoting shows is that golf is the most popular activity on this site. \$\endgroup\$ – Euan M Jan 17 '16 at 10:24
  • 1
    \$\begingroup\$ @TanMath While the site is called "Programming Puzzles and Code Golf," you'll find that there is far more emphasis on the "Code Golf" aspect than the "Programming Puzzles" part. People who want to get better at coding should go to Stack Overflow, not come here. \$\endgroup\$ – Arcturus Jan 20 '16 at 16:06

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .