Wednesday, October 27, 2004

Well, it sort of works...

I'm not referring to code here. I am referring instead to the Packet8 IP phone I got to try out. I can hear anyone who calls the number crystal clear - well, not quite perfectly clear, but when you factor in that it is a "long-distance" call (all calls from it are long-distance, but long-distance calling is free - international calls are really cheap too), the quality is pretty average.

On the other end, however, it really depends on how much upstream bandwidth you have. If people are hitting your web server really hard, for instance, then you leave Packet8 with less bandwidth to work with and therefore some choppiness will happen. This makes me sound like you are on a cell phone or something to the other person. Or worse, like one of those outsourced Indian call centers. At least I don't have a crazy non-understandable-to-English-speaking-people accent.

When the upstream connection isn't being used much, it basically sounds just like a regular phone line calling long-distance. I will spend some more time with this to see if I can turn on some bandwidth throttling measures somewhere to give Packet8 a higher priority rating.

Even then, the old adage is probably true - you get what you pay for. I'm spending $20 a month for this, though, so given they have to basically do nothing except man a few servers here or there, their overhead is nil and they are profitable. Therefore, my $20 should be buying a high-quality product. When the bandwidth is there it seems to be pretty good, when VPN users and what-not start hitting the connection, it gets choppy. One almost needs a full T1 for it to be useful without having to configure everything else to help Packet8 work better (I guess that's a possible solution - just throw more bandwidth at it). The free long-distance is probably their biggest selling point and they need to make that their way to push the product.

My guess is that they assume people are just surfing the web as they talk on their IP phone. That's a pretty good assumption and generally true. I guess I'm the oddball trying to do something with the technology that it wasn't intended to do. Go figure. I like doing that sort of thing. I generally find the bugs that no one was supposed to be able to find. It requires 8K of bandwidth per second (minimum, with probably 10K preferred) to not be "choppy". That's a fairly hefty chunk of upstream bandwidth for most cable modems and DSL lines (half of all available in some cases).

I might live to regret the decision, I might not. For now I will view it as an investment and just hope that the bandwidth needs don't have to be messed with too much.

Just don't upload large files to your website while talking on an IP phone is all I can say.

Friday, October 22, 2004

The Internet - for free...

Free is generally not something people believe equates to "high-quality." Microsoft charges a premium for its OS mostly because there is little to no competition and they can market basically anything to anyone. They do a good job of that. People can complain about it, but I don't see them doing anything to compete with Microsoft, so until people stop complaining and start doing something about it, Windows will continue to dominate the market. I wrote a week ago on the minimal amount of work that has to be done in the Linux realm to make it succeed.

Anyway, I have recently figured out why wireless Internet access has not really kicked off. The problem is that people are relying too heavily on the government to put wireless in major cities. I have a simple solution to the whole problem. Whenever someone buys a wireless router, have two ports - one that is able to be locked down and secured - the other should be open on port 80 only with upstream traffic headed to the Internet only (no LAN access). This allows people to surf the web using any available Internet access point as they go through a city. Then, if two hotspots come in range of each other, they would hand off the connection as a laptop/handheld moved between them. A really great advantage of this open network is that very few people will try to break the encryption guarding existing wireless networks since they will already be able to pretty much do whatever they need to on the Internet.

This, of course, leads me to the whole cellular call junk I was wading through yesterday. Basically, once a network like this forms, there will be almost no need for cellular phone towers except on long stretches of highways where people shouldn't be using cell phones as they drive anyway.

Thursday, October 21, 2004

Phones

Really. I honestly can't imagine what would possess a person to get a cell phone. I just finished looking at a cell phone for people to reach CubicleSoft and can't justify the cost. See, the cell phone is "free," but what you get suckered into is a 2 year agreement to sell your soul. Or at least your kidneys.

Okay, now let me make some sense of that paragraph. Basically, I need a way for someone to reach me whenever I turn the doggone thing on. I am not a cell phone fan. In fact, I find them highly annoying. So, naturally, I place little value on something I can pretty much do without. The only reason I would ever use one is if it was cheaper than a land line. In this case, the price I'm looking for is $10 to $15 per month. The first celluar company that offers a plan in this range with at least 600 minutes will own the industry overnight. Everyone else will continue charging $39.95 (just round it to $40 already - it makes check writing a lot simpler). Think this is realistic? Well, the next thing I am going to look at is VoIP (Voice over IP) - Internet phones, that is. Supposedly they are cheaper.

I think I have found the solution. Cell phones are annoyingly expensive. For those of us who wouldn't use them nearly enough to make them worth the cost, if you have Broadband or DSL, VoIP is far better. I found a really nifty solution here:

http://www.packet8.net/

