Thoughts on Single-Page Web Apps, Data Visualization, and Other Internet Technology from Rocket Whale
Don't wanna be here? Send us removal request.
Text
And Weâre Back!
When we arenât busy creating the worldâs best policy management software, weâre usually working hard building awesome for some great clients.
Just like everything else in life, things change, and weâre ready for some new clients! If youâve got something in mind that we can help with, please get in touch with us.
0 notes
Text
Enterprise Change Management 101
A portion of our recent work with Home Depot highlights a common misconception in the tech industry: that software alone can change peopleâs behavior. Itâs more common in the enterprise world, but many startups think along the same lines. If creating technology is what youâre good at, itâs only natural to want to do that to try to influence change.
Unfortunately, the world doesnât work like that.
In the enterprise world, when that fails, it can be really tempting for someone at the top to wield their stick of power and say âuse this software nowâ or âdo things this way nowâ.
Itâs a short-sighted fix.
Thatâs like asking people to get in a boat with no compass, no life jackets, no defenses against pirates and sharks, and no explanation about where the boat is headed. Would anyone want to get in that boat?
Hereâs how it should actually work.
Your goal is to bring people from Today Island to Future Island. This requires 3 different components:
1. Vision
In the words of Antoine de Saint-ExupĂ©ry, âIf you want to build a ship, donât drum up the men to gather wood, divide the work, and give orders. Instead, teach them to yearn for the vast and endless sea.â
Vision could otherwise be called sales and marketing. This is your pitch. Your goal is to inspire people to want to go to Future Island using a strong narrative for change. Like a politician, you can go positive or negative. Either way, your goal is to create a gap between Today Island and Future Island that makes Future Island look 10x better.
Keep in mind your pitch is going to be different depending on the audience. For each different audience segment, youâll need a pitch that creates that 10x gap. Donât forget to Start With Why!
2. Safety
One of the reasons change is so hard is because people fear leaving the relative safety of Today Island.
âIâve been on Today Island a while and everythingâs been fine so far - why leave? There are sharks! What if the boat sinks?! What if Future Island isnât what you say it is?!!â
You need to reassure your audience members that Future Island and the journey to it is safe. This starts with discovery. Talk to the people whoâd be affected by the change and ask, âif you did XYZ instead of ABC, what would you be worried about?â Drill deeper with follow up questions like, âAnd why is that bad (or good or confusing or whatever)?â and âWhat happens to you if that happens?â
Be prepared for people to lie. Donât worry, itâs usually not on purpose. Try to discover their true pain, even if they wonât say it. Oftentimes, true pain can be embarrassing or career-inhibiting if verbalized.
Note: this is really hard. Donât beat yourself up if you donât get it perfect. Just putting in the effort to listen to people might be enough to make people feel safe.
Next, your job is to create things to make those worries go away. It could be as simple as talking it out. Or it could be new incentives, training workshops, a new structure, or something else along those lines.
3. Support
If youâve sold your vision and your audience members are feeling safe, theyâll be asking, âHow?â Thatâs a great place to be! Now your job is to support employees with the tools and training they need to make the journey to Future Island a successful one.
If software is your boat, donât forget the other tools people need on an ocean voyage. Like directions! In our analogy, directions = training. It could be training on the software tool itself, personal growth training, or tactical training about how to make the change.
A Final Note
Some people wonât get in the boat on the first trip. Thatâs ok, you can come back to the late majority once they see others enjoying Future Island. And the ones that will never get in the boat, even after the change is a validated success? Hopefully theyâre few and far between. If not, go back to step 1.
1 note
·
View note
Text
View State in Angular 1.x
Almost every web application has pages with search capability. The parameters of the search are typically reflected in the URLâs query parameters. However, manipulating these query parameters can often be tricky in Single Page Web Applications. In most cases, developers want the client-side router to route based on the path and not the query parameters, since there is typically a one-to-one correspondence between paths and controllers.
There are a few requirements that users expect from their URLs
Users should be able to copy a URL (with query parameters) and share it with someone else, who should see the page exactly the same way
Users should be able to navigate back and forward as the query parameters change and have the page contents reflect the query parameters
AngularJS makes getting and setting URL query parameters easy with their $location service. However, if youâre not careful, the query parameters and $scope variables can easily get out of sync and then the browserâs back and forward buttons will no longer work as expected. To ensure the query parameters and $scope variables are always in sync, make sure:
$scope variables are always a reflection of the query parameters. Use $scope.$watch on $location.search() to watch for query parameter changes and then update the $scope variables.
changes start by updating the query parameters. Use $location.search(search, paramValue) to change query parameters, which will then change the $scope variables.
Hereâs an example of a page that shows a list of users that can be filtered by group:
https://gist.github.com/SamDuvall/01cc4afcf614311b9806
The hypothetical pages below would display the list of users based on the URL string:
https://example.com/users shows a list of all available users
https://example.com/users?group=2 shows a list of all users that are members of the group with id = 2
1 note
·
View note
Text
Why Saves Are More Real Than Any Other Closer Stat
From time to time I notice things in âthe real worldâ that can be further explained with behavioral economics. Todayâs topic is baseballâs save stat.
Ask any baseball stathead their thoughts on saves and the value of closers and youâre sure to get a scornful response.
Announcers and sportswriters continue to question why teamsâ seemingly best relievers are only used for save situations. Teams lose games without ever putting in their best reliever, and then that same pitcher âsavesâ a game 4 days later that the team very likely would have won anyway.
Surely, most front offices today (sorry Phillies fans) are using better methods to evaluate relievers. And surely this new information can be used to optimize how arms in the bullpen are used.
Yet the save stat prominently lives on and bullpens are still managed around it. Why?
Humans Arenât Computers
Humans donât act in their own rational self-interest. They donât make logical decisions, they make emotional ones that often come from an irrational place. There are countless cognitive biases always in effect, and the rationality of a decision is bounded by the information we have at the moment we make it.
Whatâs going on in the case of closers, the save stat, and the decisions around those 2 things is a result of Prospect Theory. Prospect Theory is very interesting in itself - I recommend you click that link and read about it. The two components relevant to the context of this article are:
Losses hurt more than gains feel good. The effect is about 2.25 times more powerful. For example, according to the irrational human brain, avoiding a $5 surcharge feels equal to getting a discount of $11.25.
Humans are risk-averse when there is a high probability of feeling a gain, and they are willing to overpay for certainty. For example, given a 95% chance to win $10,000 or 100% chance to obtain $9,499, theyâll take the $9,499 (and probably even less) even though the expected payout of the first scenario is $9,500.
The End of a Baseball Game is Prospect Theory at Work
When itâs the end of a game, and it doesnât feel certain that a victory is at hand (a reasonable cutoff for that feeling being a lead of 4+ runs), managers, GMs, fans, and players alike are all willing to overpay for the certainty of not feeling a loss. So in comes the closer for the save. This is normal, risk-averse, human behavior and itâs not going to stop until teams are managed by computers or Phil Ivey.
How about close games? Why are closers saved for when a team is ahead? And why arenât they used in the 7th inning with no outs and Mike Trout coming up with the bases loaded?
Here are the possible outcomes of a baseball game ranked on a âfeeling scaleâ from most powerful to least powerful.
-4.5: Losing when you thought you were going to win
+3.25: Winning when you thought you were going to lose
-2.25: Losing
+1: Winning
0: Game suspended due to rain
Pitchers canât create a win (from the mound, at least). They can only not lose. So the 2 losing scenarios govern a managerâs bullpen decision-making in those close games.
Technically, a pitcher canât ânot loseâ in the 7th inning as there are still 2 more innings to play. In that moment, there are all kinds of unconscious calculations a managerâs brain makes in the background to help him quickly decide how to optimize the use of the bullpen to not lose.
Whatever those calculations are, the decision is usually the same: the closerâs butt stays glued to the bench and in comes a non-closer reliever. And the real reason why, no matter what the manager says, is that heâs optimizing to avoid the greatest loss possible: losing when you thought you were going to win.
Itâs fair to reiterate that this isnât something managers are consciously doing. They arenât calculating odds of victory (or not losing) and choosing a reliever accordingly. This is all happening unconsciously based on thousands of years of evolution that has turned us into loss-avoiding scaredy cats.
Saves = Loss Avoidance
So why is losing when you thought you were going to win so painful? Any loss sucks. It feels crappy. But when you thought you were going to win? That feels much worse! Why? Itâs because your point of reference changed. You already felt and accounted for the gain of the win. So now instead of feeling one loss, youâre feeling that loss PLUS the loss of the win you thought you had. Major bummer!
The save stat is simply a representation of loss avoidance. Closers arenât paid to accumulate saves. Theyâre paid for what the save attempt represents: an opportunity to increase the certainty that a teamâs stakeholders wonât feel the pain of losing what, in their mind, is already a win. In other words, they arenât paid to get saves, theyâre paid to not get blown saves. This differs from what non-closer relievers are paid to do and, as weâve already learned, humans are willing to overpay to avoid the loss of a near-certain gain.
Thatâs why saves and blown saves matter. Theyâre the best metrics we have to describe the reality of the irrational human brain of baseballâs decision makers.
What do the numbers say?
I used Spotracâs Free Agent Tracker to get a list of all the free agent reliever signings from 2012-2015 (2012 is as far back as it goes). I used FanGraphs to filter the list of relievers to those with a SD-MD% of over 60% in order to remove the relievers signed for middle-innings mopop work. Depth relievers arenât signed to not lose. Last, I compared the average annual value of the remaining closer contracts to the non-closer contracts to get a ratio of how much closers are valued over regular relievers.
I averaged the 4 ratios and it comes out to 2.91. To be honest, I thought itâd be more like 2, as the value of relievers signed to not lose (2.25) is half of those signed to not lose when you thought you were going to win (4.5).
This variance might be due to small sample size, incomplete data, using the wrong data, or perhaps I just donât know what Iâm talking about.
What do you think? Do you agree? Have a better idea of how to do the data analysis? Is this all a bunch of fuff?
1 note
·
View note
Text
An Intro To Flexbox
Here at Rocket Whale, we practice design driven development. We fight for every pixel to ensure our users experience their application in its full glory. Fighting for pixels can be a tedious battle, however. For example, below is a landing page with a 2 column x N rows layout with a combination of text and images.
Before flexbox, we would use Bootstrap 3 to layout this page with its responsive grid system. It was easy to lay things out. However, each screen size (xs,sm,md,lg) required nudging the margin manually to get the image to line up vertically with the text. In our example that could require 12 different margin-tops. How tedius! And then someone alters the paragraph text, which then moves the text onto the next line, which means now the centering is out of whack! That's whack!
Take a look at the HTML framework code below
https://gist.github.com/SamDuvall/69e392b482f5324bbb31
With flexbox, the text and images center up magically! With less HTML nesting! We still need to cap the screen width, like bootstrap does with their .container .row .col-* CSS heirarchy, but that can easily be done using bootstrap's @screen-*-min width variable (if you have the luxury of using LESS). Also, we frequently like to alternate the text/image positioning from left/right to right/left and we can now just do that by using row-reverse.
1 note
·
View note
Text
Congratulations to Rocket Fuel
Recently, one of our biggest clients, Rocket Fuel, went public. It looks like theyâre doing pretty well:
http://www.reuters.com/article/2013/09/21/us-rocket-fuel-ipo-idUSBRE98J0JR20130921
Cheers to Rocket Fuel!
0 notes
Text
Backbone Relationships
On almost every project where we use backbone (which is most of them), we inevitably come across the following problem: How do we mirror the has_one and has_many relationships (that Rails does so well) on the client with backbone?
Weâve evaluated several available options, but havenât found much success. Backbone.Relational gets slow with large data sets and is a huge memory leak, unless you manage it. Â backbone-associations just isnât powerful enough to cover most of our use cases.
Last week, I decided to roll my own solution: backbone-relationships. Â It has worked extremely well for most of our uses cases (see the README), which are shipping data from the client to the server. Â It still needs to be built out to handle the nested_attributes situations, but weâre waiting for a use case to drive that. Â Give it a try! Â Let us know what you think!
0 notes
Text
Rocket Whale Art
We had some cool art drawn up for us by the amazing artist behind our t-shirts and I thought it'd be a good idea to show off some of his work.
Here are the results, all framed and everything!

