Reading “The Unix Philosophy”

At the part where the author talks about the benefits of portability. Helping me to re-think many of my past projects (both personal and work) by thinking about how much longetivity they’ve had and how easy it was to move them to new environments as upgrades and systems changes happened.

Unfortunately, I realize I haven’t done as great in this area as I would have liked!

Advertisements

Looking for org-mode everywhere

Learning how to integrate Emacs org-mode across all my platforms and devices. So far, haven’t found a quite smooth enough way to edit that darned text file from cloud storage on either the Android device or via the browser. Who knew that in 2014 Emacs would be the premier client tool available for a particular use case of editing a text file anywhere?

Anyway – still working out the details and kinks, just throwing ideas up here by way of brainstorming.

Gotta say that when my instance of Visual Studio (again) locked up my work PC for ten minutes yesterday, it was a big motivation for me to continue moving down the path of finding and using tools which are not so monolithic. Yes, here I’m talking about using Emacs as an organizer and replacement for some features of Outlook and my current web-based organizational tools. But one of the great things about it is that as I spiral my learning curve around creating that solution, all the stuff I learn about Emacs along the way also gives support to my skills and knowledge to start using it to solve a boatload of other problems.

org-mode for Emacs

Lately I’ve been exploring more of the “literary” side of being a technologist.

Literary: I heard it described that way by someone else (maybe it was Steve Yegge in one of his posts about Emacs?) a few years ago. The idea is that if you move from the typical GUI work that a Windows administrator / programmer does, to using more command-line tools and keyboard shortcuts, you develop a closer relationship with things like code, text, commands, functions, keyboard shortcuts, scripts, etc… And that this creates a deeper bond in your thought process.

I wrote recently about how I’ve finally gotten to a point with Emacs where I can use it and feel pretty productive, and can use it to solve certain text manipulation problems that would be very difficult to solve another way. It’s a great tool because it’s one that you can invest time in deepening your knowledge of on an as-needed basis, and you can be sure that every minute spent doing that will payoff in either improved productivity or improved understanding of an important aspect of technology at some point in the future.

Similarly, I’ve been rounding out my knowledge of various scripting tools and (having recently bought my first Mac) getting a deeper education in the innards of Mac systems (by reading some books about the Unix innards, not just the Mac stuff on top of the Unix). And I’ve been finding increasing uses for PowerShell in my work as a Microsoft guy – so much so that I now believe anyone doing programming or administration of any sort on a Microsoft system is really holding themselves back if they don’t make a lot of use of PowerShell. Yes, it’s that useful – and in many ways does Unix better than Unix does Unix.

But back to Emacs. Now I’m learning org-mode. It’s not going to replace my use of Remember the Milk, Outlook, Evernote, Basecamp, or any of the other organizational tools I use. But having a mature and lightweight (read that: text-based) organizational system can really come in handy when you need to operate in project planning mode and all you have available is a text editor. Yes, Emacs puts a lot of nice functionality on top of that text file. But that file can also be tweaked even when you don’t have anything fancier than a basic text editor available.

It’s all part of embracing some of those nifty Unix ideas of data portability, transparency, etc… And embracing those ideas, I think, will also make me a better Windows programmer.

 

Merging the Unix philosophy into my work and life

I’ve been thinking a lot about the “Unix philosophy” and how it applies to projects and other things I do in my work and personal life.

I know “the philosophy” comes in some different forms depending on where you read about it. My first exposure came from reading “The Art of Unix Programming” a few years ago. Recently I got my first Mac laptop. I’ve used Linux a good bit over the years (and Cygwin) and I have a decent understanding of how things work and are built in the Unix Way. But I’m seeing many ways that I can start taking those ideas and breaking down the conventions of my Microsoft-centric software development job, and other big and small things I do in my personal life.

For example, the “keep it small” principle is something I often forget about at work, sometimes leading me into an application development that gets big enough that it is more difficult to maintain than it needs to be. There are reasons for it, at my work – mostly having to do with the tools we use and the administrative overhead involved in each new application we build. So there is a motivation to stuff as much as possible into fewer applications to cut down on the administrative overhead. But that means the complexity and difficulty of maintenance goes up.

More to come – gotta go get out of a walk on this beautiful sunny day!

Powering through PowerShell

I’ve been digging around in PowerShell a lot more lately. Some days at work, I wish I was a systems administrator instead of a programmer because I’d have more excuses to use some of the cool new tools like PowerShell. But of course back when I was a system administrator, soon after PowerShell was released, I found it so complex that I wasn’t able to make much sense out of most of it.

