I guess there’s no such thing as a secure PDF

I was reading the SCORM 1.2 reference docs today. I wanted to copy a passage for my notes, but the PDF is password-protected and prevents anyone from copying text. (REALLY irritating, considering the ADL is a quasi-government organization and the docs should be open to all.)

What to do? Well, turns out there are at least two super easy ways to bypass the password protection: Upload it to Google Drive or import it to Evernote.

Google Drive

The Google Drive site includes a built-in PDF reader; when I opened the PDF in the web viewer, I was able to copy text freely. Better yet, I was able to save the PDF as an unlocked file by selecting “Print” then choosing “Save as PDF” in the print options.

Evernote

When dragging the file onto the Evernote app (Mac), the PDF shows up in a preview window. I was able to copy text freely. No need to save as a PDF since it’s already stored in Evernote!

Security, schmescurity

So I guess there’s no such thing as a secure PDF. I’m sure there are other services like to Google Drive and Evernote, and there are definitely other techniques for defeating protection, including screen captures, OCR, and the old fashioned approach of printing to paper then scanning the prints. If you truly need a document to be secure, don’t distribute it electronically.

Advertisements

Setting OS X Desktop Picture Based on Time of Day

I recently changed jobs (Hello, FireEye!) and was issued a new MacBook Air. I spend a lot of time looking at the screen and was getting bored with the supplied desktop pictures. I also start work very early most days (7am-ish), and thought it would be nice to have a desktop picture that matches the mellow-ness of such an early hour.

Of course, this leads to daydreaming — “scope creep” in professional parlance — and next thing you know, I started thinking “well, maybe I could also set it to show a nice evening-themed picture at night”. Then “maybe I can get it to change both screens” (I use a laptop with an external display).

I also liked the challenge of putting together a script as quickly as possible. (In my off-hours, of course!)

I downloaded some nice wallpaper images from National Geographic, then created six folders that correspond to the major periods of the day: morning (early and late), afternoon (early and late), and evening (early and late). I organized my National Geographic photos into those six folders, based on the mood each photo evokes. For example, this one is an early morning photo.

Then I rolled up my sleeves and got out the trusty old AppleScript Editor. The resulting AppleScript is posted on GitHub, if you’d like to take a gander.

The gist:

  • It selects a folder based on the time of day.
  • It randomly selects an image from within that folder and displays it as the desktop picture.
  • It supports more than one monitor, with an option to either display the same image on all monitors, or display different images on each monitor.

The resulting AppleScript must be run at a regularly scheduled interval. I’m currently using GeekTool to run the script every 15 minutes, but I might eventually switch to a crontab job for less overhead.

Regardless, I’m quite happy with the way it turned out, and have already started daydreaming about other things I can hack together with AppleScript.

Importing Google Contacts into iCloud

I signed up for the new iCloud service, and wanted to sync my Google contacts so they will show up on my various Apple devices. MobileMe, iCloud’s predecessor, had built-in support for syncing with Google accounts, so I assumed iCloud would be a no-brainer. Unfortunately, it turns out iCloud does not auto-sync with Google.

It’s easy to completely wipe the iCloud contacts and replace them with Google contacts. However, I didn’t want to import ALL contacts — I wanted a curated list of contacts so I won’t have to scroll through hundreds of names just to find a friend’s phone number. Also, like many people, my Google contacts and my iPhone contacts were not quite synced, and I had some contacts on the phone I didn’t want to lose.

I hunted high and low for automated solutions, including software tools, when I realized it’s actually pretty easy to perform a manual sync. The basic steps are:

  1. Import contacts from iCloud into Google
  2. Clear all contacts from iCloud
  3. Replace iCloud contacts with a curated list of contacts from Google

I expanded the tasks into ten steps, listed below. They look more complicated than they really are — the entire process should only take you around 5 minutes, unless you get caught up in cleaning your Contacts list, which in my case took over an hour!

Note: These steps assume you’re on a Mac, you’ve already set up iCloud on your Mac and iDevices, and all of your devices are synced. All we’re doing is adding Google contacts to the mix.