Packet8 makes it simple and straight-forward - none of this "you only get 15 minutes on your phone" junk that cellular providers give you. A nice, flat fee is applied instead at a reasonable rate. The Internet maintains itself, so the providers overhead costs are nil. The only downside is when someone takes a backhoe to your Internet connection. Your neighborhood has other problems when that happens like a potentially extra-crispy, toasty backhoe operator that you should be more concerned over - technology is not nearly as important as caring about and caring for other people. Big deal if you lose the connection once in a while. That's what e-mail is for. E-mail systems will hold e-mail until the remote system comes back online.

So, what the phone industry needs to do is utilize the Internet to handle phone data. I don't care if you have infrastructure in place. According to Verizon's website, they are spending 4 BILLION this year on overhead. That, in my book, is 4 billion WASTED because the Internet infrastructure is in place and manages itself - and most major cities have Broadband/DSL lines. Actually, if someone at Google were to think about it, Google could actually leverage my idea for massively clustering their database by using an application that allows people to run their land line from their computers. In fact, Google could manage a whole new international phone system that doesn't rely on the old way of doing things and probably get away with it. They could have a "legacy" mode for those who still run on the old way of doing things, but we will be running out of phone numbers and area codes soon enough. Besides, numbers are hard to remember. I would much rather be able to add my friends and associates to my Favorites menu in IE. Just click on the person's name while browsing and start talking. Or a drop-down menu on the Google toolbar. The actual phone number isn't important, talking to the person is. People eventually memorize these things, but remembering a sequence of numbers is the equivalent of memorizing IP addresses on the Internet. It is far easier to remember a name than a bunch of numbers.

And as StrongBad says in Teen Girl Sqwad..."VoIP!"

Monday, October 18, 2004

Clustered computing

Read this:

http://www.theregister.co.uk/2004/10/15/google_desktop_privacy/

I have my own opinions about privacy, but frankly, there is such a thing as too much privacy. People inherently want to be famous - they have dreams of being movie stars and splashed across pages of magazines and newspapers. They want their 15 minutes of fame...now. The problem with fame and fortune is that you have the media up your nose with cameras. Literally. Someone will take a picture of famous-people's nose hair if they think they can get $15 for the photo. Those famous people are probably embarrassed as I am embarrassed for them as nose hair gets shown on the cover of every magazine. Society couldn't stoop to new lows of sleaze? Forget I ever asked.

However, in the digital world, what people don't realize is that there is power waiting to be tapped and Google is trying to preempt IBM in this regard. (Microsoft is clueless about this and I wouldn't want them trying to mess with something this important - the company is more likely to mess up given its consistent history). Google doesn't honestly care about searching your desktop. What they really want is clustered computing on a grand scale. See, Google runs a huge operation and, if they could outsource their database to your desktop, they could cut the major costs of running their own clustered network and rely on the bandwidth and CPU and memory of all those Windows-based PCs out there. The difficulty is with the details - Google's network is redundant, massively spread out, backed up(?), etc. Someone turns off their Windows PC, what should happen? The best bet is to make the database "float" around the world as the sun travels - people sleep for 8 hours, work for 8 hours, and do whatever for 8 hours...but the time the most PCs are on are those 8 hours of work. So, the database should float on geographical situations and the sun's location in relation to earth. I'm sure small segments would get "lost" here or there but the Google bot would eventually recover it.

The problem is that, to realize this dream, Google has to give people a reason to cluster it. This desktop tool is probably a test, among other things, to see if it is even worth the enormous effort that has to go into building the world's first floating database system. I highly doubt that the desktop tool is all that useful to begin with. Google wants to know how many people will download and where in the world they will download from (they need consistency around the world).

This is a lot of conjecture, but if I were running Google, this would be precisely what I would do to test the waters before pouring effort into developing a floating database. Write a cheesy application for Windows using code we already have and then we wait and see for the next phase. The desktop tool appears to be exactly this. I would honestly like to see if clustered computing on the grand scale both IBM and myself have envisioned is even possible - will people accept it? We will probably find out after Google finds out and eventually does something about it.

Outsourced

Read this and then come back here for what actually happened:

http://www.xanga.com/item.aspx?user=e_dwlf&tab=weblogs&uid=134814235

Everyone keeps conjecturing this and that about outsourcing and why companies are moving overseas. Well, technically they are not moving, they are just shifting business around to reduce the bottom-line costs. There are a number of reasons businesses may claim they are moving overseas, but there is only one underlying reason:

No innovation.

Businesses here in states are not innovating. They are not inventing. They are not being creative. What happens when this happens? Think about it for a moment.





If you guessed that in order to stay in business they have to focus on reducing bottom-line costs, you have guessed correctly. So, really outsourcing is just one symptom of a huge problem here in the U.S. For lack of a better term, I am going to blatantly call every American lazy. You are all lazy. And fat. So there.

