- typographic grid
There's a great article by Jeff Yang @ SFGate on How Steve Jobs 'out-Japanned' Japan. While the core part of the article itself is interesting, I found a small segment of the article even more insightful.
On page 3 of the article, Yang quotes Andrew Lih, a USC Annenberg professor and its director of new media, on why Sony has stumbled of late:
Consumer electronics are so complex today that they can't simply be a checklist of features...
The brands that curate their products well, with thoughtfulness and consideration for the customer, end up the winners. And Sony has hardly done that.
The quote is especially interesting in that it's not just related to consumer electronics. If you substituted 'consumer electronics' for 'enterprise software' and inserted any enterprise software vendor in place of 'Sony', you probably wouldn't be far from the truth.
In many ways, the quote sums up how I feel about many of the bigger players in the business intelligence market. It seems to me that the vendors that do have the nicest set of curated features are the upstarts, like Tableau and Bona Vista Systems. Their feature sets may not be as sweeping as their larger competitors, but they are extremely good at the features they do have.
Each year, when one of the major BI vendors has their major announcement of a release, it usually has more to do with the announcement of more checklist items than the improvement of their already flawed features. While I do understand the vicious cycle of uninformed technology purchasers, focusing on quantity over quality strikes me as a short term strategy. Developing lock-in through the fear of losing sunk costs is not what I would consider to be the way to go, especially when open source vendors are just starting to disrupt the marketplace.
In the most recent version of VMWare Fusion for the Mac, they've decided to go with an interesting choice of words for suspending, restarting and shutting down. They've prefixed the action phrases in the menu with the word "Force". So, you end up with "Force Suspend", "Force Resume", "Force Restart" and "Force Shutdown".
To my eye, the use of the word "Force" seems a little too strong, especially in the context of Macintosh UI's. For example, in the OSX Activity Monitor (equivalent to Windows Task Manager), you can "politely" ask an app to Quit, or if it has hung, Force Quit. Notice the distinction?
I don't really see that the use of the word Force in the menu options in Fusion is necessary, and subconsciously, it seems to imply a shaky sense of reliability, even though that is hardly the case.
It's been a busy few months, and many of my side projects have suffered. Fortunately my current project will wrap up in the next couple of months, which will hopefully mean that I'll have more time to dedicate to some coding projects.
Without getting into too many details, I've been working on a data warehouse / reporting project since October, and it has been a very rewarding experience. The client does meaningful work (saving lives), and we're building a system around their operational data. You can't ask for a better project than that!
With the new year will come a new web site (yeah, that's going to be the third iteration in 2 years... kaizen!) I managed to snag a license of ExpressionEngine (a fantastic, powerful content management system) over the Christmas holidays, so I'll definitely be taking advantage of that purchase.
Before the holidays came, I managed to mess around with Appcelerator Titanium and built my first iPhone app (for fun, not for sale) and I have to say, it's an interesting platform. I just downloaded Ansca Mobile's Corona SDK, which is based on the LUA scripting language. I'm curious to see how different that one is. Before you dismiss LUA as a language, keep in mind that Adobe Lightroom and World of Warcraft are LUA based. Those apps are nothing to sneeze at. I don't know what it is, but I just can't seem to force myself to go native and learn Objective-C. I think part of it has to do with "growing up" with the Visual Studio model of development. XCode just doesn't click for me. Who knows, maybe my attitude will change at some later point.
I will say this about the abstracted SDKs for mobile development. The big weakness is that they're always playing catchup with Apple on the SDK features, and you're heavily reliant on a single vendor for your app. Apple could easily change their App store rules tomorrow and ban these SDKs. And each SDK has limitations and bugs. Titanium's got a broken iOS Countdown Timer control that is still waiting to be fixed after several months. Corona doesn't seem to support https calls yet, which prevents you from making secure web API calls behind the scenes. Sure, Corona is primarily designed for games, but the built-in interactivity functionality can actually be used to make some interesting business apps. In any case, I'm going to be watching these SDKs closely over the course of 2011.
Cognos 10 rolled out to a lot of hoopla, but I can't say I'm totally impressed. And being vendor agnostic, I don't have to turn on any "shill mode" in my commentary. In continuing the vein of producing feature-checklist-friendly releases (in all fairness to Cognos, this is a problem with all enterprise software vendors), they have produced an incremental improvement over Cognos 8.
The "mobile" offering that got a lot of hoopla appears (I haven't had a chance to examine the app first hand) to be a simple wrapper over Webkit combined with some fixes in their client code. It is hardly an optimized mobile release. If you look at some of what RoamBI, Microstrategy and others have done, the mobile offering I saw from Cognos 10 is rather weak by comparison. Yet another "feature checklist" over "feature excellence" decision by the development team.
On the plus side, at least you can do bullet charts in Cognos 10.
I've been playing with NoSQL databases since last summer (yeah, I'm late to the party), and there's a lot to like about them. You can argue that they are the contemporaries to the Lotus Domino (I heart Domino, I'm probably the only one left) data store, and I guess they are, without the GUI baggage of the Notes client. The two projects that I evaluated were CouchDB and MongoDB. They're both great databases, and I really love the schemaless nature of these databases. That they speak JSON natively is a big plus in my mind, especially if you're developing web applications.
So I've done a few Windows centric engagements now using my Macbook as my primary laptop. It hasn't hurt me yet. My toolkit for the client work is still Windows XP running on VMWare (while I have licenses for both VMWare and Parallels, I use VMWare for interoperability with my peers). For many of my non-development tasks, I use Mac only applications, such as iWork and BEEDOCS Timeline 3D. Using Keynote, Numbers and Timeline 3D are actually a major competitive advantage for me. My presentations in Keynote are probably 1000 times more polished than anything you can do in PowerPoint with 1/1000th of the effort. I started using Numbers to build status reports, and I was able to create polished looking reports in a fraction of the time it would have taken me in Word or Excel. I also use Numbers to wireframe report designs (offtopic: are you wireframing your report designs? If not, shouldn't you?) Finally, I use Timeline 3D to present a visual representation of how a project is going to run. It's a great pre-project presentation approach that has a smaller learning curve for your audience than an oversized Gantt chart.
This year, I think I'm going to have to bite the bullet and buy an upgrade to Windows 7. I'm not looking forward to all the annoyances associated with the dumbed down interface (don't get me started on Windows Server 2008), but at some point, all of my clients will be on Windows 7.
So predictive analytics didn't really materialize into any really big win in 2010, and it's still floating around this year. Social BI is the big term this year, with vendors hoping to capitalize on the Facebook phenomenon. Personally, I think it's an empty promise in its current form.
A couple of trends I noticed on B-Eye last year was chatter on Agile Business Intelligence and NoSQL databases. I was amused that someone at B-Eye jumped on the Agile bandwagon about ten years late. Having worked on my share of Agile projects, caveat emptor. While I'm not sure that NoSQL has a place in business intelligence (at least in its current form), at least B-Eye had its (ahem), eyes open, and didn't ignore the technology altogether. MapReduce could find an interesting role in analytics. I have mixed feelings about B-Eye as a news site. It's sort of a guilty pleasure for me, because their content can be so fluffy that it is hard to swallow, but I do like to see what they consider to be topical.
I predict that R is going to only become more and more mainstream as an analysis tool. I also predict more growth for open-source based BI solutions such as Pentaho and Jasper. An interesting company to watch is SnapLogic, an ETL tool that talks to web APIs. RESTful API integration has been weak at best in all of the mainstream commercial ETL solutions, and I think SnapLogic might be onto something.
The cloud, if it hadn't crossed the chasm in 2010, should cross it in 2011. Amazon EC2 is a powerhouse that companies should spend the time to learn about. Salesforce's cloud offerings (database.com, heroku, etc.) are also impressive. I find it difficult to recommend heavy infrastructure purchases to smaller to medium sized companies, when private clouds are becoming viable solutions.
More to Come
Well, that's it for now. One massive January brain dump. There's some stuff that I have in mind that I'm not ready to talk about (or don't yet have the time to commit to), but here's looking to a great 2011 for everyone.
So this little "spare time project" is progressing nicely. I've been posting regular updates to "the Githubs".
As I promised last week, I'll go into a bit more detail on the development of this extension (my first, by the way).
The trouble with Hacker News is that the site presents you with a link to submitted (internal and external) articles and has a separate internal comments link. If you use Hacker News a lot, you're jumping back and forth between the original article and then to the comments.
Unlike RSS, which at least gives you a preamble or full article text (depending on the source), you've only got a title to work with. I thought it would be nice to be able to see the comments and the linked article at the same time. I also thought it would be nice if you could "star" articles like you can in Google Reader. Another neat feature is that you cca "follow" stories submitted by your favorite users or from your favorite sites.
In addition, to keep the noise down, I also thought it would be useful to ignore users or sites. For example, if you already subscribe to TechCrunch's RSS feed, there's no need to see the same headlines again in the Hacker News stream. This is all definable by the user.
Hacker News is an invaluable resource. I get a lot of programming and usability information from the news stream. I thought all of the aforementioned features would help significantly reduce the amount of time spent on Hacker News. While the signal to noise ratio is already very good on Hacker News, there was already a lot of redundancy with respect to my Google Reader subscriptions.
I'm not a designer, but I also wanted the reading experience to be more attractive than the vanilla (and boy, do I mean vanilla) Hacker News reading experience. I do believe that the UI will differentiate this extension from the other extensions out there. Since this extension was designed to scratch my own itch, your mileage, of course, will vary, in terms of whether it fits your use case.
Vanilla Hacker News
Note: My mockup currently shows functionality that I may drop or am considering for a later release.
So a little more detail on how it works. As the extension is Safari only, it made life easier, as I didn't need to target any code for cross-browser support.
Where I could, I took advantage of some newer CSS and HTML5 features. For example, it is using Safari's built in SQLite SQL database. Originally I used the Persistence.js library, and while the library is quite good, it wasn't what I needed, so I ended up writing my own database code. The one thing that takes getting used to is that database activity is asynchronous, which makes rendering things a little dicey at times.
Having spent part of the weekend rewriting the database glue for the app, there's still a bit of work to do, but it's now moving quickly toward the cleanup stages.
To make it all work, my extension is actually scraping the HTML and re-rendering it (it's all rendered using tables without a lot of ID attributes.. ouch!). Of course, this approach breaks down if YCombinator changes the template, which I'm hoping they won't. Originally I was thinking about using XSLT, but XSLT can be sensitive to XML that isn't well formed. Instead, I simply used jQuery's iteration and parsing functionality to do the scraping. It's quick enough and it does the job.
The extension periodically reloads the front page of Hacker News and pulls in any diffs. I weighed the option of using RSS vs. scraping the front page, but went with scraping the front page, because my scraping code leaves me the option of paging into older headlines. I haven't figured out whether I want to do that yet, but if you only visit Hacker News every few weeks, it seems like it would be worthwhile to implement in a later release.
Now one thing in the first release that's going to disappoint people is that the extension won't handle login status and comment submission. The silver lining is that the extension only 'jacks' the main Hacker News URL (news.ycombinator.com) All other Hacker News URLs are untouched and left with the vanilla UI, so you can have your cake and eat it too, so to speak.
Anyways, that's enough info for now. I'll keep you posted on any major news related to this extension, but as always, you can grab the latest copy off the GitHubs if you want to mess with it yourself.
I've moved off SVN as my source control system for some time, and I've been using both Git and Mercurial in its place. I was using Mercurial until I started doing work in Rails, and it doesn't make a whole lot of sense to use Mercurial for my Rails work seeing how many of the libraries I depend on are in Git/Github.
And as inviting as Bitbucket is after its purchase by Atlassian (5 devs for free!), I have a feeling that I'll be spending a lot more time (and money) on "the Githubs" in the future.
Ycombinator's Hacker News is probably the most popular news site for programmers and startup types. It's basically Digg before it jumped the shark, minus the good looks. The signal to noise ratio is incredibly high. The site, however, feels so 1990s. It's probably part of its appeal, but I felt like trying my hand at creating a Safari Extension for Hacker News in the vein of Google Reader, and I've made some headway.
I'm not normally one for preannouncing stuff, but it's mostly working and getting close to a finished state.
My project is open source and hosted at "the Githubs". I expect to have the bulk of the functionality completed by next week. If you can't wait, feel free to clone the repo and build a copy yourself.
- You can "star" items to be read later
- You can use a mobilizer to clean up the appearance of the original link
- The extension remembers what you've read
Anyways, keep an eye out here for an announcement next week or so, where I'll be explaining what it does and how it works in greater detail.
In a previous blog entry, I talked about my network infrastructure.
Some things have changed since then, so I figured it would be a good idea to outline what I've changed.
I'm still using PFSense. It's fantastic. There was one hitch, the hard drive on that old notebook died. Fortunately, you can run PFSense off the boot CD and use a USB key to store the data. That's exactly what I'm doing.
I mentioned in the earlier article that I was using FreeNAS. Well, that didn't work out too great. As hardware begins to fail (my RAID 1 did), it becomes a bit of a pain to get things off. I have since retired that FreeNAS box and changed my storage strategy completely. You know, it's cool to build your own hardware, etc. but it's also a huge time suck.
Failures don't happen when you're bored, they happen when you're too busy to be spending time fixing things.
Since most of my machines are Macs, I've put an external drive on each of them and have them running Time Machine. On my main machine, I alternate between two different Time Machine drives for a little extra bit of safety.
With the multiple hard drive failures in the past 12 months, I got sick of giving money to hard drive manufacturers, and bought a subscription to CrashPlan. All of my critical data is archived into the cloud this way. A bonus is that the software lets you back up to other computers on the network. As such, each of my Macs has two extra backup copies stored elsewhere in my home network. The cost of the subscription for me is less than the cost of one hard drive per year. Totally worthwhile.
Finally, I am using Dropbox, a cloud file syncing service. This is a fantastic service. I believe you can get a 2GB account for free. I am also a paying subscriber with Dropbox as well. It is invaluable for sharing data across your computers and mobile devices. Note that the difference between Dropbox and Crashplan is that I use Dropbox for live files, and Crashplan for archived files. It's a subtle but important difference.
One of those things you'll alway hear me say is that "you've got to eat your own dogfood".
For the non-tech industry people among you, the saying means that you need to use the products that you create. Only then will you appreciate the pain points your customers have with your product.
I have been dogfooding Ticket Agent for some time. While the app is far from complete, it's definitely in a state where I have been using it to manage the development of itself.
Dogfooding the app has resulted in many user experience (UX) changes, many of which should improve the product.
In my main web site, one of the big pieces of software I mention that I use is Fogbugz. Fogbugz is an excellent bug/issue tracking app that is designed for and used by software developers. In my mind, it is leaps and bounds better than JIRA, the main player in the market, but that's just my opinion.
I use Fogbugz a little differently than most of Fogbugz' customers. I use it as a services/work management tool, which it easily handles, but isn't its most optimal use. I am almost at the point where I can stop using Fogbugz completely, and replace it with Ticket Agent. That's a huge step for me.
I also mention on my main web site that I use Evernote quite religiously, but about 20% of the content I store in Evernote doesn't really belong there, but is there because it's convenient. I should be moving that content over to Ticket Agent some time soon.
So no matter what happens in terms of Ticket Agent's success, I think I'll be happy that I've built a tool that truly scratches my own itches, and is something that I'll be proud of.
A big chunk of the back end has been written. The hard part, believe it or not, is the front end, which I have begun development in earnest.
I have this love-hate thing going on with Gantt charts. In small-to-medium sized engagements, my experience is that they're a nice pre-sale showpiece that get tossed for an Excel spreadsheet once execution begins.
Why is that? I tend to think a couple of things are at play.
First, Gantt charts look great at the outset, as you get a nice visual overview of the work at hand. The problem is that maintenance of the chart becomes a major piece of overhead as the inevitable scope changes make their way into your project. Clients don't like to pay extra for a high priced PM (keep in mind, smaller services firms don't have project coordinators to do the monkey work) to be making changes to a Microsoft Project file. Project Managers don't like to be bogged down with time-consuming trivial edits to the Project file, when there are more critical day-to-day issues to tackle. In other words, it's a lose-lose maintenance situation.
Second, Microsoft Project files, with their Gantts, become hard to consume once the project starts. As one Project Director once told me, they're "too hard for the client, and you always end up going back to passing spreadsheets back and forth." Someone I know was recently working with his client's "seasoned" project manager on a plan, and that project manager had absolutely no clue how to use Microsoft Project. Exchanging Project files can be a pain, especially if someone is using an older version. Excel, on the other hand, is ubiquitous and everyone knows how to use it.
So these two points explain why Gantts are not on the near-term feature roadmap for Ticket Agent. If anything, it might show up as a reporting option, but unlike many other SAAS work management tools, it's not an integral piece of the puzzle. This is a philosophical thing. I'm not trying to create a "me too" product. Contrary to how Microsoft does things, a piece of software can't be everything to everyone. There are many excellent Gantt-based SAAS solutions, I'm not trying to go after that market.
Ticket Agent is designed to be a "back to basics" project management for small-to-medium sized projects. You aren't expected to be a PMP/PMBOK type of person to run the project. You have projects, deadlines, and units-of-work (i.e., tickets) that need to be completed. Ticket Agent will help you create those status reports that you hate creating on a weekly and monthly basis.
So it's been a while since I've last posted. A long while. It's been intentional.
As some of you may know, I've been working on an app, tentatively called Ticket Agent. I'm hoping to make this a widely available SAAS (software as a service) application for work management.
I'm quite aware that the work/project management space is a crowded one in the SAAS area. The most dominant player is probably 37signals' BaseCamp. It's an excellent product. Ironically, listening to their audio version of their book Rework inspired me to build my application. It's been an application in my head since maybe 1998, and I never got around to building it.
Some history: Many, many years ago, I worked on a Web 1.0 product like Basecamp but a little too far ahead of its time. We released it as a free and rentable multi-tenant product, but this was in 1998, and the idea of SAAS barely had any traction. Needless to say, the product got killed, and that was the end of it.
So I've been fleshing together Ticket Agent over the past few months, and of course, there have been bumps along the road. It started off as a LAMP stack app (Linux/Apache/MySQL/PHP for those not in the know) and has evolved into a Ruby on Rails / NoSQL (MongoDB) app along the way.
The major platform pivot resulted in me wanting to take advantage of the cloud services available, and the change to a NoSQL database was driven by the idea that I didn't want to be saddled with database schema migrations every time the data model changed. Perhaps I'll talk in more detail about my database decision in a future blog post.
In any case, back to the app. The application is a "ticket" based application (hence the name). While most people will associate tickets with an issue or bug tracking app, I took the philosophical view that a ticket is the best way to assign a unit of work to a team member.
I mean what's the real difference between a ticket and a task other than the ticket number? Not much, really.
Being a ticket-based system, however, isn't the differentiator for the application. This application is designed to scratch an itch I've had working on and running projects. The primary problem I've had is status.
I hate compiling team member status reports into client status reports. I've used various systems, including BI tools like Cognos, but there was always just a little too much work involved with that. Add to the fact that most consultants hate doing status reports themselves. So then as a manager, you're stuck cracking that whip chasing people down for status reports and then spending time compiling them into reports that your clients can consume. Not fun at all.
But it's not just project status that's an issue. Here are some of the time consuming status items that a typical project manager needs to keep up on (in no particular order):
- Where are my team members today?
- What are my team members working on today?
- What is the progress of what my team members are working on?
- What are the upcoming deadlines (or milestones) for my company?
- What is the status of all of my active client projects?
- Which of my team members are best using the Ticket Agent application?
The last point is a little interesting. As with any application, end user adoption is an issue. You could have the most usable system, but people may still not use the system. I have a solution to help address this, but it's a "secret sauce" idea that I'll hold back until closer to release.
From a design perspective, my goal is to make the application feel more like a GTD (Getting Things Done) application than your typical project/task management solution.
Well that's all I have for now, but I'll finally start posting more regularly to let you know how development is going.
So things have been quiet on the blogging and tweeting front lately, but it's actually related to me being very busy. I've shifted from consulting mode to software development mode for 2010.
Without getting too vaporware-ish right now, I can tell you that I'm working on a hosted, rich internet application (RIA) that scratches a work management itch experienced by every company I've worked at over my decade+ in the tech industry. It's a "go-big-or-go-home" project for me. I've talked about it for eons, but never had time to develop it. No more excuses.
I'm dedicating serious effort on this project. It's my full time job right now. Success or failure, it will be out of my system soon. No more wistful thinking about "things that could have been".
The product code name is currently "Braintapper Engine", and I'm not going to say much in terms of functionality right now, except that it's designed to solve work management pain points commonly experienced by small services companies.
The app definitely has what I think are some compelling (and cool) features, but more later.
There are a lot of things to work out, and not just on the development side. I've got to tighten the elevator pitch, figure out the pricing model, and of course the infrastructure issues related to deploying a multi-tenant hosted solution.
The product development came out of the beta of the Braintapper Exchange functionality of the site, which was soft launched in March and visible here. A lightbulb went off in my head, with a voice saying "this engine can drive that project management app you've dreamed about for eons!". The codebase for Braintapper Exchange has evolved beyond recognition (probably worthy of a few blog posts in itself), although the data back-end is fundamentally the same, if not simpler.
On a side note, for reasons I can't talk about yet, "Braintapper Exchange" as a concept of a BI community may be going away and be replaced by something bigger and better. On the other hand, the Braintapper Exchange codebase will continue to evolve. At the very least, the codebase will be turned into the engine that drives the Braintapper blog. Once the "engine" project is completed, I'll decide whether to productize the Exchange code base or whether to release it as an open source project.
More news to come in the near future.
Just a housekeeping note, I'll be migrating any code samples to Bitbucket.
Bitbucket is a Mercurial-based public source code repository.
Migrating the source code will make it easier for people to get the latest versions of any demos or samples that I create.
The Braintapper repo is located here. There are three public repos, one for Cognos, one for Pentaho and the other for miscellaneous BI efforts.
After reading a couple of reviews (notably by Stephen Few and Nathan Yau) of The Wall Street Journal Guide to Information Graphics, I picked up a copy myself out of curiosity.
For the most part, I agree with Stephen Few's critique of the book, but his vantage point is as an expert in the field. In author Dona Wong's defense, it's hard to write a book for newbies and present do's and don'ts that won't ruffle the feathers of anyone who knows better.
Being in BI, I see a lot of crappy reports with poorly chosen graphics. And many of these are coming from "seasoned veterans" in report writing. The problem is that "seasoned veterans" in report writing only means you really know how to use the tool, not necessarily how to communicate quantitative data visually.
I think that this book, despite its many flaws (Wong almost had me in a tizzy by referring to "sans serif" fonts as "sanserif" - that's as heinous as a Freedom Fry), is ideal for one particular audience. And that is people who have no knowledge of visualization, and who do not have the will or the patience to learn.
The book has two key strengths for newbies:
- Everything is in bullet points (ideal for the attention challenged)
- Wong's rules-of-thumbs are pretty black and white (ideal for the critically thinking challenged)
One glaring weakness, however, is that while the images in the book are lovely, they weren't really created by real world BI tools. You're not going to be easily able to reproduce these charts and graphs in Cognos Report Studio or any other tool to match Wong's aesthetic.
Stephen Few's books are easy reads, but only a small percentage of the people to whom I recommend his books actually read them (sadly, I think the reason behind this is that too many people just don't seem to care enough about their "craft" to improve). Edward Tufte's books contain prose that requires a significant amount of patience, and are much more appropriate for true believers than newbies.
Bullet points and "black and white" rules be damned, I think this book should be read by anyone who designs reports in Cognos or any other other BI tool. It's about 100 times better than what is usually described as "the most popular seminar each year" at Cognos Forum, where the presenter talks about Few and Tufte, and then goes ahead and presents the one of the most horrible PowerPoint decks I've ever seen.
Purchasing decisions based on feature checklists alone is dangerous when the stakes are high (i.e., big dollars on big enterprise software).
But feature checklist obsession isn't limited to big purchases, it's ubiquitous among all things technological.
Marco Arment has a nice little article about the obsession of tech press with the feature checklists of gadgets.
His post highlights two common feature excellence failures on product evaluation based on feature checklists as the key criteria: assumed equality, and miscomparison.
Definitely a worthwhile read.
Dan Frommer, of Business Insider, summarizes Tim Cook's talk at the Goldman Sachs Technology Conference:
We are the most focused company that I know of or have read of or have any knowledge of. We say no to good ideas every day. We say no to great ideas in order to keep the amount of things we focus on very small in number so that we can put enormous energy behind the ones we do choose. The table each of you are sitting at today, you could probably put every product on it that Apple makes, yet Apple's revenue last year was $40 billion. I think any other company that could say that is an oil company. That's not just saying yes to the right products, it's saying no to many products that are good ideas, but just not nearly as good as the other ones. I think this is so ingrained in our company that this hubris you talk about that happens to companies that are successful and sole role in life is to get bigger, I can tell you the management team at Apple would never let that happen. That's not what we're about. Small list of things to focus on.
So what's the moral of this quote?
If you look at the excerpt above that is in bold (emphasis was mine), Apple chooses to be better, not bigger.
Updated: Here's the audio recording of the discussion.