The steps

  1. On your Mac, Launch Address Book.app and export all Address Book contacts to vCard format.

    Edit > Select All, then File > Export > Export vCard

  2. Take a deep breath, then delete all of the contacts from Address Book.app. This will also automatically delete all contacts from iCloud. (Obviously you should only do this if you’ve confirmed your export in step 1 was successful.)

    Edit > Select All, then Edit > Delete Cards

  3. Launch a web browser and log in to the Contact Manager for your Google account.
  4. Clean up your contacts in Google Contact Manager. This makes it easier to sort through them later. The most important thing is to merge all duplicates where possible.

    More > Find & merge duplicates…

  5. Create a new group in Contacts Manager — I named mine “Sync with iCloud” — and add any contacts you would like to import to iCloud. This enables you to selectively import contacts from Google to iCloud. If you want to sync ALL of your contacts, you can probably skip this step.
  6. Import the Address Book vCard you created in step 1 into Google Contact Manager. This will ensure you don’t lose any contacts that were on your Mac/iPhone but not in Google.

    More > Import

    Upon successful import, you’ll notice Google Contacts Manager has created two new groups: “cards” and a group with today’s date with a name like “imported on [date]”. These two groups are identical, so I’m not sure why Google creates both of them.

  7. Perform another ‘merge’ to clean up any duplicates you may have created by importing your Apple contacts.

    More > Find & merge duplicates…

  8. If you’re being selective about your contacts list, sift through the new ‘cards’ group, adding any desired contacts to your “Sync with iCloud” group.
  9. Once your “Sync with iCloud” group is pruned and ready to go, export it to vCard format.

    More > Export…

    Make sure you select your iCloud group from the drop-down menu under “Which contacts do you want to export?” or else you will be exporting every contact in your Google Contacts list. Of course, if you’re going to export all contacts, go ahead and select the entire “My Contacts” list.

  10. On your Mac, drag the vCard onto Address Book.app to import the contacts. They will sync with iCloud almost instantly.

That’s it! You’re done. It isn’t a perfect process by any means, but it enabled me to merge my Apple Address Book with my Google Contacts, then import only the important contacts back to iCloud.

Drawbacks

1. This is a manual process, so any changes to iCloud will not be reflected in Google and vice versa.

2. The creation of the three new Google Contacts groups is a bit messy. Once I was done with step 10 above, I deleted the two groups created by the vCard import. This isn’t necessary, but I found them a little annoying to look at.

Dear Apple and Adobe

 

Update: Steve Jobs Responds! Well, not to my letter directly, but it hits on the major points and is a well-written explanation of Apple’s position.

Dear Apple and Adobe

I’m a long-time customer and have spent more money on your products than I have on just about any other aspect of my life. I’ve spent more money on your products than I’ve spent on my healthcare, vacations, kitchen appliances, children’s school supplies, or home entertainment system.

In return, you’ve increasingly shown a disregard for my needs and concerns, and have acted in ways that demonstrate all you want from me is my money.

For example, both of you have constantly forced me (or at a minimum pressured me) to buy updates to products I already paid for. For years I went along with it because I bought into the sales hype and assumed these updates would somehow make my life better.  In most cases, they did not.

Adobe, your constant tinkering with the Creative Suite has brought a few nifty tools to the world, but these new tools will not get me to overlook the incredible bloat you’ve unleashed on my computers — almost 6GB of program files on my Windows PC at work, and over 7GB of app files on my Mac at home. Your applications feel more unstable with every release, and your UI feels slow and unresponsive despite the extra RAM and other hardware upgrades on my machines. Some of the biggest security holes on my computers are due to your Acrobat software — the very same Acrobat software I’ve learned to hate because of how bloated, complicated, and unfriendly it has become. It feels like it gets worse with each release.

Apple, your innovation is refreshing. Adobe could learn a thing or two by examining your software: increased productivity through reduced feature sets and cleaner UI. Simple is usually best. However, despite your continued excellence in design, your behavior is repulsive. You’ve consistently screwed your early adoptors via your pricing schemes and forced millions of Americans to use a phone network they detest. (Why? Because AT&T was willing to give you a bigger cut of the revenue?) Worst of all, the totalitarianism displayed in your latest iPhone developer agreement is breathtaking. It appears your goal is to piss off everyone, even your staunchest allies… like Adobe.

