A Juicy Night Before Christmas

(You might need to refer to this sniglets posting to fully appreciate this poem)

‘Twas the night before Christmas, when all through the building,
Not a report was running, not even one the spreadhead was wielding.
The CEO and his team had all gone home, the operations crew quiet.
Marketing and sales were at their parties, out blowing their diet.

I was finishing some email, almost through the pile,
When I saw one about the year-end report—the taste in my mouth just turned to bile.
Every year it was the same, the million dollar BI system full of chart junk.
When I give it to her, my manager will state with a gulp: “I think we’re sunk”.

Then out on the floor there arose such a ruckus,
I sprang from my cube to to see was the fuss was.
Away to the card swipe I flew like a blur,
It was an office creeper, I was quite sure.

The exit sign lights giving the desks an evil glow,
Made me think the end was near, the security number, I did not know.
When what to my wondering eyes should appear,
Not an intruder, but my friends from Juice, so dear.

With a my stack of prints in hand, it made me jump back!
Sure enough, I saw it was Chris and Zach.
With them came their team of ‘sperts,
As he called them by name, I knew then I should cancel my alerts.

“Now David, now Cat, now Jon and Jennie.”
As I looked, I saw more, I didn’t realize there were that many.
They were here to help, to make things easy,
“Stop killing trees” said Zach, “that’s just too cheezy!”

Chart-based encryption makes your numbers stink,
Your boss won’t like it, she’ll want a drink.”
“Crossing The Last Mile is hard, I know” said Chris,
“That’s why we’re here. We’ve got the cure, take a look at this.”

What I saw! I couldn’t believe my eyes.
It made me want to shout—to celebrate with cries.
It was so simple and easy to understand.
A more fun solution can’t be found in the land.

No more analycide, flufferpoint, or dancing boloneys.
I could actually understand it. O’ The simplicity, the ease.
What they showed me was honest, true and clear
Had you looked in my eye, you would have seen a tear.

“Our mission here is done”, said Zach, “we’ve finished our work.”
“If you hurry home now, you won’t look too much like a jerk.”
“In the future don’t fret, don’t wait until boloney gives you the sicks,”
“Think of Tufte, of Few, and of Haler; then call Juice Analytics.”

They sprang to the Juice Mobile, “turbines to speed, generators to power,”
And away they all flew in the late holiday hour.
But I heard them exclaim, as they ran down the aisle,
“Merry Christmas to all, and finish The Last Mile!”

Juice wishes you and your loved ones a happy and wonderful Holiday Season!

From left to right, Zach, David, Cat, Ken, Chris, and Jon. Not shown, Jennie.

0 comments | Add a comment

Your name

Email (optional, will not be shared)

Type the word "juice" (required to confuse the spammers)

Your comment






Analytics Roundup: Naming matters

Igor | Naming companies, naming products
Definitive essay on naming from the company that inspired our name.

Vox Populi: Best practices for file naming | 43 Folders
One approach to a tough problem that we all have.

Seth's Blog: Worst powerpoint slide ever used by a CEO
Pretty bad, but surely not the worst.

HARLEM-13-GIGAPIXELS.COM
Extreme data presentation in a different realm.

0 comments | Add a comment

Your name

Email (optional, will not be shared)

Type the word "juice" (required to confuse the spammers)

Your comment






Kaizen and Juice 2.0

Kaizen may be the the art of continuous improvement, but today we’re happy to showcase the art of discontinuous improvement. In one big bang, we’re introducing a new logo, a new website, and a new platform to deliver web services and tools to make your life better.

The new logo is the product of months of pixel pushing and brainstorming. I’ll detail the evolution of the logo in a future post, but for the moment I’ll leave you with a comparison of the old and new logos.

old Juice logo
new Juice logo

The website redesign is an effort to improve the “discoverability” of our site. Good articles were mouldering in the archives. It was hard to find old or popular articles. Search was barely existent. A follow up article will trace the evolution of the site design.

We built the new site using Python and Django. This is a dynamic platform that gives us a lot of power to add new features, tools, and applications. We’re excited about what we will be able to bring you—we have a whiteboard full of ideas just awaiting implementation.

