Friend Me
 Follow Me
 Feed Me
a blog by ken pardue

Wrapping my head around Ember.js.

So, I’m a PHP scripter that hasn’t done a lot of coding in a while. I’ve done some, but not a lot, of JavaScript, and college was, well, let’s just leave it at lacking in formal programming education. It seems pretty clear that the next step in responsive web applications is to run the entire app on the client side, only communicating with the server to download the application file and subsequent database communication. I get that. I also like what I’ve read about Ember.js and its approach to solving these problems (but I’m open to other solutions, too).

I’ve read the information on the Ember.js home page, and I get most of it (I think), but what I’m lacking is knowledge about how to structure my app as I start developing a slightly more complex site/app. There’s so many different ways people are solving problems that there’s no single this-is-how-you-get-from-point-a-to-a-functional-web-app guide. And if there were, I’m sure they would assume that I have knowledge about structuring MVC apps and advanced JavaScript to get there.

So here’s where I’d like to go with Ember.js: I want an app that has two main templates: one for user login which is served up initially, and one to house the rest of the app after logging in. After logging in, I want a main navigation pane that controls/changes out content in another pane (eventually based on user permissions, but I’ll start with just having it work).

How should I structure my app?  Here’s what Ember.js provides out of the box in their starter kit:

So, do all of my models, views, and controllers for the entire app go into app.’s?  If so, how do I structure those components inside the file so that they are easy to navigate?  How should I keep them organized, by components, or by keeping all models together, views together, etc?  If not, how do I load the separate components?  Should I have folders for models, views, and controllers?  If that’s the case, how do I load them?  Do I have a giant list of <script src=* elements in my index.html page?

As I’m planning out my components,  I’m assuming that something like this would be what I need to do:

If I’m understanding this right, I would have an appController that would launch when the application first begins.  It would have a loggedIn property.  I would set an observer on that property such that if it were false, I would do a view.append() a login template to the Site Handlebars Template.  Otherwise, I would view.remove() the login template, and view.append() the main page template.  The main page view would contain a Navigation view that would never change, but itself controls what shows up in the Content View.  It would load whatever template is associated with the Component Button that is active, and each template would have its own models, views, and controllers for the functionality associated with it.  (how do I load in the extra templates and their associated models, views, and controllers?)

Is that anywhere near a correct big picture view?  How on earth do I structure the files and code associated with that?  I’m sure state charts play some sort of a role here, but I have no idea how to plan them out and implement them.  I’m encouraged that they appear to be built into ember.js now, according to the website, because there’s so much new material to learn here I’d rather focus on what’s available out of the box rather than how to do my task with a half dozen different frameworks or components.

In addition to structuring the app know I still have to learn the process of writing a RESTful back end, another huge learning task in itself, but I’m okay for the time being just using fixture data.  Heck, even if I used more traditional methods for developing the components I’d be okay; I’d just really like the responsiveness of an interface like the above that’s super fast.

 

An Open Complaint about Suddenlink’s Incompetency

I decided to get the Suddenlink TiVo box after not having TiVo since 2006. When Suddenlink upgraded to an HD lineup in 2006 I thought it more convenient to use the new Suddenlink HD DVR instead of TiVo because TiVo’s HD box was prohibitively expensive compared to renting the Suddenlink DVR. When I canceled the TiVo rep was very friendly, and said that he was sorry to see me go but that he understood the price advantage and didn’t blame me. Over the years I’ve heard horror stories of inept or misinformed Suddenlink service technicians pairing CableCARDs with Tivo devices. Some people were told that they couldn’t get premiere channels, others that they couldn’t get HD channels, and others still that CableCARDs wouldn’t work right at all with the TiVo. In light of such inconsistency, I decided to stay away from TiVo, despite far preferring TiVo’s service to the clunky Suddenlink DVR.

A week ago I noticed a commercial that Suddenlink was now offering TIVo service in my area. I thought, “Surely this is a great way to get back on the TiVo bandwagon. Suddenlink must have worked out the kinks in the installation process *in their own implementation* of the TiVo box. I couldn’t have been more wrong. The Suddenlink rep came to my house, installed the TiVo box, and paired the remote with my television so that it would control the volume. Fine and dandy. I tried to locate the Media Access Key so that I could configure the iPhone and iPad apps to work with the box, but couldn’t find it. I suspected that Suddenlink may have disabled this functionality (which wouldn’t have surprised me), even though the iPad app (and detailed instructions from TiVo on setting it up) is a feature linked to from their TiVo promotional website at suddenlink.com/tivo. If this was the case, Suddenlink was being disingenuous at best, and engaging in false advertising at worst.

I contacted Suddenlink’s email support. They wrote back and told me to log into my TiVo account at TiVo.com to see if the Media Access Key was located there, and to try the online chat for more assistance. I wrote back saying that I had already tried this, and I hadn’t received any login credentials for accessing my TiVo account that Suddenlink enabled for me, and when I tried to activate the TiVo on TiVo’s website, I got the message “You cannot activate service on this DVR. Please contact Suddenlink Customer Support at 1-877-457-9849 for assistance.”

I tried the Suddenlink chat. I spoke with a person named LaShonda I believe. After explaining my situation, she resorted to finding different ways to tell me that she couldn’t help me, that all she can do is activate the TiVo box, and that I need to contact TiVo for more assistance, since it looked like the issue was on their end. After explaining to her that I had already tried activating the box with TiVo and they referred me back to Suddenlink, she gave me a phone number to contact Suddenlink’s phone support for more assistance, but again implying that the problem wasn’t with them, it was with TiVo. Before ending the chat, I asked her to confirm that the number she gave me was for Suddenlink since it seemed to be on their end. She said that yes, it was for Suddenlink Customer Support.

