Tuesday, December 06, 2011

Sorting vs Filtering

I wrote before about misuse of To:, Cc: and Bcc: in email communication. This is another one of those posts.
 vs 

I often get email from customers that lead me to believe that they don't understand the difference between sorting and filtering a list. Usually I come to this conclusion after reading their email, getting confused myself and having to read the same email 2-3 times before I realize "oh yeah, this is another person saying sort when she means filter". Let's go to the dictionary:


sort (verb):
a : to put in a certain place or rank according to kind, class, or nature 

b : to arrange according to characteristics 



filter (verb): 
a : to pass (something, such as a gas or liquid) through a filter to remove something unwanted 


So when it comes to lists, sorting arranges the list in a particular order. Whereas filtering temporarily reduces the amount of record in the list (perhaps so you can focus on a smaller subset).

How do you know which you have done? If the number of records in the list has decreased, then you have filtered.

Thursday, December 01, 2011

My black friday nightmare with Walmart.com, Part 2

One of the things I left out of my post about my nightmare buying a TV from Walmart.com was that I used Consumerist's recipe to launch an EECB (Executive Email Carpet Bomb) on Walmart. Following the recipe, I composed an email and sent it off to 4 variants of the email of their Executive Vice President of General Merchandise. So who called me yesterday? Amberly from Walmart.com's Executive Escalation Department. Yeah it got that serious! She explained the same thing as the other robotic agents I had been talking to. However she promised to escalate to the billing dept. Did I believe her? Not entirely but she sounded more confident than the others. Especially since she was from the Executive Escalation Department. I asked how she learnt about the case and she said they got my email (sweet!).

About 30 minutes later, Amberly called me back and she had actual information for me. Apparently, orders are randomly flagged for review by Walmart. My first order for the 55 inch was flagged and when they (Walmart.com) called AMEX to verify my name, the data didn't match up. Which is certainly news to me since AMEX has always known me as "Tundey Akinsanya". So after the first order was unsuccessful, my credit card was flagged and subsequent orders with that same card were subjected to a review. So that's why ordering the TV 5 times didn't help; having a customer service rep clone the order didn't help; having a customer service rep take the order over the phone also didn't help. Solution: have Lara use her card (same account but different number) to buy the TV and then call the Executive Escalation Department to refund me the difference in price.

All that just because I wanted to get the free extended warranty from AMEX, the cheapest price from Walmart and the convenience of being able to return to a physical store. The 5th order was placed yesterday and so far no cancellation email.

Tuesday, November 29, 2011

My black friday nightmare with Walmart.com

This past black Friday, I decided to do the smart and yet fiscally-responsible thing: shop online for electronics. Our current TV has been making weird noises that I interpret to be death rattles. So what better way to snag a big screen TV than by shopping super early on black Friday. Like a smart consumer, I did my research before hand and found Walmart.com had 2 TVs at really good prices: 47 inch LG for $699 and a 55 inch LG for $898. As soon as it was 12:05am, I logged on to Walmart.com and bummer, the 55 inch was "sold out". I settled on the 47 inch and made the purchase with an AMEX card. Why AMEX? Because they offer free extended warranty on electronics. Done with my shopping, I went to sleep. Woke up around 7am and decided to try the 55 inch again. Luckily it was in stock and I bought it too figuring I'll just return the 47 inch when it arrives. Free shipping on both TVs meant I wouldn't have wasted money on shipping the unwanted 47 inch. I was feeling very proud of myself. I had managed to snag the item I wanted for an incredibly low price. Little did I know that my nightmare with Walmart.com (I keep saying Walmart.com because this story involves the online part of Walmart) had just begun.

A few hours later, my phone chirped to signal a new email. The email said my order for the 55 inch TV had been canceled. No reason given. They just canceled my TV. My first thought was "this is probably AMEX trying to protect me because they think making 2 large purchases so close together is suspicious". So I called them and they were like "Nope, everything is good on our end. In fact, I just put through a $1000 authorization as walmart and it went through. Everything is good here." Hmmm, that's weird. Why would Walmart cancel the 55 inch and ship the 47 inch when both orders were purchased on the same Walmart.com account using the same credit card? Makes no sense. I waited till they were open and called their customer service number. Spoke to a nice lady that essentially said "Don't worry about it. I'll fix the 55 inch order and even cancel the 47 inch to save you the trouble of schlepping it over to a physical store". Nice!

