Thanks for the support everyone! It was a really fun little project. I'm happy to answer any questions people have.<p>I'd also like to say that I highly recommend everyone does projects like this from time to time. I don't know any way to gain programming skills faster than making small throwaway projects using new tools and techniques.
> "I'd never actually used kafka before, and I have a rule with projects like this that any new technology has to be put in first just in case there are unknown unknowns that affect the design."<p>I have been doing the same intuitively for as long as I can remember but never stopped to realize this or why. I wonder what else I've learned by doing like this that now I use unconciously.
You could make it so that blank pixels are free to draw on, but it takes longer to redraw subsequent times. This would encourage the board to get filled up even with a small number of users, but would eventially allow things to be "locked down". Also would work well if you expect users to scale with time!.<p>For example, first draw = free. 2nd redraw 10 seconds, 3rd redraw 20 seconds... capped a 5 minutes. Not that the actual implimentation is that important.
This is super awesome work. Well done - you should be proud!<p>I have to admit, I remember stumbling across your comment when you accepted the challenge and in my mind I scoffed, thinking you were never going to do it. Boy was I wrong! Once again, this is super cool.
Event Sourcing is a great pattern that could be used for many applications. It gives you an audit trail for free and lets you rewind to any point in time.<p>You don't even need to use a dependency like Kafka. We built a tool for tracking the lifecycle of software we ship, it uses Event Sourcing with snapshots and is open source: <a href="https://tech.fundingcircle.com/blog/2016/09/06/shipping-in-fintech/" rel="nofollow">https://tech.fundingcircle.com/blog/2016/09/06/shipping-in-f...</a>
Would you consider streaming/broadcasting yourself doing a project like this? I think it would be interesting to pop in and watch you work, especially if once every couple hours you provided some commentary about your thought process and what the latest hurdle to overcome is.
That was pretty fun. I missed out on the original until many days after it happened, but just now I started to recreate the Windows 95 start button in the bottom left corner... seemed almost daunting to even do that many pixels, but it took no time at all until other people started collaborating and finished the button in a time I couldn't imagine at the start of that miniature journey.<p>I have no clue who those people are. It's just anarchy and the only thing we have in common is a canvas :-)
I could well have missed it but - have you got any scripts or config associated with setting up Kafka as you're using it?<p>I haven't used it before, and the comments on your writeup make it sound more approachable than I'd expected.
First of all, great work. It's been a long time since I've done a weekend hack like this myself.<p>However, it seems to me that Kafka is unnecessary in this system. It's clear that, at least in the final version, the system isn't designed to scale beyond one application server. For one thing, you're storing the ban list on the local filesystem. So it's definitely not 12-Factor compliant. And you're storing a local snapshot of the image. So why send the edits out to Kafka, only to have them come back in to the same process?
honest question, how did you fill out the canvas? you put it live, and then? thousands of people (including those who care enough to setup bot) suddenly came from your tweets?
I might be going a bit tangential. I did read the article but I always wonder. How would I go about learning all the technology involved to build all this.. is there like a guide for people who know the basics of php and mysql. I'm a civil engineer by trade and only do this as a hobby sometimes.
Seph's law: Programming is 95% decisions and 5% typing.<p>You are an inspiration! If people grasp what you've done then you've lowered the fear people have of copying things. That should lead to more attempts, failures, improvements, competition, a true catalyst!
Would the server-side bit of this be a good, or at least fun, benchmark? More towards the TechEmpower end of the pool than TPC. There's a pretty clearly defined API, and some fun concurrency and data-handling to do.
Great work thanks fir sharing!<p>One decision that I don't agree on is the choice to send messages in order.<p>I usually prefer to flood the client of messages and attach at each message a timestamp (a monotonic increasing integer) and having the client to re-order everything.<p>It is cheaper from the server point of view and the worked is done by the clients.<p>Are there any reason why you picked your specific solution?<p>Just a technical question, that I am very curious about. I guess that there are concerns that I am overlooking at the moment...
This is absolutely great, and also much closer to how I would have done it as well. Reddit's implementation seemed like they chose so many wrong tools.
Fantastic job, congrats and Happy Easter, it was very nice following along. A lot of people were rooting for you.<p>Someone get this man a chocolate egg, he deserves it!
Jesus, how many more weeks are people going to write 10 articles a day about this silliness? You'd think it was the first online webpage that did something besides display hypertext?