The Kitchen Sink philosophy

By @lucasdicioccio, 744 words, 0 code snippets, 1 links, 0images.

In these pages, I sometimes use “It’s a kitchen-sink!” as a placeholder for apologetic or unapologetic statements regarding the lack of sophistication of Kitchen-Sink. I lament when something is suboptimal but ought to be improved. I duck out when something is suboptimal but ought to be left out scope. Let me explain the three Kitchen-Sink tenets.

The Kitchen-Sink tenets

The name of the blog-engine is not just a pun about where just dumping files in a directory to make a blog. There’s some philosophy behind the name, a philosophy that I grew out of experience: a mix of frivolity, defeatism, and awe – applied to small static sites and blogs.

Frivolity. When you are too lazy to wash and sort plates, you drop them in the kitchen sink. You’ll come back later. In short, take it easy. The world is tough enough to add extra-high expectation onto oneself. Blogging should be the similarly lightweight. Unless you want to make a career out of blogging, you should be frivolous about your online site.

Defeatism. Humans often fall in for the same traps. Rather than doing something, we find roundabout ways for not doing them. A sure-fire way for engineers to lose time is while trying to organize things in large hierarchies and inter-connected ontologies … when there is alomost no content to organize. Blogging is the primary use-case for Kitchen-sink. In this context, I feel afraid that people spend time organizing and preparing a blog but then write no articles. Rather, I think the key value of blogs is in having content from people voicing their unique opinions. If it’s only in text files with no colors, then so be it.

Awe. I have a huge amount of respect for scrapy and low-tech solutions providing outsized results. Such solutions typically do not scale and require engineering to step up in intrisinc (or perceived) quality. When asked to grow a low-tech solution into some more professional service, engineers tend to codify processes and invent complex hierarchies before having any content to arrange (cf. the above point on defeatism). When approaching the world with a frivolous mindset, a tool that only works for the easy-mode will feel awesome because these easy problems will be the ones you’ll encounter most of the time. Regarding blogging this tenet means that the world improves when articles are written, even if these articles lack perfection.

Implications of the Kitchen Sink tenets regarding the blog engine

There are a few implications and many possible misunderstanding regarding the tenets. In particular being frivolous and in awe of scrapy solutions looks like being in opposition with “professional”.

Organization-wise. Kitchen-Sink is not a good fit if you have strong opinions about hierarchies of information. Rather, the modus-operandi is: thinking about writing something? throw it into the Kitchen Sink. Where do we put source files? in the Kitchen-Sink; where do we put CSS files? in the Kitchen-Sink; where do we save images? in the Kitchen-Sink. If someone looks for what you have written: they can look in the Kitchen Sink. If people do not find what they are looking for, then only it may become interesting to add extra structure. You may even want to grow out of Kitchen-Sink and it’s fine. The Kitchen-Sink philosophy will help you with that because you won’t have annoying problems like file conflict names to start with. In short, throw things in the Kitchen Sink, it’s easy to remove them from here anyway.

Project-wise. I think that there is a distinction between honest but hard-to-swallow feedback and contempt or guardkeeping. Thus, when someone approaches Kitchen-Sink saying it is inadequate for their use case: good. When someone says the whole project is a waste of time because they already have a wash basin: not good. If we regard time as a scarce resource, then adding content to a site is a budget-allocation game where the time-budget is small. I can honestly say I’ve lost so much time on modern or flexible or $marketing-term tools. I believe a number of websites would benefit from having fewer features of the modern web and more content instead. I think the web would be better with more ugly websites having great content over pretty content-farmed websites. Markdown is awesome but you would prefer something else and do not want to contribute it? well, even though Kitchen-Sink could support new formats we’re not chasing features, we’re chasing content.

Technically. Being frivolous and in awe of scrapy solutions does not mean that Kitchen-Sink should be irritating to use. Usability and correctness are a concern, otherwise some features like live-reload and the section-based format would not exist. Correctness may suffer a bit when things lack a good definition or inconsequential (e.g., the word-count not taking into account titles in the sections they start – feature or bug, I cannot tell, but definitely not a huge deal).