Posted by & filed under agile, Content - Highlights and Reviews, general, Safari, support.

I’ve been very fortunate to work at Safari for the last ten years in the Customer Support department. During this time I’ve been able to watch our company grow from a small joint venture between O’Reilly and Pearson, to a much larger company that continues to keep up with the changing times.

Among the most significant changes for the company itself has been to embrace the Agile development philosophy that has become very popular in recent years. I am not a developer and before I volunteered to write this post, I did not have a tremendous amount of knowledge about Agile development itself. In fact, when I started I expected my writing to focus on how a compressed time schedule created both positive and negative impacts on customer service. However, as I looked more deeply at Agile, I realized its impact is more complex than simply compressing a time schedule. Read more »

Posted by & filed under design, distributed teams, hiring, jobs, product management, Safari, working remotely.

When new Safari was just a baby experiment called Safari Flow, we had one product designer working with some excellent freelancers, and we could play fast and loose with our workflow. But as we’ve made the transition to new Safari, the stakes, naturally, have gotten higher. Product managers and designers are faced with the challenge of providing direction and support to a wider array of products, and we need to be much more deliberate about the work we do.

Product design is part strategy, part tactical implementation, and it can be difficult to balance those two different kinds of design work. Good product designers should be able to tackle high-level problems, as well as offer support to the team on day-to-day development happening on the ground.

Much has been written about the friction inherent in integrating thoughtful design work into the heady loop of an agile workflow. Design, by its nature, is up-front, foundational work — you can’t design a house after you’ve built it. (Well, you probably can, but you really shouldn’t.) Agile methodology puts an emphasis on rapid development and constant iteration based on feedback. But running an agile workflow doesn’t mean you shouldn’t actually plan.

Read more »

Posted by & filed under code editors, debugging, geek, programming.

For me, vim is a toy that keeps me engaged with coding every day. It’s simultaneously fun and useful, like driving a stickshift. It seems like there’s always some new way to use it, some trick to add to my arsenal that makes me incrementally faster and more efficient. I think a lot of vim users feel this way.

Interestingly, though, I know a lot of engineers who have used vi or vim for a long time yet have never really explored the vimrc or vim plugins very much. Similarly, I know a lot of engineers who won’t consider using it because they feel that it lacks the power and integrations of their IDEs. Well, I say that through customization and plugins vim can surprise both of these types of engineers, retaining its speed and elegance while nearly becoming an IDE itself. Read more »

Posted by & filed under ecommerce, Programming & Development.

My family owns and runs a small bicycle shop in Appleton, WI. For years they used a turn-key solution to sell items online. Over time the solution proved to be inadequate and they asked me if I could help them migrate to something new. After doing quite a bit of research I discovered that most free or open source solutions were missing features or were incredibly difficult to configure and maintain. On top of that, most of the for-pay subscription services were expensive and still didn’t have all of the features I was looking for. At this point I decided to build my own. Little did I know that I was starting a path that would teach me why most e-commerce solutions were complicated, missing features, expensive, or all three.

Building a full ecommerce site from scratch can be overwhelming. There are a lot of moving parts that constantly need to be tracked and used in various ways. In the first part of this guide I’ll cover an introduction to the various components required to build an ecommerce site. Later, I’ll dive into actual code examples for building an ecommerce site in Django.

Read more »

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 »