Now that I've got your attention, let me show you what people are doing around the world that the media does not want you to know. Singapore, according to someone in the comments of the article, is some third-world country. They could not be more wrong. Singapore, by all respects, outdoes American technology-wise a hundred times over. A very simple example: Every person who has a cell phone outside of America has a chip that can simply be transferred to any other phone and have it work. Americans generally are clueless about this because privacy advocates interfere with anything that sounds remotely too easy-to-use. This makes our phone system completely incompatible with the rest of the world. The media blocks most outside communications with those in the U.S. to protect the image that we are "superior." An example of this media interference: Most Americans are led to believe that 99% of all Iraqis are terrorists. In actuality, 99.99999% of all Iraqis really just want to live normal lives and only put up with our foolishness as long as we don't get in their physical way of going to the market to buy food for their family. So, in reality, America is brainwashed by information blocking and controls.

That said, a lot of companies are using this to their advantage because they simply can't innovate with these controls in place brainwashing their employees. They are sending their companies overseas because the innovation is in other countries. Remember that very smart people are making these decisions and they don't generally make them lightly.

So, what can the average "Mark" do in this situation to keep his job? Innovate. Think of ideas. Be creative. Use the right half of your grey matter. Once you have a really great idea, sell it to those who control the bottom line. Show them how it improves the bottom-line and positions the company in the market. Anyone can simply obey orders, "Here, program this" or "Go sweep the floor" or "Change this account over to the new system." Even having a degree is not enough. It takes guts and brains to not only take orders but be innovative when executing them. You have to be able to think for yourself to create new ways to do things.

Here is what happens if people in the U.S. don't innovate: The economy goes down the toilet. The 2000 stock plummet was a symptom of the real problem. If people were innovating, those startups would have been valuable and the U.S. wouldn't be in the situation it is in today. Instead, they were overpriced because people did not understand the value of innovation. eBay, Amazon, and Google were innovators...they are still in business today.

Here is what will happen if the U.S. doesn't start innovating again: The economy stays in the toilet. Enough said.

By the way, the whole Bush vs. Kerry debate on the economy and how they will improve it is one big lie after another. Both the President and Kerry know the truth: No U.S. President has ever had a significant positive impact on the economy. Historians know this to be fact. As a case-in-point, FDR's "New Deal" to recover the economy set the U.S. behind 10 years of every other country in the world. The best positive thing any President can do is reassure the people - this is how the economy recovered from Black Tuesday. Get the people to trust their bank to build a trust relationship. In reality, it is an empty promise, but people believe it well enough that they store their hard-earned money there. If, for no other reason, to gain interest. Wars can also help boost the economy briefly, but acts more like steroids. The initial war with Iraq, to be blatantly honest, was really a well-timed operation to help recover the economy in specific sectors. Kerry is foolish to take the Presidency at this time, because the fallout from Iraq is extremely risky if he wants a second term. Kerry is a fool in general, but that is a gargled backwash story better left for another time to swallow. Just a hint to those voting in Michigan - Kerry has threatened to drain the Great Lakes and then promptly said he wouldn't - heed that hypocrisy and double-talk at the polls as the Michigan and Illinois fishing industries and fresh water supply are in limbo (roughly 40% of the annual Michigan income is fishing and we need the fresh water to live and draining the lakes would cause the midwest to turn to wasteland). Bush has 4 years of precedence of not touching them, so I feel much safer with him behind the wheel. Kerry is a very dangerous loose cannon.

Anyway, I digress. How does one become innovative? The concept is pretty vague, so let me give an example. I'm tired of every car being the same. You walk into a dealer and every car has the steering wheel on the left, a gas and brake pedal, four wheels, and windshield wipers. Let's take windshield wiper blades. They practically haven't changed since they were invented. You turn them on and they wipe back and forth, back and forth, back and forth. Honestly, I don't care what you do with them, but please make them do something else? Experiment. Perhaps figure a way to eliminate them altogether and keep the windshield clear year round. Impossible? Well, flying was "impossible" yet a bunch of people tried it anyway. Those crazy innovators. Now they are famous. Dead. But famous.

Or how about the windshield? Take the sun. Lots of drivers get blinded by glare off the windshield. What is the current workaround? Sun visors. Those things have been around forever. Get rid of them and think. What else is available? Watch a few commercials and you will see Lens Crafters with something called Transitions. Well, that works "in any light", right? Wrong. I own a pair and let me tell you, when I am driving, my Transitions lenses don't work as advertised. Why? They respond to UV radiation only. Glass and metal blocks those "harmful UV rays" so I still get glare. But wait! What happens if you use that technology in the windshield itself? No need for sun visors. Improved visibility. The windows and windshield automatically darken in bright sunlight and go clear in the shade or at dusk/night. That is innovation at its best. Solving problems. Problems you never thought were problems. This is how people keep jobs in the U.S. The only problem with this particular idea is that the law prohibits tinted windows and this might be viewed as tinting...but if I worked at GM or Ford, I would take that risk and sell it to management.

I've got plenty of innovative ideas for the car still tucked away. The windshield and wiper ideas are just a couple among thousands. GM and Ford have not done anything truly innovative with the car for 20 years. No wonder jobs are being outsourced.


