Posted on by & filed under Big Data, Business, Content - Highlights and Reviews, Tech.

By Steve Hoberman

A data model is a precise representation of an information landscape, in much the same way as a map is a precise representation of a geographic landscape. “Precise” is the key characteristic of a data model, which means that there is a clear, unambiguous way of reading every symbol and term on the model. A team of business analysts for example, will all read the data model the same way and understand exactly what is being communicated, and then afterwards can debate whether the data model reflects their understanding of the business or whether the measures on the data model reflect what is required in the business requirements. An application development team will all read the data model the same way and understand exactly what is being communicated, and afterwards can discuss the ideal way these structures should be implemented.

Without the data model, we rely more on conversations and requirements documents, both of which are traditionally ambiguous. Conversations and requirements documents are often essential inputs to the data model, however.

For example, “A Customer has Accounts” is typical of an ambiguous statement that might be made verbally or appear in print. Business analysts discussing this statement would need to invest valuable time first understanding exactly what is being communicated. Developers discussing this statement might make erroneous assumptions as to what a customer or account is, leading to a poor design choice. Read more »

Posted on by & filed under C++, Tech.

By Brian Overland

For C++ programmers, maintaining legacy code has always been important. However, the last few upgrades to the specification have created what some experts have called “a whole new language.” So how do you start using it?

For your own projects, you may want to start using new features which improve your programs without breaking your old code. There are some excellent features that can be used this way.

1) Thousandth-Place Separator

Programs using big constants have always caused readability problems. For example, what number is this?

Can you tell at a quick glance what this is? A million? Ten million? A hundred million?

The C++14 specification supports a new place-separator (‘) that makes the identity of the large constant much more obvious:

Of course, anyone reading this in English would like to see commas used here instead, but the resulting syntax would be impossible. Consider this function call:

If a comma (,) were used as internal-place separator, would this statement call a function taking three arguments—10, 100, and 200—or would it take one argument equal to 10,100,200?

So the apostrophe (‘) works best. The nice thing is that you can start using it right away, even in old programs… old-fashioned literals such as “10000000” are still accepted as always, but for readability’s sake, should be revised whenever you can. Read more »

Posted on by and & filed under Content - Highlights and Reviews.

As we move rapidly into 2016, we take a retrospective look at 2015. It was an important year for Safari and our PubFactory platform. Strategically significant milestones for us as a company and the strength of our technology included:

  • Growing the volume of content on PubFactory to more than 30M unique publications, including articles, books, and reference works across the social science and humanities and scientific, technical, and medical subject areas. In particular, the number of journals hosted on PubFactory increased by more than 25%.
  • Delivery of a mobile optimized responsive design on a platform-wide level as a default standard for all new PubFactory implementations. Overall global consumption of content has been growing by 60% year over year and Safari is committed to continuously enhancing the platform to serve the mobile needs of our clients’ customers as an out-of-the-box capability, not a costly customization.
  • Building out PubFactory’s eCommerce engine to integrate with PayPal and making readily available for all publishers. This effort ensures critical consolidation of systems and cost savings for PubFactory publishers. And the new eCommerce capability makes it easier for publishers to support many different purchasing models, including short-term rental.
  • Provision of a platform-wide level integration with sales analytics and data visualization application to provide robust reporting on institutional subscribers that makes renewal and upsell opportunities easily identifiable. This is one of several in a continuing roadmap of enhancements to PubFactory’s reporting and metrics capabilities which were a definitive area of investment in 2015 and continue to be so in 2016.

Read more »

Posted on by & filed under managing people.

Image by Igal Koshevoy for Open Source BridgeWe first heard VM Brasseur speak in 2013 at Open Source Bridge, where she gave an dynamic and motivating talk about people, processes, and management to a rapt crowd. Since then, VM has given that talk, called “A Crash Course in Tech Management,” at OSCON EU and Portland in 2014 and 2015, respectively. A notable public speaker, manager, developer, and Open Source advocate, VM is one of our favorite thinkers on managing people and processes, and we were very excited that she agreed to interview with us!