Apple and Adobe, you used to play well together. You both benefited from your long-term relationship and grew into very large, very successful companies. I sincerely doubt either of you would have survived the 1990s intact if it weren’t for your partnership. Desktop publishing was the Mac’s forte and the one thing that kept it afloat when the buzzards were circling. And who provided the most popular DTP software? Adobe (and the companies Adobe acquired, like Aldus and Macromedia).

Adobe, I know you’re mad because Apple won’t let you put your Flash technology on the new iPhone platform (iPhone, iPod, iPad). Honestly, if I were controlling a platform, I would have major concerns, too. As I mentioned earlier, your track record for software quality seems to be in a steady decline. Your products have become infamous for security holes, bloat, and crashing. It didn’t used to be that way. Somewhere along the line you dropped the ball, and now it’s coming back to bite you. The good news is that it isn’t too late for you to reign things in and regain control of your software. Stop trying to please everyone by adding every conceivable feature under the sun, and really focus on the most important elements. Drop the cruft. Clean the cupboards. Get that lint out of your bellybutton. Once your software is respectable again, you’ll be in a much stronger position to complain about Apple.

Apple, I don’t know what happened to you. You went from being a popular underdog to being the class bully. You’re in danger of becoming as popular as Microsoft in the European court system. From where I sit, your biggest mistake has been the idea that you can take over the world, one industry at a time. Of course, many companies are aggressive and set big goals for themselves, but they don’t stab their partners in the back as quickly and viciously as you seem to do. Your hubris and eagerness to expand into your partners’ markets is going to be your downfall. People have liked you because of your design sensibilities and because you were the hip underdog. You are no longer the hip underdog, and with time, other companies will create products that will be (almost) as stylish but also cheaper and with equivalent or greater capabilities.

The bottom line is that neither of you are choir boys, and I’m fed up with your bickering.

Adobe, stop playing the sympathy card. It’s a complete turn-off because I know how crappy your software can be. Granted, it’s unfortunate that so many people depend on Flash and Flash doesn’t work on the iPhone platform, but Flash is not a web standard. For all its shortcomings, the iPhone platform has one excellent quality: a top-notch HTML5 browser. Standardistas have been warning people not to go all-in with Flash for years, and now we see why. If it isn’t part of a standard, it will not be incorporated into some products. It’s the vendor’s choice. Simple as that.

Apple, stop trying to take over the world. We’ve seen what happens to other companies who try it, and it never looks pretty. Focus on your core values and let your partners do their thing without stepping on their toes.

Oh, and ditch AT&T already, will ya?

Respectfully,

Philip

Accessibility development tools

There are a great set links for free development tools (validation services, browser toolbars and plugins) posted on the Web Access Centre Blog today:

Looking for alternatives to Bobby and WebXact? Try these!

Anyone familiar with accessibility should already know about Cynthia Says and a few of the web-based validation services… what I was impressed with were the links for the browser add-ons, specifically the Web Accessibility Toolbar for IE. It’s very similar to Chris Pederick’s popular Web Developer Toolbar extension for Firefox (which I use religiously), and is a nice upgrade from Microsoft’s ho-hum IE Developer Toolbar. Lastly, Jon Gunderson’s Firefox Accessibility Extension is another great Firefox add-on.

Check out the other links mentioned in the blog post, and the Web Access Centre’s site when you have time.

Loading Captivate files into an AS3 Flash SWF

Update April 7, 2008: I’ve written a new AS3 class named LegacyCaptivateLoader that uses ExternalInterface to bridge the AS3 SWF and the Captivate SWF. Check it out.

I guess I’m late to the party, but I only recently realized that although a Flash Player 9 SWF can load an older Flash Player 6/7/8 SWF, it can’t communicate with it.

(In my defense, since we haven’t really started using ActionScript 3 at work yet, I’ve been a bit slow in switching to AS3. The leap from AS2 to AS3 is pretty daunting, so I’m sure I’m not the only one dragging my feet!)

