Logic’s Last Stand

June 5, 2010

Accessible Forms with PHP and jQuery

Filed under: Computers, Freeware — Tags: , , , , — Zurahn @ 8:30 pm

A primary challenge of recent web-development is how to make use of the great new dynamic tools provided to us in using libraries such as jQuery, while still providing an accessible website without the use of JavaScript. While there’s more to accessibility than making a site work without JavaScript, it’s a fundamental start. This task looks arduous, but it doesn’t have to be — approach it right from the start and it may actually be trivial.

Let’s start from the no-JavaScript version and work up. Normally your form without JavaScript would look something like this

<form method="post" action="example.php">
    Field: <input type="text" name="field" /><br />
    <input type="submit" value="Submit" />
</form>

To have JavaScript handle the post, we’ll add an onsubmit function to the form.

<form method="post" action="example.php" onsubmit="return formSubmit(this)">
    Field: <input type="text" name="field" /><br />
    <input type="submit" value="Submit" />
</form>

When the onsubmit function returns false, the form does not submit. So by having the formSubmit function return false, we can have the page handle the post via AJAX instead of having to refresh the page. Let’s look at the formSubmit function.

function formSubmit(obj)
{
    var form = $(obj);
    $.post(obj.action, form.serialize());
    return false;
}

The .serialize() function takes the form elements and converts them to query string parameters so they can be passed through post. By using this, we can reuse the same generic formSubmit function regardless of the form — all we have to add is the onsubmit attribute to the form.

Now you may also want to have error and success messages return. A good way to handle this is via JSON objects. JSON is a standard by which objects can be represented in string form, so we can pass a string from PHP to JavaScript, which can then be handled as an object. Let’s update out formSubmit function to handle this behaviour (the script will assume that there are hidden divs with the ID “error” and “success”.

function formSubmit(obj)
{
    var form = $(obj);
    $.post(obj.action, form.serialize(), function(data)
    {
        // Return data is JSON object string, so eval to get object
        var message = eval("("+data+")");
        showErrors(message['errors']);
        showSuccesses(message['successes']);
    });
    return false;
}

function showErrors(messages)
{
    if(typeof messages != "undefined")
    {
        $('#success').css('display', 'none');
        var error = $('#error');
        error.css('display', 'none');
        error.html(getMessageList(messages));
        error.fadeIn();
    }
}

function showSuccesses(messages)
{
    if(typeof messages != "undefined")
    {
        $('#error').css('display', 'none');
        var success = $('#success');
        success.css('display', 'none');
        success.html(getMessageList(messages));
        success.fadeIn();
    }
}

function getMessageList(messages)
{
    var output = '<ul>';
    // iterate through the object properties
    for(i in messages)
        output += '<li>'+messages[i]+'</li>';
    output += '</ul>';
    return output;
}

Now we need to construct the JSON object on the PHP side. The error will be echoed, but remember that we want this to work even if it’s not an AJAX post, so we need different behaviour depending on whether or not it was an AJAX post — echo error/success messages if AJAX, redirect back if it’s not. Let’s go to example.php; the script will assume that the value $_SESSION[‘page’] holds the value of $_SERVER[‘PHP_SELF’] before the post.

<?php
session_start();
$field = $_POST['field'];

if(!isset($field) || $field === "")
    Reporting::setError("Name cannot be blank");

if(!Reporting::hasErrors())
{
    /* Do something with $field */
    Reporting::setSuccess("Operation with <em>$field</em> completed successfully");
}

Reporting::endDo();


class Reporting
{
    public function __construct()
    {

    }

    public static function endDo()
    {
        if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) === 'xmlhttprequest')
        {
            if(self::hasErrors())
                echo self::getJsonErrors();
            else if(self::hasSuccesses())
                echo self::getJsonSuccesses();
        }
        else
            header('Location: '.$_SESSION['page']);
    }

    public static function hasErrors()
    {
        return isset($_SESSION['errors'][0]);
    }

    public static function hasSuccesses()
    {
        return isset($_SESSION['successes'][0]);
    }

    public static function setError($message)
    {
        $_SESSION['errors'][] = $message;
    }

    public static function setSuccess($message)
    {
        $_SESSION['successes'][] = $message;
    }
    
    public static function getJsonErrors($clear=true)
    {
        return self::getJsonMessages('errors', $clear);
    }

    public static function getJsonSuccesses($clear=true)
    {
        return self::getJsonMessages('successes', $clear);
    }

    public static function showErrors($clear=true)
    {
        return self::showMessages('errors', $clear);
    }

    public static function showSuccesses($clear=true)
    {
        return self::showMessages('successes', $clear);
    }

    private static function showMessages($type, $clear)
    {
        $output = '<ul>';
        foreach($_SESSION[$type] as $val)
            $output .= "<li>$val</li>";
        $output .= '</ul>';
        if($clear)
            $_SESSION[$type] = array();
        return $output;
    }

    private static function getJsonMessages($type, $clear)
    {
        $output = '{ '.$type.': { ';
        $comma = '';
        foreach($_SESSION[$type] as $key => $val)
        {
            $output .= $comma.$key.': "'.$val.'"';
            $comma = ', ';
        }
        $output .= ' } }';
        if($clear)
            $_SESSION[$type] = array();
        return $output;
    }
}
?>