Because I am anal like that, I checked hours later and it was still canceled. So the "nice lady" hadn't done much. Suffice to say, I am still stuck in Walmart.com customer service hell. I have now ordered this same TV 4 times and they still can't tell me why my orders keep getting canceled. I have called AMEX 3 times to make sure everything is ok. All to no avail. I have heard several conflicting and non-helpful statements from Walmart.com service reps. For example:

Agent: Please correct your information and try the order again
Me: What information should I correct? Everything is correct as evidenced by the 47 inch order going through
Agent: Please correct your information and try the order again
Me: What information?
Agent: Your information
Me: What information specifically, my name, address, what?
Agent: Your information

Meanwhile the price of the TV has gone up by $106 and after over 7 calls and tweets to Walmart.com and  hours wasted, I still don't have the TV and there are all these pending authorizations on my AMEX from Walmart.




So why not just buy the damn tv from Amazon or BestBuy? Because even with price hike, Walmart is still cheaper and I like the convenience of being able to return to a physical store (imagine having to ship a 55 inch TV back to Amazon).

PS: Here are my notes from my interaction with Walmart.com service representatives. Warning: Contains some strong language
Here's a screenshot of the form letter email I got from Walmart.com when I contacted them via email. They couldn't even be bothered to replaced the placeholder text.

Wednesday, October 05, 2011

Taking good luck for granted

I wrote this a long time ago but didn't published it. Not really sure the title fits but what the heck...read it.


Ever since I became a parent, this blog post has been rolling around in my head. The fact is it's very easy for us to take good luck for granted. I am not saying one should "give testimony" for every little thing like waking up in the morning, taking the next breathe etc. But when I think about my kids and how normal they are and how non-trivial my wife's pregnancy was, I realize that I am very lucky. When you have 6 nieces and nephews, you start to think pregnancy isn't a big deal. After all, your sister and sister-in-law have done it 6 times with apparent ease. What could go wrong?

Then your wife gets pregnant, with twins and she starts watching all these weird shows on Discovery Chanel. And the answer to the question "what could go wrong?" becomes "a lot!".

