The contents of this blog post were originally presented at Books in Browsers 2014.
Getting access to Safari content for a limited time couldn’t be easier. In exchange for your email address Safari will give you access to all of our great content for 10 days — no credit card required, no long-term agreement. As you can imagine, Safari generates a lot of trials! We believe in our product and feel that we can win you over when you experience what we offer first-hand.
We know that we’ll never get to a point where 100% of those who sign up for trials will become paying customers, but we always strive to improve our “flip rate” (the percentage of customers who go from a trial to a paying subscription). In marketing speak, there are a lot of levers we can pull to improve that percentage.
- We can improve the targeting of our marketing to get our product in front of the humans who are most likely to become paying subscribers.
- We can improve our product by adding features that people love and are willing to pay for.
- We can add more and better content to our library.
- Heck, we can do all three!
Great, we’ll get right to work getting better content, adding new features to our site and finding people who are more willing to pay us for our service! As with the rest of you living in the real world, we need to spend our limited time on what provides the most value. The first step is for us to identify what all those people who sign up for a trial really value. To do that, we need data.
Read more »
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 »
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 »
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 »
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 »
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 »
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 »
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 »
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 »
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 »