The new site, while better, isn’t perfect. Despite our efforts, there may be links that don’t work or screencasts that neither screen nor cast. We'd love to hear your reaction to the new design. Please leave a comment to tell us what you think or if you find anything that's broken. We'll fix it right away. With your help, we’ll make this site and this community better in a process of continuous improvement—Kaizen.

We've gotten a lot of positive comments about the design. I wanted to thank rockbeatspaper, the web design consultants who worked with us to create this site. A great company and a terrific job.

30 comments | Show all comments only the last 5 are shown


May 13, 2007
Chris Gemignani said:

There were a few changes to the blog today that should make frequent readers happy.

- The writing page now shows recent posts and comments.
- A few Internet Explorer CSS problems have been cleaned up as well.


May 25, 2007
Jonah said:

A few big complaints:

1) Bookmarked pages no longer work (permalinks changed, no redirects).

2) Can't browse through archives start to finish. There are 21 posts from Jan 2005. I can see one at a time. And can't see more than a few titles ahead.

3) No dates on posts in archives, so it's tricky to know if links are in fact, the archives I'm looking for.

After 20 minutes of looking for a bookmark on animated scatterplots, I stumbled across it: http://www.juiceanalytics.com/writing/2005/6/

Sadly, under the new design, the animation isn't there. Instead I get code: [FLASH] http://www.juiceanalytics.com/flash/tigerwoodsfinal , 440, 430 [/FLASH]

Juice is usually right on the money with presentation. But you have deviated from standards. Blog standards: date based archiving, categorical archiving, (scrolling across all stories in a given archive, abbreviated or full text), and individual archiving.

You've replaced standards with some filing system that pushes the most popular archives into view at the expense of all others.


June 4, 2007
David Parker said:

I've tried to get used to the new look - I have.

The functional layout is fine. However, I miss the hip looking photo banner. And the bold green titles look too squeezed together, heavily aliased and generally cheap and ugly.


August 2, 2007
Jon Peltier said:

I wondered what happened to this blog. The RSS feeds just stopped, but I never got around to visiting the site itself. Finally I found it today from Chris' post in another blog, and discovered that I'd missed several months of discussion. You should have sent out an announcement using the old RSS feed.

My first impressions of the new layout are positive, by the way.


August 15, 2007
kcmarshall said:

I spotted a bug and thought I'd report it.

The post-specific topic links don't work properly. For example, on this post the topics are "Design, Juice, Python".

The Python link is:
http://www.juiceanalytics.com/writing/?/writing/topics/python/
but should be:
http://www.juiceanalytics.com/writing/topics/python/

Regards!
Kevin

Your name

Email (optional, will not be shared)

Type the word "juice" (required to confuse the spammers)

Your comment


Add a comment





Wanted: Smarty Pants, apply within.

Chris talked about customer intimacy last month and that kind of thing always gets my mental juices flowing. When an idea like that is laid out in front of you, it's a head slapping "of course" and "weren't we doing that already?" thought.

Being around really smart people like Chris and Zach gives you a Newtonian stance on ideas; you get to rest your mind on top of fully baked thoughts. You also get critical, constructive analysis of your own musings and ultimately both our clients and Juice reap the benefits.

But where do you find the kind of people who live for this stuff? It's not like you can pop down to the mall and pick up a clutch of insightful, ultra-curious, Excel-wielding Python gurus. No, there are really just two solutions: You have to stumble on them or grow your own.

Stumbling on smart people really is tons of fun. Some of what works is really obvious and takes the form of talking to people at conferences, wooing people with great blogs, reaching out to some of the better user groups, and posting on places like Craig's List. Actually that last one isn't so obvious because unless you can articulate your company's worldview in a few muscular paragraphs you're just going to attract the wrong kinds of people. If your post is too wacky you'll be treated to an interpretive dance during the interview to detail how a project was a success. And if your ad is too dour you'll attract the living dead. Oh, the horror.