A Safari member, VM also charmed us with one of our favorite tweets ever.

What is the best advice you’ve received as a manager? Where did you receive this advice? How would you recommend that managers seek advice and training?

Years ago, soon after I first became a manager, a colleague told me, “Just pick up the damn phone.” It was in reference to providing good customer service, but it stuck with me. Digital tools like email and IRC are all amazing, but often the best thing we can do to help foster better relationships and understanding is just to pick up the phone and listen.

I’ve found that the best sources for advice can come from my own teams, but it’s not easy to get to the point where people feel comfortable providing that advice (or managers feel comfortable asking for it).

Communication of that sort requires trust, and trust is only effective if it goes both ways. If either side harbors or fosters distrust, dishonesty, or suspicions then trust isn’t possible. However, once trust starts to build, asking for advice and feedback, listening to it, and then taking actions is not only a great way to develop as a manager but also to reinforce and increase that level of trust on both sides.

How do you go from being a “good” manager to a “great” manager?

You go from being a “good” manager to a “great” manager when you stop being a manager at all and start being a leader.

It’s a like a video game: There are quests you need to learn about and fulfill. The quests can include setting up the right processes and policies (for the right reasons), determining staffing needs then interviewing and hiring the right people, onboarding new team members, coaching so your team members can continue to grow, communicating and setting expectations, balancing the needs of the company, team, and individuals, and gaining the trust of your team and learning to trust them in return.

If you can do these things then you’ll find you’re no longer managing. You don’t have to. Your team doesn’t really need oversight anymore. You’ve leveled up: You’re a leader.

The majority of your time is no longer spent keeping an eye on things. Instead, now you’re able to work more strategically and light the way for your team and your company.

What tools and frameworks do you use as a manager that you find particularly useful?

I try very hard not to dictate or proscribe tools. Every company, team, project has different needs and no tool is good for all of them.

Rather than suggest tools, I prefer to suggest methods for selecting tools. Take the time to determine the needs of your team now and to think ahead to the probable needs of your team in the next year or two. Write down a set of criteria, requirements, and use cases. This is the sort of stuff you’re doing when you start working on a new feature or product (or at least I hope you do). That’s really all tool selection is: another project, and a very important one at that.

Changing tools takes an immense amount of work and selecting the wrong one can be disastrous for productivity and morale. So I urge you to give tool selection the time and attention it deserves rather than jumping to grab the shiniest, newest, most trendy thing available.

As for the tools for my personal productivity, I’d be utterly lost without Trello, RememberTheMilk, Evernote, Dropbox, and IRC. These are my exobrains and I love them dearly.

What is the tipping point for tech adoption? When and how do you decide to adopt a new stack? How do you communicate that to the people who work with you?

They communicate it to me. While I keep up to date on the latest developments in the tech world and focus my attention on news related to our stack, I can no longer call myself a technologist as such.

Therefore, I usually rely upon my developers/ops folks to come to me when there’s a need to add, change, or upgrade our technology. They’re closer to the problem and much more familiar with what needs to be done.

Whatever the problem is, changing technologies is like changing any other tool: Difficult, expensive, and not to be undertaken either lightly or by the faint of heart.

Before I approve any technology upgrade, addition, or change I would prefer to see a well-considered discussion on the following questions:

  1. What are the business needs for this change? They should go beyond “Ooh, shiny.” We can use the shiny things on the prototypes and proof-of-concepts. For production, our tools need to meet a different set of criteria.
  2. What is the support/lifecycle for the project? Is it well-maintained? Is it well-tested? Is the community active and engaged?
  3. What are the steps necessary for adopting this technology? What, in detail, is required for each and every step? What’s our up-front human cost for this adoption?
  4. What will this adoption gain us? Not anecdata, but actual data about what we will gain from this new technology. Give me charts. Give me graphs. Sell me on it.
  5. How will this new technology affect others in the team/organization/company? For instance, enabling experimental language features in your code may work in your setup, but it may break your coworkers’ dev environments and the CI/CD system. Think this through and communicate with everyone before pulling the trigger.
  6. What is the long-term maintenance required for this technology? Think of it like a puppy. Who’s going to clean up after it and make sure it has its shots? How are you even going to know that those shots are needed?

