Rhiza Blog Blog

Breakfast at Rhiza: Small Businesses Can Eat Well Too

IMG_4102I had a wonderful and healthy breakfast this morning (see the photos I took this morning). All ingredients that I used when I prepared my meal were organic and provided by local farmers. Why am I sharing the details about my breakfast this morning? If I were at home, this would be no big deal, but I’m not. I’m at work at Rhiza, a software company that I lead as CEO.

We’re all used to hearing about the fancy chefs at Google, Facebook, etc. but there are ways that smaller companies can reasonably provide healthy food options for their employees without breaking the bank by opening restaurants in the workplace. At Rhiza, it’s part of our culture to encourage healthy lifestyles for our employees. We believe that healthier employees are more productive, engaged and in general, happier. So how exactly can you achieve those goals without breaking the bank?

The first and best decision we’ve made as a company was to establish a relationship with Isidore Foods a food subscription company in Western Pennsylvania connecting local farms directly with consumers. It would be unrealistic for Rhiza to establish individual relationships with all of the different farmers that would supply the eggs, milk, cheese, meats, fruits, vegetables, bread and the variety of other items we want to have in the office. Isidore Foods already has all of those relationships established. Our office manager lets them know what we want and quantities, and they deliver it all to our office on a weekly basis. Any food that isn’t consumed in a reasonable time goes home with employees and shared with their families.

IMG_4103Since we want employees to be able to prepare this fresh food how they like for breakfast, lunch and snacks, the second part of this approach necessitates having a real kitchen in the workplace. We have a full kitchen with oven/stove and all of the utensils and pots/pans a person might need. Yes, that’s an upfront investment but it is really a minimal cost when looked at in the big picture.

What about cleanup, you ask? We see that as another way to emphasis our company values. If you made a mess (in coding software, in the kitchen, etc), you need to clean it up if you can or ask for help if you can’t. While there are always hiccups along the way, we’ve not noticed any serious problems.

We’ve found a great way to have our company’s values of caring about people, planet and profit reflected in our kitchen. Employees can be healthier, we’re supporting local organic farming and continue to have fun at work.

     by Josh Knauer   Blog   1 Comment

Did Texas Make 50 Shades a Record-Breaker?

Valentine’s Day weekend offers plenty of opportunities to spend money: expensive dinners, chocolates, flowers and diamonds. This year’s holiday offered one more—Fifty Shades of Grey. The premiere of the controversial film, based on the novel by E. L. James, came the day before V-day. And whether out of excitement or morbid curiosity, people flocked to the theaters in droves, earning the film $81.7 million at the opening weekend box office. More than the money, however, the rush earned 50 Shades the title of 4th biggest R-rated premiere in movie history, as well as highest-grossing Presidents’ Day weekend opener ever.

How a film does on opening weekend shapes the conversation around its success. But what do these numbers actually mean? Is the amount of money a film pulls down on opening weekend really a marker of America’s feelings, or just a way to say if the studio made their money back? Turns out, it depends on where you live.

Slide1
Figure 1. When do you usually go: Opening Weekend

Obviously, not everyone runs out immediately to see a new movie. But in some places, opening weekends are a bigger priority than in others. According to Experian data published in 2014, there are regional preferences for when people see a movie—on opening weekend, within the first two weeks, or even later. The data doesn’t break down by specific film, by genre or even by season; it’s a macro trend for all films across the entire country for the entire year.

The data suggests that the Northeast, for instance, really couldn’t care less about seeing a movie on opening weekend. In the counties shaded lightest—primarily New England and the northern Midwest—less than 3% of moviegoers see a movie on opening weekend. The Southwest, on the other hand, finds opening weekend much more important. Laredo, Harlingen and El Paso counties—all in Texas—have the highest proportion of opening-weekend junkies in the country, followed closely by Bakersfield and Monterey-Salinas, California. In fact, Texas, New Mexico and Southern California are about the only places in America that care to see movies ASAP. After that, the wind of interest blows steadily from south to north.