A few years ago popular belief held that there were oodles of highly trained, big-brained technology folks begging for work. That might have been partially true, but I do know a lot of carpetbaggers left the business to go back to whatever carpetbaggers are doing these days. I've been blessed with working with some amazingly brilliant people over the years. None of them have ever had a problem finding work. Ever, ever, ever. Those are the kinds of folks you want to go out of your way to stumble upon.

The second method of growing your own might sound like a leap of faith but it's really effective if you can pull it off. Back in the mid nineties, I was King of the Internet for a rapidly growing software company. Much like everybody else, we suffered the slings and arrows of an outrageous job market, and finding top notch talent was an uphill struggle. The world had all but lost its mind and you'd find yourself seriously mulling the thought of shelling out $100k a year for an HTML "programmer." Plus signing bonus, of course.

No, that would never do. Something different had to be done.

That's where working with brilliant people comes in handy. If you float what might be an out-of-the-ordinary idea they'll actually think it over before voting either way. We had this crazy idea to take really clever people from outside the industry and train the living daylights out of them.

Boy, it worked like a charm. I still keep in touch with a few of these rather bright individuals and they're still enjoying the heck out of their careers. One is still with the company, one with a smaller software outfit, and the third is a consultant for one of the largest consulting entities.

Whichever route you take, you can only squeeze out really juicy ideas from the right kind of brain. In our case we value creativity, chutzpah, a smart work ethic, dedication, and unbridled curiosity. It's not enough to teach somebody to be effective with a toolset and, to paraphrase Potter Stewart, we know smarts when we see them.

0 comments | Add a comment

Your name

Email (optional, will not be shared)

Type the word "juice" (required to confuse the spammers)

Your comment






Python Geocoding Help

Yahoo recently released a nifty geocoder API that's free for small (<50,000 lookups per day), non-commercial applications. Rasmus Lerdorf (Yahoo's PHP king) has written a nice introduction to using this geocoder in your PHP apps. In that spirit, here's a cheap and cheerful Python class that we use to geocode addresses.

from xml.dom.minidom import parse 
import urllib  

class Geocoder:
    """ 
    look up an location using the Yahoo geocoding api
    Requires a Yahoo appid which can be obtained at:
    http://developer.yahoo.net/faq/index.html#appid
    Documentation for the Yahoo geocoding api can be found at:
    http://developer.yahoo.net/maps/rest/V1/geocode.html
    """      

def init(self, appid, address_str):
    self.addressstr = addressstr         
    self.addresses = []
    self.resultcount = 0         
    parms = {'appid': appid, 'location': addressstr}

    try:
        url = 'http://api.local.yahoo.com/MapsService/V1/geocode?'+urllib.urlencode(parms)
        # parse the xml contents of the url into a dom
        dom = parse(urllib.urlopen(url))
        results = dom.getElementsByTagName('Result')
        self.result_count = len(results)
        for result in results:
            d = {'precision': result.getAttribute('precision'),
                'warning': result.getAttribute('warning')}

        for itm in result.childNodes:
            # if precision is zip, Address childNode will not exist

        if itm.childNodes:
            d[itm.nodeName] = itm.childNodes[0].data                     
        else:
            d[itm.nodeName] = ''                
        self.addresses.append(d)
    except:
        raise "GeocoderError"      

def repr(self):
    s = "Original address:n%snn"%self.addressstr         
    s += "%d match(s) found:nn"%self.resultcount         
    for addr in self.addresses:
        s += """Match precision: %(precision)s
            Location: (%(Latitude)s,%(Longitude)s)
            %(Address)s
            %(City)s, %(State)s %(Zip)s
        """ % addr         
    return s

if name == "__main__": sample_addresses = ['555 Grove St. Herndon,VA 20170', '1234 Greeley blvd, springfeld, va, 22152', '50009'] for addr in sample_addresses: g = Geocoder('YahooDemo', addr) print '-'*80
print g

All you need to use this is a Yahoo application id.

You now have four different ways to geocode your company's vital address. If you have suggestions or improvements, let us know. This code is public domain.

0 comments | Add a comment

Your name

Email (optional, will not be shared)

Type the word "juice" (required to confuse the spammers)

Your comment






Earlier writing