The light is on, but nobody seems to be home.

I recently spoke to someone who works for an energy company in the Lansing, MI area. This person had a very interesting perspective on the software the company uses and it boils down to the whole "buy versus build" debate that seems to be never ending. My take on the whole debate is, "If it already exists and is not going to break the piggy bank, buy." I will give my reasons in a moment.

The energy company that I just mentioned has one of the most head-scratching policies that I have ever heard of. It took me almost 5 hours of pondering and a 2 hour nap to figure out what logical thinking there was behind this. Basically, the energy company likes to build their own software if they have the resources to do so. However, when they buy other software packages they request only portions of those packages. This really frustrates the employees who are in the field trying to use the partial package and consistently having it crash.

On the surface, my first thoughts are, "You have got to be kidding me." However, this is no joke and nowhere near April. After scratching my head for possible reasons for the chain of events that would lead to such policies being put in place, I believe I have come up with something other than incompetent management. Most managers are generally brilliant people - they don't get put there without a reason. I'm sure there are the occassional dim bulbs, but policies always have a reason for being put in place - even for legacy reasons. This is why every company should have the policy of allowing all employees to question why a policy exists and get a sound answer without beating around the bush - even if it means digging through archives of data to find it. Companies with this policy end up being more streamlined (i.e. Bottom-line friendly) than their competitors that don't.

My best guess is that the company has a policy to make code modular when building in-house applications. Back a few years when writing modular code was a big deal, the idea was such that if modular code was written, it was reusable. From a theoretical principle, it seems logical to take that one step further and be able to reuse code to create new applications. In actuality, any code older than 1 year old is to be considered non-modular in nature. The ideal principle falls apart when maintenance teams come through the code and add quick fixes (patches). The end result of most projects after 5-7 years (before they finally get scrapped) is the biggest spaghetti code base this side of Xylandricon. Also, the idea of building a partial package of a complete package is flawed. Imagine for a moment you receive a purchase order from a company for 25% of your main software package where they specify which pieces they want. You will, of course, take their money but will most likely provide a no- to limited-support contract and, since time is money, you will not invest in a QA cycle. You will simply throw a developer at the project telling them the components to put in and 2 or 3 hours later have a build, test it quickly to make sure nothing seems to be broken, and then ship it off to the company. The company integrates the now broken application into their processes and the result is a lot of unhappy employees at the people who make purchase decisions because they are stuck using a near worthless piece of software.

The problem here is that the company also maintains their own set of programmers for their systems. They assume that what applies to their programmers applies to programmers in other companies. This assumption is false. I have discussed the importance of code ownership and by requesting only pieces of an application, some programmers feel left out because they are told, indirectly through the purchase order, that their code is worthless. Companies will, of course, quickly fill the purchase order, but won't be happy about doing it because some developers will get that "left out" feeling. So, the order will be filled professionally and sloppily at the same time. The company that builds their own software frequently is not often paying much attention to the future bottom-line costs. When building a project, many managers only see the short-term costs. So, if it appears to cost $20,000 to build the initial project, it actually costs $50,000 for the project. The extra $30,000 is maintenance of the project over its lifetime. 60% of a project's post-production cost is in intangibles consisting mostly of maintenance. So, it is, of course, no wonder why a company like Microsoft does not like maintaining Windows - it costs a small fortune to make patches and updates for the mass market.

As I have already said, my take on the whole buy vs. build debate is, "If it already exists and is not going to break the piggy bank, buy." From this story, I need to modify it a bit, "If it already exists and is not going to break the piggy bank, buy the whole package." According to the person I spoke to, policy seems to be changing sluggishly toward what I already know. Those people should be reading this if they aren't already.

Sunday, October 17, 2004

Microsoft is going to die. Riiight.

Heh. Read this and then come running back here to read what I have to say about the professors who write this sort of stuff:

http://blogs.zdnet.com/index.php?p=635#comments

First off, Microsoft is here to stay. Like IBM has re-invented itself as a consulting firm, Microsoft has enough assets to re-invent the company 20 times over and still not go bankrupt and could enter any industry they choose to own. Linuxheads can rant and rave about how great Linux is (see my post yesterday), but that doesn't make the 90% market share suddenly go away - and even if it did go away overnight, Microsoft still has that money. Anyone who says Microsoft is going to die in the next two years is mistaken.

Second, educational institutions are generally big, whiny, mooching organizations that throw their weight around just because the general notion is that the budgets there are too small to buy the software. Wrong. Those organizations have millions pouring in every year and they pour a lot of it into high-gloss ads and magazines to their incoming students and their alumni. I throw out my high-gloss magazine the moment I get it from my alma mater because I know exactly what they want - money - and know they could have saved a bunch of it by cutting out the junk and just sending a form letter for me to throw away instead. I know they waste anywhere from $75,000 to $100,000 on each semi-annual high-gloss mailing alone. That's $150,000 to $200,000 that could have been put toward buying both yours and my software for the entire campus to use. So, don't bend to their wishes for price reductions on your software. They have the money and now you know it.