Slide2
Figure 2. When do you usually go: After Second Week

Sure, there are people in the Northeast who will stand in the midnight lines, and people in Texas who prefer to wait. But even though the proportion of people in Texas who waited more than two weeks to see a movie is, at its lowest, still 5% higher than the proportion of people who go on opening weekend, the fact that such a small section of the country is buying such a large portion of opening weekend movie tickets means we have to rethink what these numbers mean.

Have these trends continued into the New Year? More specifically, has 50 Shades played to the trends? If so, when it comes to the film’s 2015 Valentine’s weekend success, either we are to assume that the Southwest has a disproportionate interest in BDSM, or simply a greater interest in spending their weekends in a movie theater. If the Southwest is significantly more likely to see a movie on opening weekend than the rest of the country, as the 2014 Experian data suggests, maybe opening weekend revenue isn’t predictive of a movie’s worth, but only whether it appeals to a few counties in Texas.

Introducing the Rhiza Ratio!

At Rhiza, we know that the best way to use data in a compelling way is to tell a story. But before all of that, you need to form a hypothesis, pull the numbers, run analysis, and then confirm or reject your hypothesis based on the conclusions reached.

While we have posts on our blog that do all those steps to tell a compelling story, and our customers use the Rhiza Platform tool to do that everyday, the Rhiza Ratio is an opportunity for you to explore data around interesting data points and current events so you can then draw your own conclusions. We’ve used our tool to quickly wrangle the data, but we leave it up to you form your own to ask follow up questions and draw your own conclusions.

With our inaugural Rhiza Ratio, we looked into the car brands that have consistently advertised during the Super Bowl over the past five years (Audi, Honda, Kia, and Volkswagen), and their market share four months after the game.

Again, rather than creating a hypothesis and drawing conclusions for you, we’ve provided the data so you can create your own story. Because the less time you spend pulling all your data together, the more time you can spend analyzing, exploring, and crafting your story.

Check out this month’s Rhiza Ratio.

Rhiza Ratio

Is there data you’d like to see to help build your story or ideas for a future Rhiza Ratio? Leave us a comment down below.

Pittsburgh’s Tech Startup Scene – The Atlantic Magazine

HorizLogo-RGB-72dpi

“Pittsburgh has one of the liveliest technology ecosystems in the country.”

With all the hustle and bustle of the past holiday season, you may have missed a great article in The Atlantic about ‘How to Create a Tech Startup Scene If You’re Not in Silicon Valley‘ (say it ain’t so!) – which shines a spotlight on Rhiza’s very own hometown: Pittsburgh.

The entire article was, in fact, all about how Pittsburgh’s vibrant startup scene sets a great example for other cities. At Rhiza, we know the importance of having a dynamic and supportive startup community, which is why we’re proud to call Pittsburgh our home.

Rhiza’s Resolutions – 2015

HorizLogo-RGB-72dpi

As we begin the new year, many of us continue the annual tradition of making New Year’s Resolutions. While we all might have personal New Year’s Resolutions – to stay fit and healthy, to lose weight, to enjoy life to the fullest, or to spend less, save more – you should also start thinking of your business resolutions.

And there’s one resolution in particular we think you need to make: Start using your data.

Almost every organization that’s worth its salt has been collecting data, so much so that organizations and industry mavens now reference their “big” data, but very few are using that data effectively and at scale to solve real-world business challenges. Most of the time we hand over all of this data to our IT Department or the Business Intelligence Department. Are they really the ones you want creating your business presentations and visualizations? Data needs to be in the hands of the people on the ground, the ones who actually know the business and make decisions – executives, managers, and sales and marketing teams – not the quants and researchers who never let data out the door.

The idea of giving data to decision makers is not a new one, but adoption has been slow. That makes sense because most syndicated data is hard to set up and use, while enterprise data tools are even worse. According to a 2013 report by Accenture, only one in four executives uses data to make decisions. The other three use their gut instinct. And the numbers are even worse for Sales and Marketing. This absolutely needs to change in 2015.