I called the number.

“Hello. You’ve reached TiVo Customer Support.”

Clever.

I spoke with Andrew with TiVo’s customer support. He was friendly and conversational, the only person I spoke to during this whole fiasco that made me feel like a valued customer and not like an obligation to satisfy. He convinced me that Suddenlink probably wasn’t being disingenuous and that it was more likely a technical issue. He walked me through updating my address and other information that had changed since I left TiVo in 2006. He pulled up the TiVo box and noticed that it wasn’t properly setup in Suddenlink’s system. It was in a Staging mode, activated but not associated with a customer. The problem was worse than simply not being able to find a Media Access Key; the TiVo would actually stop working after a few days. He told me what I should tell Suddenlink to resolve the issue, and said that after it was set up properly in their system all that would likely be needed was a quick reboot of the box.

I called Suddenlink back.

I spoke with a lady who’s name I didn’t catch. She said she had just gotten a TiVo two weeks ago herself. I told her what the TiVo tech told me and she said, “You know, I think you may be right.” I was put on hold for a time. She asked me to navigate around the Tivo and tell her what the menu options were. Apparently they don’t have that information in front of them. Asked for my email address to update their records. Put me on hold again. Asked for my email address again. Finally she told me that she thought it was taken care of but they would have to send a tech support out to my house to manually enter some information into the TiVo box. I agreed, even though it was an inconvenience.

The Suddenlink tech support person came to my house (my wife was home; I was at work), fiddled around for a bit, and finally declared that everything was fine on Suddenlink’s end. He wasn’t sure why Suddenlink sent him out there, because the problem was on TiVo’s end. He said I needed to go to TiVo.com and register the box using my TiVo’s service number. Remember now that trying to do so prompts an error message referring me back to Suddenlink. He left before I had a chance to call and talk to him, but not before telling my wife that they were having a lot of problems with the TiVo’s, and that ours was the first one he had seen that was actually working right. Except… it wasn’t working right! It was still in Staging mode!

I called Suddenlink back. Livid. I told the rep that I wanted to speak with someone who knew what they were talking about because I was about two seconds away from canceling all my Suddenlink services. I spent maybe a half hour waiting while he checked and rechecked things on his end while working with someone else on the problem. Finally he said that he had corrected the communication problem between TiVo and Suddenlink, but that he would have to send *another tech* out to our house to manually register the TiVo box with the system. Again. That’s where I stand now. I’ll be there this time so that I can badger him until things are working, but the sheer incompetence and failure of Suddenlink to know how their own system works across some 5+ customer support agents and no less than three visits from tech support personnel is absolutely stunning. If Suddenlink doesn’t resolve this this evening, I will be switching all my services to DirecTV.

Who Rick Perry *Really* Is

I’ve finally figured out who Rick Perry reminds me of.

Rick Perry is... Huxley

He’s the evil Huxley from Elmo in Grouchland!  The resemblance is uncanny!

One seeks to rule a land of self-serving, disgruntled followers by example of stealing anything he can grab from the less fortunate… the other stole Elmo’s blanket.

 

Exclusiveness vs. Inclusiveness

The wife and I have been visiting churches looking for a place that is progressive enough for our tastes, hoping to surround ourselves with spiritually-minded people. In this conservative area seething with Republicans, I have little hope of finding a progressive message, so instead have sought a place that will just leave politics alone. I thought we had found such a place, but this Sunday they blew that hope out of the water by letting a politician running for Lieutenant Governor speak briefly (after being introduced as a person who “went up against the President” while stating that “we don’t need less religion in politics, we need more, Amen?”) What’s more, it was announced that next week’s message will be delivered by no less than the Republican governor of the state, who will deliver his personal testimony. During the message itself the pastor railed on to great applause that we need more God in our schools, more God in the media coverage of the funerals of service personnel, and more God in government.