Third, handheld computing is not going to take off. Not enough screen real-estate as a desktop. The Tablet PC should be dominating the market, but it isn't. Mostly because it is still in its geek infancy and each one I've seen seems to start having problems after 6-8 months (and hard drives start failing after a year of use), but foregoing those two issues, I still don't see it overtaking the laptop market any time soon and certainly will never take over the desktop market. I value my eyes too much and don't think I'll be carrying around a 21" Tablet PC any time soon. Lots of other people have the same sentiment.

Fourth, Linux is not usable. I don't think I need to repeat myself from yesterday. Therefore, Linux isn't going to take more than 10% of the market share. Ever. Well, not until the usability issues are fixed anyway.

Finally, educational institutions have this concept of the "real world." "When you get out into the real world..." seems to be a common phrase exiting professors mouths in classes these days, or so I'm told. This means that classes don't correctly reflect reality. So...Harvard is living in some other dimension. Microsoft generally ignores individuals because we are not MVPs. If Clayton wants to get through to Microsoft, he will have to go through the existing MVPs and I don't think they will take too kindly to him for the same reasons I've stated.

So, basically, Microsoft is sticking around and the article is bogus. Feel free to flood ZDNet's blog with references to balloons, pretty colors, and monkeys.

Saturday, October 16, 2004

In other news...

Completely unrelated to software development, it was pointed out to me that I bought a completely sealed, and yet very empty Kool-Aid packet. I don't drink the stuff personally, but when I buy it, I usually buy the 8 for $2 or whatever the sale price is - grab a big handful and assume it will taste fine.

Anyway, when I go to the store to buy packaged items, I generally assume that the packaged item actually contains the appropriate item or a poisoned item but have never really thought about the possibility of no item. I mean, the possibility is there, but why would anyone bother shipping empty packaging?

If you are concerned about your Kool-Aid, feel free to call 1-800-367-9225 and let Kraft know about it. For me, it would cost me and them more trouble than it is worth. It was worth a quarter. If I had paid $5 (US), then I might start getting annoyed.

Okay, so I lied. There are a few crystals of the stuff in there - I can hear it, but I'll let someone else open this unique package and lick it out. Hmm...I wonder how much this would sell on eBay...

Edit - http://cgi.ebay.com/ws/eBayISAPI.dll?ViewItem&item=7108212273

Tips for Software Developers

Okay, while I'm not usually that angsty, the whole Linux vs. Windows thing does get me riled up easily. Anyway, I figured I should balance it out with a much more calm and serene post.