Looks like a lot of work, but with that, we’re all done. Everything from now on is handled identically between jQuery and non-JavaScript versions of the site, and all you have to do is add onsubmit=”return formSubmit(this)” to each form, and in the processing script, close with Reporting::endDo(). Everything else takes care of itself.

Advertisements

April 17, 2010

Vim and Emacs – When Programmers Design

Filed under: Computers, Freeware — Tags: , , , — Zurahn @ 11:06 pm

There are various immortal battles of loyalty — Coke versus Pepsi, Kirk versus Picard, McDonald’s versus Burger King — but the one closest to programmers’ hearts is Vim versus emacs. Vim and emacs are text editors dating way back. Vim (as in VI Improved) is a “newer” version (as in only ~20 years old) of VI, which was originally written for BSD UNIX in 1976 and is a staple of terminal applications. Emacs is the brainchild of open-source pioneer Richard Stallman that same year.

Why are these crusty old terminal programs so near-and-dear to coders? The short answer is that they work. What they don’t do, however, is make themselves accessible. I’ve been jumping back and forth between both over the past few weeks, and simply put, this is what happens when you have programmers design software, and not just write it.

What I mean by that is there’s no denying the power of both editors. There’s a reason they’re still used, still maintained, and still invaluable. That said, there is simply no concern with making the applications intuitive, user-friendly, or out-of-the-box ready. If you’re going to make significant use of either, not only will it require significant time investment and the effort of learning not only the basics of how to use them, but the features that make them worthwhile, but also the investment of configuring the software to actually be practical for what you need.

The majority of my programming of late is with PHP-based websites. This means writing PHP mixed with HTML, as well as CSS and JavaScript files. Neither do this properly out of the box, and frankly, there isn’t a good solution for PHP mixed with HTML in either. There are relatively poorly performing add-ons that do the job, but not as well as they should.

One could argue that hey, don’t bloat the software. I may want that, but not everyone will. I’m not one for bloat, but there is consideration for convenience versus leanness. It’s part of the reason I use Opera over Firefox — it’s built-in, with no other maintenance required. Given the scope and use of Vim, I don’t think it’s an egregious request that it have more universal options out-of-the-box. Emacs is a 40MB download, so I hardly think fleshing out of the language support is too much to ask, either.

Let’s be realistic here. It’s programmers using this software. Why on earth do these programs have syntax highlighting disabled by default? Why are line-numbers disabled by default? Why does it require additional configuration, even downloads to get highlighting for popular languages?

We’re programmers, we fiddle, but that isn’t an excuse to leave software in a unfriendly state because you feel justified in saying “deal with it.” I do, and will continue, to use both programs; programmers handling design also means some awesome features — so long as you can find them.

