I like simple things, and I believe I’m a very simple person –though my wife of 13 years begs to differ.
My quest for software that’s as simple as my needs, is an on going one, my good friend Tamgo, jokingly asks me: “What’s the OS of the month?” and he’s right I do change Os’s quite a bit trying new things, looking for what I deem a simple, and yet effective OS for my needs.
What are my needs? That’s quite easy to surmise:
- Extensible
- No restarting (minimal will do)
- Robust
- Smart
- Unobtrusive
- Privacy
- Open
Taking the short list above, you’ll find that in the case of Os’s currently available there are compromises to be made. The problem with compromising is all good until you get annoyed out of your skull by that item that’s always on your face nagging you. Let me give you an example, I’ve been using some form of Unix for most of my computing life, lately I’ve been using Linux more than any other Unix derivative, I started using Linux somewhere around 1994 - 95 and it’s been a fun ride, full of little annoyances, but fun. Lately it has become really annoying, I’m sure it’s me (showing my age), and to be honest compiling a kernel for the hundredth time is not fun anymore. I was once somewhat active in the community, helped in Gnome, and other software, and still today most of the things that annoyed me back then are still there! That’s really annoying. Now you may ask: If it’s annoying why don’t you fix it? Assuming I can fix it, and I’m not saying I can, it’s an up hill battle, that will upset many, many people, for example, I find Evolution in Gnome basically useless, it’s slow, and not only is it slow, it slows the system! There are far more useful, and better alternatives out there, and suggestions to temporary remove it from Gnome, until it’s more robust has cause major flame wars, and even personal confrontations, but the point is it’s still there, some people use it daily and love it, others hate it with passion. Linus Torvalds, loves KDE. I don’t, not one bit, never had, and it seems I never will. It would make this a very long post to explain why I don’t like it, and that’s not the point of this post. If you like Evolution or KDE by all means use it, I’ve used the latest versions of both so no need to point me in any direction regarding this.
So as you can see, getting a good balance for some of my criteria is difficult. If we enter the realms of programming editors, it gets even worst, leaving very little choices in that regard.
Transcending the limits
Extensibility
I experiment, and try out a lot of different tools, because I’m looking for that tool that will enable to be more productive, letting me implement my thoughts and ideas in the most elegant, concise and easy way possible. There is a lot of research going on in usability, focus tasks, etc. All in the name of making us more efficient, and leave us little time to procrastinate.
Procrastination is one the things that really affect me, but it’s more out of boredom than anything else. As my wife puts it, if I’m really interested, I will spend days, week, months and years until I see it through, if I loose drive, I will drift to some other area. She’s completely right, and in all honesty that’s something that I need to fix, but there is something to be said of the way we work, maybe it’s just me, but if the medium I use to do my work, is giving me a hard time, or making it difficult for me to progress on that front, I simply walk away and find a new medium that will aid me in finishing my goal, and that’s the problem with most software, and most things in life today, they are not extensible.
Being Extensible, is the biggest feature there can be in software, and if you add to that ease of use, then well you have a partial winner. One of the things that core Emacs users love, is being able to build your environment from the ground up for your different needs, there is the issue of learning a new language (to some this is a drawback) to create this environment, in the other side you have Eclipse which is doing the exact same thing, but it’s based in a popular language, Java, and it is awesome, but it’s not suited for basic little things, it’s not dynamic (for some this is a good thing) but I believe that in this type of tool a dynamic medium is better suited. To make the point look at TextMate, it’s booming, one of the things people rave about is it’s Bundle mechanism, which is basically scripts (Bash, Ruby, Python or whatever you like) that get loaded and executed dynamically, you can download ready made from the net, or make your own bundles, make your own little commands that do “x”, you are only limited by you imagination, and the tool.
Restarting
Being extensible is a waste if you have to restart your application every time you make a change, or add a new script, that’s insane, and it’s one of the things that annoys me in eclipse. But this is not limited to the computing world, imagine having to turn off your CD player, every time you change Cd’s so the new one get loaded, insane right? Well it’s the same with software and with most things in life, things perish, and software and hardware will need a reboot from time to time, that’s a given, but it seems it’s taken to extreme sometimes. The time you save with dynamic loading is worth effort to implement it.
Robust
This is tricky, because in the software world, there are a lot of variables, so what is unstable for me, can be rock solid for some one else, hardware resources play an important role in this, and while my personal preferences are not so demanding in the eye candy department, I’m quite happy with minimal applications, like console based editors, etc.. Why is minimal good? It’s not that’s good, or better, is that there is less chances for bugs, a bigger program has more chances of hidden bugs than a small one, though there has been cases where the contrary is true, so it’s not a rule or anything of the sort. Having tools focused to one thing, that they really well, are valuable and should be encouraged when applicable.
One of the things I like of Emacs, is the fact that in over the ten years I’ve been using it, it has never crashed and lost my work. What? That can be true! I hear you say, well in my particular case it is. I’ve had moments when it has been unresponsive but it has never died on me, I either manage to bring it to life, or kill it, even then, my work has never been lost, a lot of people will go: “Yeah, sure whatever, God bless Emacs” but think it over, how many times have you lost your work or part of it, because of a software or hardware glitch? How many times, have you saved a file, to find out for some reason it was not saved? This is not such a huge feature, it’s actually a very small logical feature to have in all programs, and yet we find programs lacking in this front every day. To be clear I’m not saying Emacs is superior because of this, I’m just using it as an example, substitute Emacs for whatever program does the same for you, Firefox 3, is another software that does a nice job of saving at least your sessions when it crashes, and there are others, but they are in the minority, and why is that? Is this so difficult to implement? I don’t think so, I think it’s just taken for granted.
Crashing is the most annoying perceivable issue, but there are others, some times applications get blocked because of an ongoing operation, this annoys me to no end, there are so many ways to avoid this, that there is no excuse in my book for such a thing happening.
Smart
This one is difficult to explain, I’m a AI researcher wannabe, I love AI, though have never had the chance to do anything or study the field formally. But there are a few things that can be done to make a piece of software smart, the first smart thing to do, is to make it extensible and robust, after that everything is icing on the cake.
Really I would love to have software be able to learn from our use patterns, to enable us to be more productive, it’s not an easy or simple proposition, we will get there. To be clear I’m not advocating clippy or an intelligent clippy, what I’m advocating is more a system that develops macros (as in lisp macros) based on our used patterns, that will enable to select and run said macro, instead of doing it ourself, this is possible to do in some applications, but not without getting your hands dirty in some wierd scripting language, I’m talking of no user intervention, and no need to be a programmer.
Unobtrusive
This one is obvious, I hate popping windows, and dialogs when I’m in the middle of something, be it reading a web page, or coding. I just can’t stand it.
In this days of information overload, it’s imperative we find ways to unplug, be it metaphorically or literally, I for one has opted to code offline, I take my computer offline when working, I download all the documentation I need, and if I miss something I go to my laptop, get it and walk back to my workstation. This so far has been a blessing for me, and thanks to distributed source code managers, it’s easy to upload and sync all my work.
The net has become the biggest burden and procrastination tool in the history of man kind, that’s my opinion of course, don’t get me wrong I love the net, but it’s just a bit too tiring, trying to be on top of everything, and frankly it’s not worth it, so now I read a select few sites, rest of the time I’m offline doing some work, or playing video games (yet another procrastination tool).
Privacy
This is one is short and sweat. Applications don’t need to phone home ever! Protect user data. In the case of OS, disk encryption, should be a default option. I have nothing to hide, but I have no interest in people snooping around, so yes I have my hard disk encrypted, and have very aggressive firewall rules in place, intrusion detection systems, etc.. I use tor, and while I know it’s not completely private, its better than nothing. Call me paranoid all you want, but what I do or don’t do in the net, or in my life, is my own business, and no one else.
Open
Ambiguous I know. But that’s the idea, I’m not specifically talking of open source, I’m an advocate of full disclosure, If there is a problem with the software I use, I want to know, and want to know as soon as the company or the developers know. Same goes for my car, if there is a known fault from the factory, tell me about it, so I can deal with it ASAP, don’t wait till I or someone else is in an accident to recall the damn things!
Conclusion
The above applies to other things like hardware, and even to business practices. What will the benefit in our overall life’s would be? I believe it would enable us to enjoy life more by finishing our tasks sooner rather than later, and be more efficient with our time, so we can spend that time where it really matters with our families, playing video games, and going out.