A program needs inputs. Either those inputs are supplied when the program is run, or they come from a configuration. Some configurations can be reasonably defaulted. Some can&#x27;t.<p>For example, a newly installed browser on a machine that has never had a browser cannot read your mind to figure out your home page. It can run and do its job, but without a URL, and a default home page, it can just display an empty window.<p>(Some inputs cannot reasonably be made configurations. Should a ssh program connect to some particular host if run with no arguments? Maybe. Should &quot;rm&quot; have a default file name to remove if none is supplied? Crazy!)<p>Configurations are necessary, though. There are otherwise too many inputs. What&#x27;s the answer? &quot;I don&#x27;t like programs that take many inputs; don&#x27;t make such programs?&quot; That&#x27;s just dumb. Some functions simply don&#x27;t decompose. You can&#x27;t take every program that has 60 inputs and make it into 6 completely independent programs that have 10 inputs to somehow do the same job. If it <i>can</i> be done, maybe it should, sure.<p><i>Of course, nobody should be required, before using a program, to configure a myriad preferences that can all be reasonably defaulted.</i>  That seems to be the point of this blog, which is largely self-evident.