Turns out the mechanism that processes the ActionScript (the ActionScript Virtual Machine, or “AVM” for short) has been rebuilt. Flash Player now ships with two unique ActionScript processors: AVM1 for legacy ActionScript 1 & 2 SWFs, and AVM2 for ActionScript 3 SWFs. Without getting overly technical, this enables AVM2 (Flash Player 9 SWFs) to be exponentially faster than AVM1 (Flash Player 8 and lower SWFs).

As you can imagine, many Flash developers — like you and me — still need to load old SWFs into a new Flash Player 9 (ActionScript 3) user interface. For instance, many Flash-based e-learning courses load ‘content’ SWFs that were created a couple of years ago with Flash MX (7) or Captivate. No one wants to recreate or republish a few years’ worth of development files.

To accommodate people who still need to use their older SWFs, Adobe configured Flash Player to allow AMV2 SWFs to load the older AVM1 SWFs in a virtual sandbox. But, as I mentioned, there’s a catch: these AVM1 SWFs cannot communicate with the parent AVM2 SWF.

This is a very big problem for many Adobe Captivate users. Adobe didn’t wait for the Captivate development team to convert Captivate to AS3, which means Captivate users are still publishing AS2 SWFs on a daily basis. A large number of Captivate users ‘play’ their Captivate files in custom Flash-based course interfaces. If they want to use a newer AS3 interface to control their Captivate SWFs (play, pause, etc.), they’re out of luck.

I guess you can’t blame Adobe for not updating Captivate’s codebase; Captivate has probably had the same codebase since early versions of RoboDemo, and converting to AS3 would probably require a complete overhaul of the product. No small task.

The Experiment

Anyway, I’ll get to the point: I researched the different methods available for AVM1 to AVM2 communication, and discovered there are a few workarounds that can enable the AS3 SWF to communicate with the AS2 SWF. I spent the entire day whipping up a Captivate-specific proof-of-concept, which can be viewed here.

For this experiment, I used LocalConnection. I’ve also been researching an ExternalInterface method, but the LocalConnection method was much easier to implement and doesn’t require JavaScript.

Because LocalConnection requires the old SWF to have specific LocalConnection code inside it, we can’t use LocalConnection on Captivate SWFs without a little help. I was able to use a proxy SWF to load the Captivate movie.

I’m not ready to explain the code and hand out the source files, but I hope this proof of concept can help others out. The short version is:

  1. A ‘player’ SWF (AS3) loads an AS2-based ‘proxy’ SWF. This proxy SWF is configured with custom LocalConnection settings allowing it to send and receive commands from the AS3 player.
  2. The proxy SWF loads the Captivate SWF. Since the proxy SWF and Captivate SWF are both AS2, they can communicate with each other using the famed ‘Captivate variables’.

Thus the AS3 SWF sends instructions to the proxy SWF, which relays the instructions to the Captivate SWF. Conversely, the Captivate SWF sends data (frame count, current slide, etc.) to the proxy SWF, which then sends the data via LocalConnection to the AS3 SWF.

BTW, using LocalConnection to bridge AVM1 and AVM2 isn’t an original idea… many people have blogged about these concepts over the last year or two, and had some good tips (see my references at the end of this post). There are even a few functional commercial and freeware products out there.

I decided to develop my own method out of curiosity, and because most of the existing products are overly complicated, designed to handle way more than my dinky little Captivate files. Plus I wanted to create a system that would have the ‘Captivate variables’ built-in, so it will be plug-and-play with any Flash-based Captivate loader.

Caveats

There are some very big caveats when using LocalConnection to bridge AVM1 and AVM2 SWFs; these caveats are big enough to make me question just how far I want to go with this project.

Caveat #1: LocalConnection is asynchronous. This means it can’t return values, and it may not kick in as soon as you’d hoped. I learned firsthand that LocalConnection worked much faster in my local environment than it did after I uploaded it to the server.

