An open API service indexing awesome lists of open source software.

https://github.com/rafaelrcamargo/place

r/place is a recurring social experiment on Reddit, launched on April Fools' Day 2017.
https://github.com/rafaelrcamargo/place

canvas nextjs place reddit redis

Last synced: about 2 months ago
JSON representation

r/place is a recurring social experiment on Reddit, launched on April Fools' Day 2017.

Awesome Lists containing this project

README

          

# r/place

Place is a collaborative pixel art canvas, where users can place a pixel every 5 minutes. The canvas is 1000x1000 pixels, and each pixel can be one of 16 colors. See [r/place](https://www.reddit.com/r/place/) for more information.

> Garlic bread, Huh? 🥖🧄

## Lore

The whole story starts as a April Fools' joke by Reddit. The canvas was open for 72 hours, and the result was amazing. The canvas was filled with art, memes, flags, and more. The canvas was a huge success, it was even featured in the news. And every now and then, the canvas is brought back to life. Every time with a new codename...

## The challenge

My starting point was the [r/place](https://www.reddit.com/r/place/) subreddit. I wanted to re-create the canvas, but with all the advantages and freedom of a side project _(And all the disadvantages, cof cof)_.

### Milestones

- [x] Create a canvas
- [x] Make it interactive
- [ ] Create scalable infrastructure
- [ ] Setup a database (Redis [bitfield])
- [ ] Create a backend (Not sure)

#### The canvas

The canvas starts as a 1000x1000 grid, but for artistic reasons, I decided to make this in a smaller scale, not the original 50x50 for pixel downscaled like the original. I went for a 1x1, so a real pixel basically, then the canvas is up scaled for the nature of being made by pixels the resolution doesn't really matters here, that way, we skip the whole image creation process and keep a reasonable performance.

> So... Maybe I figured out why they went with the image approach...
> Turns out rendering millions of pixels is not that easy, who would have thought?
> For now I'm optimizing the rendering process, but I'm not sure if I can get to a reasonable performance.

#### The infrastructure

That's a cool one, my first thought was to create something scalable to the tens of millions of users, but then I realized I not so sure even how to simulate that... So for now I'm aiming for a 1.000.000 req/sec, this still sounds a bit far fetched, but I think it's a good guiding line.

## References

- [r/place](https://www.reddit.com/r/place/) - The original canvas
- [how_we_built_rplace](https://www.reddit.com/r/RedditEng/comments/vcyeqi/how_we_built_rplace/) - A fantastic series of posts about how the 2022 `r/place` was built.
- [how-we-built-rplace](https://www.redditinc.com/blog/how-we-built-rplace/) - The original post about how the 2017 `r/place` was built.

## License

This project is licensed under the MIT License see the [LICENSE](../LICENSE) file for details.