Posted by & filed under algorithms, programming, python.

My wife and I are avid board gamers, but oddly one of the the things we enjoy most is organizing the game itself. We’ve often joked about buying a game just to organize it. I love the “pop” as the chits break free from their cardboard bonds; discovering how each piece looks and sorting them according to size, shape and color; figuring out how to put the pieces back in the box without having any of them break before the next time we play the game.

I think this love of tidiness is also what draws me to algorithms and sorting algorithms in particular. You start with a jumbled array of items and by following some simple steps you arrive at something organized, something that makes sense.
Read more »

Posted by & filed under search.

There is a specific problem we run into again and again whenever we deal with searching a sufficiently diverse set of content. We call it the dictionary problem because it’s particularly endemic to dictionaries, but it’s a general problem that tends to prioritize minimal entries that mention a subject over larger entries that are about a subject. But in order to explain why this happens, I’m going to start by saying a little more about relevance ranking.

Read more »

Posted by & filed under conferences, ConnectED, Content - Highlights and Reviews, education technology.

This past February, Tim O’Reilly brought me into an email thread with the White House with a straightforward but urgent request — could Safari provide the delivery mechanism to make all of O’Reilly Media’s titles available to every K–12 student in America? Commitments to the President’s “ConnectED” program were lined up from a number of software, hardware, and networking companies, but connected devices would be much more useful with content included. We’re proud that we were able to say yes to something so important — and on such short notice. Read more »

Posted by & filed under features, iOS, ipad, mobile, Native apps, news, Product Updates & Tips, Safari, Safari News, Safari Queue.

Yesterday, we posted about Safari Queue, our new iOS application. Fundamental to the app is the notion that it syncs with your “queue,” a feature that is part of new Safari. Queuing is integrated throughout the Safari experience, but it may not be clear exactly what it does. What is the queue? Why would you want to use it?

Save it for later

When you queue a book or video, you are saving it for later. Each time you tap or click the queue icon, the book or video is saved in your queue, where you can reference it whenever you want. Read more »

Posted by & filed under debugging, programming, python, testing.

All developers know finding and squashing bugs comes with the territory of writing sane, stable, and performant software. On a good day, debugging can be trivial, but we’ve all been there: running tests and reading print statements at 11pm and nearly losing our minds over vanishing User objects or differing behavior between two servers. Sometimes the rudimentary approach of logging debug statements or peppering prints throughout the code works well enough, but there are better ways to inspect your app during runtime.

pdb, the Python Debugger, is an interactive debugger that is part of the Python standard library. Powerful in action and straightforward in use, pdb should be considered an essential part of your regular debugging workflow. pdb allows you to jump into a shell at arbitrary breakpoints in your code, where you can print variables and objects, step through the code line by line, change the values of objects on the fly, and more. Read more »

Posted by & filed under iOS, ipad, mobile, Native apps, Product Updates & Tips, Safari, Safari News, Safari Queue.

Safari Queue, the iOS companion app for Safari, is now available in iTunes.

About Safari Queue 1.0

Our goal for the first release of Safari Queue was to provide a great experience for reading books and videos when offline — by far our most requested feature, difficult to provide in a standalone web application.

Unlimited offline availability

Queue places no limits on the amount of content you can download and store offline (beyond available disk space on your device!). Both books and videos are available for offline use, but be careful — some of our exclusive conference videos can be quite long!

Sync your favorites and must-read titles

We call the app Safari Queue because it syncs with your new Safari queue, a list of titles that you’ve queued for reading or watching later. Once you’ve added a title to your queue, it will automatically appear in the app and will be available for download. (It works the other way, too; removing an item from your queue makes it no longer available in the native app.)

Haven’t used the queue yet?

Read more »

Posted by & filed under Content - Highlights and Reviews.

What will your verse be?

This was the resounding message that attendees of CocoaConf Boston, such as I was, were asked to consider over this past weekend.

I’m getting ahead of myself, though. Let’s backtrack a little bit first.

I consider myself extraordinarily fortunate to work at Safari. I am part of an incredible group of people that are passionate about empowering others to be even more remarkable at what they love (at least, hopefully at what they love). We believe wholeheartedly in building great learning tools for our customers, with engaging content from the publishers that we collaborate with. I’ve seen it in action every day that I’ve come to work over the last four years. What I didn’t yet know when I started here was just how lucky I’d be to have opportunities to become more remarkable at what I love – building things with software using my beloved platforms of choice, Apple’s OS X and iOS.

Here’s where CocoaConf comes in.
Read more »

Posted by & filed under electronics, geek, hardware, learning, robots.

Photo by snootlab

I’ve recently become obsessed with physical computing. This started with my discovery of Arduino while heavily dogfooding our new products as a Product Manager here at Safari.

The more I read about it, the more fascinated I became with all the things this tiny microcontroller could do, and eventually even volunteered to run an Arduino Workshop for middle school students as a “winter-session” elective.

Why learn Arduino?

Open Source hardware is predicted to be the next explosive revolution in computing. From Amazon Air Prime & Lakemaid Beer Delivery Drones, to Google Glass and smart watches, the future is bright for physical, embedded computing and the makers whose creativity makes it all happen.

Read more »

Posted by & filed under Business, distributed teams, managing yourself, working remotely.

I’ve worked as a remote software developer since 2011. That’s three years without pants! Boo-ya, “Year Without Pants” guy. Just kidding, I wear pants (see “Wear pants” later in this post).

Has it all been sunshine and rainbows? No. The benefits of remote work come with exorbitant costs. In fact, I’ve gone a little crazy as a result of being “out in the cold” for so long, but overall I feel that I’ve thrived, and my career has thrived, in the past few years. I attribute this to following several disciplines, which I will share with you so that you may thrive too.

Read more »

Posted by & filed under infrastructure, performance, Web Development.

Why HTTP/2?

HTTP/2 is an upcoming standard that will significantly improve web page delivery. It’s coming in February 2015 according to the HTTP/2 working group and is expected to be widely adopted because it’s an easy way for sites to make web pages load quicker and save bandwidth – meaning a better customer experience and money saved. I learned about it by watching the chair of the HTTP/2 working group, Mark Nottingham, talk at O’Reilly Velocity 2014. Some of the features he discussed are:

  • Pushing multiple resources for a single request
  • Header compression
  • Serving multiple page elements over a single TCP connection

More information can be found at the HTTP/2 working group site.

The ability to serve multiple resources over a single TCP connection was most interesting to me, because I can immediately measure that with a simple change. Since HTTP/2 isn’t out yet, I implemented a test environment using its predecessor: SPDY 3.1, on Nginx 1.6.2 and Chrome 38. Read more »