Wouldn't this look great on a kid's t-shirt? Â Some day...

Our current t-shirt design looks fantastic as a sketch!

No, he's not high, he's just sleepy. Like me, the Rocket Whale is not a morning person (whale).

How does his body fit in the rocket? Magic, I think...
@tom_odea
1 note
·
View note
Text
Atlanta Ruby Users Group Presentation Slides
We had an awesome time presenting at ATLRUG last night! Â There wasnât an empty seat in the house. Â As promised, here are the slides from our presentation:
Ruby 2.0
Push Server
Hope everyone enjoyed the presentation, t-shirt tweet-contest and free beer!  If youâre interested in becoming a Rocket WhalerâŠweâre hiring.
0 notes
Text
Score This Shirt at the ATL RUG Meetup
Tonight at the Atlanta Ruby User Group meetup, our very own Sam Duvall will be talking about the exciting new changes in Ruby 2.0 along with a tutorial on push servers. We'll also be giving away a few of our spectacular hot-off-the-press t-shirts. And if that wasn't enough, we'll be sponsoring some drinks afterwards at Cypress St. Pint & Plate.
Sounds good, right? Great. Come get nerdy with us.

0 notes
Text
Merry Holichristkwanzukkah!
'Tis the season! Rocket Whale is a sponsor of HypeElephant, the first ever Hypepotamus winter seasonal event dedicated to bringing cheer and laughter to all attendees. There will be plenty of egg nog and munchies for all - so get off your keyster and come have a good time with us!
For the gift exchange, bring an undesirable gift of any shape or size (suggested range of $10-15). The only requirement is that you must wrap it and create a handcrafted gift tag denoting you as the giver. Prizes are available for:
Most Amazing Gift Tag
WTF? Gift (most undesirable)
Best Hippo-Related Gift
Sounds fun, right? Register here.
0 notes
Text
Our First Oversized Check Goes To...
... Adam Harrell of Nebo Agency for his referral of Ben Robinson, Rocket Whale's new UX Designer. After working with him at Nebo, Adam knew Ben's popular catchphrases such as "don't botch this" and "I haven't eaten lunch since yesterday" would go over nicely at Rocket Whale. Adam said the $500 will be funding shots at the Nebo company Christmas party. Whether he's serious or not, it sounds like a sweet party!
Here is a Minimum Viable Photo of the exchange. For our next referral sprint, I think we'll use a real camera. Beware the demon eyes!

