Saturday, December 31, 2005

2006 Resolutions

The New Year is coming. 2006. As I walk around New York I wonder if anyone knows it. People act like unknowing zombies whose desire is just to annoy others. My New Year's Resolution is to do everything I can to remake America in the image it's supposed to have; a country where everyone is equal under the eyes of the law and the eyes of men.
OF course to get rich assholes to come to that conclusion would take nothing short of a deadly plague but ......

I really don't understand how rich people can trot around the way they do. I mean sure I don't think I ow anyone anything and am not the "philanthropic" type but I think that we all have the responsibiltity to have all people feel that they can work where they want AND get paid equally to those buddies of those rich assholes I mentioned earlier. Unfortunately like, George W, they seem to pick the most incompetent people. I mean look at BillG. He has 50Billion dollars. What could he possibly do with that much money? What he should be doing is trying to raise the literacy in his company's home state. I left Seattle in 2002 and the level of functional illiteracy was 19% for women and 20% for men.

Now WA is a majority white state so he is living in his smart house while his brethren search for signs they can read. I guess that's why MS hires mainly outside of WA. WTF? There should be a law that you can't sit on that kind of money while people a few miles away are starving. AT least athletes and actors are always seen at fundraiser for "underprivileged children" and they have nowhere near $50B. Sure he is known for his charity but that is from a separate foundation that also has $50B. A good question would be why not give it all away in one year? I'm sure $50B flowing through the economy would help a lot of people. Unfortunately I'm also sure that would be on a cold day in hell.

And then there are the problems that we have with our "cultural sensitivity." How can America be the land of the free and the home of the brave when no one can say anything about the current administration? I mean everyone knows our “President” is two steps up from the “Special Bus.” I mean, are we not only celebrating mediocrity at the low, “black” level but also at the top “white” level? Is our next President going to be a Harvard drop out with a history of rehab stints? As a “young at heart” black man over 30, I refuse to leave anything to the current generation. Assholes like Bill Cosby are just causing more problems. I refuse to not put some of the blame on these 16 year olds that can’t rap and don’t know what size they wear. There are plenty of stores where they sell YOUR SIZE. And then you complain that no one gives you a chance? Yeah, right. I’m black and your dumb ass wouldn’t get in my school or office dressed like a fucking bum. Of course we have to put some blame on the RIAA. They are promoting illiterate criminals as “role models” and then saying, this is what people want to hear. BULLSHIT. I think someone should take one of these kids and use him as an example of “CORRUPTING MINORS” and sue them for a billion dollars.

These problems seem to pale in comparison to America’s preoccupation with perverted sexual appetites. At least Hepatitis isn’t cool anymore. But then I think I’d trade that for the current fad in porn known as A2M. This is the practice whereby a woman makes more than me to “taste her own ass” and men actually like it. And then just to make it interesting these same women are then paid to have “sex” with each other. Does it really make you straight to make women gay? And all of this is in the middle of the AIDS pandemic. Then we have kinky priests who are having “sex” with little boys. At least now they have the female middle school teachers competing with them if you could say that’s a plus. We are supposed to be the world leader and we don’t even know what gender we are.

I can say that I am embarrassed to call myself an American.

And then when I think about the average technology company I know exactly why the bubble burst. Most of these startups were a bunch of idiots who had more money than they should have. They took the money and did nothing to actually keep the business going. I never thought I would see the day that a Software company said they don’t need computers. They all found out the hard way that the “good-old- boy-network model” will not hold up in the age of 64 bit Windows and terabyte databases. Of course, this is after they have stolen a few hundred thousand dollars from the economy. Sometimes I think white men should just give up control of the money. They certainly aren’t in control of anything else. I mean, if they insist on calling themselves better while at the same time they have basically created as many diseases as any technology. I personally don’t think it’s a worthwhile tradeoff. Besides, Japan is so far ahead of us we look like pre-Industrial Revolution. They have all the advanced technology 2-5 years before us and by the time companies here finish spending hiring people to do feasibility and marketing studies, we are even farther behind.

Indicative of this trend is perhaps the largest software company in the world. Right now MS is swirling around the bowl is only being held up by the greatest deal ever signed. As an exMicrosoft employee it amazes me that any software EVER gets released. The laziest, least creative people are making feature decisions and the hard workers who actually love their work are forced out, and don’t be of a darker persuasion not from India, you life will be miserable. The same idiots who will “film Juicy Fruit commercials” are the same idiots whose ideas cost billions, while an intellectual black man will be looked at as a “problem.” I actually began to believe that MS stayed in WA because of the lack of blacks. I actually passed by BillG a few times and he seemed to me to be the biggest racist ever. Not that I saw him speak to white employees, at least he didn’t take off running down the hall.