So, you are a software developer? Or you think you are anyway. Software developers think they know everything. That is good in some ways, highly annoying in others. However, lately I have noticed that many foreign programmers will come into mailing lists that I moderate (e.g. http://groups.yahoo.com/group/c-prog) and they will say, "I have a doubt" as the subject line. Then they will doubt again in the body. Several times. It is okay to have the occassional doubt, but doubting every other sentence is rediculous...especially where people post about code they could have run through a compiler asking about their doubts compiling it. If we lived back in 1960-something where compiling a program took hours or a day and had to be scheduled I could understand people doubting a compiler would compile code. Punchcard machines took forever. So, every single compilation counted. Nowadays, it seems to me that it is awfully lazy to not compile code and simply e-mail 3000 people to do it for you.

So, my first tip is to compile your own code.

The next thing I see a lot of software developers wanting is someone else to do their own code writing for them. Software developers who want this should look in the yellow pages under "consultants" and be prepared to shell out $200/hour. Personally, I strongly believe in the concept of code ownership. When I work on something in code, I like to stamp it with my name, my style, pretty much everything that signifies that I have been there. The code ends up being well-formatted, with good comments, and bugs ironed out. I own the code. Open Source, bless its soul, takes code ownership away from the developer. No longer can an individual developer say, "Hey, look! I did that." Only those who start any given project are remembered briefly in the project's history. Anyway, I digress. Code ownership is very important - it gives warm fuzzy feelings to developers to stay on task and get the job done right.

So, as a long-time developer to developers, you own the code you write so, "do your own homework." Well, the company you work for owns the code too, but make sure they give you breathing room to be able to say, "Hey, look! I did that." People will be impressed. Also, be assertive about pretty much everything except that which you truly are not sure of. Usually, if you just sit down with paper and pencil and scratch out how to go about solving the problem, it will become clear as to how to solve it.

Don't lose the end-user. Software developers have this amazing knack for getting so lost in code, they lose sight of the end-user. As with my previous discussion, Linux has proven this point to a fine art of what happens when you do lose track of a simple thing called usability testing. Simply writing code is not enough, you have to do lots of other things - like sit down with a user with paper and pencil and simply watch them use the software. Silently. Developers have this knack for ruining usability tests - they want to preempt the user's thoughts by talking them through how to do something. Don't. Just sit there watching and jotting notes. The user will probably find all of the bugs you missed while just sitting there. Of course, if they can't figure out the software, then you have a bigger problem than them finding your bugs...either they aren't in the target market you thought or your software isn't usable. They will let you know if it is the latter.

Don't believe everything being told to you in MSDN Magazine or Linux Journal or whatever on application security. 90% of all bugs being found and exploited in software today are buffer overrun situations because people use things like gets(). Every coder makes mistakes (even Linux developers), but a buffer overflow should be near impossible to create if the developer knows how to write correct code. What every developer should have in their toolkit is a library of "safe" functions and methods that they can call that are known to be bug free. When user input is being handled, these "safe" functions should be used to handle that input. Only in extremely rare cases where it becomes obvious that performance is being hindered by the "safe" functions that the developer is using should alternative routes be considered. In this case, management makes the call, not the developer to go to an unsafe method of doing the same thing. The code is then peer-reviewed for problems afterwards. By using "safe" functions/methods/classes, a huge number of bugs are overcome.

So, use "safe" functions, methods, and classes. If a function, method, or class is being considered for addition to the list, it needs to be peer-reviewed and cross-checked with everyone else.

Common libraries. Developers rarely understand the importance of common libraries. I have seen in the open source arena, the same code duplicated across thousands of projects because no one is willing to put that code into a common library and enforce it. The same thing happens in Windows development on a smaller scale just because most Windows development tends to involve API calls. In both cases, neither side understands what a common library is for. Common libraries should provide wrapper functionality around OS-level APIs and be a place for "safe" functions, methods, and classes. I've already discussed the latter, but the former is something most people don't think about until they go and try to port to Linux. If you are a Windows or Linux developer, you are going to be smacking your head and saying at the end of this, "Duh, why didn't I think of that?" Basically, after years of experience, if I plan on porting an application from Windows to Linux, I rely heavily on my core library to interface with the OS and then I just have to worry about higher-level stuff at the application level. So, at the application level, everything is just putting together a pipeline for data. The library underneath builds the pieces of the pipeline. So, you may ask, "Well, if you are still calling APIs, how does that make it better?" I'm only calling an API one time. Ever. Porting is made easy. Simply write a lightweight wrapper for Linux and, bam, I've got pthreads and socket connections that look like Windows threads and sockets to the library. To the application, nothing appears to have changed. Just recompile and run.

Finally, all developers should be checking out this blog. Frequently. It has tips and tricks. It has nifty things. Best of all, I can help you keep focused.

When a software product is all said and done, independent developers still need to market their product. That is where I can help as well. My reviews of software are the blatant truths about it - none of the gibberish Tucows hands out. Tucows 5 cows awards are meaningless - it means you have good documentation, not necessarily a good application. If you want, I can help you put together a comprehensive package that will have everything you need to know and do for $350 to make the product successful. That includes my price for writing a review. Is the extra $100 worth it? If you aren't spending at least $10,000 on any given piece of commercial software to get it out there, you aren't serious about the software you write - go get a day job. So, $350 to get the information you need to keep your overall costs down along with a sound review of your software is a great way to kick it off. If I'm impressed, and that's tough to do, it just might get reviewed here.

The way to start right.

Big deal if this is my first entry in the blog. You know how many entries there are out there on the Internet where everyone is like, "ooh! My first blog entrie thingie." They can't even spell "entry" correctly.

So, I'm going to start this blog off on the right foot. I'm going to do what I do best - chit chat about software. In fact, I am going to be so bold as to NOT advertise the company I work for (CubicleSoft), but rather take the most daring topic public. Yup, that's right. I am going to cover the flame war called Linux versus Windows. However, I am going to do it so well that this hosted Blog will probably be asked kindly by the folks at blogger.com to shut it down because of being slashdotted.

Linux versus Windows. The flame war of flame wars. The discussion of discussions. People have argued and pulled and fought and said both sides are going to die and neither have. Before anyone says anything, I am a product recommender. No matter what you say in the comments will affect the product I recommend: Windows. Yup, I've tried RedHat, Slackware, Debian, various window managers (including KDE and Gnome). I know how to port Windows applications to Linux - and vice versa. I know how to administer Windows and Linux. However, I still recommend Windows. I use Windows solely for its multitasking capabilities. However, that is not why I recommend Windows. See, for the Linux crowd out there reading this, in order to win me over to Linux and get me to stop recommending Windows to large corporations as well as individuals, you have to get cracking on the programming end of things. Comments in this blog won't fix the major problems I see with all distros. of Linux. However, here is the why behind why I and other people who hold the power of influence that we do still recommend Windows (get ready - here's the big secret):

Usability.

That's right folks. Windows, while occassionally clunky, is usable by everyone. This is why Microsoft is so successful year after year. Microsoft, every single year, pours millions into usability testing of their products asking those in every industry to evaluate and provide feedback. These people are typically the MVPs (Most Valuable Professionals). These people are, to use an technical term, well-pampered professionals. Basically, MVPs are the eyes and ears of the industry, have lousy-looking, not well-updated websites, but provide a valuable service to Microsoft. Microsoft also brings in people to conduct usability tests with and gain valuable feedback there as well. Usability tests are where someone sits in front of a computer and they are recorded while using a piece of software and, with Longhorn around the corner, every OS once again has one more chance to do some serious damage to the 90% market share Windows holds. After Lonhorn is released, this opportunity will close for another 7-10 long years. Microsoft is vulnerable right now and they know it.

That said, I see no usability testing happening in Linux. Every Linux user says it is "getting better," but what I continue to see is the same junk that existed back in 1996 - only now with more junk because hard drives are larger and more RAM is available. Before I even consider starting to use Linux extensively, let alone recommend it, I need to see usability come to the forefront of every last Linux developer's mind - if it doesn't, you can be rest-assured of your 10% market share - 10% of the market consists of "tinkerers" anyway. Tinkerers are a group of people that jump through hoops because they have this grand desire to tinker around with something new, shiny, or interesting - most will return to Windows shortly. The rest of us want to get the job done. You can have fun tinkering for all I care - I care about food on my table among other things.

Here is what I want to see in a Linux distro. that has the dream of touching real hardware:

1) It has to pass my virtual machine tests. I no longer run Linux on real hardware. I got fed up. If Linux wants to have even a glimmer of hope, it has to be able to run, without hardware issues, under either Virtual PC or VMWare or some other major vendor. Oh, and Bochs stinks. Emulate the CPU...my grandma's left leg (Fra-gi-le, must be French). BTW, the majority of all software development firms out there might seriously consider porting their applications to Linux if all they had to do was download, not an ISO, but a ready-made, pre-installed image of some distro. for their virtual machine software. I know this is the ultimate abhorrent evil thing you Linux people have ever been forced to think about - pre-installing a binary! How dare he suggest such an atrocity!?! Well guess what? Software developers who want to make money want that. So deal with your personal problems and get over it.

2) Burning the installation CDs should be easy. Windows ownerd the market eons ago. You are going to have to grovel at Microsoft's feet for a while. Step 1: Make a wizard that manages any needed downloads of ISOs and burns the CDs under any Windows OS. Step 2: Make it look Windows-ish...not Linux-ish. Part of usability is keeping things as familiar-looking as possible as long as possible. This means that as much as you love the stupid penguin, NO PENGUINS IN THE WIZARD! This is your selling point, don't ruin it with a "cutesy" penguin. 80% of Windows users don't understand the terms ISO, FTP, mirror, distro., occassionally CD-R, and why they have to jump through hoops to get anything downloaded at a reasonable rate. You need a wizard. You need it badly. And it needs to manage everything for the user.