Caveat #2: LocalConnection works independent of the browser, and can only have ONE active connection per unique LocalConnection session. For instance, if I create a course that uses a LocalConnection named “FlashToCaptivate_LC”, I can only have one instance of that course running on my computer. If I open a second instance of the course, regardless of which browser it’s in, or whether or not the course is local or online, the second course will return a LocalConnection error because the connection named “FlashToCaptivate_LC” is already in use. Think of it as a phone number without call waiting. If someone is on the phone and you try calling, all you’ll get is a busy signal. That’s LocalConnection.

What do you think?

I’d love to hear any feedback you might have about this topic, including whether or not any of you have tried LocalConnection yourselves.

Resources

Here are some good resources/discussions about the topic if you’d like to learn more (no particular order):

Tip: Quick and efficient screenshots without special software

I’ve noticed many people use programs like TechSmith SnagIt to get screenshots. While SnagIt is a fine program, I think in many cases it’s overkill. Here’s a really simple way to get screenshots without needing any special software.

  1. Grab screenshot using Print Screen.
  2. Paste screenshot into Paint.
  3. Save in your preferred format (TIF, BMP, GIF, JPG, PNG, etc.).
Note: Apple Macintoshes come with the utility “Grab”, which is pretty nice and easy to use.

Print Screen

In the old days, pressing the keyboard key “Print Screen” literally meant “make a printout of screen.” Nowadays, it means “take a snapshot of the screen and place the snapshot on the clipboard.” Once it’s on the clipboard, you can paste it into any program that accepts images, such as Microsoft Word, an email program like Outlook, image editors like Photoshop, and even specialized production software such as Flash or Illustrator.

The biggest headache people usually face is editing the screenshot once they’ve pasted it into their program of choice; many times you only want a portion of the screen, not the contents of the entire monitor. Tip: Holding “Alt” on your keyboard while pressing “Print Screen” will only capture the active window. See the illustration below. This can save you a ton of time if you’re taking a lot of screenshots.

Illustration of the difference between using Print Screen and ALT + Print Screen
Use the ALT key to limit the screenshot to the active window instead of the entire monitor.

Pasting into Microsoft Office Documents — Beware!

Microsoft Office’s default document resolution is 96 pixels per inch (ppi). However, all major operating systems (Windows 200/XP/Vista, Mac OS X, Linux) and all major web browsers (Internet Explorer, Firefox, Safari, and Opera) use a default of 72ppi. When pasting a 72ppi screenshot into a 96ppi Microsoft Office document, MS Office automatically scales/stretches your image to match the document’s resolution, often rendering the image blurry or distorted.

Sample image illustrating how Word makes screenshots look blurryScreenshot pasted directly into Word. Notice how blurry it is.

What does this mean for you? It means you should never paste your image into Word or PowerPoint unless that’s the image’s final destination.

If you need to send someone a screenshot for them to use in whatever program they use (InDesign, Illustrator, Dreamweaver, Photoshop, Fireworks, etc.), you should send it as an image file, such as a TIFF, JPG or PNG. DO NOT paste the image into Word or any other MS Office application.

How Do I Make the Screenshot Look Crisp in Word?

If you intend to use your screenshot in Word, you should prep the screenshot by changing its resolution to 96ppi without resampling the image, then import the image into Word (don’t use ‘paste’).

Changing the image’s resolution will require an image editing application such as Photoshop or Fireworks. Trust me, it’s easier than it sounds. Here are the steps:

  1. Paste the screenshot into the image editor (in this example, Photoshop)
  2. Go to the image’s properties and change the resolution from 72 to 96. (In Photoshop, go to Image > Image Size, and be sure to UNcheck “Resample image”)

    Photoshop's Image Size settings

  3. Save the image in a Word-friendly format. I find BMPs work the best.
  4. Go to Word, and select Insert > Picture > From File
  5. Choose the image you just created and click OK.

Your result will look something like this:

Comparing the two different images in WordTwo screenshots: one edited to be 96ppi then ‘inserted’ into Word (left), and one pasted directly into Word (right).

Big difference, eh?

A Tale of Two (or more) Computers

A computer is born, and another computer dies (“I’m not quite dead!” he says in his best Eric Idle imitation).

