Killer App: Microsoft Change

ZDNet has an article where the author attempts to help people, specifically someone he knows named Jason, cope with what will be Windows 7, and its differences with Windows XP.  I believe the best way to summarize the approach of the author is to say: “You don’t like the NEW UI?  You’re weird.  Here, you big dummy, you can do these things to make it like the old UI (whata tool).” And no, this approach isn’t surprising — its the very nature of Microsoft’s approach to supporting its users, the slogan goes: “Change…  the one word description for being paid twice.”

As far as any rational software customers (and certainly most software designers) are concerned, every bit of the advancements included in Vista through what will be Windows 7 ought have been available as optional, (even free) patch-set upgrades to Windows XP — the operating system for which I’ve already paid.

Need I pay for a whole OS to again get Windows Explorer shell with its same Start button-based menu?  Do I really need to pay for an entire OS to get things like UAL (which have existed in other OSes more elegantly for years)? As a curious aside, why is it that I always seem to need a brand new computer from your hardware partners to run your brand new software? I even say lets forgive Microsoft its mistakes with 95 and 98 and call those two OSes the learning curve — I’ll start at XP!

At the time Windows XP was released and having learned from 95 and 98, Microsoft had plenty of time, skill, theory and practice to realize where it was headed and implement a modular OS that could evolve through much more easily distributed components. There was no need to have me pay over and over for what is essentially a product they meant to sell me, but were unable, with the work done in Windows XP.  Why couldn’t I buy UAL for XP for $20 (if I wanted)?  Why couldn’t I buy just a new, improved Windows Explorer shell?  [MOUNTAIN-TOP-SHOUT: Why in the fuck is the least considerately designed software, the most employed?]

As useful as it can certainly be, Microsoft Windows is the world’s only operating system to have transitioned all the way from 8 to 64 bit and still progresses in a totally unlearned, terribly slow, terribly uninviting, terribly complex and terribly expensive (if not downright wasteful) way. Worse, when they move Windows to the Web and finally sell modules, they’ll expect me to consistenly re-purchase components of the OS on some sort of monthly basis. So, I’ll finally get the design I wanted if only I’ll pay AS MUCH AS IS POSSIBLE to pay (the way its always been with Microsoft).

My 5 Best Things About Being A Developer

This is for John

1.  Thinking on Your Feet

Few people might call analysis an art, but it is — ask any developer. When you have to come up with a way to fix a train when its moving along the tracks (patch a broken, already released product) , you learn fast how to think on your feet.

Another way to put it: when you develop software, over time, you begin to restructure your thoughts so that almost any inquiry can fit inside a formalized optimization problem.  It goes something like “What is the ideal way to handle this?” After answering that question in the multitude of ways its presented developing software, the programmer literally has learned optimized internal methodologies. This in turn further improves how they handle future analysis.  And before long like rolling lava, this optimized way of thinking covers all things and creates a new mental landscape. Smarter… Faster… Stronger…

Except maybe as an acrobat on the high-wire, few other jobs will provide such powerful training with thinking on your feet.

2.  Mastering Discovery

Developers need a lot of other software tools for making software.  And they are without a doubt the very definition of power user when it comes to how most of those tools were designed to be used.  So its often that a developer will discover a bug in the very tools used.  What so great about that?

These instances teach you discovery! They teach you how to remain skeptical and studious, so that one day from learned proper analysis, you are astute enough to see such problems coming down the pike and perhaps inspired to deal with things differently in your own creations– all gratifying..

Sometimes though, there is just no more instant a form of gratification than being first.  First in line.. first to make it home– first to find a problem.  Mastering discovery means just that, being first when it comes to finding (and if possible solving) problems.  But, it also means being a developer sometimes comes with all the gratification and arrogance of approaching your SAT proctor and saying suggestively, “Excuse me, sir.  I think you’ve gotten this question wrong.”

3. Being In-Demand