3) Installation. Cut the junk. Literally. The user should be presented with the following screens and nothing else:

--- Start of Screen #1 ---
Welcome to the *Distro. Name* distribution of Linux.

You are a:

0 New User
0 Advanced User

Next > Cancel
--- End of Screen #1 ---

With "New User" selected as the default.

--- Start of Screen #2 ---
You appear to have Windows installed on this system.

Would you like to:

0 Make space for Linux.
0 Overwrite Windows. (WARNING: You'll lose your data!)

<> Cancel
--- End of Screen #2 ---

--- Start of Screen #3 ---
Ready to install.
Click Next to continue.
Go Back to make changes.

<> Cancel
--- End of Screen #3 ---

--- Start of Screen #4 ---
Installing *Distro. Name* Linux.
Do not reboot during this procedure.

(Progress indicators go here).

Cancel
--- End of Screen #4 ---

--- Start of Screen #5 ---
Thank you for installing *Distro. Name* Linux.

The CD has been ejected.
Please remove it before rebooting.

Click the Finish button to reboot the machine.

Finish
--- End of Screen #5 ---

Look how nifty that install was. No dumb X configuration. No keyboard configuration. Definitely no Disk Druid or FDISK. It just installs. Oh, and it should automatically start a low-resolution X (startx) when it boots up into Linux the first time to do keyboard, date/time, and network config. Just like Microsoft. This is usability folks. You either understand or you don't. I have a really good grasp on user wants and needs and Windows generally fits the bill because Linux is simply not cut out for the company/person.

4) X with some window manager (no one cares about the KDE/Gnome battle except geeks) should be the first thing to start. However, do not do as RedHat has done with Fedora. When you log into the default console, your username and password are on separate screens. Usernames and passwords are always and have always been on the same screen. RedHat almost had a good idea with the update manager if it was not so buggy and froze or failed downloading or crashed or downloaded so slowly or whatever for updating the system. Again, this is user unfriendly. (I'm picking on RedHat because that is my most recent experiment with Linux).

5) Wizards and UIs for everything. If a user ever, and I mean, ever, has to start a terminal session to do anything at all under the "usable Linux," I will continue to recommend Windows. Now, I know there are some things that can only be done with a command prompt, but those are "Administrative Tasks" - most of which are accessible from the Control Panel. To get RedHat Fedora to download the latest updates, I had to edit a configuration file. Yes, I'm a programmer and know how to do such things, but I refuse to recommend to anyone else an OS that requires them to edit a configuration file to stop an icon from blinking at them.