(Mac) Hi, I’m a Mac.
(PC) And I’m a PC.

I’m sure all of you know this commercial by now. As with many other geeks around the world, I started salivating with the advent of Intel-based Macs that can run Windows natively. Mmmm… Maaaac…

And to me, it’s funny that many of my coworkers and friends are surprised at my interest in the Intel Macs. You see, these days I’m known as a PC guy; everyone thinks that’s how I got started, and that I’m a total Windows nerd. Even my stepkids. [I’m trying hard not to yell “WELL, I’M NOT” right now.]

This is probably because I build my own PCs, by which I mean I buy parts and assemble them. These PCs are used for everything from my workstation(s) to my arcade cabinet. At last count we had six functioning PCs in our house (2 laptops and 4 custom PCs for anyone keeping score).

But I wasn’t always Mr. PC.

Let me take you back in time, to 1990. My stepfather, who has his own business, has been an Apple user since the green-screened Apple IIe. Around 1990 he was using an Apple SE, and decided to get a PowerBook. It was easy enough to use, and I typed a few (very few) high school papers on his Mac. I was also a guitarist in a rock band; one day we needed to make some flyers for a gig, and somehow I wound up using my stepfather’s Mac to make the flyer. A romance was born.

In the late 80s and early 90s, my brother had been a total PC guy (he aspired to be a computer programmer), and was always telling me how many great things you can do in DOS. I was highly bored and uninterested. The closest I had come to DOS at that point was a Commodore 64 in middle school. The Mac had a nice GUI, and was fun! (See any parallels to e-learning, anyone?)

Over the next decade, I worked as a prepress typesetter/graphic designer. Not surprisingly, I was a staunch Mac user and advocate. I graduated from OS 6 to OS 7, then OS 7.5, which I highly enjoyed. Around OS 8, when the PowerPCs came to life, things started becoming less fun for me; it seemed my Mac was crashing more often, the computers were getting more expensive, and with each new OS, the software I owned would stop working! Being a poor student at the time, I couldn’t afford a nice new PowerPC, and prayed Apple would let other computer companies start making Macs, which I had hoped would drive the price down. Sure enough, they tried, but it was a short-lived affair with a messy divorce.

By OS 9 my Mac (my 4th Mac in 10 years, I think) was barely functioning. Even the Macs at school kept crashing. I was also increasingly frustrated at the lack of software titles available for Macs. The few you COULD get were much more expensive than their PC counterparts.

At this point I had dabbled with Windows PCs a bit at work, and was forced to use Windows 98 at one of my jobs. I was pleasantly surprised that my beloved Adobe and Macromedia products worked just as well in Windows as they did on a Mac! But I still refused to give up my Mac at home.

In 2000 I wanted to get another Mac, this time one that could run audio software such as ProTools; I wanted a DAWto do computer-based multi-tracking, but they were WAY out of my price range. ProTools systems at the time were around $10K, AND ProTools was only supported on a select number of Mac models. Sheesh.

One day I complained about it to my PC-loving brother, who whispered in my ear “build your own computer! It will be cheaper, you can just get the parts you need, and you can control the quality of the components!”

I thought about it and realized that while audio recording software had long been the domain of Macs, things were changing. The tide was shifting, just like how Adobe and Macromedia made their products work great in Windows.

I took the plunge and built my first computer. It was easier than I expected, and probably 1/3 the price of a comparable Mac. I embraced the extensibility and flexibility of PCs (though I’ve never loved Windows), and gave up my Mac allegiance. That’s right, I went to the Dark Side. Besides, Steve Jobs was back and putting out a new operating system every 6 months; I was tired of keeping up and couldn’t afford it anymore.

Fast-forward to today: my 6 PCs all run some version of Windows, though I’ve got Ubuntu (Linux) here and there. But something has changed inside me. I’m tired. I’m worn out. Windows is stale as hell, and after seven-plus years, I’m still building and rebuilding computers… it feels like it never ends. Sometimes I find myself thinking it sure would be nice to buy a pre-configured system so I don’t have to work under-the-hood anymore. I want to be a user, not a builder. I see entire Dell computer systems going for less than the price of my computer monitor in 1999.