Lets face it, we’re surrounded by technology.  And one of the best things about being a developer — being a technologist — is simply the fact that right now, every one needs you!  Mostly due to the truths surrounding #4 on this list.

4. Making it Look Easy When its Not

One of the best things about being a software developer, is that we’re usually able to make it look incredibly easy given what the heck we’re actually doing.  We type some jumble into some window on our screen and suddenly, we can all socially network on the web;  communicate and search based on geographic location; blog about our day; become closer to one another and the information that binds us to one another.

To draw a metaphor other developers might need concrete, nails, hammers, sheet rock, a giant truck to carry it all and the laborers. Not us; a desk if you got one otherwise our lap will do and these days the obvious Internet connection, is pretty much all we need.

The reality is though, our job — software development — is intensely challenging, making the success all the more sweet albeit not so easy to share.

5. Making Friends/Solving Problems

Then there are times you can share it.

One of the most true statements about sociality with people is that shared trials and tribulations can bring people together more smoothly and easily than most other sets of circumstances.  The effort to share survival is an ultimate and immediate trust-builder.

When you and your co-worker manage to save the company $100,000 outage, keep some cracker from making it all the way into some critical system, find a faster way to complete some business process, or even just provide a friend a URL that makes their personal lives easier somehow, you’re making friends,  solving problems.  You’re contributing to something that is truly the masterwork of every developer: a unified framework for solving problems, creating a better perhaps less hectic life for everyone.

The Anatomy of a Subway Hack

For years people have learned from hacking — its the most ancient human art. But, it seems the US has slid so far from its foundation, that now the sheer construction and presentation of information can within itself be considered in some way criminal.

A judge acting as thought-cop told 3 MIT students they were not to discuss their latest hack. Since the halt order, the availability of the information in the presentation has fluctuated. Decius makes mention of the evolving legal manifestation on Memestreams.

I believe information like this ought to be free, and so: a complete form of the content of the halted Defcon presentation is right here (in PDF format). Enjoy.

Today’s S3 Crash is Tommorow’s Gloom 1.0, & Later, the Birth of the Grid

One day, all our computational abilities will flow, as electricity does, into every home, carrying with it the full force of the entire orchestra of functionality on the Internet — it will cease to be the Internet and become the Grid.

A prediction inspired by this...

Read the rest of this entry »

Trusting Your Own Reflection

The day might come when biometrics completely replaces the function served with passwords. But will it matter? The fact is, that that biometric reality grows closer every day. Right now, hardware becoming cheap and software environments becoming virtual, has many such realities racing at us like a wild mustang. But, I know you. You’re human, you need to see it in action. Well, do I have the perfect software for you. You or anyone can download for free something called Ophcrack. Ophcrack uses Rainbow Tables (and well). Take a look at it here, where Lifehacker has a gallery of screenshots of Ophcrack at work under Windows.

What does all that mean? I’ll keep it simple. Ophcrack can crack the password “Fgpyyih804423″ in 160 seconds (or for more here for Thomas Ptacek’s work on the subject or here where Darknet talks about its history). Anyone with Computer or Network Security experience (or that has tried to guess a password) will tell you, thats expected to be a difficult password to crack, and being cracked in 160 seconds is jaw dropping. “Fgpyyih804423″ is not very human relative and by that I mean its not a word in any language, nor a composite of any word in any language ( its not even some tokenized expression). In fact, the string of characters looks to be (because it is) quite random.

Worried yet? If not, some forward thinking might get you bit concerned. Implementations of biometrics really don’t solve this issue (they’re conceptually the same). They just make the string’s identity larger and thereby, by today’s standards, more difficult to crack. But, as technology grows to facilitate biometrics, so will that which is used to subvert biometrics and in not so different ways than we see here. So, my question to you is, what will you do, when you can’t trust your own reflection?

saikee’s New Boots