So how do we get the people who actually understand the business to use data to inform their decisions? We need tools that are easy to use and understand, tools that present data in a way anyone could use. Find the right tools at Rhiza.com or give us a call at 412-488-0600 – we’d be happy to give you a demo.

Rhiza CEO talks Big Data

HorizLogo-RGB-72dpi

We have all heard of Big Data. You must have been living under a rock for the past 5 years if you have not heard the phrase. And if that’s the case, you surely have many more important things to get catch up on. I suggest starting with Modern Family.

But now that we have Big Data, what are we going to do with it? How can we make smart, informed business decisions? Rhiza CEO, Josh Knauer, sheds light on how we can actually start making sense of big data. And taking action. And making smart business decisions that impact the bottom line. Check out his interview in the current issue of teQ Magazine.

Pittsburgh Saves Christmas

HorizLogo-RGB-72dpi

On Thursday of last week, news broke that several local charities were coming up short to provide holiday cheer for hundreds of kids throughout the region. Word spread fast and the response was swift and immediate. Links showed up in my Facebook feed repeatedly as friends of friends of friends reached out for help and resources.

Obviously, toys under a Christmas tree from some Guy Named Santa aren’t necessarily in the same category as food on the table and roof over your head. Many people don’t even celebrate That Guy. But these are the holidays, and whatever you celebrate, there’s some miracle woven in there somewhere. And surely good will towards our fellow humans and joy are things we can all get behind, right? Right. And Pittsburgh got behind it in a pretty big way. Like Steelers-Nation-yes-I’ll-be-your-neighbor kind of big.

A Facebook group and Crowd Fundraising Campaign was started to create a virtual base of operations with requests and responses growing by the hour. I mentioned the story to several co-workers who immediately opened their wallets to chip in without waiting to see if I was even asking for contributions. On Saturday my kids and I delivered the contributions to Most Wanted Fine Art, an art gallery turned Santa’s Workshop, and spent a few hours helping to sort and pack. The phones didn’t stop ringing and people kept showing up with gifts and money to contribute to the cause. We learned of more groups who were coming up short, and people just stepped up their efforts even more. What started as toys grew to include a holiday meal and handwarmers for homeless youth.

As of Monday morning, it looks like well over 2000 families received some holiday cheer from hundreds of neighbors through the ‘Burgh. In a matter of days, more than $10K was raised on top of the toy contributions. And since it’s only December 22nd, the work continues, and the seeds have been planted to leverage these pathways to continue to provide much-needed resources in 2015.

In my own flurry of last minute holiday scrambling and end-of-year work deadlines, I’m filled with gratitude. I’m grateful that I work with the kind of people who will dive into an effort like this without being asked. I’m proud to live in a city where a call for help doesn’t go unanswered. I met so many amazing people both virtually and in-person this weekend, and I feel lucky to be a small part of it.

Tech Talk: Performance enhancement & map layers

Propagating events through element layers as rendered in page.

The Rhiza blog takes a turn toward the technical, with a post this week by senior software engineer Matt Pickell. Check out his particular mapping challenge, which includes insight into problem solving, failing fast, and (delicious) shish kabobs.

I am currently working on a project involving Mapbox and Leaflet. As part of a performance enhancement feature I was implementing I came across an interesting issue on event handling in the map layers.

I am using D3 to implement a light-weight custom Leaflet layer to better handle large FeatureCollections. From the server I receive a GeoJSON FeatureCollection of features that includes shapes, markers, and text that I need to render to the map. In my custom layer the different feature types in the collection need to be placed into different map panes (overlay, markers, and popup panes) to maintain the proper layering. These “panes” are implemented as sibling DIVs as oppose to being in a tree layout.

Depending on the purpose of the map, any one of these layers can be enabled to accept click events (and possibly more than one). The issue I encountered was that only the top layer would actually accept the click — this layer typically being the marker or text. If that layer was deemed “un-clickable” then nothing would happen because the event propagated up the DOM tree and not to the sibling “panes.”