Want in on this action? Refer someone for our open software engineer positions and I'll hand deliver an over-sized check for $1000 to you!
0 notes
Text
How to get a UI/UX Design Job: Step 1
Rocket Whale is hiring a UI Architect/Designer to lead the product design of our headline clientâs new flagship web app. After going through many resumes and applications, I wanted to provide some advice to any UX professionals that are looking for challenging work at interesting companies. If you want boring work with boring people, then you need not proceed.
Your resume is a landing page of you from a professional perspective and you should design it as such. The purpose of a landing page is to give high-level details that entice users to dig deeper. Likewise, your resumeâs goal is to get a phone call, not to get hired.
As a UI/UX professional, you have the baked-in skills necessary to create a resume with a great user interface. Use these skills to your advantage! If you cannot design a simple, user-friendly landing page for yourself, a topic of which you have intimate domain knowledge, why would I expect that can do this for a much more complex project of which youâll start with little to no domain knowledge? Your resume is the only design project that is guaranteed to be looked at by the company that wants to hire you!
So how do you go about this? Use the standard customer discovery process. Talk to potential users (HR, hiring managers, etc.) at companies similar to those you want to work at and understand what is important to them. Create an MVP, test it with users and iterate until the design is complete. Measure your success, reach out for feedback when you donât get to the next step of the hiring process and tweak as necessary. Not only will this give you a resume that stands out, itâll give you a great story to tell when you interview. Beep bop boop, job search over.
To help get you started, this is what weâre interested in learning about at the resume stage:
Do your personal and professional goals align with the position we are hiring for?
Do you have the skills necessary for the position? If not, are you capable of learning them and are you excited to do so?
Do you have results that back up what you say you can do?
And, most importantly for a UI/UX professional, can you communicate all of this in a simple, organized, elegant and interesting manner?
Interesting companies (like Rocket Whale!) look for creative people that solve problems in interesting ways. Your resume is a great opportunity to show (not tell) a prospective employer that you can do this right away. Pounce on that opportunity.
Do you agree? Have you had success with an alternate method? Any additional tips or advice? What are you looking for in a resume? Â Let us know in the comments!
1 note
·
View note
Text
Rocket Whale is Hiring!
We are very proud to have reached this milestone in our company and are looking for help from you to grow our company. This is your chance to make a dream come true. Have you always wanted to receive one of those oversized checks that makes it appear like you've accomplished something? What am I talking about? Of course you have. If you refer the lucky person we hire for any of the following positions, we will personally deliver an oversized check for $500 to you wherever you are in the lower 48 states.
We'll take a photo (well, someone else will as it will be difficult for us considering the giant check we'll be holding) and put you on our blog that I've been told "several" people read.
We're hiring a UI/UX Designer and at least one Software Developer. Thanks!
@tomodea
0 notes
Text
Thanks a lot, Conan O'Brien
I saw this on a blog I follow (thanks, swissmiss) and I liked it so I bought the print, framed it, and put it on the wall. The optimist in me wishes it were true 100% of the time, but the cynic in me recognizes that it isn't. That probably just makes me like it more.

-Tom
0 notes
Text
Hard at Work
We are proud to announce the launch of Preparisâs new marketing site! Preparis is an all-in-one emergency preparedness portal that helps companies keep their employees safe during crisis situations. They were looking for a redesigned and easier to manage marketing web site and we were up to the task. Â Go check it out or read more about the project on our web development work page.
Weâve also been doing a ton of work for Rocket Fuel and have been learning a ridiculous amount of new design techniques and development technologies. The project is a tremendous amount of fun and weâre looking forward to continuing our work over the coming months.
0 notes
Text
Startup Riot MAKE 2012

Team Rocket Whale wins the SendGrid award at Startup Riot MAKE for their HowTracker Policies and Procedures software. We had a great time hacking away for a weekend and we built a very alpha version of our upcoming policies and procedures software, which we continue to make progress on and expect to release within the next couple of months.
Our prize was a Sphero, which is essentially a phone/tablet powered cat toy that Sam's cats enjoy tremendously. The award comes from SendGrid, primarily as a result of our users being able to attest to policies by simply responding to an email.
A big thank you goes out to Elmer and the SendGrid team and also to Sanjay and Rachel who did another amazing job with Startup Riot this year.
0 notes