I have a couple of problems with this.

  1. Separation of Church and State is a principal that the United States was founded upon, by a group of individuals seeking to liberate themselves from the government-sponsored Catholicism of Europe. The founders expressly built into the vision for the country a freedom to pursue whatever religion (or none at all) for which an individual was inclined. As such, it is entirely improper for the United States government, or any extension thereof, to endorse one religion over another. The reference to God in the founding documents makes it easy for some Christians to ignore the principal of Separation of Church and State. However, the reference is used in the sense of calling a generic higher power, a universal ‘God,’ to inspire the populace that the nation is guided by something greater than itself. Public schools and the military are “ours” only in the sense that they are extensions of the Federal government. And as extensions of the Federal government they cannot favor one religion over another–especially given the diversity of beliefs contained within.
  2. That politicians pander to the public for support is a truism to the point that it’s practically part of the job description. If a politician says anything to a group of more than three people, regardless of the message it should be understood that it is being said with the thought of reelection in mind. This is why I immediately become suspicious when a politican makes reference to faith on a public platform. I don’t know why the Republican party settled on the Christian faith as a support base, but it frustrates me to no end that they have, as a good friend once put it, achieved wholesale ownership of evangelical Christianity. I vehemently reject this. Religion is a personal matter. The church would be better suited attending to the personal needs of adherents than maneuvering for political relevance and endorsement. It’s almost as if the church feels indebted to the GOP to the point of endorsement for the attention they’ve given it, depending on the political party to spread awareness of where the church itself may not succeed. To invite such a person into a church to speak is a terrible mistake. Most churches can’t manage their own internal politics, I don’t understand why they would want to involve governmental politics. At best faith should be a secondary motivating factor in a politician’s decision making process, steadfastly behind the Will of the People. And it should most certainly never be a part of a political platform.
  3. Christians cannot pretend that the rest of the world doesn’t exist, no matter how hard we try. There are 2.1 billion Christians in the world amongst a population of 6.7 billion. That means that there are 4.6 billion in other faiths inhabiting this small mote of dust traveling through space with us. In the Internet age, it’s simply not enough to take the pompous view that nations (religion-endorsing or otherwise) are islands unto themselves. We are all citizens of the world, in our own right. And we will never be able to change the minds of people whose cultures and faiths are as ingrained into them as ours is in us. Even if the laughable goal of every Christian adherent converting one non-Christian to the faith, we’d still be left with literally twice the population of China being non-Christian. We owe it to the survival and betterment of the species to be tolerant and understanding of those with faiths other than our own.
  4. For Christians to actively seek that the United States government endorse Christianity devolves us as a society several hundred years to the days of government-sponsored Catholicism. It negates the very reason that the founding fathers had for creating this country. And, perhaps most importantly, makes the United States as destabalizing of a force on the world stage as do the Islamic-based governments, that we so vehemently reject.

Please, for the love of God, keep politics out of faith. Express the tolerant inclusiveness that you claim to aspire by, not the exclusivity of the religious right.

Mac OS X Lion: My Review

I’ve got my two home Macs set up running OS X Lion now, which was released last Wednesday.

Overall, I like Lion.  It seems to me to be a solid release for Apple.  When Apple released Snow Leopard in August 2009, it was supposed to be a release that took a break from adding new features to the operating system in order to focus on replumbing the internals, as it were.  But even given that, Snow Leopard barely felt like new window dressings, and understandably so, since Apple had their team focused on cranking out iOS features (which frustrates me as one who prefers desktop OS X to iOS).  But Lion feels like Apple really did their homework to not only polish user experience but really strengthen the OS X’s security foundation.

Visually, Lion feels more mature.  It drops the blue lozenge buttons in favor of more subtle, squared off buttons.  Scrollbars make their exit in this release, appearing only while actively scrolling.  Scrolling itself is somewhat changed: what was scrolling down before is now scrolling up, changing the metaphor to more closely match the iOS style.  Instead of “scrolling a scroll wheel down a page,” you’re “pushing the page up with your finger.”  It’s taken some getting used to, but the metaphor translates well.  Also brought in from iOS is autocorrect, which in my limited use I’ve found to be much more helpful and less annoying on Lion than on iOS.  Mail looks drastically different, mirroring its iPad cousin much more closely.  iCal and Address Book now have user interface looks that resemble their leather-bound, real world analogs.  I don’t think I’m so fond of this change, and am confused why Apple, a company known for pushing the boundaries of design to deliver more usable experiences, would resort to a look resembling something that most people these days have scarcely used.

Lion really seems to be the under the hood plumbing update that Snow Leopard should have been, as well.  I think Apple is realizing that as its market share grows, they can’t depend on being safe from viruses just on account of the relative obscurity of the OS.  People will inevitably begin to write viruses for Mac, but Apple is doing their part to make this difficult.  OS X Lion introduces more robust support for Address Space Layout Randomization (ASLR) which makes it difficult for hackers to identify the location in memory that code may be running, and also offers better sandboxing of applications.  Microsoft has surprisingly set the gold standard in security the last few years.  Windows 7 has been known to be a very secure OS.  One security company describes OS X Lion as being Windows 7 Plus Plus, as far as security is concerned.  It means a lot to me to hear security researchers say that with Lion, OS X has surged ahead of Windows and Ubuntu Linux in terms of security.  Another new feature is full-disc encryption, for those worried about the security of their data.

What’s most exciting, though, is the support that third party apps will be building into their software in the coming months/years.  With Lion, Apple has provided a framework that completely eliminates the “Save” button.  And really, why not?  The very concept of the Save button is as obsolete as the floppy disk that so often represents it.  Why should the user need to worry about saving a file after x amount of changes?  Why should the user have to scream to the computer gods in agony when four hours worth of work is lost when a program with unsaved data crashes?  I say, let the Save button die, especially with the elegant system of versioning that Apple has introduced.  The beauty is that the file one is working on is always saved.  Every time you make a change to a document.  If the program crashes, when you reopen it you’re brought right back to where you were.  The computer gods need not be appeased.  When you close the program (or whenever you arbitrarily want to make one) a version is created, which makes a snapshot of the current document.  You can go back and browse previous versions, restore them, or copy and paste bits from one version to the current one.  And, since only the changed parts of the file are saved, rather than the file itself, versions aren’t very expensive as far as file size goes.

The next big thing coming for Lion is iCloud support, which ties together all the Mac and iOS devices (and even Windows, too) that we all own these days.  Apple will allot 5GB of free storage to store all of your settings and documents, and whenever a file is changed, the changed part of the document flies up to Apple’s servers and is then pushed back out to your other devices.  So let’s say I’m working on a Pages document, I throw in a chart and edit some text, run out of my house, open my iPad, and without giving so much as a thought to it, my document with the recent changes are present there.  It solves the biggest problem I have with cloud computing while giving me the biggest advantages: rather than having my data stored in someone else’s cloud and praying that they don’t decide to shut down my service for some random reason, I have a local copy of my files on all of my machines, all in perfect sync.