6) NO BLINKY. Really. I get migraines from any movement on my computer screen. My desktop is very unentertaining. So, don't make cursors or icons that blink, move, rotate, twirl, dance, jump, bounce, crawl, cry, laugh, eat, sleep, or even twitch one pixel. I have been known to shoot people for doing this, so don't. This includes functionality to turn off the digital clock blinky light (hint, hint KDE team). When I look at my desktop I want zero movement except for where I decide to have it not some developer who suddenly thinks they grew a braincell. 95% of all developers I've met have no clue what it means to make usable software, but they think that what they have made is better than sliced bread and everyone should use it. I shoot every third developer that thinks that way - the second one just left. So, no blinky. Don't even think about it.

7) Get some realistic icons. Icons contain some meaning. Every single icon I have seen on all Linux desktops contain almost no meaning. You would be amazed at some of the detail that can go into even 16x16 icons if anyone bothered to care about usability.

8) Toolbars. Raised buttons. If I can click something, I need to be able to see it raise when my mouse is over it if it is not obvious that it is a button. This is especially true for the "taskbar" in window managers like KDE where the KDE button doesn't appear to be a button until clicked. Very confusing to users.

9) Make a real text editor. VI, VIM, eMacs, PICO, and all the rest of them - junk. Take a look at Notepad and Notespad for Windows. I'd prefer Notespad, but Notepad will work fine. I want the same look-and-feel and don't get all fancy with the icons. I already tore out your icons in #7.

10) Simplify the "Start" menu. Why does every last software developer out there think that the kitchen sink has to be added to the menu? Rip out everything. Start over. Use words end-users understand. Keep it simple. If I were at RedHat, some heads would be rolling right now for allowing their default menus to get so full it becomes unusable.

11) Allow the taskbar to be located on the left-hand side of the screen. No popular window manager I've seen allows this (and don't tell me to recompile something with option xyz enabled after editing configuration file derf.conf, because I'll flat out ignore you - if you have to do that, it is a bug, not an "optional feature"). Linux AND Microsoft are on crack with putting the taskbar on the bottom. You can only open up 5 programs before it becomes unreadable. It takes a week to adapt to the taskbar on the left and opens up a ton of vertical screen real-estate (we've always had plenty of horizontal real-estate).

12) Make a good set of default games for Linux. Get rid of Kill Bill. Seriously, Whack-A-Mole games are so 80's and Bill is here to stay. I honestly don't care what you make, but make something popular that can only run on Linux (deny porting it to Windows in the legal agreement if you have to). Take lots of screenshots of your free game that looks good and has a great storyline (hint, hint) - not your desktop (desktop screenshots are so 80's). Make people envious. Make me envious.

13) Get rid of the MANPAGES. For pete's sake. Those things are awful. No, I have words for those things that I can't say. Besides, some women use Linux too. You could rename them to genderfreepages, but that doesn't fix the documentation. An all out effort to fix the documentation is going to have to happen if Linux is to succeed. Everyone that I know who is a serious Linuxhead agrees with me on this. So...instead of griping about it in my comments, go fix it. BTW, users do read documentation - but only if they have to. And trust me, everyone who wants to use Linux will have to read the documentation...and then read some HOWTOs and then discuss in forums and then maybe get around to installing it.

14) I have had a bad experience with hardware and Linux. I have always checked to make sure my hardware is on the Linux HCL of the distro. I wish to use. I built a PC a few years back straight from the ground-up using the Linux HCL of a specific distro. and that distro. failed to recognize the 3Com NIC! 3Com is brand name for crying out loud and the card was listed on the Linux HCL! I eventually put Win98 on the machine and that PC never blue-screened once...and it worked just fine with the 3Com card. If Linux ever hopes to win me over, get your auto-detection to work better and get IBM to start paying manufacturers for solid drivers. Windows can detect anything, including the worst hardware ever made like Winmodems.

Okay. I have ranted enough. Those 14 things are serious problems that I just simply can't see myself actually recommending anything other than Windows over. While Windows has its issues, they are minor compared to these glaring problems.

So, in short, start usability testing Linux. I highly recommend only one distro. doing this. The whole, "We need 500 billion distros. of Linux" thing is honestly annoying and end-users want one choice as long as it answers the question, "Does it get the job done faster, better, and with higher quality?"