December 13, 2009

Fixing Ugly Web Fonts in Ubuntu

Filed under: Computers, Freeware — Tags: , , , , , , , — Zurahn @ 9:00 pm

In Ubuntu and its related distributions, the font rendering has gotten pretty good so that you don’t have to do much tweaking. However, there may be some nagging ugliness while web browsing if you prefer sharp fonts, and no matter how much you adjust the settings, it’s not going to get fixed. It’s not because of the web browser or desktop settings.

So, what’s going on here? Well, it turns out Ubuntu by default has versions of typical Microsoft fonts installed, such as Arial, Verdana, Courier, etc. and they all look like crap. For whatever reason, they do not alias properly and end up with ugly blurry asymmetric edges. By just getting rid of these fonts, everything immediately prettifies by falling back on default free serif or sans serif fonts.

What we’ll do is move the font folder containing the fonts to a backup folder in your home directory.

sudo mv /usr/share/fonts/truetype/msttcorefonts /home/[USERNAME]/backup

Restart your web browser and behold a much prettier Internet.

December 7, 2009

The Linux Wanderer

Filed under: Computers, Freeware — Tags: , , , — Zurahn @ 12:06 am

Once again, I have moved to another distribution of Linux. I had last installed Ubuntu 9.10 and the Kubuntu packages, but it was time to move on. Why, exactly? Well, that’s that thing: I don’t know. That is, I don’t know what the problem was, but I sure couldn’t fix it.

Despite even inquiring on Superuser, the inexplicable issue of sudden reversions in files never did cease, despite multiple harddrives, filesystem checks, startup variations, etc. Concluding with a sudden and inexplicable loss of microphone functionality, it was time to call it quits.

So I have since given Xubuntu a go with the ext4 filesystem (in lieu of reiserFS which I had been using previously). While no doubt attributed by just my own greater experience, this has been the smoothest transition yet. Everything has just worked, and very quickly to boot.

Xfce Desktop

Xubuntu is based on the Xfce desktop environment, which is meant to be a lightweight alternative to Gnome and KDE. It’s not so trimmed down as some others, though, and works as something of a midrange solution. It provides simple modularity and customization.

Unlike Gnome, the task manager on the panel works vertically, and compared to KDE I’ve found it particularly snappy and responsive. While previously it would have felt like a step back, it manages to now be fully functional, though perhaps missing a little flair.

Here’s hoping this one can stand the test of time.

November 5, 2009

Mandriva 2010 is a Disaster

Filed under: Computers, Freeware — Tags: , , , , — Zurahn @ 1:16 am

Perhaps feeling the need to meet the usual 6 month cycle of OS updates, Mandriva released its 2010 distibution for installation or upgrade. The transition from 2009.0 to 2009.1 was a nice improvement and I’ve been looking forward to 2010. However, my advice to all is to stay away from this one.

First up is the upgrade path. You can merely have the system download the updates and after a nice reboot, be all good to go with a fresh coat of paint. At least, that’s how it’s supposed to work, anyway. Upgrading from 2009.1 to 2010 seems to crash the upgrade program once it’s done, though if you go ahead and bewilderingly reboot and hope for the best, it will boot up as 2010.

From there, the system decided it would withing a minute or two have a kernal panic and lock up. Not a fluke nor a specific program, the system would just freeze arbitrarily.

Alright, let’s try the fresh install, then. Easy enough? Well the boot loader seems to lack the option to overwrite the MBR, so you may have a problem with dual-boot set-ups if you installed Windows beforehand. Additionally with a secondary harddrive like I have, you may have to adjust your BIOS settings. That said, after restarting a couple times to get past the pop-ups that load before the keyboard and mouse drivers, I did get in.

Not much new at the surface of things, aside from being less stable and some screwed up font aliasing. Not too terrible as long as you don’t reboot. If you do, the system may load, or it may get stuck on the neverending loading screen that fails to even load the option of a verbose mode to see what’s happening.