For all these reasons, I hope that there are a lot less people this time next year.

Anyway, that concludes this rant. Hopefully some real Americans will see this and respond.

Saturday, December 24, 2005

Data Modeling

I decided to post some articles I've been working on. They're pretty cool.

Data modeling: the words bring chills to some and visions of 14 hour days to others but with the tools available today such as UML (Unified Modeling Language) XML (eXtensible Markup Language) and CIM (Common Information Model) modeling your data becomes a matter of taking the customer requirements and matching class structures and interfaces to the data types that are necessary. Unlike the old days where a brute force model would work today’s software needs a more structured approach. With the world a few processor generations from “the gang of four” and Managed .Net as the “Center of the Windows Universe” abstracted components are the new keyword for flexible, extensible and secure code.

Properly modeling a consistent UI\Program flow is in and of itself an “evolutionary process” so the term data modeling even means different things to different people. This makes standardizing modeling methodologies even more difficult. There is also the difference between modeling an existing feature set in a new way and modeling a feature set designed from scratch. In this text the term means “developing features such that they can be accessed from multiple sources, from the Native UI to Collaborative services to testing harnesses.” The old paradigm was to gather what needed to be done and just write functions that did it and perhaps handing off UI duties to someone else. Today with feature sets and customer requirements for collaboration and interoperability growing exponentially an object oriented approach is needed to not only limit the amount of code necessary to implement feature sets and make them accessible between app domains but to make the UI easy to use and update.

.Net was designed with these issues in mind and does an excellent job of abstracting data objects and unifying Windows programs under a memory-managed platform; especially in the 2.0 version of the Framework. Of course it can’t handle every case without extension so an effort is needed so that complex objects such as Network Streams become much smaller sub-objects. Such a model might include; port, machine name\IP, permissions, headers, data streams so rather than trying to determine all of the ways you can use a Network Stream you can create XML Schema based scripts to combine the different sub-objects into platform or application specific descriptions. For example, only one feature needs to access the port and machine name while another can process the permissions. Another feature would then decode the headers and stream to determine further processing requirements. Another feature could be used for encryption of returning data streams to add an extra layer of protection. Depending upon the data, security and speed\concurrency needs any one of the accepted patterns, such as State or Strategy can be used to extend the initial program flow. .Net provides native encryption and compression algorithms for text streams and binary streams through the BinaryFormatter so custom strategies are rarely needed for those services.

Network Stream Object




Input Validation

In this model the 3rd party external client (EC) can then be any module on any machine in a domain or even on the Internet. The server is contacted by the client with a port number and machine name. Since Managed code enables programmers to use declarative security and Windows authentication much of the security overhead can be encapsulated in the calling thread of the client app domain. This abstraction also means that the client has to have access to the pre-compiled server code. The client can be extended to contain the interface for any 3rd party clients that need to have access to the server code. The server code is the middle tier of the abstraction and is needed by any 3rd party client. This also allows for a client\server interface between the entire Network Stream object as described above and any 3rd party tools. As long as the public portion of the request\response feature of the client remains consistent it is possible for the 3rd party client to extend to do more internal processing without requiring new feature requests.

Because of the encapsulation in the server feature permissions need to be correctly applied to the object space before the connection is even attempted. This type of abstraction also allows each property of the sub-objects to be independent of the others so you only need create one Permission object, one Validation object, and one Connection object for the application space. Since the data stream can be any type of .Net stream, this model allows the developer to use one object (class) for most data types since they can be copied to a stream with customizable headers. By creating a header template lookup, several different complex object types can be returned and decoded by the internal client response feature. The 3rd party client is then totally separated from the internal logic of the model. Only the public features in the internal client are exposed and since the data types are known by the 3rd party developer the objects can be extended for application or platform specific needs. This is especially useful for the ever-increasing amount of internet applications. By combining header templates with overloaded method types, all types of database info can be encapsulated between the server and connection spaces while also allowing for local\remote file access between app domains and physical networks.

With the .Net paradigm each of the sub-objects in the model becomes a class under the same namespace (DataAccess). Encapsulation allows that each of these classes can contain smaller objects which handle a part of the processing. This layered (n-tiered) approach means that different clients can access different parts of the model without having access to any other. That is the function of the request feature within the client (DataAccess.Client) space. It sits between the server (DataAccess.Server) and the 3rd party interface. By merely providing multiple overloads for request types, it is possible to control access to any data stream through any connection. The request feature also works in conjunction with the response feature to encode and decode as necessary while verifying thread identities for large numbers of concurrent users.

