<p>In the fast digitalizing world of the twenty first century, coffee has become so ubiquitous that it now stands at the pinnacle of not only human ingenuity, but also the desensitization of the society at large to the rumored negative effects of sleep deprivation. In fact, expert testimonies and clever anecdotes place coffee as the very pillar of the existence of our technological innovations. But brewing is an art, and for centuries, that art was confined to the knowledgeable few. As the population is expected to grow at an exponential rate while that of knowledge transferred by mouth of word is dramatically slowing, we must expect that eventually, the projected demand of coffee will asymptotically overshadow the ability to produce and brew quality coffee. </p>
<p>In preparation for such disasters of apocalyptic proportions, the Internet Engineering Task Force drafted a RFC (effectively a behavioral specification of a protocol on top of TCP) to ease the task of distributed brewing using traditional technologies. (<a href=“http://www.ietf.org/rfc/rfc2324.txt[/url]”>http://www.ietf.org/rfc/rfc2324.txt</a>) Sadly, CollegeConfidential does not seem to support the Coffee Pot Control Protocol, also warmly known (by coffee lovers at least) as HTCPCP. Hence, we can not actively check for the status of brewers nor can we use the uptime statistics of RFC2324 compatible coffee pots to project expected downtimes of CollegeConfidential due to coffee related incidents. It is in my humble opinion that CollegeConfidential is squandering a huge opportunity for an innovative and community driven chance to get free coffee maintenance for the duration of business operation as well as giving a new meaning to the “Cafe”.</p>
<hr>
<p>Bug Specifics</p>
<p>Reproducibility: Consistent
Steps:
- Using a RFC 2434 compliant client application, send a simple brew request to coffee://collegeconfidential.com</p>
<p>For reference, here’s a sample implementation. Dependencies: w3 from emacs
<a href=“https://gist.github.com/1105982[/url]”>https://gist.github.com/1105982</a></p>
<p>Actual results: Connection over standard coffee port shuts down prematurely, leaving a distastefully grainy texture. Piggybacking on HTTP port 80 results in no response from apache, typical for unknown headers. Secured coffee protocol over port 434 also fails.</p>
<p>Expected results:
Using [List</a> of HTTP status codes - Wikipedia, the free encyclopedia](<a href=“http://en.wikipedia.org/wiki/List_of_HTTP_status_codes]List”>List of HTTP status codes - Wikipedia) as the foundation:</p>
<p>20x on successful brewery, you may now send a GET request to stream the coffee.
401 Unauthorize
402 Payment Required
404 Not Found - if no more coffee is left, this should be monitored by third party applications to ensure that the coffee pot is functional for as long as possible.
406 Unacceptable - if the user asks for alcohol to be mixed into their coffee and the request is from less than 21 years ago, then gently scold the client on the potential dangers of underage drinking. This method ensures that the client is at least 21 years old. Also, if unacceptable coffee mixers are requested, such as bacon in your espresso, then 406 is returned until the user no longer requests for the espresso.
408 Request Timed Out - that guy who always takes other people’s coffee strikes again…
418 I’m a teapot - Any attempt to brew coffee with a teapot should result in the error code “418 I’m a teapot”.</p>
<p>With CC’s support, users of the site may never need to remove themselves from their computer and hence can stay on CC forever.</p>
<p>On a more serious note, a past year had a final assignment to implement an HTTP compliant server framework where they actually had to interpret what 2423 meant. Also, 418 is an actual response code ([Hyper</a> Text Coffee Pot Control Protocol - Wikipedia, the free encyclopedia](<a href=“http://en.wikipedia.org/wiki/Hyper_Text_Coffee_Pot_Control_Protocol]Hyper”>Hyper Text Coffee Pot Control Protocol - Wikipedia))</p>