A second attempt at upgrading yielded the best results. No sudden freezing, so it’s at least usable for the first boot. That said, the system is unstable, with X siezing up with appearance changes, and upon reboot to fix, we hit our old friend the neverending loading screen.

If you have 2009.1 installed, if you’re able to easily restore from a back-up, you may want to give it a shot and see, otherwise anyone looking at an OS look elsewhere. Either try 2009.1 or a different distribution altogether — this one’s not ready.

August 15, 2009

Microsoft Windows as a DRM Posterchild

Filed under: Computers, Freeware, Philosophy — Tags: , , , , , — Zurahn @ 12:10 am

Microsoft Windows. It’s the cornerstone of one of the most profitable companies in the world, and controls a marketshare of ~90% of the Operating System market for the roughly 1 billion personal computers in the world. Naturally Microsoft takes its product very seriously, and in 2006 launched “Windows Genuine Advantage” a methodology for limiting the spread of illegitimate copies of Windows.

To understand this, we must first understand how Windows is legitimately used in the first place. After installing Windows, you have 30 days to register the product using your activation key. This key has a limit of activations that varies based on the version, and once reached, you must call Microsoft in order get Windows to continue working after 30 days and to stop it from nagging you to activate.

Cracks to stop the nagging and requirement for online or phone registration have been created, and Windows Genuine Advantage runs as a check to see if the system was properly registered or not. Microsoft requires this check for Windows Updates, and installation of Windows products.

Due to a resentment I have for the limitation on using a product I own, I usually just crack Windows, despite having several valid Windows activation keys. I had set up my parents computer from scratch and did this. However, a couple weeks ago someone tried to install Windows Live, which ran Windows Genuine Advantage, which failed due to the crack being rather old.

Now, it’s fine if Windows Live simply would not install, but Microsoft has an interesting way of coercion *cough*blackmail*cough* to get you to pay up.

Windows Genuine Advantage

Windows essentially becomes nagware forcing you to wait to log in, adding a perminent watermark to the system as well as a persistent system tray icon to harrass you. This is without consent (other than trying to install the Windows software in the first place) and does not come with an uninstall. It doesn’t help that detection is far from perfect.

Additionally, the system does not provide you the option to simply register using a valid license key, it merely directs you to where you can pay off Microsoft to STFU.

Aside from simply the malware-esque DRM methodology, by not allowing illegitimate copies access to Windows Update, Microsoft is doing genuine harm to the world. The prolific Conficker worm spread using exploit MS08-67, a buffer overflow in the remote procedure call service. This exploit was patched in October 2008, a month before Conficker was first found spreading at all.

Infected machines by Conficker or other worms or malware don’t simply inconvenience the owners of the infected PCs, but do harm in many other areas. Infected machines often become part of botnets, networks of remotely controlled systems often used for DDoS attacks and are integral in distributing spam. By also generating revenue for the creators of these infected machines by methods such as fake antivirus, grows criminal organizations.

Microsoft is not only being obnoxious and anti-consumer, they’re being completely irresponsible and in general if indirectly, is damaging their own reputation by these unpatched machines furthering Microsoft’s reputation being bankrupt in terms of security.

And for all these reasons, finally spurred by first-hand experience of Windows Genuine Advantage malware, my plans of eventually getting a copy of Windows 7 are dead. I also plan for any future computers that I should buy to get a refund for the Windows tax on it, if necessary, or buy one either with Linux or no OS preinstalled.

June 19, 2009

Urge to Kill Rising

Filed under: Computers, Freeware — Zurahn @ 10:54 pm

The Microsoft marketing force is out for Internet Explorer 8, with its Get the Facts campaign. They’re all BS, but I can’t believe the massive balls it took to write this:

Myth #4: Internet Explorer doesn’t play well with Web standards.

The Real Deal: Internet Explorer 8 passes more of the World Wide Web Consortium’s test cases than any other browser.