This guy from JustLinux, saikee , might be your hero. It all depends on how computer savvy you are. But, let’s say for the sake of discussion, you’re savvy enough to dual boot Windows XP & Ubuntu Linux, as an example. Now, sure, some people are saying, “dual wha? Ubuntu?” Some may not even know what Linux is. All “dual boot” means is running more than one Operating System on your computer and having the capacity to select which one you want to use when you turn on the computer. But, even if you are savvy enough to dual boot (which isn’t very savvy at all, evidently) than you’re only 143 Operating Systems behind. Better get your hiking boots, you’ve got some footwork ahead if you want to catch up. saikee posted information on his new setup on JustLinux a while back… which boots only 145 different Operating Systems! “Can you run tha–” — “Yes.”

Absolute Genius

There is an article I read which I can’t seem to say enough is Absolute Genius — because thats what its describing: absolute genius. Its called Programming can Ruin Your Life. I keep saying absolute genius because, for me, all of this is truth about reality. Every bit in the article.

I feel what the author has described here, is sort of the weight to which genius can burden. I covered and explained this idea that genius grows exponentially through its own internally created pressures or burdens in a series of essays I wrote entitled “Neurogenesis”. Maybe one day I’ll republish them here. In the meantime, let me lay in with examples of this wonderful piece of literary work… and give you an idea of the bold diagnosis this writer has made of most Programmers (or, as I state in Neurogensis, most geniuses).

When faced with an interesting programming problem your mind will chew it over in the background. Maybe it’s an algorithm you need to develop, maybe its a tricky architecture problem, maybe its data that needs a model. It doesn’t matter. Your mind will quietly work the problem over in search of a solution. The ah-ha! moment will come when you’re in the shower, or playing Tetris. This practice of constant churning will slowly work its way into the rest of your life. Each problem or puzzle you encounter will start its own thread; the toughest and most troubling of which will be blocking.

This all seems very, very accurate to me. I’ m even quite certain that this sort of problem-solving phenomena translate to other careers too. In fact, I contend it translates across so many disciplines because this describes a human compulsion toward optimization (or the providing of a solution of an optimization problem). I contend optimization is the only problem ever being solved during all human problem-solving. But, thats a contention that takes us to deeper place than I want to go with this post. Don’t worry, we’ll get there some day.

One thing I notice about other people is how little they think and I mean that about everything. I can’t imagine how one could exist with such precious little going on inside them as I find with most people. In fact what I’m noticing is not how little those people think but how much I myself think by comparison. I always wonder,”Why don’t they just stop and think for a second?” Thats a good example though.

No wait, its not good, its a Programmers example, its perfect! I’m wondering why others are NOT thinking, in effect, thats just more thinking I have to do [for them] (or thats how I observe the case to be). You see, in problem-solving with Programmers, what I realize is, they’re always thinking, because they’re always programming. But, consider it, and it should only make more sense to you even if you’re a non-programmer.

If your job is to feed exotic and somewhat exclusive phrases of a dynamic and specific language into some device and then predict outcomes as well as manage the unpredictable outcomes, you will become as much like that device as possible. This is the mammalian method-trait called mimicry. This method-trait is true of how human beings grasp information at all through all language. Progressively over time the input and output of procedures of communication with others grow as we do, embedding in our minds the pathology to interact socially. Or as it could also be described, so that we’re able to feed other people information and predict outcomes as well as manage the unpredictable ones.

So Programmers, like anyone learning or coping with anything follow a pattern of mimicry in order that they become even better at translating these exotic phrases and languages and predicting outcomes (or at least as close as they can become to the machine). But, mimicry has its draw backs in this case since we’re now trying to mimic something not nearly human — a programming language.

Programmers become obsessed with perfection. This is why they are constantly talking about rewrites. They cannot resist optimum solutions. Perfection requires tossing aside mediocre ideas in search of great ones. A good programmer would rather leave a problem temporarily unsolved than solve it poorly. A good solution takes into account all predictable outcomes and solves the largest number of them in the most efficient way. This mindset prevents you from writing code with limited utility and life span. While its a wonderful trait to have in programming, the demons of scope and efficiency will start to assert themselves on your ordinary life. You will avoid taking care of simple things because the solution is inelegant or simply feels wrong. Time to think will no doubt yield a better result, you’ll say.