What I need to handle is passing this event to all of the sibling panes to see who could handle it. But I cannot just broadcast it! I need to pass it to the panes in the order they are rendered on the page and only to each pane’s feature located at the exact mouse-click position.

Some background…

In mapbox maps there is an overlay pane for adding new overlay shapes, like polygons. There is also the marker pane, for things like “pins” on point locations. There are still other panes, like “popups” for additional items. Because these panes are sibling divs and not hierarchical event handling can be tricky.

The FeatureCollection I receive can contain features mapping to 1..n of these panes. So what I can end up with is multiple overlapping features on a map — e.g., a shape, a marker (or more) on that shape, and a text label on that marker. These features know nothing about their layer or other features, but do contain information in their properties so I can determine if the feature is clickable.

Because the layers are actually laid out in the DOM as absolute-positioned sibling ‘div’ elements I cannot use the browser’s event propagation. What I need for my situation is information about the stack of elements as layered on the page by the renderer at the X/Y point of the mouse click. An example of what I mean by the “layers” of the DOM elements is nicely displayed in the picture below.

Element layers as rendered on the Google home page.

Element layers as rendered on the Google home page.

I took this screen shot using a cool Firefox plugin called Tilt, although I found out after I installed it that the Firefox Dev Tools already has it built in as “3D View.” Because everyone is familiar with it, I used Google’s homepage to illustrate stacked DOM element layers as I am working with such layers on the map. The actual map did not illustrate this as well since the Tilt plugin was not splitting out SVG trees into layers.

To propagate the event the way I need to do it, I need to dig through these layers from top-to-bottom at the coordinates of the mouse click regardless of how these layers are represented in the DOM tree — CSS can move them anywhere. It’s like driving a skewer through the page at the point of click and then peeling back the shish kabob of features until I get to the one that can process the event.

 

A solution emerges…

It turns out there is a very useful document function for this called document.elementFromPoint(x,y). This function will take an X/Y coordinate and return the element first encountered at those coordinates. This is great, but I already know the first encountered element… it’s the one in the event that is triggered when the mouse click occurs. So this alone does not help much, especially because it is only available on document and not sub-elements in order to process sub-trees. But, it is a start…

So digging deeper I found that I could manipulate the results of the elementFromPoint function using very simple CSS! When an element has the style “pointer-events: none,” click events pass through the element to whatever is next behind it. This style alone could solve this issue sometimes if you are able to throw it around multiple places, but in the case of creating a custom layer I need to be more surgical so I don’t affect other layers that may be added to the map. When this style is on an element, it is also skipped by the elementFromPoint function!  

Aside: Another page on QuirksMode.org says you can do this with “display: none” as well, but that would change the page visually…

A happy merging of these two ideas and a dose of recursion solves the problem. All of the features I add to the page have a click handler that routes the click to a special function that does the following:

  1. Get the elementFromPoint from the X/Y coordinates in the mouse event.
  2. Check if this element is:
    1. one of my features, which means it contains data (i.e., a “__data__” property) and has a key/value attribute I put on the element specifically for matching.
    2. clickable (a separate function to determine this based on whatever…)
    3. a child of some baseline element that I know all of my elements are inside. This is to fail faster instead of parsing a lot of the page I don’t care about. The base element for me, inside the mapbox map, is an element classed with ‘.leaflet-objects-pane’.
  3. If it all tests in #2 pass, return this element and pass it and its data (remember in D3 this is the element.__data__) off to the real click handler.
  4. If the tests in #2 fail, either return null (if i’m outside of my base element) or add the “pointer-events: none” style to the current element and call this function again recursively. The current element is added to an array of “passed over elements” so that we can come back later and remove this style. In order to not break the page, maintain the prior value of this style if there was one.

This loop continues until we either find an element that will handle the event or we are outside of the base element.

The last important step before returning from this function is to iterate over the “passed over elements” array and revert the “pointer-events: none” style.

Implementation

Here is the implementation as a member in the custom layer class, a little generalized for clarity.