Windows users, do yourself a favor and get a Mac.  The new Mac Minis are real screamers.

For My Grandmother

It’s impossible to sum up 94 years of a beautiful life into a few short words.  So instead, what I’d like to do is just talk to my children, and tell them about their great-grandmother’s life, what an inspiring person she’s been to me, and what they should carry with them.

Gustava was born into a humble life in rural Louisiana just before the United States entered World War I.  To the daughter of a sharecropper, however, such world events were only distant tales.  Her family would rent from one land owner or another, moving from place to place with the work.  The places where she lived weren’t referred to by town or zip code, but rather by the name of the property owner.  The Hodge Place.  The Richard Reynold Place.  The Buck Evans House.  The Neal Place.

She was a middle child in a family of five sisters and one brother.  Childhood toys for her included a piano that she built from an old apple crate with pieces of wood attached to rubber bands for keys.  Popular music for her was found in church hymnals.  There was only one car in the entire town, a luxury owned by the town’s doctor.  The only journal she had was writing in the margins of a hymnal retired from the church her family attended.  In the margins she would write down the date and what she was doing on the rare occasion that an airplane would fly over her house.

She would ride to school five miles away in a two-seat surrey driven by one of her older sisters Myrtle or Irene.  But by the eighth grade her father’s declining health forced her to abandon school to finish bringing in the crop.  She took a job working for a school teacher family.  Though the work was hard–milking cows before daylight, washing and boiling clothes in a pot, starching and ironing linen suits–it was one of the most wanted jobs in Manifest, and one of the highest paying at $15 per month.

In February of 1941 she married a man who would serve as a town alderman and owner of an auto parts store.  The family had two daughters: the first just days after the United States became involved in World War II, and another following in 1948.  Despite many difficulties in marriage she always saw fit to do what was right for her family with a sense of pride and dignity.  Those words describe how she approached life: She clung to living a simple and dignified life with an innate stubbornness.  Nothing was more important than living a life of self-respect.  She knew that when those things were attended to, in faith to God, all other things seemed to fall into place.

She found beauty in simple things: flowers, a well kept yard, and the designs of Depression-era glassware that she collected with her best friend, Mazelle.  Together, the two of them shared a hobby of making trips to seedier neighborhoods to find people willing to sell their wares.  Both remarked that it was a wonder they made it through some of those trips.

But my memories of her of course come later in her life.  They are of a strong, independent woman retired from her career at K-Mart, living in a small, tidy duplex apartment.  Spending the night with her in her apartment was a highlight of my childhood.  We would sing songs together, go walking on the railroad track that ran beside her apartment, or take trips to go fishing or to garage sales.  Never for a moment losing her mothering spirit, she would make sure that my hair was dry after a bath by making me sit in front of the heater vent, and that I wasn’t getting too cold at night by covering me up after she thought I had fallen asleep.  Even as a widowed woman on retirement income, she always provided for my family when we couldn’t always provide for ourselves.  She made sure that I had respectable clothes to wear and supplies to bring to school.  Of course, as a boy I never truly appreciated those shopping trips, and always wanted to try to push the limit of what she was willing to buy me into what I thought was in style for school.  She never once lost patience with me for that.

She would always spend the night with us on Christmas Eve, and those Christmases were special indeed.  She approached the holiday with a wonder that was on my level. Leading us in Christmas carols while we sat sipping eggnog, illuminated only by the tree and the special candles that we would burn once yearly on Christmas Eve.  She kept us curious in where Santa Claus might be delivering presents at, but never at the expense of recognizing that we were celebrating the birth of Christ.

Even as she encouraged that nearly every dream I had was reachable, she planted the seeds that I would reach goals only through hard work.  I guess you could say that she gave me my first summer job, paying me to come and mow her lawn, even though the service could have been provided to her for free.  When I offered to do it for free for her, she refused and paid me anyway.  I was encouraged by her pride in me to go to college and stick with it through graduation.  We both found it rewarding that my college was minutes from her apartment, and every day I had classes she would cook lunch for us both.

She leaves behind a legacy of life lessons for all of us: Never use anything that life throws at you as an excuse to live without self-respect.  Value hard work.  Live simply.  Live with dignity.  And live in faith.

Learning the Next Big Thing (SproutCore or… something else?)

I’ve been toying with the idea of learning SproutCore for a while now as a way to learn more formal development skills than the PHP scripting I’ve been accustomed to.  I like the idea of an application that it more formally structured than the build-it-as-you-go-by-the-seat-of-your-pants approach that PHP pushes, and learning proper MVC structure.  I also love the concept of an application that runs on the client side and only calls back to the server when it needs data.  This strikes me as being a much more efficient and high performance way to do web applications.  I see a lot of benefit in this approach as I work on writing a replacement for our flagship app at work.

However, I’m increasingly struck by feeling that SproutCore isn’t quite sure what it wants to be.  For the last year, SproutCore’s direction seems to be blowing around in the breeze.  They appear to have obsoleted the Greenhouse interface builder they were working on; they introduced a templating system that bypasses the traditional way that Views were handled; they introduced a way to run apps based off of something called state charts but I haven’t seen much to officially sanction this on the website.  Now, at least as far as the 2.0 developer preview is concerned, they seem to be doing away with most all of the meat that made SproutCore itself, and making it an MVC layer optimized for jQuery.  I get the feeling that the entire framework is a boiling mish mosh and the developers are trying to figure out what kind of stew it’s going to be.