Then you go to bed one night while your wife is only 4 months pregnant only to be woken up at 1:30am with your wife crying out your name. Turns out she's having contractions that won't stop. You call 911 and end up spending the entire day at 2 different hospitals. Doctors are trying to stop the contractions, saying stuff like "We are bringing out the big guns"; "We've done everything we can"; "You might want to take her to Howard County General Hospital because they have better NICU facilities"; "We can only give so much of this medicine"; "We need to give the babies steroids to quicken their growth, just in case they come". Eventually they are able to stop the contractions and you return home. Alas, now your wife is on full bed rest (yes it's exactly what you think it means).

Forward a few months and the babies finally arrive. You count the itsy bitsy fingers and toes (even though you know the nurses have done it) several times just to make sure. But wait, one of the nurses call you aside and says "Your boy has something that needs to be surgically corrected". But everything else is A-ok. Both babies are doing fine. In fact, so fine, the nurse says, they don't need the NICU. Even though they are twins and a bit early. Great news!

The next few weeks are spent battling sleep deprivation. Soon you find you your little boy has a severe milk allergy. So now we've gotta get special (i.e. very expensive) formula, feed the babies at a particular angle and sit them up for 1 hour after feeding. Just great!

And then you get the very worst call in the world. My office phone rings, I pick up and my wife is on the other side. I hear 5 words that almost changed my life: "Tundey, Toni is not breathing"

Tuesday, October 04, 2011

Value City Furniture sucks

On July 4th 2011, I spent over $1500 at Value City Furniture on living and dining room set. I shouldn't have. I should have done somewhere else. Because Value City Furniture sucks. Here's what I wrote to them:


Hello,

I am writing to tell you about my horrible experience shopping in New Carrollton your store. I bought a living room set (3-piece sectional) on July 4th.  About a month after delivery, I noticed that both the sofa and loveseat had ripped. I called in to have it repaired. At this point, I was already disappointed with the quality of the furniture. The fillings inside the cushion were already coming out and the 1-month old sectional already had the appearance of a much older couch. To make matters worse, the rip that was repaired came back exactly 2 days after repair (and I was out of town for those 2 days!). Needless to say, at this point I was very disappointed with the quality of VCF's merchandise and repair expertise. After several calls to the store, I eventually got a manager to let me return the sectional for a replacement. This time I picked one of your American Signature brand and also paid for the fabric protection plan. At this point all VCF had to do was deliver the furniture and *drop off the registration package for the fabric protection plan*. Sadly, this wasn't done competently. They delivered the furniture but didn't  deliver the registration package. Since I *have* to register my protection plan in order for it to be  effective (even though I have already paid for it), I found this to be a very egregious error on the part of VCF. Because if I hadn't remembered, I would have just wasted money on the protection plan since it will not be effective for lack of registration. Once again, I've had to make multiple calls to the store in order to rectify a mistake that's not of my doing.

At this point, I am tired of VCF and I would not be exaggerating if I said this is the worst furniture purchase experience I have had. Sadly, I can't return the furniture since it's well outside your 7-day return policy but if I could I would even if that means I have to sit on the floor until I can buy another couch from a furniture store that sells quality merchandise and can provide a better experience for its customers.

Thanks,
Tundey Akinsanya
PS
My invoice # is xx-xxxxxx; original purchase date: 7-4-2011; original service date: 8-19-2011;

Thursday, August 25, 2011

Error HRESULT E_FAIL has been returned from a call to a COM component.

Ever opened your aspx or ascx in Visual Studio 2010 only to see this:


When this happens:

  • Editing in design view is virtually impossible
  • Can't add new controls
  • Existing controls can't be edited in design view
The solution that's worked for me is to:

  • Close VS 2010
  • Delete all temporary files created by VS 2010. In addition to the usual suspects, make sure you delete the folder that corresponds to your website in this location: C:\Users\[username]\AppData\Local\Microsoft\WebsiteCache
  • Restart VS 2010

Tuesday, July 12, 2011

The curse and blessing of developing software

There is a site called "The Daily WTF: Curious Perversions in Information Technology". Contrary to the name, the site is perfectly safe for work. In fact, it's probably should be mandatory reading for some workplaces. Why? Because the content of the site can be put in 2 categories: amusing screenshots of software behaving badly and examples of phenomenally bad code. By the former, I mean amusing error messages; error messages that the developers thinks will never show to the user; banks sending letters to demand payment of $0; things of that nature.
The second category is what I call the curse of being in the software business. Smart people coming up with really clever and awful ways to get things done. Part of the reason is that end users never get to see the source code of most applications. They only see the pretty UI. So what happens? Developers have the freedom to use whatever to get the job done. And boy, do they abuse that freedom.Spend a few minutes perusing the Code of the Day section of the site and you'll get a feeling for what I am talking about.

Tuesday, May 17, 2011

I like to attempt dangerous acts...

Every once in a while I come across this dialog in Visual Studio and the language used in the dialog text always bugs me:

Dangerous?
If you can't see the image, the text is:
An editor or project is attempting to save a file that is modified in memory. Saving files during a build is dangerous and may result in incorrect build outputs in the future. Continue with save?
I am not sure what a better word is but "dangerous" just bugs the heck out of me. I mean I understand software is important and all but dangerous? Really? What's the worst that can happen? You mess up the build and are forced to do a "clean" and "rebuild". Big deal. Generally, I don't think anything that can happen in Visual Studio (short of blowing up your computer) should be termed as "dangerous".

Wednesday, February 23, 2011

Is Chrome intentionally trying to mess up web development?

A couple of weeks ago I posted about the weird behavior of Chrome's omnibox. Today, am posting about how Chrome's bungled a very simple feature of all web browsers. Since the very early days of the web, web browsers have always had an option for viewing the source code of the currently rendered page. Typically the menu is called "View Source" or something similar. You click it and you get the HTML source for the page you're looking at. Very simple, right? Well Chrome does it differently. In the spirit of complicating simple things, clicking on "View Source" in Chrome doesn't just give you the HTML of the current page. Oh no! It makes another request to the web server and shows you the HTML for that version. Yep. I am not sure how that's better than just showing the HTML of the already rendered page but that's what Chrome does. So in addition to using the omnibox to complicate web development, the "View Source" option makes a trivial action more complicated. BTW, who uses that option the most? Developers. The very same people who invoke that option because something in the currently rendered page is incorrect. And God help you if you have a debugger attached to the webserver process (as developers typically do).

Why am I so sure that Google messed this up? First, all the problems associated with their implementation of the omnibox that I described in my previous post apply here also. Second, Google "view source chrome" and you'll get a bunch of results describing this odd behavior. If that many people are having problems with this simple command, perhaps they ought to fix it?

Thursday, February 17, 2011

Does InfoPath (still) suck?

A couple of years ago, I wrote a blog post titled "InfoPath & SharePoint (Part 1)". Back then I had just started working on a project using InfoPath 2007. So, expectedly, the post wasn't very complimentary to InfoPath (or SharePoint). In fact, I said:
InfoPath sucks and SharePoint is the most expensive piece of crap ever. InfoPath, as a development environment, has absolutely no redeeming value. It's worthless.... (more)
Since then my opinion of InfoPath has changed slightly. It still suffers from all the flaws I pointed out in that post. However, I think when used right, InfoPath can be an OK tool. I think it's well suited for designing one off forms and not for anything that requires complex logic or multiple iterations (like most software development requires). Alas, most CTOs fall in love with its point & click simplicity and integration with SharePoint that they try to use it to replace more developed technologies like ASP.NET. What do you get? A horrible development environment that's absolutely not suited for software development and highly paid software developers designing InfoPath forms. See this link for an an example of how InfoPath makes something very simple and basic very complicated.

With the 2010 version, there's been many nice changes to InfoPath. But it still makes me chuckle that a Google search for "InfoPath sucks" turns up my blog post.

Tuesday, February 15, 2011

Chrome's Omnibox, debugging web applications and web statistics

If you use the latest version of Google's Chrome browser, you may have seen this setting:



Couple of days ago, I decided to turn it on. This way, I can get instant results when I search via the omnibox. Since I never go to Google's home page, this is the only way for me to get the benefits of instant search. So I turned it on and promptly forgot about it. Fact is, I never actually thought about how it worked. Why? Because the way it works is every character you typed is instantly sent, as a search query, to your search provider. So far, that's not a big deal. That's intuitive. However, what's not so intuitive is that once Chrome detects you are typing a URL, it starts sending those requests to the webserver for the URL. So say you want to type in "http://localhost/myapplication/pageAmTesting.aspx?Id=500", the last few requests Chrome will send are:
  • http://localhost/myapplication/pageAmTesting.asp
  • http://localhost/myapplication/pageAmTesting.aspx
  • http://localhost/myapplication/pageAmTesting.aspx?Id
  • http://localhost/myapplication/pageAmTesting.aspx?Id=5
  • http://localhost/myapplication/pageAmTesting.aspx?Id=50
  • http://localhost/myapplication/pageAmTesting.aspx?Id=500
The problem is that I routinely debug web applications by attaching Visual Studio to the browser and stepping through my code. Naturally, I am expecting only 1 request to be sent (and thus trapped and debugged via Visual Studio). I also expect that request to have a query string parameter (Id) with value (5). But with that setting enabled in Chrome, I get all these extra requests that mess up my debugging session. Some of these extra requests have no query string param (#1 and #2 in the list above); some have incomplete values for the query string param (#3 and #4 in the list).

Once I realized the problem, the fix was easy (turn off the setting). But, as is my nature, I started wondering just how much this seemingly innocuous behavior of Chrome could affect the web. Now I am not a web statistics guru, but it seems to me that this could serious skew web statistics (upwards). Then I thought to myself "Tundey, you are not smarter than Google. Surely they know about this and have taken it into consideration..." But have they? Answer is yes....and no. They have because they1 added at least 1 extra HTTP request header for all those extraneous requests. The header "X-Purpose" is set to ": preview" for preview requests. Ok so they thought about it. And I figure they've probably updated Google Analytics to account for the header (i.e. if the request has that header set, ignore it since it's not a user generated request). And perhaps there's some standards body in the web analytics space that they submitted this behavior to and got their major competitors (WebTrends etc) to adopt the standard. But what about other web usage? There are other areas of the web where this could screw things up:
  • lots of unnecessary requests putting semi-useless load on servers all over the world (because the responses from those preview requests are used just for the search result listing page...i.e. only a minor portion of the entire data returned is used)
  • lots of angst for developers when their applications keep throwing unusual exceptions (in the example above, each of those preview requests will likely trigger an exception in the web application since the expected query string is missing)
  • lots of 404 errors as some of those preview requests included incomplete page names (and thus the pages will not be found)
  • what about sites that use GET requests to perform actions? Yes it's stupid to perform POST actions using GET but I bet you some sites do it.Those sites better hope Chrome doesn't send preview requests their way
So what's the solution? Here are a couple of ideas:

  • Once Chrome detects that the text being typed is a URL, don't issue preview requests. After all, if I am in the process of typing "http://localhost/myapplication/pageAmTesting.aspx", chances are I know exactly where I want to go and don't necessarily need a preview.
  • Once Chrome detects that the text being typed is a URL, continue to send the requests to the user's search provider (like it does for other non-URL text).

I did some search on the "X-Purpose" header and it looks like it's not a Chrome-specific header at all. It's also used by Safari's "Top Sites" feature.


Related articles

Friday, January 28, 2011

My review of Google OS (on the Cr-48)

First, I am typing this on the Cr-48 running Google OS. I signed up for the pilot program a couple of months ago and didn't give it any further thought. After all, what are the chances of them actually giving me a unit? Well, guess what was waiting for me when I arrived home this evening? Yep! A brand new laptop (more like netbook) with Google OS installed. These are my initial reactions:

  • when I first heard about Google OS being based upon the chrome browser, my first thought was how will they deal with the *claustrophobia* that some people (ok me) will experience at being confined to a single window? Well they didn't deal with the issue. So that was the first thing I noticed. It just feels like I am being confined to a single browser instance
  • What do you mean "everything is in the cloud"? Literally, everything is in the cloud! There's no file system. Personally, I think it's a mistake that Google didn't even create an abstraction to replace the file system. Nothing says that your "c:\" drive or your "desktop" has to be physically on the computer. Google could have compromised by layering a facade over cloud-based storage (i.e. Google docs) to make it look like a normal computer. That was one of the first things my wife asked me when she saw the Cr-48.
  • The hardware is surprisingly devoid of any branding. It's just a little black box. No serial numbers or model numbers. Since these units are just for testing the OS (as opposed to actually being for eventual sale to end users), I suppose the lack of identification can be excused.
  • A lot of noise has been made over the keyboard lacking a dedicated CAPS lock key (it's been replaced by a search button)..but I think the bigger deal is getting rid of the Function keys. Ever tried to figure out the combination keys to activate the functions keys on a laptop? Is it Fn+F7 to switch to an attached external monitor? Who knows...it differs on each laptop. On the Cr-48, the keys in the top row by default perform the actions depicted on them. Wanna increase the volume...no Fn key required. 
  • I am not sure what the official battery life is but the unit is saying I have over 6 hours left on an 86% charge. That's pretty good.
  • You know all those junk documentation and papers that come with new Windows computers and laptops? Well none of that here. Just the laptop, 1 page for the FCC radio interference warning and another page to describe the keyboard layout. No mini-booklet containing outdated OS information. No restore disk.
  • It has an SD Card slot but nothing happened when I inserted a card. And trying to attach a file to a gmail message presented me with a blank "file open" dialog.
I am going to try to use the laptop 80% of the time over the next few days and then write another post. BTW, when Google OS was first announced 18 months ago, I called it vaporware

Monday, January 24, 2011

Why I left Aquilent

I wrote the bulk of this post in November last year. Since then, I have indeed left Aquilent and now work at NIH.


How do you keep employees happy?

I am sure most people will immediately think of money when asked this question. To me, it's never been about money. Sure, everyone wants to be adequately compensated and certainly I wouldn't volunteer for a pay cut. But it takes more than money to keep a good employee happy. I am careful to qualify that with "good employee" because a bad employee will stick around and take the money. I think a key aspect of what keeps employees happy is how good the daily work experience is (from the employee's perspective). If your employees hate coming to work each day, you can be bet no amount of money will make them happy or keep them from leaving.

Why am I talking about this? Well it occurred to me while riding the Metro to DC (where I am working on a SharePoint implementation project...feel free to Google that..I'll wait). So while on the metro for my 1-hour commute to work, I realized...why the heck am I doing this? The best part of my work day is leaving work for the train ride home. I remembered when I used to work on NASA projects calculating optimum download windows for scientific data from NASA space satellites...when I used to work on a site that the Navy uses to procure billions in service contracts...when I used to work on stuff so cool that I literally came in to work so excited I couldn't sleep...when I came in early, planning to leave early only to have to stay late because what I was working on was just so cool and interesting. Now, I am enduring a 1-hour commute to DC (on my own dime at the rate of $15 per day) to install and configure SharePoint.

Another reason is I just wasn't being put on projects that I wanted to do. SharePoint development is a very marketable and in-demand skill that I happen to have. But it's not what I like to do, at least not in the context of developing intranet sites. I mean, really, where's the fun in developing an intranet? So while it's great that Aquilent is getting more and more SharePoint projects/website development work, it's not in my best interest. It doesn't make me happy and (even worse) it takes me farther and farther away from what I really want to do. At some point this year, something a co-worker said to me caused me to think back to the last time I wrote code. I was shocked to discovered it was more than 1 year ago. In that time, I had been doing SharePoint administration and support.

Finally, let me describe an hypothetical situation for you and you tell me what you'll do. Say you have openings for technical leads on 2 projects and you have an in-house resource that has the technical knowledge required on both projects. However, this resource has been an integral part of the first project (in fact, he was 1 of 3 original developers of the project). In addition, this resource has been with the company for 10 years and has indicated that he'll like to work on the first project. So here's the dilemma: you are definitely going to need to hire 1 new person (since you have 2 openings). So do you:
  • put the in-house resource on the project he wants, has the technical knowledge for and (very important) the domain knowledge OR
  • put the in-house resource on the project he doesn't want; ask him to pay $15 per day to commute to DC and hire someone brand new without domain knowledge for the second project?
If you pick option b, I definitely can't work for or with you. Why lose the domain knowledge of the in-house resource if you don't have to? With option B, you have 2 people on 2 projects that they have no experience in. With option A, you only have 1 person on a new project. To me, this sort of decision is a no-brainer.

So yeah, I can sit around and count the money but the daily experience sucks. What good is getting well paid every 2 weeks when you feel like quitting every single work day? Funny thing is, this is the reason I left Sprint 10 years ago. Back then I asked myself: "Did I spend 4 years in college so I can spend a sizable chunk of my life stuck in beltway traffic?" Today, the question is "Did I spend 4+1 years in college and 10 years working for this company so I can spend 2 hours of each work day of my life commuting to DC? So I can be told to take a pay cut (that's what I think of having to pay $15 to commute to DC)? So I can be put on projects that do not advance my career (along the path that I want)?" The answer to all those is no and thus am leaving Aquilent less than 2 years after writing "Why I am still at Aquilent".

Sunday, January 16, 2011

The federal govt is huge

I know that sounds like an obvious observation but until you really think about, you may not realize how big the federal govt really is. I just started working at the National Institutes of Health (which is 1 of 12 operating divisions under the Department of Health and Human Services). HHS itself is 1 of 15 federal executive departments in the United States. With me so far? So at orientation, I found out that NIH employs over 27,000 employees! NIH is the largest consumer of electricity in Montgomery County! 27,000 employees in an agency within the 10th largest (of 15) department in the US. According to wikipedia.org, as of 2007 the federal government employed 4.2 million people! Wow! That makes them by far the largest employer in the country. For comparison, the largest private employer in the US is Walmart with 1.8 million employees. That means the federal govt employs more than twice as many employees as the largest private employer. That's some serious clout.

Tuesday, January 11, 2011

Crime against humanity

So I just got a new job and along with that comes the task of setting up a new PC from scratch. First thing I did was install CCleaner and check out all the programs that have been set to run on start up (i.e. programs that run every time you start your computer) Since these programs are configured to run on start up, you would think they ought to be very critical components of your computer. So why is it that every self-important software company seem to think their programs belong in this category. For example, if Adobe Reader doesn't start every single time I boot my computer, is that really a big deal? So why the heck does Adobe think they need not 1, not 2 but 3 programs starting up every time I boot up? Why does Sun (Oracle) think I need to update Java (a program almost no one uses except for server applications)? Why does Apple think Quicktime needs to be started along with the computer? For one thing, the idea of having Quicktime is like appendix in humans i.e. absolutely useless!

I don't know how it is on Apple computers (am sure it's heavenly and magically) but I blame Microsoft. For making it so easy and open that every tom, dick and freaking harry can do whatever they want. If this were a MAC, every software that needs to run on startup would need a permission slip from Steve Jobs.