The server feature formats and forwards requests to the connection feature after validating input parameters from the request feature. This allows that the client request feature has no access to permissions, meaning that the server is isolated from any 3rd party requests. Since all of the methods in the server feature are internal, all calls to the connection feature must be routed first through the public request feature and then be approved by the server. By using a strong name object for each request, high levels of concurrency can be achieved while maintaining data integrity for each request. The server uses a queue to manage requests and responses. This queue contains request-specific information for thread coordination with the client request\response feature.

The connection feature is the final segment of code and is responsible for processing the headers in the request and retrieving the data stream from storage or creating a new entry. The data can then be encrypted for return. By defining your requests with text scripts it is then possible to have requests come from multiple sources including the Internet for easy transfer. In this feature the emphasis is placed on speed rather than security. This allows optimization of this module without affecting the security of the response feature. This feature handles any external storage interfaces such as SQL databases or XML files by simply overloading access methods based on the header processing. This model can be easily extended or adapted to handle different types of application models. This feature is the most complicated since it has to be coordinated with the design of the storage medium. In the case of databases the developer needs to work well with queries and stored procedures while a file system access application needs to handle NTFS well and some apps need to deal with both while handling transaction concurrency.

The key to this type of model is that “most” usable patterns have already been discovered and can be extended as necessary. Most of these patterns are based on the common File, View Edit, Tools, Options, Help environment (The standard Windows Menu\UI paradigm). Of course, it is never a good idea to try and write initially to a pattern, since the differences in application features and requirements mean that in one case a State pattern may be more efficient than a Strategy or Factory pattern for two apps that perform similar functions. When modeling data for consumption and display the key is to remember that any data can be described using a combination of native .Net types and that the description of the data is ALWAYS more important than the features that use it. In many cases personal or financial information is consumed and must be protected by the interface. By ensuring first and foremost that the data remains consistent throughout the process refactoring will then be useful for optimization. The feature set will then expand as testing of current features continues. This is known as an evolutionary design cycle. It means in essence that you should always keep your code simple and always design your features with testing in mind. Some people consider this method to be “designing to the interface and not the implementation.” Another way of saying this is the user doesn’t need to know the details only the data. For any object space overloading the public entry points enables different types and amounts of data to be processed by the same internal server. By keeping with the abstracted component methodology, you will avoid creating complex methods that don’t allow for high levels of granularity with your object space.

