Mobile Software, Unix/Linux, and Me
Tim Bray's 3 Mobile Software Rules may just be a case of Maslow's "If the only tool you have is a hammer, everything looks like nail" to me -- but the simple designs you would get if follow Tim's rules echo Unix/Linux design to me -- no complications (no separate Exit routines & loose interconnections & few decorations). Whether you are in .NET like I am on workdays, on the bleeding edge of HA web design, or down to the metal in embedded software design, simple designs always seem to end up working the best.
Of all the ideas that Tim Berners-Lee thought of when he started work on the Web, the brightest may have been to ignore the Dexter Model and just let links fail sometimes. Although it required a little more code than always assuming links were good, the overall Web architecture was made a whole lot simpler. In the end, it is impossible to have all links good all of the time -- if nothing else, a hard disk failure (including that of a network server) can render your code inoperable if you have assumed that everything is going to be hunky-dory all of the time.
HTML and its loose interpretation by browsers let everyone that wanted to create Web pages. The simple, stateless Web architecture let everyone that wanted to create Web applications. The Unix (and Linux) philosophy of combining multiple simple tools in a pipeline let everyone that wanted to (and could stand to work on the command line) create their own applications.
Mobile software forces programmers to avoid complexity, as you just can't afford it. As each new platform emerges (mainframes -> minicomputers -> PCs -> mobile devices), it provides (IMHO) a necessary corrective to our impulse to build ever-larger monolithic systems. This may be the lesson for us developers.
Leave a comment