It’s official: Apple fanboy desperation has splashed off the bottom into the Land of the Ludicrous


Having apparently completely lost his mind, possibly from overexposure to the pinwheel of death, a (should be) 12-step seeking Apple Fanboy recently posted this:

It’s official: Apple sells more computers than all Windows PCs combined

In which the author, in a mesmerizing, yet stunning, disregard for anything mathematic, statistical, logical or even sane, engages in a drunk stumble to equivocate, prevaricate and adulterate data into something so asinine and convoluted that I truly believe that he convinced himself he had discovered the elusive formula to transfigure his illusory superiority into actual Mac Superiority. What he failed to account for is that the Universe has not imploded.

I’m also completely open to the idea that the article site is actually a less funny version of The Onion or other satirical site.  I’m also not discounting the possibility of mind-altering substances being a culprit.

Here’s his hypothesis (that may be an insult to all actual hypothesis):

- Sum the Q4 2013 worldwide sales of every iMac, iPhone, iPad, iPod - basically every electronic component that Apple sells (this being, in his view, 'things upon which people get things done') and let this value = X.
- Sum the number of Windows based PCs (sold)shipped in Q4 2013 worldwide and let this value = W.
{Note: W explicitly excludes all Windows Phone and Windows Tablets sold for the quarter in question, otherwise the formula doesn't come out the way he wants}
- if (X > W) "Apple sells more computers than all Windows PCs combined";
-- else return "Mactopia Failed, again.";

His defense of this bizzare approach is that:

k20Xyu7“The tasks we used to conduct on PCs are now being carried out on an ever-expanding variety of other devices, pretty much all of them mobile. And this trend will only accelerate.”

dotmac-browser-failThus demonstrating not only his closed-loop echo chamber but his metacognitive illusory superiority which is epidemic in Mac users.  Not only does he truly believe that Mac products are the “only devices upon which people get things done”, he completely disregards – or more precisely, is incapable of comprehending or imagining – the fact that the vast majority of businesses in the US and the World get nearly everything done using a PC.  Furthermore, his conclusion that people actually “get things done” from an actual value-added perspective on mobile (limited to phones and tablets, specifically excluding laptops) devices is completely seperated from the reality that the majority of things that “get done” on a mobile device is limited to referencing things (i.e. a Map), updating statuses (social networks) and communications (phone,email, text, etc).  The only (normal)people who do productive things, like compose a document, on a mobile device are those who don’t have access to an actual computer.

Honestly, this shows the level of desperation for validity that Mac users must experience when they realize that; no matter how trendy Apple’s marketing is or how closed-loop Mac Fan-Boy echo chambers become; Apple/Mac remains an obscure computer with minimal (at best) market share.

This dataset is a joke (but then, a third grader could have told you that) and is based on fairy-tales, pixie-dust and rainbow unicorn farts – much like modern American politics.


  • Comparing cell phones with PCs (while leaving out the equivalent WinPhone)? No matter how he construes his logic to make this comparison – I can still show that Wal-Mart actually sold more Apples than Apple did. Which is dumb and means absolutely nothing, just like this data.
  • Apple designs their products to have limited high quality life to validate their (deplorable and dishonest IMO) business model of releasing a new version every 2 years and locking all their customers into buying brand new devices – show me a 3 year old iPhone and I’ll show you a piece of crap.
  • pile-of-broken-iPhone-screensApple also intentionally designs their hardware to be very difficult, and prohibitively expensive, to upgrade – you can barely change the battery on an iPhone without a PHD in Electronic Engineering. Not only do you void your warranty, the “geniuses” will sneer at and belittle you for your idiotic delusions thinking that it is reasonable to expect to be able to perform basic maintenance on your own hardware.
  • PCs on the other hand are modular in design with components that my kids can (and have) upgraded on their own. The PC that I’m typing this on is over 7 years old – the case is 7 years old, that is – the internal hardware is nearly new. Over that time I’ve upgraded the motherboard, RAM, hard drives, USB, sound and video boards – some of them more than once. Show me a 5-10 year old PC and I’ll show you how you can modernize it overnight for a fraction of the cost of a new one (some qualifications, quid-pro-quo, etc apply) … absolutely NONE of which shows up in this data as a “new PC”
  • As an aside – we can logically and rather demonstrably conclude that the Apple business model is an icon of American/First World waste and is generating an insidious amount of landfill waste while the PC hardware model inherently limits this.

Not only are the products in the dataset incomparable, the product lifecycles are incomparable as well. In addition to that, they are comparing essentially closed-loop hardware to a quintessentially open system.

Finally, the most ludicrous stretch is to conflate and oppose subsets of data while explicitly stating that we are aggregating all Mac products with an enumeration of the aggregation and then “comparing” it to “all Windows PCs” – thereby projecting the implication that we’re crafting similar datasets for PCs but obfuscating (in a graphic’s caption) that they are explicitly excluding all the equivalent items that we just enumerated.  The reader initially plows through it thinking they understand the data comparison already from the Mac enumeration and don’t realize they’ve just experienced ‘a fast one’.

iphone-4-broken-screen-repairAt this point, they’re implying that they are crafting a comparison of the market penetration of the much younger windows phone/tablet, which is still trying to figure itself out, against the market mature iPhone/iPad.  The subtext of the article however, informs us essentially that doing any kind of integrity or logic bound comparison results in Mac losing – and we don’t want that!

Ironically, in Q4 2013 the Windows Phone had a 46.7% Year over Year Market Share increase while Android trailed at 40.3% and iOS phones simpered in with 6.7% growth. Granted, iOS vs. WinPhone market share is diametrically opposed to the Desktop/Laptop market – but Mac is not growing in either market while the WinPhone is gaining penetration.

Here is a valid data comparison

Desktop/Laptop Operating Systems accessing the internet Jan 2013 – Jan 2014.

The first Mac result in the dataset is Mac OSX 10.9 with 3.35% share – narrowly edging out Windows Vista by .1%.

(In other news, investigators are trying to track down those computers because they fear the owners may be dead and spam bots are still running non-stop on them.)

Cumulative stats:

  1. Windows: 90.61%
  2. Mac: 7.76%
  3. Linux: 1.63%

That spread has had minimal deviation for several years.  (Notice how few words it takes to present actual valid data?)

Mac rules all right; and it has no clothes. - Mac Fail (9)


I’m riding on the train – who else is on here?

I’m riding the UTA Front Runner train from Orem to Downtown Salt Lake this morning, I’ll be riding for a little over an hour.  I’m logged into the train’s wireless to type this and I’m logged in to Facebook at the same time. Facebook has permission to know my location – but guess what?  It has no idea I’m on the train, or if my friends are – but it DOES know who my friends are. So does LinkedIn, Twitter and several other services for that matter.

What if the train was broadcasting some sort of signal that my phone could pick up, or if it embedded a value in my packets that indicated I’m on the train.  Then Facebook would know, Twitter would know, so would LinkedIn.

What if when I got on the train it checked me in to the services I’m logged in to but didn’t broadcast my location publicly – and any of my services could SMS, email or otherwise ping me to let me know my buddies are in the train car behind me on the top floor.

What if LinkedIn let me know that there are five guys sitting around me that all have one person in common – we don’t know each other, but we all know this person.  Then we could easily strike up a conversation about that and get connected on LinkedIn.  What if LinkedIn told me there’s a lady 2 cars back who is trying to hire someone with my skill set?  How cool would it be if I could take a resume out of my bag or bluetooth it to her or whatever.  But, I could walk up to her while we’re idle on the train and start talking to her about it – and maybe have a new gig by the time get to the station.

Did you start reading this thinking that social is all done and built out?

Version 1 is only part way done – we have a LONG way to go!  Foursquare you say?  Maybe – but most people I know don’t use it, especially not this consistently.

.Net Collection Types: Hashtable vs. Dictionary

Deciding what type of collection to use in a project is based on the objectives and needs of your project – which you will probably already know.  But to decide which collection object to use, you need to know the major and subtle differences in collection implementations and what their impact will be on your code.  In this analysis, we will look at the System.Collections.Hashtable class versus the System.Collections.Generic.Dictionary class and System.Collections.Concurrent.ConcurrentDictionary class.

All three of these classes implement the System.Collections.IDictionary interface which defines a key/value pair collection.  A Key/Value collection manages two iCollection objects: the Value is the object you are storing in the collection and the Key is a unique identifier associated with a Value.

A hashtable stores collection elements in buckets.  Each of these buckets have a unique hash based on the key of the element.  If you add an element to a hashtable that has the same key as a previously loaded element, the new element will go into the same bucket.  When searching the collection, a hash is provided as the target and only the key/value pairs in the bucket for that hash need to be analyzed.  Because of this, a hashtable can be significantly faster when large datasets are stored in the collection.

Value objects in a hashtable are untyped (an Object) which typically requires boxing and unboxing the value in order to examine it.  Therefore, a Dictionary class with Value of a specific type can provide faster examination of the value entry.

If the collection might be accessed by multiple threads simultaneously, the thread-safe ConcurrentDictionary should be used.

While the performance differences may or may not impact your project; dataset size, whether dataset values are consistent types and whether multiple threads will be accessing the data are important considerations when deciding which collection object to use.

To play around with Hashtables and Dictionaries, here’s a simple snippet.

using System;
using System.Collections;

    class HashTableExample
        public static void Main()
            Hashtable Hasher = new Hashtable();
            // Load some data
                Hasher.Add("Music", "mp3");
                Hasher.Add("Video", "mp4");
                Hasher.Add("Music", "wma");
                Hasher.Add("Document", "doc");
                Hasher.Add("Video", "flv");
                Console.WriteLine("A duplicate key attempted to load");
            foreach (DictionaryEntry de in Hasher)
                Console.WriteLine("Key = {0}, Value = {1}", de.Key, de.Value);

Using Generics in .Net

Generics provide for extended code reusability and type safety in your projects.  A generic is a class, structure or interface that uses a type parameter as a placeholder for the actual type that it will contain or use.  These generic type definitions cannot be instantiated as they are not complete.

In its simplest form, it looks like this:

public class MyGeneric<T>
    public T Field;

Once you have created a generic type definition, your next step is to create an instance of it- at which point you will specify the type that will be used – for this instance only.

public static void Main()
  Generic<string> genStrTest = new Generic()<string>;
  genStrTest.Field="Hello World";

In this example, when we instantiated the class, we set the generic type parameter to ‘string’.  We now have a strongly typed object and the compiler will throw an error if a value other than a string is passed in.

By using generics, we increase the reusability of a custom type (instead of having one for int, one for strings and one for doubles) while still maintaining a type safe system.

Data Adapters in ADO.Net

Data Adapters are the objects in ADO.Net that allow us to communicate and exchange data between a data source and a dataset.  With them, we are able to retrieve data from and write data to a database (actually any type of data repository).

The type of database you are connecting to informs you as to which data adapter you should utilize.

  • OleDBDataAdatper is a general adapter suitable for any OleDB data source
  • SqlDataAdapter is specifically for connecting to a SQL Server database
  • ODBCDataAdapter is used to connect to general ODBC data sources
  • OracleDataAdapter is specifically for connecting to an Oracle database

While the DataAdapter communicates with the database, it requires other objects to support it.

A Connection Object defines, opens and maintains or closes the connection to the database.  The connection can be assigned to one or more adapters.  The Connection object is where you configure your connection parameters to the database.

Command Objects execute actions on the dataset.  These include Select, Insert, Update and Delete.

To retrieve data from a data set, you call the ‘Fill’ method on the data adapter.  To write data, you use the ‘Update’ method.

If your task needs only to grab data and load it once (not to ever write back) you can use a Data Reader.  These Read Only, Forward Only objects load data from the dataset once and store it in collections you can access.  The advantage of this is that it only hits the database once, grabs data and lets go of the database.

C# .Net Basics: Classes


A class is a user defined object or type construct that allows you to group together fields, properties and methods into a custom type that behaves in a consistent way.  A class is a reference type; when an instance of a class is instantiated, an object reference is returned to the calling function, not the object itself.  Once the object is created, it is kept in memory until all references to it go out of scope.  At that time, the CLR (Common Language Runtime) marks it for garbage collection.  Classes support inheritance, with some exceptions, a class can only inherit from one other class (base class) and can implement more than one interface.

Continue reading

Life at Conception Act tries to bring sanity to an insane situation

Senator Rand Paul and Senator Roger Wicker will sponsor the “Life at Conception Act” this week which declares that the unborn are persons.

Well, Duh!

The only people who disagree that the unborn are people are those who are Morally Corrupt,  Intellectually Dishonest and Selfishly Motivated.

So-called “Pro-Choice” ‘people’ who argue that abortion should be legal to allow a woman to have a “choice” over what happens to her body are both Morally Corrupt and Intellectually Dishonest.  The CHOICE that a woman has is actually whether to have sex or not.  An unwanted pregnancy is what we honest people call a CONSEQUENCE.  Yet, in our completely corrupted society that seeks to relieve itself of any actual consequences – the live free, party hard, ignore the effects philosophy of Liberalism – we would rather justify making it legal to MURDER a defenseless child than actually call upon people to make MORAL choices or take on any responsibility for their actions.

There is a precedence for this – generations ago, we classified slaves as NON-PEOPLE to assuage our guilt and moral deficiency in treating fellow humans inhumanely.  Now, generations after slaves were freed and reclassified as people, we still feel the effects of it throughout our society.  It is the very same mentality that seeks to find justification for legalizing the murder of a human for the convenience of someone unwilling to accept the consequences of their actions.

Rand Paul’s legislation is trying to put a stop to this pitiful circumstance of our irresponsible society  by declaring that a person is a person at conception – THAT is when life begins.  The 14th Amendment protects that life:

“No State shall make or enforce any law which shall abridge the privileges or immunities of citizens of the United States; nor shall any State deprive any person of life, liberty, or property, without due process of law; nor deny to any person within its jurisdiction the equal protection of the laws.”

It is pathetic and a clear statement of the corruption of our Nation that such a definition has to be made.

… Que the Morally Corrupt and Intellectually Dishonest “Pro-Choice”rs to hold up straw man arguments by “science” to try to assuage their conscience while they try to justify their stance for murdering defenseless humans so we can live life without consequence.

LDS General Conference in a Modern World #ldsconf

For most of my life paying close attention to LDS General Conference has been primarily an exercise in sleeping.  It’s not just conference, but anytime I stop moving and stare at a tv – it just puts me to sleep.  With modern technology though, Conference can and has, for me, become a much more interactive and participative experience.  In this post I would like to share some things you can do on the internet to participate in Conference.  If I’ve missed something, please list it in the comments – I’d like to find out more ways to participate.

  1. The first thing to do is to actually listen to or watch conference via the internet.  This isn’t a requirement at all, but something I do because I don’t have the ability to watch TV.  It also makes it easier to have multiple screens going that focus on Conference.   You can watch Conference live on the internet, streamed through the website.
  2. Follow Twitter posts about conference, and post your thoughts on talks to Twitter.  The hashtag (a way of categorizing tweets) for Conference is #LDSConf using this in your tweets makes it easy for everyone to notice your tweets about conference.  There are several ways to follow #LDSConf – my preferred method is via Google’s live updates.  Another way is through “What the Hashtag” but I’m not too fond of their interface.  During Conference today (1st & 2nd sessions on Saturday) there were over 10,000 tweets about conference.  What this ends up doing is really highlighting which parts of talks are really standing out to people – as there will easily be over 100 tweets about a single important quote 2 seconds after the quote is uttered.
  3. If you are Facebook friends with several other LDS people, your facebook homepage is probably really active with conference discussion (mine is at least).  This is a good place to discuss talks as they are going on.
  4. Internet resources in general.  Often times talks refer to other talks or to other important things that can be found on the internet.  A wealth of links flow through the #LDSConf tweet feed and will likely be available on your facebook wall.  This group research effect will help you quickly identify resources to bookmark for future reference.
  5. LDS centric bulletin boards.  If you are a member of any LDS Centric boards, they might be very lively with live discussion of Conference.  This can be a good place to post your thoughts and to read the thoughts of others while Conference is going on.

These are the things *I* find most useful.  I know there are many others out there, please share them – especially if they’re really good.  The key idea here is to make Conference more participative, to stay awake and to get more out of it.  You can always go back tomorrow and re-watch a particular talk (via or youtube) or read it next month.  The key thing I’m looking for is to be able to really pull the nuggets out of conference.  It’s also really nice to see literally hundreds of people discussing something so important.