And I see Intel Macs.

Mmmm… Maaac…

My birthday was in November, and guess what I did? I finally bought myself a Mac for doing audio production! I bought an Intel iMac with 4GB of RAM and a 500GB USB drive, and it cost less than my PC laptop from 2004. Sweet. I felt as if a new world was dawning.

As I unpacked my iMac (which the wife refers to as the iMistress), I dreamed that the days of configuring my computer, spending hours installing software, and all the other tedious ‘administration’ stuff was gone. If you’ve ever unpacked these new iMacs, you’d think the same thing: they’re ready-to-go out of the (very pretty) box, with only ONE cable to plug in, aside from the mouse and keyboard. I had it unpacked, assembled, and turned on in about 5 minutes. Mmmm… Maaaac…

Then something funny happened; I checked the OS software version and discovered that my NEW iMac didn’t have the latest flavor of OS X installed! I had to WIPE THE HARD DRIVE AND DO A CLEAN INSTALL! D’OH! This is something I had done a million times on my PCs, but nonetheless, I thought was behind me.

And let me tell ya something, Mac OSX does NOT install any quicker than Windows XP. Actually, If I had to bet money, I’d say Ubuntu is the easiest OS to install, hands-down.

Installing Logic Pro (audio software) took over FIVE HOURS. Oh.. my… God. And am I the only Mac owner who hates iTunes and likes two-button mice?

But this is a tale of TWO computers… so let’s get to #2: my Windows workstation.

I use this computer for everything, from general email and web surfing to critical development projects. It’s my cornerstone. And it died unexpectedly Saturday night. I’ve been troubleshooting PCs for years, and for the life of me I couldn’t figure out what was wrong with this PC.

I started wondering if it was a sign to go out and buy that pretty MacBook Pro I’ve been flirting with. Since it’s an Intel Mac, I can install Windows on it and use all of my existing software. It even has a DVI port and can run my 21″ widescreen LCD. But on reflection, I wondered if it would be any better than my iMac (which in case you’re wondering is in a different part of the house and reserved for my audio work).

Just as I was about to throw in the towel and pay a visit to the Apple store, I discovered the problem with my PC: corrupt RAM. An easy fix.

So there goes my half-baked dream of becoming all-Mac, and here comes yet another trip to the PC store to get some RAM… and maybe a few other components to tinker with when I have time. 🙂

Oh, and in case any of you are wondering why I’m not responding to your emails, it’ll probably take another night for for me to install all of the Windows service packs and security updates, then another 2 nights to reinstall all of my production software. Should be a blast. Not.

LMSs are just websites… no, really!

I had an interesting conference call the other day regarding a learning management system’s browser support. We’re trying to implement a new LMS, and it needs to be accessible for Mac users. The vendor promised us Mac support before the contract was signed and — surprise! — it doesn’t support Macs at all. It doesn’t even run in Firefox on a PC. (Gotta love sites that still use ActiveX and restrict you to Internet Explorer on a PC.)

So we had an internal conference call to discuss the issue, and I was trying to explain to some cross-town colleagues that a well-made LMS should adhere to web best practices, and by nature should be platform neutral. After all, an LMS is just a website, and should work in any browser.

Then one of my colleagues blurted out “an LMS ISN’T a website!” I was flabbergasted. I mean, I know LMSs seem complicated and all, but they have a web-based front-end and a database back-end, just like any corporate or retail website. When you boil it down, even Amazon.com is just a website (ok, a very complicated one, but a web site nonetheless).

LMSs are basically HTML (often delivered via PHP or ASP), a database, some CSS, some JavaScript, and maybe a little XML for good measure. There is no reason anyone should be using proprietary and browser-specific code in a website, especially in an LMS that should be as accessible as possible, allowing your training courses to reach the widest possible audience.

*Sigh*

