Illusory Follies Sed quis debuget ipsos debugatores?

28Nov/081

George Orwell on Writing

Not that I follow these rules, but I've had this excerpt kicking around for a while in my notes and figured I'd post it somewhere I could reflect on it:

  • Never use a metaphor, simile, or other figure of speech which you are used to seeing in print.
  • Never us a long word where a short one will do.
  • If it is possible to cut a word out, always cut it out.
  • Never use the passive where you can use the active.
  • Never use a foreign phrase, a scientific word, or a jargon word if you can think of an everyday English equivalent.
  • Break any of these rules sooner than say anything outright barbarous.

"These rules sound elementary, and so they are, but they demand a deep change of attitude in anyone who has grown used to writing in the style now fashionable. One could keep all of them and still write bad English, but one could not write the kind of stuff that I quoted in those five specimens at the beginning of this article"*

From George Orwell, "Politics and the English Language", 1946.

*To see the full context of what he was talking about, you can take a look at the entire essay here.

20Nov/082

How I feel at work these days…

I've had a heck of a time staying productive this week. I don't think that it's been helping that I've been trying to do a lot things on the side. But something about this week felt different. I have clearly defined tasks but I've been procrastinating an awful lot more than usual. I tend to have 25 things to do and continually shuffle the top 5 things. I finish them and instead of hitting things farther down the list I substitute the most interesting next 5 things that I can do. So a backlog is typical. My problem is that recently I've been feeling guilty about tasks way down in the 20's and spend a lot of my "free" time trying to focus on that.  So instead of knocking out high-priority tasks, I've been ineffectively working on low-priority things.

I tend to mix my personal goals, chores, continuing education, and regular  work all into the same priority pile. I find it hard to segment it any other way. Unfortunately that means that at the office sometimes I'll blow time on things that aren't work related meaning that now I have to work evenings, stay late, take vacation, etc. This would ideal if I was working as a consultant and could make my own hours. I've never felt like I needed a boss to motivate me and enjoyed the shorter-term goals of contract work and the variety of experience that they innevitably demand.

Here's a list of things that I'd like out of work:

  1. I'd really like to be able to work with companies and individuals that need services that I can offer.
  2. I'd like to be able to excel in providing these services to the point that my value is clearly seen.
  3. I'd like my work to offer me the opportunity to be creative -- not simply implementing known entities.
  4. I'd like to be location-agnostic for much of my work (i.e. telecommuting should be an option for 90% of the time).
  5. I'd like the project sizes to be such that I can cycle to new projects or new clients every 6 months.

As a software engineer, I feel much more like a [traditional brick-and-mortar] architect than a manufacturer or general contractor. What I do should be bigger than simply implementing a known solution -- it should be validating, improving, and refining a requirement and then implementing an innovative solution that may be somewhat unexpected. I know that's a lot of buzz-words, but it seems accurate. I don't want to help people install Microsoft Word on their computers, I want to help them think about the problems of word processing, document management, collaborative editing, world-wide publishing, and the myriad of associated goals and put whatever solution in place that makes sense for them (hopefully it's not Microsoft Word).

Anyway, enough angst-filled longing for today.

...Back to the ever-fun-and-exciting C++ experience...

17Nov/082

Cell Phones

Well my new position has been keeping me busy writing software for Symbian, Nokia's primary phone operating system. I hate it. It's fun to learn new stuff and it's probably a good thing to be learning. But it's still awful. Documentation is terrible. Developer forums have lousy support. Two unique programming elements: descriptors and the cleanup stack just make life agonizing.

I've never appreciated C# so much.

On the bright side, it's drawn me back into C/C++ coding which I haven't done in years. That part is fun. It's funny how many things I take for granted with C#. I've even gotten lazier considering some of the wonderful upgrades to C#  3.0. For example:

List<string> list = new List<string> { "Susie", "Lucy", "Bobbie" };

This makes sense to me. It's easy and straightforward. It saves [development] time.

At work things have been interesting because I've been working with developers firmly set in an embedded mindset. They think in terms of saving bytes. My .NET programs take up 20MB of RAM just in basically displaying a simple window with a few controls. It bugs them.

I don't know -- I see the point of using assembly, C, even the horrible descriptors of Symbian for situations where you are highly concerned with efficiency. However, it does seem that you're going to be forced to spend more development time (by a huge amount) and the code will almost by necessity be much more difficult to maintain. When there's no clear single way to convert a descriptor to a char * every developer will do it differently and the code will be more and more complex and incomprehensible. It might run fast, but it's not flexible.

In the world of mobile development, optimization for speed seems important but if you take 6 months to update your application when new feature sets become available, your product likely isn't selling.

Along these lines of thought, I'm considering pouring a bit of time into iPhone development. I've always shuddered at Objective C but I need to bite the bullet and get into it. My assumption is that I'll be happy with it since from what I've heard it balances maintainable,  understandable and easy-to-write code with reasonable performance/stability.

I'll keep you posted.