The process doesn’t have to be formal, and the level of detail required when answering will, of course, vary by the relative importance of the technology to the project. What looks like a small technology change can have big impact that is amplified if you don’t have a process for thinking through it before jumping into the deep end of the adoption pool.

What books, blogs, or videos would you recommend for managers?

Anything that Bob Sutton posts is good, and you can usually find a lot of interesting stuff in Harvard Business Review (ed. note: It’s all on Safari!). Beyond that, I don’t really follow any specific blogs. Most of my managerial blog article reading ends up being one-offs which I find by way of Twitter and then save to my Evernote.

For books, there are three which I recommend to everyone, manager or not:

  1. Hiring Geeks That Fit by Johanna Rothman. This is the only good book on hiring and interviewing I’ve ever found. It’s not just good, it’s great. Rothman does a marvelous job of breaking down the ordeal of interviewing and hiring. She shows not only how important it is to do these things well but also provides actionable frameworks for fixing your hiring process. Great stuff.
  2. No Asshole Rule by Bob Sutton. This was a philosophy I subscribed to before the book came out, but Sutton not only gave that philosophy a name, he backed it up with actual research. Data show that it is, in fact, much more expensive to project/team productivity to keep that asshole on your team rather than cutting him loose. Just fire him. You (and your team) will be glad you did.
  3. Badass: Making Users Awesome by Kathy Sierra. Sierra hasn’t written a book about product design. She’s written a book about how to think about people and their needs and how to craft your work in order to meet those needs (thereby making people awesome). If that isn’t the goal of management, then I’m doing it wrong. This is a fantastic book and I’m very grateful to Sierra for bringing it to us.

There’s one podcast I recommend: Manager Tools. The presenters approach things from a more corporate big-enterprise sort of way, but their advice can typically be applied to a lot of teams and companies. I’ve been managing for a long time now, and I still find plenty to think about each time I listen to an episode. Find the topics and advice which match your needs and give those episodes a listen.

I’m also excited about some of the topics I’m working on for talks this year. The first one with be a three hour technical conference speaking tutorial which Josh Berkus and I are co-presenting at SCALE14x. We’ve made all of the mistakes and, thanks to this tutorial, you won’t have to. Even if you don’t want to see this presentation, you should definitely check out SCALE14x. It’s definitely a front-runner for best community-run FLOSS conference.

How do you cultivate your leadership skills?

You have to practice, and to practice in the right way. It’s not simply a matter of, “Lead, lead, lead, lead, lead, leadership mastered!”

For example, if you were trying to learn calligraphy and all you ever did was write without stopping to see what you’d done properly and what needed work, you’d never become a calligrapher. So you need to lead, stop, think, analyze, correct, adjust, repeat. It’s an iterative process.

There are countless opportunities to practice your leadership outside of the office as well. For instance, have you ever gotten into the, “Where do you want to eat tonight?” discussion with your partner or friends? It goes back and forth undecided until it’s too late to do anything at all. Instead, you can practice your leadership skills by taking the lead. “Would you like to go to dinner tonight? Here are three places which I think could be fun…” You’d be surprised how much these seemingly mundane little leadership exercises can help you learn and improve.

Check out more of VM’s work at her website. Interview condensed and edited for clarity by the Safari editors.

Posted on by & filed under Business, Content - Highlights and Reviews, continuous learning, corporate learning, Learning & Development, work culture.


In the age of rapid globalization, mind-blowing technology advancements, and growing consumer power, one thing is becoming increasingly clear: for a business to survive and succeed, it must become a learning organization first and foremost. Regardless of industry, size, age, or business model, every organization must forge ahead in learning better and faster in order to stay competitive. Read more »