It’s a great language and environment, designed by some very smart and well-experienced people. But to get the most out of it you really need to have a wide variety of deep Microsoft experience.

But, yeah – Microsoft Outlook is hard

I recently told my wife that I thought Microsoft Outlook was hard to use, or complicated, or something like that.

We went on to talk about some other things but a few minutes later she asked me what I meant. I realized I had done what I often do and made a statement of opinion-fact that sure could use some explanation. Of course, everybody does that all the time – pretty much everything you hear in a day is someone’s opinion about something (though most of it is presented either as fact or, worse, as policy). We don’t really acknowledge that “fact” very often. 🙂

I tried to figure out what I meant by saying Outlook is “hard.”

I’ve used Outlook for so many years that I can’t really remember what it was like to originally learn it. I do remember when I first started using Outlook 2010 at the office, I found the user interface overly complicated – I’m still getting used to Microsoft’s new ribbon strategy in its Office product line and I find that every time I look for a menu option that is not yet part of my muscle memory, I have to search around longer than necessary just to get my bearings on the UI layout.

That is part of what makes it “hard” – it doesn’t have a very friendly user interface, at least not in certain views (for example, composing an email gives a much more limited and simpler view – not all views of a software product are equal).

There’s another aspect of the “hard software” problem that was actually more on my mind, though, when I made that glib statement to my wife.

I’ve been thinking a lot lately about this new breed of software (mostly web apps) where there’s an intense focus on making the default options excellent, so that you don’t have to change them often. This helps a lot of things because it means you don’t have to go searching around in the user interface very often.

Closely related to this is the idea of software behaving, by default, in the ways that are most useful. I touched on this in a previous post where I grumped about Outlook’s inability to let you set multiple reminders for the same Calendar event.

As it turns out, that little grump post is the most popular post I’ve ever written on this blog, and the post itself doesn’t even provide anything useful – it just lodges my complaint against Outlook for lacking a feature which Gmail has and makes dirt-simple. I’ve felt bad over the years imagining all the people who do a Google search and land on that useless page thinking that they might be about to find a solution for this missing feature. Oh well.

In Outlook, solving the “hard software” problem is hard, of course – the product has been around for so long and is by now such a complex monster of a product that trying to pick the best defaults for everyone is simply impossible, and would ruin the software for as many people as it helped. Instead, it’s now in that realm of mature software that is cursed to forever live under the burden of its own success. Gmail will get there someday, too. Even Twitter will.

But I can still complain about it. Because today there are options. In fact, there have always been options to the old-farty software that had long-ago grown too complex to be accessible to newbies. In the past, this might have taken the form of a little command line utility or a macro that was written to solve a very specific and limited problem. There has always been a need and a market for small custom software to solve isolated problems. Software such as Outlook fills a different need – it tries to be the One Answer for everything related to personal productivity.

And you can spend your whole techno-life only using those One Answer solutions, if you want, and you don’t mind spending a lot of time reading manuals and watching webcasts. And of course if you’ve been using that software for eons then the learning curve on new versions is usually small. The software can live on because it’s got a dedicated community of users who, for better or for worse, are willing to put up with the warts because it’s easier than moving to a new piece of software, or because it would be too hard to work collaboratively with others if they weren’t using the same system.

The tech world will always be this way.

But the Techno-verse is also big. And as Google once pointed out, when the pie gets bigger then each slice of the pie also gets bigger, and there’s enough pie per slice to go around to satisfy more and more people. It doesn’t matter if some slices of the pie are ones you don’t want – you can spend your whole life eating from another slice.

And that’s what I was trying to get through to my wife. I’m an innovator, as far as software is concerned. I’m always looking for a new and more helpful way to look at a problem that software is solving.

There’s a reason I use Outlook at the office – it’s because it is required by policy and nobody would talk to me if I didn’t. And I do enjoy using it because I’ve gotten pretty damned good at using it over the years. I have a lot of respect for its power.

But there’s also a reason I would never consider using it on a personal level or as a freelance technologist who isn’t tied to any particular office environment. It’s because it’s not the best tool for communicating and organizing communication.

I’m not talking just about email, I’m talking about all the various aspects of personal data management and collaborative communication that we need to use in our work.

Some of that management and collaboration happens via email (the World’s second favorite database, right after Excel :-)).

But if you are open to it then most of that management and collaboration can happen instead via all the various new-fangled collaboration tools (e.g., Basecamp, Remember the Milk, Google Drive, Evernote) that work better in their little niche areas than Outlook tries to work across the whole monstrosity of our personal data.