I’m sure I’m wrong in this characterization, but the point is that I’m now quite hesitant to put forth serious effort to learn SproutCore.  I can’t invest my time in something that I’m unsure will even be there in 6 weeks.  What’s more, the documents that are supposed to be teaching me how to code on the platform can’t keep up with the fervent pace with which the developers are changing the direction of the project.  I need a book, filled with official best practices on how to accomplish tasks and code examples leading up to the construction of a fully fledged app with user authentication.

I don’t know a lick of Objective-C or its style of development, but maybe it’s time to jump in with some Cappuccino and learn Objective-J instead?  However, something doesn’t feel quite right about Cappuccino’s approach of shoehorning applications onto the web while ignoring some of the web’s core features like HTML, CSS, and the DOM, but at least that way I could take my experience and perhaps back port it to writing proper Objective-C apps.  Maybe a shoe in the door to scratching the itch of writing the genealogy management app I’ve always wanted to write and take over the world.

Replacing Emoji...

WWDC 2011 Thoughts

So, the Stevenote has come and gone and has seen a fairly substantial set of announcements.

Most of the OS X Lion preview was a rehash of the preview that the company made last year, but exciting to me since I’m one of the few dinosaurs that’s more a fan of desktop OS X than iOS.  A few new tidbits were revealed in the comprehensive list of 250 new features that Apple has posted.  Amongst the high points for me include:

  • improved VoiceOver – I enjoy having the computer read something to me while I’m busy working on something else from time to time
  • the execution of AutoSave and Versions.  This is one that I have to say: really, whether Apple or Microsoft implemented it first, isn’t this something that we should have had at least 5 years ago?  The “Save” button should really have gone the way of the dodo along with the floppy disk.
  • installs only from the Mac App Store.  I question not having at least a USB drive to install from, but that leads me to
  • creates an installation partition for fresh installs.  This makes sense to me given the limitations of an App Store install.  I could complain about the death of a hard drive and losing this data, but these days everything is moving to more reliable SSD drives, and hard drives are (for practical purposes) replaceable only by Apple anyway.
  • search tokens in Finder and Mail.  I’m giddy for how much this is going to improve searching for things.
  • iChat service plugins and single-window buddy list.  Apple should have done this a long time ago.  Maybe people will stop looking at me funny when I tell them I’m still using AIM if I can also plug in a Yahoo Messenger or MSN chat credential.  Then again, it’s not like I chat with anyone, anyway!
  • delta (or patch) updates.  This one had to be a matter of time.  They only need to have a few thousand users have to update the full 6GB Call of Duty app to put a serious, and unnecessary, hurting on their servers.
  • Safari – Lots of cool stuff, WebGL seems to be built in, but as of this point has to be turned on through the Develop menu.  Tap/pinch zoom, could be useful on the Macbook Air.  Reading list (or Instapaper knock off) could be neat, but only if accompanied with a worthwhile RSS feed reader on iOS.  HTML5 media caching.  Very excited to see this, but mainly as to whether or not it’ll make it down the pike to iOS.  I would love to be able to make a web app that played our training videos at work offline.  MathML and WOFF support, good to see more open standards working into the mix, but Apple is still unsurprisingly quiet on WebM support.
  • iOS-style auto correction.  I don’t know whether this will be useful enough to outweigh how utterly annoying it’s going to be.

I won’t go into the iOS 5 features in as much detail because frankly they don’t interest me as much.  The main points I would talk about would be frustration that some of them don’t offer integration with OS X.  iMessage is a dead ringer for being supported in iChat, and yet it isn’t.  I’m still surprised that there’s no iBooks app for the desktop.   The new Reminders app stands out as a major plus because I’ve been feeling for years now that Apple is slowly deprecating To Dos from the calendar, and not only brings To Dos back in a very useful way (it’s awesome to be able to set reminders to go off when I arrive or leave a location), but also  syncs back with iCal on OS X.

AirPlay mirroring for iPad could well have inadvertently given Apple a console gaming device, a particularly interesting development given that Nintendo is due to reveal their next console tomorrow which is widely expected to be a gaming station that has controllers with six inch touch screens that can be undocked and used as stand-alone game platforms.

The meat of the announcement, though, was iCloud.  After much speculation, the iCloud announcement turned out to be more about where Apple is going rather than a specific product announcement.  One blogger noted that what will define the direction that computing takes over the next ten years will be the differences in how Google and Apple migrate to the cloud, in that Google’s approach is to build a web-browser only approach funded by advertising, and Apple wants to make the cloud the central store of information, and push that information down to client software that is optimized for whatever device it’s running on.

Now, the open source software purist in me would otherwise prefer the former approach, but 1) My data will still be centrally stored outside of my control, on Google’s proprietary servers, and I don’t trust Google. 2) I am annoyed with advertisements to no end.  I would much rather pay a fee to use something than have my own tastes scanned from my data and thrust back upon me in the form of unwanted solicitation. 3) Google is slowly building their own walled garden anyway, in the form of the Android and Chrome stores.  I mean really–the whole point of writing a web app is that it runs anywhere and Google is actively seeking to destroy that model by making apps “installable” only in their Chrome web browser.

