My daily readings 06/30/2010

I’m implementing a document viewer with highlighting/annotation capabilities for a custom document format on iPad. The documents are kind of long (100 to 200 pages, if printed on paper) and I’ve had a hard time finding the right approach. Here are the requirments:

Does your document have any semantic components other than each paragraph? If you already have some concept of sections or pages, I would recommend you render each one of those as an independent tablecell. It’s pretty simple to create a tablecell that makes you forget you’re actually looking at a UITableView. All you would need to do is override drawRect: and setSelected: and setHighlighted: and tah dah! No More cell dividers unless you want them. Furthermore you could do some nifty things by using a tableview as your base. If you defined sections in the UITableView then you could have a nifty header that scrolls along as you’re paging through your document. Another thing you could do is add a “jump to section” bar / a bookmarks menu, and that way you don’t have to provide selection across the boundaries of sections.

If you use NSTextField subclasses to host the text you’ll be able to get the selection behavior you’re looking for. – fbarthoJun 14 at 8:40

Selecting text in an ebook on the iPad (that is, in iBooks – not in a PDF reader) is somewhat different from selecting it in, say, Pages or Safari. It can even be a little erratic when you try something “fancy” like selecting a paragraph. In addition, there are two different “modes” for a single-word selection: one that assumes you may not have selected what you really wanted (due to tiny text, fumble fingers, or both) and one that figures you got what you wanted on the first try.

To select a word:

1) Double-tap the word to select it; you’ll immediately get the Copy/Dictionary/Bookmark/Search buttons. (In a DRM’d book, you won’t get “Copy.” See You Can So Copy from an eBook for info on how to copy from such a book.) This is the method that assumes you hit your target on the first try.

The only thing better than the CEO being the keeper of the vision is the CEO being the creator of the vision. In Foursquare’s case, Dennis not only created the vision for the company, but for the entire product category. Beyond that, he is very clearly the thought leader in the market. This is not at all surprising as he has been working on the problem for a decade and has highly refined his thinking through that period.

As importantly, Dennis embodies the kind of leadership that I described in Notes on Leadership. He’s the kind of leader that great technical minds will be excited to follow: visionary,

righteous

righteous, and competent. I am really excited to work with Dennis to help him on his path from being a great leader to a great Chief Executive of an incredibly important company.

I often hear people attribute Foursquare’s success entirely to check-ins or other easy-to-understand product features. It reminds me of the early days of Zynga when people thought the secret sauce behind Mafia Wars and Farmville were that those games were web-based.

At a macro level, over 4.6B people have mobile phones and there are 1.7B people on the Internet. Already, over 200M people worldwide have smart phones and that number is headed north fast. Foursquare might not win the entire smart phone market (some people don’t even like to leave their house), but it will capture a huge portion of it because it’s incredibly fun and addicting.

We’ve seen it time and time again. The internet enables people to communicate directly with each other and create more efficient solutions than some larger (often regulated) industry, and that industry freaks out. Remember how a bus company freaked out about an online carpooling service and had it fined for being an “unregulated transportation company?” It looks like something similar, though in a different field, is happening in New York. With hotels in the Big Apple being ridiculously expensive much of the time, people have taken to Craigslist, as well as some specific services like AirBnB, Crashpadder and Roomorama, to find residents willing to rent out their rooms or apartments on a short-term basis — for much lower prices.

Designing and implementing efficient, provably correct parallel machine
learning (ML) algorithms is challenging. Existing high-level parallel
abstractions like MapReduce are insufficiently expressive while low-level tools
like MPI and Pthreads leave ML experts repeatedly solving the same design
challenges. By targeting common patterns in ML, we developed GraphLab, which
improves upon abstractions like MapReduce by compactly expressing asynchronous
iterative algorithms with sparse computational dependencies while ensuring data
consistency and achieving a high degree of parallel performance. We demonstrate
the expressiveness of the GraphLab framework by designing and implementing
parallel versions of belief propagation, Gibbs sampling, Co-EM, Lasso and
Compressed Sensing. We show that using GraphLab we can achieve excellent
parallel performance on large scale real-world problems.