Posted on by & filed under Content - Highlights and Reviews.

One of the strongest features of Safari is the array and range of publishing partners who provide valuable content to our library. A key partner for us is Manning Publications, who provides our platform with a well-curated selection of technology books for professionals. 

As part of a continuing feature here at the Safari blog, we’d like to shine a spotlight on Manning Publications and their catalog of content for application developers, system administrators, software engineers, architects, and anyone else involved with the computer business. 

Big Data  Soft Skills  Go in ActionOculus Rift

Big Data: Principles and Best Practices of Scalable Realtime Data Systems by Nathan Marz and James Warren

Learn how to build large-scale data systems to help you capture and and analyze the vital web data you need to make crucial business decisions. The authors walk you through the process step-by-step from the batch layer to the serving layer to the speed layer.

Go in Action by William Kennedy, Brian Ketelsen and Erik St. Martin

A brand new title which was recently added to Safari, this book is a comprehensive and cohesive guide to the Go language. Proficient experience with other languages is assumed by the authors as it is written for the intermediate developer. Topics covered include packaging, libraries, and testing and benchmarking.

Oculus Rift in Action by Bradley Austin Davis, Karen Bryla, and Phillips Alexander Benton

Expected to release commercially in 2016, the Oculus Rift headset will bring a cutting-edge virtual reality experience to the market. In this book, you will learn how to create 3D games and other programs exclusively for the Oculus Rift. Experience with C++, C#, or another OO language is required as you read about how to use the Oculus C API, the VR user experience, and advanced integrations with the Oculus Rift.

Soft Skills: The Software Developer’s Life Manual by John Z. Sonmez

One of the most popular Manning titles within Safari, this classic book is the career guide that technically-minded professionals need to read. Author John Sonmez explains the importance of the ‘soft skills’ which are important in today’s workplace such as how to work remotely, the value of learning, and developing positive habits.


You can also check out this list in Safari, which includes an offering of the newest and most popular Manning Publication titles.

Posted on by & filed under Business, Content - Highlights and Reviews, culture, innovation, strategy.

By Edgar Papke

Edgar Papke is the author of the recently-published “Elephant in the Boardroom” from Career Press. He is an executive coach and an internationally award-winning speaker. 

Elephant in the Boardroom

The need for innovation has long been a permanent and increasingly valued pursuit of business. Over the last two decades it has found its way to the top of the list of what we admire and value most in organizations and those who lead them. So much so, that it is hard to find any noteworthy business publication without at least one article featuring something, or someone, that defines innovation.

We now have a host of annual conferences, gatherings, and innovation festivals to choose from. All dedicated to the constant pursuit of the creation of change, the display of quickly emerging new ideas, and celebration the innovative thinkers and leaders behind them. This includes the recognition of the winners in the race to get their new idea to market.

It’s no wonder that in every virtually every workshop of executives I lead, one of the topics we inevitably lean into is innovation. The key challenge they face is figuring out how they can get their people to be more innovative. Eventually, this conversation finds its way to exploring what motivates people to want to be more innovative and how they be applied as key traits and values in the cultures of the organizations and teams they lead. Read more »

Posted on by & filed under analytics, Programming & Development, Safari, Tech.

Welcome to the second and final blog post in this series on building a parser for log files in Haskell. In the first part of the series, we talked about why we chose Haskell for parsing logs, the theory behind and advantages of parsers and parser combinators, and concluded by building a parser for a very simplified kind of webserver log file.

In this post, we’ll cover the mechanics of parsing more parts of a real log file followed by the process of reading log files then applying our parser to the input. Finally we’ll discuss some ways we can improve our parser’s performance. The ultimate aim here is to show readers how to build a parsing utility that can work on NCSA Common and NCSA Combined log formats. Although this post will include code snippets, we are also providing readers with a fully-functional reference implementation.

Read more »