Microsoft made a big commitment to standards with Internet Explorer 8. In addition to passing more of the official CSS 2.1 test suites than any other browser, Microsoft got really hands-on in the overall testing process by developing and contributing thousands of new tests for the consortium.

But what does that really mean? It means that developers will be able to spend more time designing cool new features for their site, and less time tweaking code for specific browsers. Microsoft put significant effort into make sure sites still work, even if they’re designed for older versions of Internet Explorer, by giving users a Compatibility View button.

At the end of the day, Internet Explorer 8 truly is more reliable than ever.

Tell me you did NOT just go there. The sheer nerd rage. The years and years of developer agony of working around Microsoft’s utter garbage and complete disregard and outright contempt for web standards has not only wasted thousands of man-hours, but set the web back years.

Internet Explorer 8 Acid3 test results:
FAIL

Safari 4 Acid3 Results:
Safari

Firefox 3.0 Results:
Firefox

Opera 9.6 Results:
Opera

YOU SUCK MICROSOFT

The world would be better off without your crap.

June 14, 2009

Opera 10 BETA

Filed under: Computers, Freeware — Tags: , , , , , , — Zurahn @ 4:58 pm

A BETA release of Opera 10 was made available a couple weeks ago, and I’ve been using steadily for that time. It’s basically a modestly improved version of Opera 9.6 in all areas.

As with all more recent browsers, it has improved JavaScript performance, though still not on the level that the webkit browsers and Firefox are pushing in their upcoming releases, but still maintains its responsiveness quite well. If you had tried the Alpha version of Opera 10, don’t worry, all those issues have been resolved. Much more stable, much more snappy, much more functional.

A new feature touted for the browser is Opera Turbo, which uses a caching proxy to speed up webpage downloads for faster browsing on slower connections. So long as the proxy increases your browsing speed more than going through a proxy slows it, it’s a net gain, and benchmarks on slow connections are showing significant benefit.

Perhaps a feature long overdue, Opera 10 supports inline spell-checking, so your posts on The VG Press will show highlighting of spelling errors and typos before you post.

As a user of Opera’s mail client myself, it’s also nice to see they’ve added rich text support as well, so you can have font styling, images etc. in your e-mails instead of plaintext. Oddly, however, the mail client had always displayed rich text e-mails, you just couldn’t send them.

A big update I’m sure many will use is that Opera now supports a wider selection of how many items you can have on your speeddial, offering 2×2, 3×3, 4×3, 4×4, 5×4 and 5×5 options. After that you may as well just use bookmarks anyway.

On the technical side, there are nice progressions as well. Opera 10 passes the Acid3 test with 100/100 (though the smooth rendering is arguable whether it meets that criterion). SSL v2 has also been completely removed, which is a good thing as it’s simply no longer reliable enough to be presented as a secure connection.

Also, the Dragonfly web developer tool–Opera’s response to Firebug–is actually now very usable, as opposed to the sluggish and ugly rendition seen in the Alpha release. It’s a complete package and significantly improves Opera’s position as a browser for development. Up to this point, my primary browser for web development has been Firefox.

It’s not all good news, though, as there are some rough spots. First off is the Opera tab thumbnails which work as using persistent thumbnails along with your tabs, which completely doesn’t work in the Linux build. Second, despite touting improved HTML5 support, it still lacks <video> tag functionality, which is a huge bullet point for me, that if not resolved before the final release, may have me jumping to Firefox when it has an official release of version 3.5. Lastly, support for the Windows skin that just takes the design from the OS has been removed, at least from the Linux build. That was my primary skin, so I’ve jumped to the closes equivalent, the Opera Legacy skin.

Overall nothing mind-blowing here. It’s just simple progression in the right direction. Quicker and more robust, there’ll be no reason not to upgrade come the official release, and from my use, the BETA has been pretty stable as is.

May 24, 2009

This Is My Country

Filed under: Computers, Freeware, Life, Movies, Music, Philosophy, Politics — Zurahn @ 1:28 am