_digForElements: function keepDigging(evt, passedOverElementsFromLast) {
            var layer = this
                  jMapPane = jQuery('.leaflet-objects-pane');
            if (!jMapPane) return null;

            var baseElement = jMapPane[0]
                attr = 'data-d3layerkey',
                attrVal = layer._layerId,
                passedOverElements = passedOverElementsFromLast || [],
                firstFound,
                element,
                jElement,
                existingCssValue;

            element = document.elementFromPoint(evt.x, evt.y);
            if (element && jQuery.contains(baseElement, element)) {
                jElement = jQuery(element);

                if (jElement.attr(attr) && jElement.attr(attr) === attrVal &&
                    _.isObject(element.__data__) && layer.options.isSeriesClickable(element.__data__)) {
                    firstFound = element;
                } else {
                    existingCssValue = jElement.css('pointer-events');
                    passedOverElements.push({
                        element: element,
                        previousCSSValue: existingCssValue === 'auto' ? '' : existingCssValue;
                    });

                    // Add style to it so that elementFromPoint bypasses it next time.
                    jElement.css({
                        'pointer-events': 'none'
                    });

                    firstFound = keepDigging.call(this, evt, passedOverElements);
                }
            }

            // clean up all elements we added classes to.  Also, end a sentence with a preposition.  done.
            var info;
            while (passedOverElements.length > 0) {
                // It did not have it before or it would not have come up in the search...
                // so remove it again.
                info = passedOverElements.pop();
                jQuery(info.element).css({
                    'pointer-events': info.previousCSSValue
                });
            }

            return firstFound;
        },

Rhiza Leadership Team Grows

HorizLogo-RGB-72dpi

Last month two all-stars joined the Rhiza leadership team, bringing their unique start-up experience, industry vision, and corporate resolve to our Pittsburgh headquarters.

Zachariah Sharek, our new SVP of Data Strategy, joined us from Civic Science. Zach recently completed his PhD in Organizational Behavior and Theory from Carnegie Mellon University’s Tepper School of Business. His research in judgment and decision-making and behavioral economics has been discussed in the Wall Street Journal, LA Times, Financial Times, Business Week, and USA Today. Zach’s ready to blaze new trails in our data partnerships with Acxiom, Nielsen, Rentrak, Kantar, Experian, comScore, Polk, and dozens more.

We also welcomed a new Director of Finance, Laurie Hochberg. Laurie was most recently the CFO at M*Modal during their successful acquisition and subsequent IPO. She holds a BS in Accounting from Clarion University of Pennsylvania and is a certified CPA. At Rhiza, Laurie will be responsible for directing financial and accounting duties, accounts payable/receivable processing, financial reporting, and she will lead budget and forecast creation.

We’re excited to have Zach and Laurie join the Rhiza team, bringing with them tremendous perspective, polish and passion. We’re now 25 strong, and every single employee contributes to our product vision, our customers’ satisfaction and our shopping-list for snacks in the company kitchen. Sound like an exciting place to work? We sure think so!

We’re hiring awesomely smart and fun people. Check out our careers page to apply.

[vimeo 113929604]

Rhiza Wins Again!

Smart 50

Our very own Josh in the bottom left corner.

It’s satisfying to know that hard work pays off, so we were excited to receive further validation of our efforts this week. Wednesday night Rhiza CEO Josh Knauer was inducted into the inaugural class of Pittsburgh’s Smart 50 presented by Chase. Josh was recognized for his leadership, innovation, and impact on the Pittsburgh community.

The inaugural class is an impressive group – executives from healthcare to energy to manufacturing to services, the Smart 50 is a who’s who of the most impactful and inspiring business leaders in the area, and we’re proud to be recognized as one of the few software companies, and even fewer start-ups, to receive this honor.

We’re growing our team and looking for passionate people who will have an impact on day 1. Visit our careers page to see if we’re currently searching for a candidate just like you.

Close

Want to schedule a demo?

Get in touch with us and we’ll be happy to set up a time.