Her comment really struck a nerve with me. Over the last year, I’ve learned that many of the people involved in bringing an LMS to a company are NOT technical people. Many of them don’t understand the basic technology involved, and even fewer have any grasp of best practices and standards for web-based technology. The key decision-makers are often basing their decisions on what the vendor has promised the LMS can do — usually in a series of sales pitches and extremely controlled demos — not the recommendation of the technical people who will be using the system on a daily basis… like me!

And I’m pretty sure this is the case at MOST companies, not just mine.

It feels like someone bought us a used car from a shady dealer:

  • without having our in-house mechanic look under the hood (“Why should he look at it? I’m buying it from a dealer, so there’s a warranty!”)
  • without taking it for a test drive (“When the dealer turned the ignition for me in the showroom, it sounded great!”)
  • without checking consumer and professional reviews to see if the car performs well (“Oh, I didn’t know it has a rebuilt Yugo engine… I just saw a picture, and it had a really nice paint job. Plus it comes with a CD player! Didn’t you say you wanted a CD player?”)
  • without checking to see if the person driving it is capable of driving it (“You didn’t say you needed an automatic transmission! Can’t you just learn to drive an 8-speed stick shift? I already signed the lease. What do you mean it’s too small for you? I know you’re 6’5″, but you can still squeeze into a compact car if you need to, can’t you?!”)

…you get the drift.

It’s hard for me, knowing that I will be one of the primary users and administrators of this LMS, and that it doesn’t even meet our most basic need: running in a browser other than Internet Explorer. Again, the vendor said they’d ‘fix’ this, but with proper planning it could have been avoided altogether. And their fix will only make the learner module platform-neutral, not the manager or administrator modules, including the all-important report writing feature… they’ll still require IE on a PC. Bah!

Folks, it’s simple — if you have to paste a “this site works best with XXX browser” message on your site, whether it’s an LMS, an online course, or just a website for your mom’s knitting club, you’re doing something wrong. Do us a favor and stop it.

And if you’ve developed a mega-expensive LMS that only runs in Internet Explorer — especially if you’ve designed it in the last few years — shame on you! You should know better!

Oh, and a side note: my colleagues promptly and authoritatively informed us that they discussed Mac support (specifically Safari support) with the vendor, then did their own research into the ‘major’ LMSs, and no, NONE of the major LMSs support Safari. To which I quietly grimaced, bit my tongue, and slowly walked away from the phone.

I spent the next 60 minutes on google and came up with the following results: of the 15 major LMSs I could think of, 10 clearly state that they support Safari and/or use browser-neutral code. 4 clearly indicate that they do not support Safari, and one LMS didn’t give me a clear indication one way or the other. So that’s roughly 2:1 support for Safari. People, if you’re going to use ‘industry data’ as an excuse for bad programming, at least get some real data. Sheesh.

Assistive computer technology and web accessibility

Just thought I’d pass this link on: http://www.assistiveware.com/videos.php (short write-up here — thanks to Roger Johansson for the link.)

These are video profiles of people with disabilities — mild to severe — who use assistive computer technology to improve their lives. Some people use their computers to simply help them with their jobs (such as a blind person who is a professional French-to-English translator), while others use their computers as a lifeline to the rest of the world.

I want to publicize this link for two reasons: One reason is because the people in the videos are completely inspiring; I can only hope that if faced with a similar situation I can be as positive and productive as they are.

The other reason is because as e-learning/web developers, we have a responsibility to be aware of the needs of people with disabilities, and try our best to make our work accessible. For e-learning and web development, this has become surprisingly easy, yet many developers still don’t do their part, or even realize that what they create isn’t particularly accessible.

Armed with a basic understanding of accessibility, and with a little planning, a web developer can create courses and/or websites that contain rich content — even Flash movies and videos — while supporting a majority of assistive computer/alternative web browsing technologies.

If you Google “web accessibility“, you’ll find a ton of tips and rules of thumb for making websites accessible. Here’s a great starting point: http://www.w3.org/WAI/quicktips/Overview.php

I hope you can spare some time to read a little about the subject; in this case, I think a little knowledge can go a long way. It isn’t hard to make sites accessible, I promise! 🙂

PS – I’m not affiliated with nor do I endorse AssistiveWare, the company that produced the videos.