Tools such as NUnit ( give developers a way to test their features individually or as a live client. Script languages based on XML schemas or UML are much more efficient because they have no code overhead. The same parser that is used for the client scripts can also be extended to include test parameters and environment settings. With tools such as NUnit you need to adhere to the format set aside which sometimes causes increases in the amount of code necessary to determine success of a given test case. It is of course possible to plan for using these types of tools through a script\parser interface but again the idea of modeling is to limit the amount of code you have to write and maintain. Component-based scripting does this and more. It enables “cut and paste” editing, ease of storage, no need to recompile to add new requests. Of course adding features for processing the data in scripts requires new code and schema elements but this type of model means that new features are separated from existing features and lessen the chance of regression failures. This abstraction also enables you to make tools based on a subset of features; such as, setting up initial environments, creating database tables, create web pages using XML\XSLT, or viewing XML documents. All that is needed is a custom client space. Below are listed the basic data objects necessary in each object space of the model. These are determined by either writing out a paragraph or two describing the necessary functionality or the data that needs to be exchanged. The .Net Library 2.0 contains advances in C# such as anonymous methods, which allow “inline” delegates; iterators, which add the “yield return” and “yield break” methods to reduce amount of code necessary for base collections; nullable types, which allows value types to assign null to the type instance; generics, which allow templated base classes for collections of any .Net object type. Look for coverage of these new features, coming soon.

Client Data Objects

RequestType – complex

Server Data Objects

IOPermissions - ACL
WebPermissions - SSL

Connection Data Objects

AccessPermissions – ACL\Thread

Thursday, December 22, 2005

Intelligent Design - the world isn't flat

There has been a lot of talk about htis since the Supreme Court ruled against Dover, DE school district. Intelligent Design (ID) is simply saying that evolution has not been totally proven and there is no religion involved in believing that sentience had a part in the Creation.

I for one find it amazing that people in the 21st Century still say thins like The Devil made me do it. Or the Devil is in the details. But if you mention the Most High in some non-mystical way no one can cope. People have told me that I believe in some mystical person in the sky because I feel that some sentience had to "initiate" the Big Bang and the subsequent formative period followed by th eprimordial prcoess.

It makes one wonder if the Europeans in the Dark Ages felt that way when thinsg like fireworks were invented and doctors realized that germs were present in dirty hands. And look at America's wierd fetish for evil, where all types of beast, monster, pervert, sycophant and the rest parade through our lives as if the devil is real but not his Creator. What does that really say about our true devotion to love, compassion and respect?

I would say that it is just the result of millenia filled with people attempting to have the best of both worlds, whatever that means, and now our undeserved ego has convinced us that there is no sentience, just coincidence and the power of man to deface the planet. In my mind, ID means non combustive fuel sources, magnetic circuits, space travel and even something as radical as teleportation (defined as movement that... sorry patented material).

I've got to sign off now so.....

I was thinking yesterday and I realized that I never really updating this blog because I don't want followers or people coming around just to say something stupid.

Wednesday, December 21, 2005

Open Source and Capitalism

Those two words are so in juxtaposition that it is nearly unbelievable, but yet they are in opposition and I hope that Open Source wins out. The phenomenon has changed everything from Microsoft to marketing models, from the value of code to the value of workers. The problem is that if you work onthe greatest piece of software ever to come out of the Torvalds camp, you still have to have a job. Unless of course McDonalds and supermarkets decide to offer an OpenSource meal voucher.


But no matter what Open Source is here and will continue to affect the bottom line of every company in the world. After all if you a dev house decide to use an OpenSource module or package you have to factor in the cost of implementation and support with out being able to charge for the finished product. Or do you follow the license model made infamous by Microsoft and pay for the package and then charge the extra money to your customers?

It is definitely a real conundrum but in the end Open Source serves the purpose of allowing people to contribute in ways that places like Microsoft would never allow due to politics or experience. I mean what are the chances of MS taking a new component from a tester or that a tester would be allowed to take the time to put the source on a separate machine and write the component.

Open Source though is an excellent model for the value of the barter system used in older societies. Imagine if people had to produce something of value before they got "paid." Imagine Open SOurce mechanical engineering or Open Source sales. You would have to sign up for and Open Source position in order to get food and shelter and produce something for the extras like BMWs. I'd bet people would appreciate BMWs more and value the hard work that a lot of people do. We have a unique opprotunity to get more worth out of people if we take advantage of the only thing to make certain MS couldn't defeat it. After all MS does define the tone of the world right now. Their "higher echelon greed" has turned even the staunchest of "inside" advocates against them. Ubfortunately, because of the "greatest deal ever made" MS will not be going anywhere without a fundamental change in the way people are compensated.

Until the actual producers are compensated they way we compensate athletes or actors, companies will be allowed to roll all the shit they want down hill at the average American worker. Open source owuld even mean that directors, producers, rappers and everyone else would actually have to provide a product or service before they could "hide out" in their mansions and ski lodges. It is often said that "no one shows up for a chemistry exhibition" but that's not true because one of those exhibitions was the foundation for the cure for polio. People were definitely lined up for that. They also line up to ride the elevator that "old man" Otis is piling up money with. All technology is more important than entertainment, whether it's the DVD player vs. the movie or the TV vs the show. I find video games many time smore entertaining than movies but the lead programmer has to hope that he gets a bonus or else he will make a lot less than the Michael Jacksons and Yao Mings and Andre Agassi.

I would much rather meet the nerd who invented the automatic transmission than the race car driver who can figure how not to crash. Linus Torvalds is not as well known as Bill Gates to the general public but has had much more of a profound effect on the software industry. Their positions are so intricately juxtaposed as to make one wonder who should actually be worth $50 billion. The people who work on Linux or never heard complining that they are being overlooked or underappreciated and it makes one wonder if the "gifting" of billions to a few makes for more harmony or does a shared approach do that.

As is commonly stated at MS has degenerated from the world leader to the only place left for "good old boys" to get rich. Never has there been a greater vision into what happens when some get rich and others get to do all the work. Then you throw in the "cultural" problems that occur in this type of caste system and you have 50,000 people doing more to hurt each other's "group" than help the poeple who pay their salaries, namely the users who purchase the product.

And we are the civilized ones!!!

Tuesday, December 20, 2005

Is the ship sinking?

It's been several months since my last post. I have been busy and type enough as it is. You will notice the question posed and wonder what that means. Well, it's simple. America is a ship and is sinking fast.

We have more deadly diseases than third world countries, people generally hate each other for not being in their group, we go all around the world telling people how to live when we can't even elect a competent Commander in Chief.

As a black professional, I can't believe the level of incompentence in most businesses. I think the problem is that the "good old boy network" doesn't work in the Internet connected world. You can't replace a computer with a person but you can replace a person with a well programmed computer. That also may be why the dotcoms failed. Too many people were expecting that commerce has not changed but the Internet has changed every facet of our lives and makes computers INDISPENSABLE.

Microsoft is finding this out the hard way as the stock has taken a beating for the last 5 years and public\partner perceptions are deteriorating daily. If not for the greatest deal ever signed MS would go out of business, but because they have the best headstart in the OS business they can't be toppled. Look at IBM, they are the largest company almost in the world and because of the PC, they will be around also.

Probably what concerns me the most is this "insane" push to create a couple of million hip hop maniacs who are under- or un-employable. Blacks were doing well until they started to believe that Hollywood would do anything other than ridicule hip hop and black culture in general. Now we have whole industries that can make a lot more money by only producing larger sizes where the exact stitching doen't even matter because it's one size fits all(?) Sure I am upset that these young men are falling for this, but how can a society expect to lead the world when they are purposely trying to leave some behind. We are talking about school age children WHO SHOULD HAVE A DRESS CODE.

As I mentioned this has been my first post in a while and I would like to thank MiniMsft and BET. com message boards who have made it clear that they don't respect black men and that I should use this blog to say the things that others don't want to be said. Recently miniMicrosoft put up a reference to Google buying art of AOL regarding TAR Babies, complete with a demeaning song and illustrations. I used to enjoy his blog but after I asked him to remove it he didnt so, HAVE AT THEE, VARLET.

As far as, they are the only message board on the INTERNET with NO TECH BOARD. WHat bull. They will actually remove posts that defend blacks against racist comments and comments meant to upset people. It's OK cause I'm working on my own MessageBoard. It will have the best implementation of comment review code ever. I offered it to BET but they won't even let users be admins so of couse they didn't do it.

OK enough ranting for today. I hope I can get more time to update this thing.

Tuesday, May 24, 2005

The Complexity of Modern SoftwareTest Automation

This will be a recurring theme here so get used to it. I have a lot of time on my hands right now as I'm on temporary hiatus.

The issue of automation in all its forms has always been exciting to me. I started out as a Mechanical Engineer hoping to enter into the field of Robotics - boy what a hard field to break into.Anyway, since I went to college in the Seattle area - HOW THE HELL DID I END UP THERE??? - I decided, or my financial necessity decided to give Microsoft a try - boy do I miss the campus.
I started out in USB\FireWire for Windows 98 and to this day say that I have the distinction of being the FIRST PERSON in the world to actively test WDM ( Windows 98 drivers on Windows 2K). Anyway after hearing that my manager - who went on to become Manager of WQHL - actually started out as a contractor and became the writer of the WORLD'S FIRST USB driver for OSR2, I began to rekinde my desire to write code - being 40 I actually programmed one of those old fashioned terminals with the printer and phone connection to a mainframe.

I guess it could have been punch cards!!

After a few years in HW I moved to Windows Management. My first project was consolidating and maintaining batch files for SAF\HelpCenter BVTs in WinME. I finished that pretty quick and noticed that it only downloaded the bits and ran the install. That meant the tester still had to reboot to DOS and run the batch file after downloading from the network i the GUI.

Can you say "COULD BE BETTER?"

I then proceeded to take my limited VB knowledge and apply it to creating a UI. For my first one it was pretty good. Of course error handling was close enough to being non-existent that it was a royal pain in the ass.

Oh no not the dreaded 'Runtime Error -5".

It had a pretty rich feature set though. It enabled downloads from all available build labs in all languages; created an autoexec.bat and unattend.inf on the fly; rebooted the machine after prompting for the floppy; autoloaded the test binaries and ran the appropriate HelpCenter page; recorded the time each test mod was run. My previous manager "commended" me on the fact that only the ME setup team completed their BVTs ahead of us.
A rousing success. And with VB 6 UI elements and VBScript logic, no less!!!

I then left automation for awhile as I volunteered myself onto a team with a major hemorrhoid for a manager. After months of dead ends and expletives carefully deleted, I went back to automation where I encountered the greatest conflict ever, THAT OF CMD LINE VS UI test harnesses. The SHELL gets a bad rap for being a resource hog and slower than csrss, but after using C#, I can say that if the CMD line is faster - OH MY GOD!!! - I get nearly instantaneous execution of some pretty complex event based tests.

Anyway this conflict caused me no end of grief. As a former tester, I grew to hate long param lists that - get this - HAD TO BE ORDERED so I felt that I shoul dgo the extra mile to try to get as much speed as possible with more emphasis on ease of use. I WISH I HAD READ CODE COMPLETE then. Unfortunately, my minimal experience with C\C++ gave me little access to "convincing arguments." Even more unfortunate was the Redmond weather which took its toll and eventually ended my "sojourn."

More later.......