So iCloud will be the one source for my data.  Applications (web or traditional) will push updates into the cloud, and those updates will be pushed back out to all of my connected devices.  Photos will not have to synced from my iPhone to my iMac with a USB cable; when I take a photo on my iPhone it will be uploaded to the cloud and will appear on my desktop (or the iPad I’m about to get).  When I edit a Pages document my changes will automatically go into the cloud and will appear everywhere.  When I purchase a song I can download it on all of my iDevices.  You’re given 5 GB for free, and none of your purchased music or apps count against that 5GB.  If you purchase Apple’s $25/yearly iTunes Match service, you’re guaranteed that you can access all of the music on your computer that matches a track in Apple’s ample database (which makes a lot more sense than Google’s approach–really, who wants to wait for weeks while a copy of their music library uploads?).

That’s the theory, anyway.  In practice, I have some questions.

  • Despite the fact that iCloud syncs photos back to Macs, I get the feeling that iCloud is focused more specifically on iOS than OS X.  I wonder if Apple will provide anywhere near the same robust iCloud support for OS X apps that they are in iOS apps?  I wonder if there will be an easy, seamless iCloud integration between iOS and OS X apps?  Case in point, the iCloud Documents demo featured syncing Pages documents between an iPad and an iPhone.  The Mac was specifically excluded.  Will the limited iOS variants be able to sync documents with the more robust OS X version of iWork?  Obviously integration between third party software will vary based on the interest of the developer.
  • While he was talking about the theory of iCloud, Jobs mentioned video several times.  However, in application, video was never mentioned.  Now, I have nearly 2 TB of video ripped from my legitimately purchased DVD’s.  My video library points and laughs and Apple’s 5GB limit.  What will my options eventually be for that?  I loved the rumor of having a new Time Capsule release that acted as a personal cloud, syncing one’s home directory across different computers.  That would do a better job to “demote the PC and the Mac to just be a device just like an iPhone, an iPad, an iPod Touch” and move the digital storage hub to the cloud, as Jobs regarded.
  • What I find limiting is that iCloud isn’t yet a true source without vastly greater storage space.  It isn’t a central storage place for all of my photos and videos.  It pushes photos to different devices and stores them for 30 days, while pushing the 1,000 most recent photos to iPads and iPhones.  My actual iPhoto library is 131GB.  That’s sure not going on the iCloud.  Until it will, I don’t think that promise will be realized.
  • More from a development standpoint than anything, will there be new web apps for iCloud, and will they be based upon SproutCore like the previous generation?

Mac Family Tree (6.0.10) Review and Feedback

With the opening of the Mac App Store, many titles that I’ve contemplated buying for some time have been on sale for deeply discounted prices, and thanks to a Christmas iTunes gift card I decided to jump in and get Mac Family Tree from Synium Software.  This blog will serve as both review and feedback for the developer.

What I like:

  • The bread crumbs in Mac Family Tree are probably the best implemented in any genealogy program I’ve used.  As I’m sure most family researchers are aware, it’s very, very easy to get completely lost in a family file.  Having a consistent way to travel back to a point, regardless of whether or not the context changes by clicking on a source or image, is extremely ideal
  • Source Handling is fantastic.  In the left pane, the source window tells how many sources there are, and the source list describes how many entries the source is assigned to.  A researcher can get to any of the entries to view its detail, and then use the aforementioned fantastic bread crumb trail to go right back to the source.
  • I like the way media is handled much better than how it was implemented in the previous program I was using.  The file is a central place for all of the media to be located, and a researcher can review all media in one place.  This makes much more sense than having the only way to review media to be browsing through individuals’ information pages and happen to notice that a picture is attached.
  • Tight integration with FamilySearch is a nice thing to have.  Although I haven’t personally used it, I can appreciate that FamilySearch feels much more purpose-driven than profit-driven, unlike its competitor.  But, a researcher isn’t limited to that, since the Web Search option allows searching across Ancestry, Ellis Island, Find A Grave, Footnote, Google, My Heritage, World Vital Records, etc.
  • The app has a fresh, fast appearance.  I count that as something I like only to counter it with the thought that it’s too focused on pizazz and not enough on substance.  The interface is pleasant to look at but clunky to use.