This statement by the author acts to solidify my point as well as his; that an obsession for perfection is actually a shedding of the human condition. This means Programmers have trained their minds to be inhuman as such that they cannot make a choice knowingly acceptant that it will be deficient or have a limited life time. This kind of avoidance of care for simple things such as is described is something well known about the personality of most Programmers.

Finally, note the point above that thinking in this way reduces the number of your potential choices to those seemingly optimal at design time. This means Programmers only do things that they analyze as optimal in that moment. So, a night out on the town where one acts foolishly without regard for themselves to a degree, as well as the feelings of the others around (whom act and have cascading affect on those they surround thereafter) — throwing caution to the wind — would not be very attractive to someone measuring each element of their experience in terms of optimality toward building a method based in perfection.

And, it is for some of those reasons that genius tends to burden. Or, as I have put it in Neugenesis: Elegant thought is a symptom of a passionate, sensitive mind, its expression is nothing more than the easing of its burden.

Microsoft’s Document Standard

I haven’t given this thing (the OOXML Spec) much of my time on this blog, sorry. Its just that, the whole standard, including the spec, is one huge, smelly piece of crap. Sorry, as articulate as you may think me, those are the choice words of description for such a work of disaster and stupidity. But, rather then I spending my time (or wasting your time) explaining why OOXML is so crappy, to you each, my beloved readers, I’d rather simply show you the pictures and have you draw the conclusion. Below is… the simple… easy to use… Microsoft XML standard. I’ll let you borrow it for the weekend, so you can get up to speed.

OOXML Spec

Computer Science

Science allows scientists to practice theory. Theory is when you know something, but it doesn’t work. Practice is when something works, but you don’t know why. Therefore, through programming, Computer Science allows computer scientists to combine theory and practice; nothing works and no one knows why. Therefore, let us not forget as stated quite sharply in Taligent’s Guide to Designing Programs, there is no code faster than no code.

3 Things Learned in School, 3 Things Learned On-The-Job

A handful of programmers (or perhaps thinkers works better), through entries in blogs, have been collaboratively jotting down a few things. What few things? 3 things they learned about software in college, and 3 things they learned about software outside of college.

Here are a few examples of this little phenomena: Dare Obasanjo, Scott Hanselman, Insane World’s Author, Kenegozi’s Author, Shawn Oster. I’m sure there are countless more I didn’t find, or haven’t read. Of that short list Shawn Oster’s is of particular interest.

Now, I didn’t go to a college. But, I work at one. So, I wondered, does that count? Can I play along too? I’ve been in IT for over a decade. I’ve created software solutions big and small for organizations like: the Department of Defense, the Computer Science Corporation, Lucent Technologies, all Six Stock Options Exchanges, and now Academia. And, in considering all those environments, I thought, “software is too tight a focus for me.” And, again, I never went to college.

Instead of what I’ve been reading, which has all been very useful, I decided to broaden the discussion slightly, to meet my experience. I wanted to contribute. Anyhow, here are: 3 Things Learned in School, and 3 Things Learned On-The-Job.

In School

1) Nothing in this life will be worth more than a teacher who can reach you.

2) History is a subject that speaks to us in the many colors of learned lessons. And, sometimes in shades of lies.

3) Show up on test days.

NOT In School

1) Speak up! Especially in the beginning don’t be afraid to offer your ideas, of getting fired or even just being noticed. The beginning is the best time for all those kinds of things! Its the time you’ll be expected to make mistakes. And, the time you’ll gain the most perspective on them.

2) If you are not your own master, the world will happily take you by the hand and lead you where it thinks it needs you. But, you may not be very happy with where you end up. So the lesson is, if you do not shape your world your way, your world will shape you its way.

3) Take off on test days.