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).

Blackbird!?

40A Inc. is a company full of people who exploit the African-American people using the Internet. At least, that is what their latest software product suggests: Blackbird.  “Blackbird is operated by 40A, Inc., a company founded by three African American entrepreneurs, Arnold Brown II, Frank Washington, and H. Edward Young, Jr.,” or so the 40A site suggests — but of all the things the Internet and the African-Americans need, THIS is not one. Go find somewhere to die, Blackbird.

The Internet is not about segregation, 40A, quite the opposite: collaboration.

African-Americans don’t need a special web browser (like Blackbird) and special Internet sites (like this company suggests) much like this same community did not need separate bathrooms nor water fountains. No, I’m not even going to pretend this does SOME good– Its a sad state of affairs…

The African-American community ought to be insulted that you, 40A, think you can pass off some substandard recompile of the same browser they already have: Firefox. And at the meer mention that they won’t prosper using exactly what everyone else uses.

You want to deliver something useful to African-Americans? Develop software that helps get rid of companies that produce the kind of products you release; release software to help stop bad people from trying to make money on social disparity still at work in America.

The Chrome Web

They are certainly all interesting– the reasons behind Google’s release of a new platform for web applications, that is. Its especially interesting the platform is admittedly disguised as browser project, one named for its user interface and explained with comic books — Chrome. Arguably, this is the sort of thing to set off whole shifts in Web development. And, the idea that Chrome runs on a Javascript engine written from scratch, called V8, changes the whole browser game– But before I lose it in technical ramblings, here are some of the reasons I think Google’s chroming the Web…

6) Google has long had interest in further advancing Javascript, as its a core technology for them.  This kind of advancement, further closes the gap created by the Web’s client-server design. It introduces an initial foundation for direct use of Google’s “cloud” more importantly.

5) Google employees must spend a large majority of their time in a browser because work is so closely tied to the Web — cutting out the middle-man will save future time and effort expenses. And Google is all about BIG simplicity.

4) Chrome better enables Google to produce metrics about Web use — in fact, one mandate of the Chrome development team is ensure Chrome will work best on popular sites. So, if you’re the paranoid type, make sure you enable Chrome’s Incognito mode.

3) Google has long been at war with Microsoft; Chrome might split browser market-share, reducing IE’s already straining grip due to Firefox growing popularity. This could help to diminish Microsoft on the Web.

2) Chrome’s innovative and will attract a community; users for its ease and feature rich landscape, developers for its obvious seamless integration with things like Google Gears and Google’s APIs (perhaps for its out-right sane behavior).

and the #1 reason) Why not play the Web from both sides before an effective way is developed to delever your 70+% hold on the Internet advertising market.

UPDATE 3:44PM EST – 

Here she is…  Chrome is fast.  It can’t login to Zimbra. But it obviously works with Wordpress just fine. 

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.

5 Most Ridiculous Things About Being a Software Developer

I read a rather enticing post from some other blog entitled 5 Best Things About Being a Developer. This post was enticing in that it was so shill, I could think to do no other thing in response to its content, than write: 5 Most Ridiculous Things About Being a Software Developer.  Apparently, the author had a few of his 5 Best Things happen the day he wrote it  up — how quaint.  These items I’ve scribed below are however, the things that happen to us software developers every day and are not quite as inspirational.

1. Writing Code That Works The First Time Maintaining Code That No One Wants to Exist

You know that script/program/library/object/method that you and your boss both hate.  It rears its ugly head time and again; it ruins perfectly good days.  No matter how many times you try to explain the need to scrap the code involved, no one’s interested.  Its either too time-consuming, too costly, or my favorite line of all time: “It opens us up to too much risk.”   That line should be followed by the Office Space-famed “Riiiight” every time its used.  Imagine how insane it would be if we took that perspective on any other facet of innovation: “Automobiles!?  Oh, no.  We’re sticking with horses.  That opens us up to too much risk!” From a standpoint of business and innovation, and considering this logically (heaven forbid), isn’t it much more risky to have technology running your operation where change is too terrifying a proposition?

I guess what most people don’t realize is risk is success — taking risks is what teaches you things — or as the Zen aphorism goes: The obstacle is the path.

2. Finishing a Project Never Feeling a Project is Finished

Oh, its done alright — just about, anyway — just that last 10%.  Its in the “Shoelace Phase” as I like to call it. The whole shoe is there but that leaves that last part of tying the bow.  Then, quite suddenly, someone not even involved with the shoe realizes something is missing among the myriad not-physically documented requirements, and you, Shoemaker, are back to the beginning.

Most software projects fail in just such a way, as they fail to collect accurate requirements which determine the necessary state of a release candidate.  Worse, if such a final state can be determined, the expectations of that state are rarely appropriately managed, resulting in end-user’s who feel surprised or unsatisfied with the final product; more relevant, a developer who is surprised or unsatisfied with the final product.

3.  Optimization / Re-Factoring / Reducing the # of Lines of Code Bloating / Re-Inventing the Wheel / Needlessly Increasing the Complexity of the Lines of Code