What I don’t like–and there are a lot of these but they’re mostly very minor:

  • One of the more interesting draws for the program, at least as far as screenshots go, is the 3D Virtual Tree, a representation of one’s family tree where you can navigate up, down, and around a network of individuals represented by blue or pink avatars.  While this is gorgeous to look at, it’s gimicky, and so cumbersome to navigate that it’s almost completely useless.  The Family Tree view accomplishes the same result and is much, much more practical.  It’s a real shame that the developers spent so much time making this utility and not enough refining the rest of the interface.
  • The fonts feel very non-standard.  It would probably make for a much more native feeling application if the fonts were less bold. They appear out of place next to other Mac apps.
  • Although Places is a wonderful utility allowing the user to plot an ancestor’s location on a 3D virtual globe of the Earth, it requires too precice of data.  It’s impossible to add just a county/parish or state through the search interface, for instance.  The search interface only allows one to tag specific cities, although you can manually enter latitiude and longitude for a location.
  • It would be very useful if the Places dialog was more granular and allowed a separate entry for county/parish.
  • The 3D world map doesn’t provide enough detail and is a fairly low resolution representation of the earth.  It would be much more useful if it showed state and parish/county lines.  The options to show day/night lighting and stars in the background are relatively useless here for researchers… unless of course your relatives come from outer space–a question I’m sure many family researchers wonder about!
  • The location of the search box breaks convention by being oddly located in the bottom right of the screen rather than the upper right.
  • The application doesn’t retain search results when navigating using the bread crumbs.  For example, a search for Union Parish brings up some 15 results.  I can click on one of those results to view its details, but when I go back, instead of showing the 15 results I see all of the places in the database.
  • The Person detail screen feels cumbersome and clunky.  I think most of this is because it suffers from Tab overload.  More on this in a moment.
  • When navigating the Family Tree view, the pane on the right side highlights the selected individual in a list of all of those in the researcher’s file, sorted alphabetically.  A much better use of this pane would be to show useful information such a birthdate and death dates, notes, etc. about the selected individual.  The current solution is useless, because there is no context for simply showing the individual’s name in a list of this sort.
  • The lines connecting spouses/children in the Family Tree View get very confused when complex families are introduced (e.g. families where both the husband and wife have multiple spouses, especially when there are children with each.  I’m not sure how this can be made visually distinct, but it’s cumbersome as is.
  • Perhaps it would be useful in the Family Tree View to have a way to set a default individual, e.g. the researcher, and have some sort of visual cue while navigating the family tree as to which relative to move to in order to get back to that individual?  With complex family trees, it’s very easy to get lost.  Having a visual cue leading back to a default individual would serve as an excellent bread crumb trail for context.
  • When assigning photos to individuals, if one photo is assigned to more than one person (e.g. a family group photo) MacFamilyTree shouldn’t make multiple copies of the photo in the Media Browser.  I should be able to view the photo and from the photo’s information see all of the people it is assigned to rather than a separate photo for each assignment.

The ‘Person Detail’ screen is where a researcher will spend many hours over the course of his or her research.  It also happens to be one of the clunkiest parts of the program, with a lot of unneccary and redundant information.  Here are my thoughts on how the ‘Person Detail’ screen might be improved:

  • Why is there a tab for “Additional Names?”  Not only is this a relatively rarely used field, but would actually be better placed under the Facts area.
  • “Person’s Families” is a very necessary item, obviously, because it provides quick access to a person’s parents, spouse(s), and children.  However, “Oldest Ancestors” seems like something that would be more appropriately found in some sort of report, or perhaps added to a Useful Information dialog that provides this and other useful statistics, such as the information in the “World History” tab.
  • In the “Person’s Family” tab, if I’ve already added parents and a spouse, why are “Add Parents” and “Add Partner” still visible, but grayed out?  Perhaps there’s some kind of bug with my data import, because I see the parents, a grayed out indicator saying “Family without Parents,” and the grayed out “Add Parents…” button.
  • “Person Context” on the right side seems to be somewhat redundant.  While I can see it useful to see an individual’s uncles or aunts, what this really does is replicate the “Person’s Family” tab, which is where all of the pertinent information is.
  • At the bottom of the screen, on the “Personal Events” tab, there are three separate columns covering the Place information (Place, State, Country).  This could be combined into a single field which leaves much more space for the information in the Description field, something that could very well be long enough to need it.
  • Also on the “Personal Events” tab, what is the point of having an extra column to display an icon for the event type (e.g. star for birth, a hammer for occupation, etc) if this same icon is repeated later under Event Type?  Instead, wouldn’t it be far more useful to be able to quickly see an icon indicating whether or not the given event has a source?
  • The “Sources” tab contains sources related to the selected person in a general sense. Why not just put that in with the “Personal Information”?
  • The options in the “Label” tab seem like they’d be more appropriate on the main screen.  Not only is it a small bit of information, just three check boxes, but it’s also information that’s extremely useful to have at a glance.  If I’m browsing through individuals, I’m not likely going to click on the “Labels” tab to see whether or not they areIncomplete or Important.

I realize most people who complain about an interface rarely come up with ideas to make it better.  While I’m far from being a user interface guru, I did take the time to at least put some of my thoughts to the screen with Photoshop:

Mockup for Mac Family Tree

Behold!  In one fell swoop I’ve eliminated the Additional Names tab, Old Ancestors tab, Notes tab, Sources tab, Label tab, and World tab, while presenting all of the pertinent information to the user by adding an improved Notes tab, combinging functions from the “Family View” into the individual view, and more efficiently locating Source and Label information.  I’m sure there would be a problem with reflowing content when it becomes too large on this screen, but at the outset, as a researcher, this looks much more useful to me.  Let’s consider:

We have the labels always visible on the screen.

We have expanded the area containing basic information about a person to include general source information.

We have a more robust Family Information screen that allows the user to add a new Father or Mother (since, as is the case for one person in my family, there may be conflicting information about who a person’s parents were–a person may have more than one father or mother listed), and we also have an indicator linking married parents.

We have a “Family Events” tab which, if thought through properly, could probably completely replace the Family view.

We have more useful “Person Events”, losing the redundant Event Type icon and replacing it with an indicator for whether or not an Event has Source information.  We also have a more compact and useful Place description, and a larger area to put in a Description of the event.

Finally, we have a new Notes tab which allows the researcher to type in notes about our Mr. John Q. User, as well as aggregate notes from other events attached to him.

Although I didn’t make a mockup for it, I envison the More Info tab here to contain the information such as the World History information, a listing of the person’s Oldest Ancestors, etc.  This may also be a good place to point out other useful information to the researcher, such as an improper birth and death date indicating the person died at the age of 147, or perhaps that there’s another John Quincy User in the database that might be a duplicate.

A New Twist in the HTML5 Video Saga

Late in the day, a considerable announcement was made on the part of Google that once again shifts the battle lines in the development of the HTML5 standard.  Google announced on their Chromium blog that over the next few months they will phase out support for the H.264 video codec and exclusively support WebM and Theora.  Although Chrome is a lesser player in the browser market with a fractional market share compared to Internet Explorer and Firefox, this move is sending ripples throughout the browser market.  HTML5 video is one of the more contentious parts of the HTML5 spec because of codec support.

In terms of browser support, this polarizes the market since Chrome previously supported both H.264 and WebM.  The lines are clearly drawn with Internet Explorer and Safari (including mobile variants) supporting H.264 (65% of the market), and Firefox, Chrome, and Opera supporting WebM (35% of the market).  Although Internet Explorer can support WebM, I won’t include it in the WebM group since additional software must be downloaded to enable it.  If that were a good reason, then 100% of the aforementioned browsers use additional software to playback H.264 and the whole debate is moot.

So what does this mean for the web, in terms of both desktop and mobile?  Not much for either, at the moment.  Chrome’s market share is still too insignificant for it to have widespread usage effect.  People have spent more than a year slamming and dismissing Firefox’s only-open-codecs position.  Mozilla took a lot of heat and lost some market share when they decided to only support Theora (and later WebM) and not H.264.  Mozilla’s Robert O’Callahan acknowledges this heat while writing on Google’s announcement, saying, “Incidentally, it’s also a good day for us at Mozilla: the pressure that was building on us to support H.264 should ease off considerably.”  It was one of the big reasons cited for people moving to Chrome en masse.  For the most part, developers served HTML5 H.264 to browsers that can handle it and Flash H.264 video to lowly Firefox users.  My guess is that Chrome will simply join Firefox in that category.  However,  the move is having tremendous psychological effect.  For the desktop where hardware acceleration isn’t as important, it makes WebM look to have more staying power.  Unfortunately for Google, it also makes the company look like more of  a target for the salivating lawyers at MPEG-LA.  Google hasn’t exactly had much luck lately in steering clear of patent lawsuits on the principal of virtue.  For the mobile market where battery life is key, it simply underscores the competition between Android and everyone else.  The iPhone supports H.264 natively, as do virtually all other smart phones from Microsoft, RIM, etc.  H.264 has simply been around much longer and has a well established market from professional to consumer video, from production to consumption.  Android, assuming Google will also be dropping H.264 from it, will exclusively support WebM/Theora.  I truly support the idealism behind WebM.  It makes a lot of sense that something central to the evolution of the Web not be laden with patents upon which royalties are paid.  Openness has always been key to the Web, and it should remain so.  With luck, we’ll see legal threats dissolve and hardware acceleration come onto the market, as we’re already starting to see, and the barrier to entry will be lowered.

I’m not sure what Google intended, but in the few hours that the article has been available there have been more than 400 comments, nearly all of them negative.  It seems that the only people happy about the decision are those that are on Mozilla’s or Opera’s payroll.  It’s pretty clear that, considering the timing–the same day as Verizon’s announcement that they’re getting the iPhone–doing this now is a power play for Google as it faces increased competition against Android in the market.  Its a bit of corporate positioning to promote its Android platform and its own codec by removing support for the competing market de-facto standard, all under the guise of openness.  All in all, a very Microsoft-like move… especially considering the hypocrisy that they’ll continue to bundle Adobe’s Flash (a sluggish, proprietary symbol of the ‘old web’ if ever there was one) with the Chrome browser.  The most humorous of the comments are those users declaring that they’re not going to use Chrome any  longer and are moving back to Firefox (who never supported H.264 anyway).

To be fair, Apple did this as well by not allowing Flash on iOS devices, and took a lot of criticism for it.  Eventually it became clear that it was the right move because it helped to push the Web forward and away from proprietary codecs.  This may turn out to have the same result on the part of Google.  For web developers and consumers, however, to make this move right now is a major frustration.  Before the industry ships support for a WebM, it needs to better better hardware support, tooling support, and be a clear market winner.  From my perspective, a web developer responsible for shipping video to paying customers, it means encoding and storing my videos twice: once in H.264 for the majority of browsers which support it and Adobe Flash for legacy browser support, and also in WebM for those that support that format.  For  users, it means compatibility problems.  Users want a browser that just works, and this move puts Chrome in the Firefox box by removing support for something that a majority of the web is built on.

My personal take when Mozilla decided on Theora/WebM exclusivity now applies to Google: political grandstanding a video codec is a terrible overstepping of authority.  For content producers, there’s a certain cost for the tools to encode the video; for browser makers, there’s a certain cost to license the codec to decode the video.  For users of the browser, viewing H.264 video has always been free.  They don’t see any cost.  It’s presumptuous for Mozilla or any other browser maker to try to stick their heads into the affairs of  the professional or consumer video industry that they’re not really involved in and dictate that they use tools that don’t exist for them.  By not supporting H.264 with its undeniable market presence, they’re denying web developers and users the choice of what is better for them.  Denying choice runs contrary to virtually all in the open source/open standards community.  For all the denouncement Apple gets for the way it chooses technologies to include (or more controversially, exclude) in its products, providing exclusive support for an open codec at the expense of the already de facto industry standard is just as bad, if not worse.

Of course, YouTube could always be a wildcard.  It will be interesting to see if Google can find a way to satisfy its contractual obligations to offer H.264 video to mobile Internet devices and set top boxes and somehow go WebM exclusive.  I can’t see that happening, but I do wonder how far they’re going to take their power play?