I live on the border to the United States of America. A place where the people love their country almost as much as they love hearing themselves say as much. It’s one of those indisputable, inarguable truths that would otherwise be unfathomable to be without, equivalent to the love of one’s mother. Well then, what does this lowly, despondent introvert think of his obnoxious, overbearing extroverted nation? While it’s nice to feel in a superior position to the boisterous Americans, I can’t say the need for patriotism is quite so onerous on me. Call it ambivalence, if you like.

But that’s not to say I’m in no way patriotic. At least, not when taken in the spirit of the word, and not necessarily in the direct literal sense of a recognized state. My country is one without borders, without limits. In the truest sense of the word it is by the people and for the people. My country is the Internet.

In every way as one would dictate their emphatic devotion to his community, so can you place that within my own digital world. In the physical world I am very liberal, but in the virtual world I am libertarian bordering on anarchist. The Internet is the last true bastion of freedom the world over, and I won’t–I can’t–give it up without a fight.

And there is a fight. It’s not in the news, it’s not on television. But it is happening. There’s propaganda in the news, yes, but not the real story, because there’s noone there to understand it. The terms net neutrality, piracy and the like are thrown around with no understanding, no actual reporting. Nobody cares.

For the better part of the year what little efforts the Internet community can manage with regard to politics here in Canada has been fighting off the Conservative push for bill C-61, termed the “Canadian DMCA”. A media-lobby push for legislating against their outdated and dying business model. How many members of parliament even know what a byte actually is? How many representatives have any idea what DNS even stands for? Without a basic understanding of how the Internet functions, they’re on a collision course to break one of the greatest achievements in human history.

It’s not just Canada, or the United States. It’s the world over. The Pirate Bay case is currently under review for the judge’s undisclosed membership to copyright lobbies. The judge appointed to review the case? Was removed for the same bias. This is in Sweden.

And no, it’s not just a matter of idiot politicians and lobbies. The Internet Service Providers (ISPs) have long since monopolized the market and are consequently abusing their power. Usenet support from Rogers was killed under the guise of protecting against child pornography. Bell Canada’s throttling is suffocating resellers as they’re effected as well. You get what you get, because that’s all you’ve got.

Meanwhile society as a whole is as ignorant as those in control. The Conficker worm has affected by rough estimates at least 10 million PCs. This is a worm that is only on Windows XP, transmits primarily via a long-since patched exploit in network sharing–which should be off–that should also just be blocked by Windows Firewall anyway, and would be completely nullified by passing the connection through a NAT router, which you should be doing anyway. There are services such as “Geek Squad” that costs more than buying a new computer, which is convenient since they can then can sell you that too. Your computer is not “broken” you just don’t know what you’re doing.

I’m running Linux as a desktop operating system. I wrote and maintain TheVGPress.com, which runs on the Apache Web Server and is coded in PHP 5 using a MySQL database. All of which have been developed and written over the Internet, are open-source and free for anyone to use. Freedom: It’s more than just a turn of phrase. It has meaning, and you can see it here.

This is my country; this is my world. My entertainment, my hobbies, interests, friends. My hopes, dreams, and aspirations.

All of it. It’s all in danger. In danger of ignorance, of corruption, of greed and profiteering. Morality and law are two entirely different things. While I wrote a series of pieces on the morality of the sharing of copyrighted materials, which in itself wasn’t one-sided, legally standing there is no argument. Arguing that, for example, downloading a song that a recording studio has the rights to is illegal threatens literally everything. You’ve now made the entire structure of the Internet invalid. I’ve gone on long enough; if you don’t understand how that last sentence is true, then that’s exactly the point. You don’t understand. Nobody in any sort of position to make a decision on what is right has any idea what right is.

Some may have a view of my country as a bit weird. What with the grammatically challenged cats, random videos, and a penchant for abhorrently graphic imagery. Well you’re close. We’re out of our damned minds. And that’s just the way we like it.