“We need something to get a file from A to B.”  You offer to use a transfer protocol and an existing transfer client.  But, no.  Thats rarely reasonable or robust enough. The route everyone loves is: E-Mail!  So, you bloat your own e-mail client that is a transfer protocol client by the time your done.  Lovely work, I suppose you could mark that under #5  — “Learning Something New and Useful.”

Of course, the only excuse for those kinds of software development sensibilities is a hefty amount of time spent smoking crack.

“Thats going to take re-factoring, perhaps re-design… ” Very common words of the software developer.  How about at least one common response? “Nothing takes a re-design, come on! Just build your more advanced (in other words, your system with a more accurately recorded set of requirements) on top of the old system (the system with nearly no recorded set of requirements that only exists in motion).”  In laymans terms:  Build me a train that runs on eggshell tracks while its on its way to its first stop — I’ll be in the back adding cars, so hurry up.

4. Seeing Marketing For a Product You Work On

As many times as this happens, I can not resist informing whoever is nearby that the entire product came about because a few people scribbled some things down on a napkin and handed them to me on a Monday morning (and told me to “be creative”).  Nor can I ignore the urge to explain precisely how much money they are making off each individual sale and how little they took into account the potential customer. The few times I’ll keep my mouth shut in these types of instances, are when the product is in fact so piss-poor there is no reasonable way to explain my involvement while at the same time absolving myself of having been a part of such worthless engineering.

Any one who sits there cheering proudly is the kind of fan-boy who does that no matter the nature of the product.  For developers, critique is king.

5. Learning Something New & Useful Ignoring Best Practices For Irrational Reasons

Remember all those wonderful things you learned in your first few projects?  Good, cherish them.  The rest of the time you’re going to be told there is little time to make use of them; no time to develop test cases; no time to actually write down requirements; no time to discuss certain aspects of certain features with the actual users; no time to explore that experimental way of filling this need, only the same-ole’ broken ways they’ve learned to accept so far.

Remember the insane look you got when you suggested making a web form to replace executing business processes through specially constructed, shared E-Mail messages? Remember how they told you The Web was just a fad?

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 »

Wonder Twin Powers Activate: International Google Machines

Not since the likes of Zan & Jayna have twin powers activated as they have with the joint appearance of CEOs for IBM & Old Wonder TwinsGoogle at IBM’s PartnerWorld conference this year. As they put it in the Computer World article entitled Google and IBM are bonding in a serious way, “The two CEOs bantered like old golf buddies, praising each other’s organizations and rarely giving moderator Pankaj Ghemawat, a professor of globalNew Wonder Twins strategy at the IESE Business School in Barcelona, Spain, a chance to ask questions.” Schmidt said, “Cloud computing is the story of our lifetime.” Concluding, “Eventually all devices will be on the network.” Schmidt was joined onstage by IBM CEO Sam Palmisano, who said the relationship marks a new territory “It is the first time we have taken something from the consumer arena and applied it to the enterprise.” So, whats with the the oldest computer giant pairing with the latest? Maybe its just that the industry is growing up and its become something new.

Google: Shape of 600 lb. Search Gorilla

Google continues to take shape with things like updating its Finance site, giving Google Video a face lift, and Google: Form of 600lb. Gorilla!continued production of solutions helping others go green. While IBM, the hardware giant of the pair seems in step, this is possible largely because of the dancing space Google’s created; causing Microsoft and Yahoo to consider a merger, analog advertising to fall apart, cell phone networks to become open, and especially bringing a new advertising domain to the table in the form of its massive YouTube audience. These days, nothings too far from the reach of this 600 lb. Googrilla that grew up dominating the tech-world. Google-inspired engineering is especially apparent at IBM with services like Many Eyes and History Flow.

IBM: Form of Enterprise Cloud

The created space hasn’t gone to waste. In all of 2007, IBM reported sales of $98.8 billion, up 8 percent from 2006, IBM:Shape of of Enterprise Cloudleaving most sure of its stranglehold on enterprise service and hardware sales for the time being. The line is blurring between the two companies — Google and IBM — and its making these power twins much more identical these days. Even Google CEO Eric Schmidt had made some admissions to that point. “There’s not that much difference between the enterprise cloud and the consumer cloud,” Schmidt said. Later the CEO even offered a distinction which displays the two companies shared reasoning, “The cloud has higher value in business; that’s the secret to our collaboration,” Schmidt added.

The Greater Story: The Grid

The fact is, theres a greater story to be told. It has to due with all these players and a metamorphosis taking place in the industry. It started with the Internet and continues with the creation of the “Cloud” — a generic name for a platform for utility computing that hopes to eventually process, store and transfer every bit of information on Earth. Its a changeover whereas time passes and giants collide in sometimes peaceful ways as with Google and IBM, and sometimes violent ways as once forced together Microsoft gives up its bid for Yahoo. The metaphors of a Gorilla creating space invokes a more forceful saying as well: Lead, follow, or get out of the way. And as once before humanity saw the local energy provider take shape to become the power company, then become regional, and then global — from a network to a grid — so digital information processing, storage and transfer will go from the unit of the PC, to a network, to an Internet, to a Cloud, later becoming an equally, finely, more tightly bound and integrated Grid of utility computing devices (perhaps it’ll even run on International Google Machines).

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?

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.