April 21, 2009

Enemies of Information 2

Filed under: Computers, Freeware, Life, Philosophy, Politics — Zurahn @ 11:31 pm

I’m not a fan of people saying stupid things. OK, I enjoy it a little, but that’s to hide the crushing depression. Though, because of a excessive need not to be wrong, I tend to laugh and move on. However, when you talk moron about tech, as seen in my last rant, I just can’t let that slide.

So enter CNBC, who has outdone themselves:

PC vs Mac: The Real Cost

In case you have a strong allergic reaction to BS, I can simplify this down to a single screenshot:

The Ultimate Stupid

Let’s just run through these.

1) Norton Antivirus $50/year

Avast Antivirus – $0/year. Also unneccessary. Also not a PC-only issue.

Multimedia Software $80-$104

[citation needed] VLC – $0, Windows Media Player is preinstalled in every system. So long as you’re going to be talking about Apple, QuickTime has a free version on Windows, however crappy. There’s also QuickTime Alternative.

Photoshop $140
What version of Photoshop are you getting for $140? Also in case you skipped the video, the jackass actually said this exact quote: “Photoshop–you get that with Apple, you don’t get that with a PC” In case it’s not obvious, that’s just flat wrong.

Paint.NET – $0, GIMP – $0

Video Editing $100
Windows Movie Maker is INCLUDED in Windows. VirtualDUB – $0.

Music Software $100
This guy is the worst shopper ever.

Windows Media Player is preinstalled in every system, Songbird – $0, iTunes – $0 FFS

Geek Squad Visit $129
Oh go to Hell

I know it’s gotten bad in the American media, but WTF? This is from a news channel. No sources, blatantly factually wrong information. I’m not sure what is less discomforting to think this is, either an utter and blatant propoganda piece either to manipulate the market or as having been bought off, or complete and total ignorance and incompetence.

Some additional choice quotes,

“Serious problem with viruses that you don’t have with a Mac”

Actually, you do have virii on a Mac. Most notably some trojans traversing bitTorrent. Macs still do have some security though obscurity to downplay the threat, but it has virtually nothing to do with OSX, and it’s not non-existing. PS: OSX has been the first to fall in Pwn2Own two years running. The exploit that won? The programmer already won last year so he had stopped, and saved the exploit for the entire year that it went unpatched and used it to win this year.

“If your PC breaks down–Macs tend not to”

IT’S THE SAME HARDWARE. PC hardware is heavily standardized, and Apple went to x86 architecture years ago, leaving behind the old hardware incompatibility brought by its use of PowerPC (for better or worse). It’s not impossible that Apple has better manufacturing that most PC manufacturers, but you’re going to have to substantiated that claim given all the lies prior.

“If your PC breaks down, you’re gonna wanna call the Geek Squad”

No you’re not. Aside from that, if your PC “breaks down” you’re not going to have a choice but to bring it into the store, in which case the diagnostic (which is the $129 price he quoted) is actually $69.99. Similarly, this doesn’t take into consideration manufacturer’s warranty–same as you’d get from Apple–which would cover you in a hardware failure. Lastly, if we’re talking outside of warranty, somehow I doubt Apple is going to have the better price.

“$699 PC in order to get it to perform like an Apple Mac, you’re talkin’ about something closer to $1500”

Add up every single thing on his stupid list and you’re still only at $1300, and that includes the Geek Squad diagnosis.

“Even if you’re looking at a $1500 PC, that’s still less expensive than an Apple Mac”

Last I checked, Macbooks start at $1300. iMacs from $1200. He has never mentioned specs.

BTW you don’t even know your freaking Shakespeare; it’s “The lady dost protest too much, methinks”

And finally, let’s cap off the stupid with one more list.

Citation Needed

You can pretty much sum this entirely up to [citation needed].

If you’re going to sink this low, you may as well just get opinions from random celebrities. At least then there’s the off-chance you might get some factual information.

Older Posts »

Blog at WordPress.com.