April 2006 change history

HipCal logo
Answer: HipCal (www.hipcal.com).

Plaxo announced today the acquisition of HipCal, LLC, based in Troy, NY. You can read the formal press release at: Plaxo's website. However, I wanted to give you an insider's view of why we joined forces with these young guns from upstate New York.

You'll have to read the entire article to find out what we both have in common with pimps. ;-)

Plaxo has a calendar?

You may not know this, but Plaxo has had an online calendar for some time. Yup, we really do. As a matter of fact, we were using AJAX techniques two years ago before it was called AJAX (RSI thanks to Terry Chay and Joseph Smarr).

hipcal_homeBut, to be really honest, we did not put the same amount of effort and resources on our calendar as we did on everything else. Our users have been asking us to do for calendars what we did for address books--not just make them available everywhere, but make them easy to coordinate with friends, colleagues, and customers. This has been bothering us for awhile and it's one of those things that we put into the "someday" category. Well, this is that day.

Exploding calendars

So, it all started while we were watching with amusement as startup after startup announced their jump into the "new, Web 2.0 calendar" space -- the list is long. But, one of them caught our eye, HipCal (and apparently the Web 2.0 Awards and SXSW festival's eye too). I should mention that a few of the others look quite impressive as well -- 30 boxes also appears to stand our from the crowd.

Note that a good friend of mine, Mark Fletcher (ONElist, eGroups, Plaxo, Bloglines), says "Whenever you have more than one funded company in the calendar space, you know you are in the bubble." :-)

Anyway, back to the story...

So, the first thing that we noticed was that www.hipcal.com was extremely fast and simple. The design had a natural ease about it that appealed to everyone here and it was extremely snappy. The second thing that we noticed was that the team was very engaged and dedicated to their users, even though they had classes to attend at school (RPI)!

Garret Heaton
Garret Heaton

So, on a whim, I sent Garret Heaton, [the guy who started it as part of school project], a simple email: "Hey, love your site. Interested in talking about working together?" Garret replied fairly quickly with enthusiasm and we got started.

A few days later, during a conference call with the HipCal guys (all five of them), we quickly got into a discussion about joining Plaxo. And, at some point during the conversation, I said: "Think about it this way. Would you rather be in Troy, New York, in three feet of snow, working out of your parents' garage OR would you rather be sitting in a nice house on the beach in sunny California with all the beer you can drink and parties every night." After about about 15 seconds of silence--in which I was thinking that I made a huge tactical mistake--the other end of the phone burst into laughter and the group screaming "we like the second option better!" :-)

So, we flew the guys out to California, but had some trouble with the car rental since most car agencies require the driver to be 25 or over. Once we cleared that up, we got down to business. By the end of the day, we all realized that this was meant to be (i.e. they are five amazing, talented, and nice guys) and left us with a great feeling.

That was easy, now for the hard part

We signed the deal a few weeks later and have been making plans for a new calendar ever since. The guys will be moving to California in June. [Note: I failed to mention that buying a home on the California coast would cost a small fortune. ;-] The guys will be looking for a house to rent in Mountain View/Palo Alto very soon -- let me know if you have any leads.

Stay tuned for the big changes coming from Plaxo's new calendar team.

btw: The original name of HipCal was MyPIMP.com. And, in case you didn't know, "PIM" is a common acronym for Personal Information Manager.

HipCal, some real cool dudes
Garret Heaton, Tawheed Kader, Pete Curley, Glenn Dixon, and Chris Rivers

More photos of the HipCal guys

about_hipcal

Here's a photo of Pete Curley. We haven't figured out what he does yet, but we know that it has somethng to do with refilling the kegs. Oh, and Pete designed the cute little hippo on the HipCal site.

pete_curley


Here's a photo of Chris ("Silent Chris") Rivers. He's generally ....., um, er, ..... silent. But, once you get a few margaritas into him, watch out because he turns into "Crazy Chris"! He is rumored to have a very large shoe collection.

chris_rivers_smile


Here's a photo of Glenn Dixon. When we first met, I thought that he was "Silent Chris" and kept wondering "he talks a lot, I wonder why they call him Silent Chris...?" Glenn just recently got out of prison, but don't let his tatoos and rough exterior fool you... he's a teddy bear on the inside.

glenn_dixon



Here's a photo of Tawheed ("Wheed") Kader. He's sorta like the George Harrison of the HipCal group. [Not really sure what I meant by that, but it sounded good when I wrote it.] We don't understand what his nickname means yet, but he sure seems excited about moving to California.

tawheed_kader

UPDATE: Looks like we've got some initial reactions coming in :)

[Mark, this is for you. ;-) ]

Someone sent me a list of quotes from famous people doubting one thing or another (see the list below). Whenever things are getting difficult at Plaxo, I read this and it recharges me. I'd like to print these on the walls of our office to inspire people. (btw: Thanks to whoever sent this to me!)

So what are we gonna doubt next?

It's easy and fun to look at folks in the past and assume that we're not like them, that we're modern, civilized and open-minded. But, of course, most us are not. So, here's my short list of things that I believe will become reality (whether we like them or not), and have plenty of doubters today:

  • Stem cell use
  • Cloning
  • Nano-tech
  • Gay marriage
  • Singularity (a la Kurzweil)
  • Space travel
  • Parallel universes (whoa!)
  • Robot cars
  • Robot spouses :-o
  • A unified democratic party
  • Universal address book :-)

btw: I'm not predicting that these are all "good" things, but rather, that they will become normal in the future. I'd love to hear what things you think I've missed.

On the other hand

In an attempt to be fair and balanced, there is another side to doubt: Doubt: A History : The Great Doubters and Their Legacy of Innovation from Socrates and Jesus to Thomas Jefferson and Emily Dickinson (although I agree with the Washington Post's review that Hecht's book is really not about "doubt" and that she tends to focus on a few successful doubters).

Oh, I almost forgot the list:
Thomas Watson Sr.

"Computers in the future may weigh no more than 1.5 tons."
--Popular Mechanics, forecasting the relentless march of science, 1949

"I think there is a world market for maybe five computers."
--Thomas Watson, chairman of IBM, 1943

"I have traveled the length and breadth of this country and talked with the best people, and I can assure you that data processing is a fad that won't last out the year."
--The editor in charge of business books for Prentice Hall, 1957

"But what ... is it good for?"
--Engineer at the Advanced Computing Systems Division of IBM, 1968, commenting on the microchip.
Ken Olson

"There is no reason anyone would want a computer in their home."
--Ken Olson, president, chairman and founder of Digital Equipment Corp., 1977

"This 'telephone' has too many shortcomings to be seriously considered as a means of communication. The device is inherently of no value to us."
--Western Union internal memo, 1876

"The wireless music box has no imaginable commercial value. Who would pay for a message sent to nobody in particular?"
--David Sarnoff's associates in response to his urgings for investment in the radio in the 1920s.

"The concept is interesting and well-formed, but in order to earn better than a 'c,' the idea must be feasible."
--A Yale University management professor in response to Fred Smith's paper proposing reliable overnight delivery service. (Smith went on to found Federal Express Corp.)

"Who the hell wants to hear actors talk?"
--H.M.Warner, Warner Brothers, 1927.

"I'm just glad it'll be Clark Gable who's falling on his face and not Gary Cooper."
--Gary Cooper on his decision not to take the leading role in "Gone with the wind."

"A cookie store is a bad idea. Besides, the market research reports say America likes crispy cookies, not soft and chewy cookies like you make."
--Response to Debbi Field's idea of starting Mrs. Fields' Cookies.

"We don't like their sound, and guitar music is on the way out."
--Decca Recording Co. rejecting the Beatles, 1962.

Lord Kelvin

"Heavier-than-air flying machines are impossible."
--Lord Kelvin, president, Royal Society, 1885.

"If I had thought about it, I wouldn't have done the experiment. The literature was full of examples that said you can't do this."
--Spencer Silver on the work that led to the unique adhesives for 3-M "Post-It" Notepads.

"So we went to Atari and said, 'hey, we've got this amazing thing, even built with some of your parts, and what do you think about funding us? or we'll give it to you. We just want to do it. Pay our salary, we'll come work for you.' and they said, 'No.' So then we went to Hewlett-Packard, and they said, 'hey, we don't need you. You haven't got through college yet.'"
--Apple Computer Inc. founder Steve Jobs on attempts to get Atari and H-P interested in his and Steve Wozniak's personal computer.

"Professor Goddard does not know the relation between action and reaction and the need to have something better than a vacuum against which to react. He seems to lack the basic knowledge ladled out daily in high schools."
--1921 New York Times editorial about Robert Goddard's revolutionary rocket work.

"You want to have consistent and uniform muscle development across all of your muscles? It can't be done. It's just a fact of
life. You just have to accept inconsistent muscle development as an unalterable condition of weight training."
--Response to Arthur Jones, who solved the "unsolvable" problem by inventing Nautilus.
Irving Fisher
"Drill for oil? You mean drill into the ground to try and find oil? You're crazy."
--Drillers who Edwin L. Drake tried to enlist to his project to drill for oil in 1859.

"Stocks have reached what looks like a permanently high plateau."
--Irving Fisher, Professor of Economics, Yale University, 1929.

"Airplanes are interesting toys but of no military value."
--Marechal Ferdinand Foch, Professor of Strategy, Ecole Superieule de Guerre.

"Everything that can be invented has been invented."
--Charles H. Duell, Commissioner, U.S. Office of Patents, 1899.

"Louis Pasteur's theory of germs is ridiculous fiction."
--Pierre Pachet, Professor of Physiology at Toulouse, 1872.

"The abdomen, the chest, and the brain will forever be shut from the intrusion of the wise and humane surgeon."
--sir John Eric Ericksen, British surgeon, appointed Surgeon-Extraordinary to Queen Victoria 1873.
Bill Gates
"640K ought to be enough for anybody."
--Bill Gates, 1981






Here's one that is more inspirational:

"Change is the law of life. And those who look only to the past or present are certain to miss the future."
-John F. Kennedy .

If you've been following some of the postings here on this Blog as well as elsewhere on the blogosphere, you know there's been much discussion regarding 'acquaintance spam' and abusive use of the Plaxo service. Much of this abuse can be traced to the once-prominent Update Contact Wizard (UCW) feature. The UCW allows members to select individuals from their address book and send them an email asking for updated contact information.

Todd Masonis already wrote about some of the steps we are taking to prevent potential abuse. All of these changes are now in place. I believe the most significant change is the removal of the UCW from the new registration flow. Previously, when someone would join Plaxo, a new user was encouraged to update their address book by running the UCW. As a result, new users accounted for the vast majority of update request emails sent. Today, the UCW has been removed from the new user registration flow. New or existing users are no longer encouraged to run the UCW and the UCW button has been removed from the Plaxo Toolbar. Furthermore, newer Plaxo clients such as Thunderbird, Mac, and AIM do not include the UCW.

For members who may continue to run the UCW, perhaps because they have an older Plaxo Outlook client or they launch the UCW manually, we have also added additional service controls which limit the number of update requests a member can send. Additional throttling controls are also in the works, and we are actively moving away from using update request emails entirely. We hope and believe these changes will make a big difference, but we intend to remain vigilant in our efforts to eliminate any abusive use of the service. To that end, we would appreciate your help in the effort by reporting to us any inappropriate or suspicious use of the Plaxo service.

Reporting Abuse:

If you feel your privacy has been violated or that a member is abusing the Plaxo system, we ask for your assistance in reporting the abuse to our Plaxo Abuse Department (abuse @plaxo.com). We take every report of abuse very seriously, and each report is investigated and followed up on.

[04.21.06] OSCON 2006

OSCON has grown up from its humble beginnings as a conference for the hackers in the Perl language over a decade ago to the premiere conference on open source software and practices. As conference organizer, Nathan Torkington, likes to put it: “In Babylon 5 terms, open source is our last best hope for software.”

If you are a regular reader of this blog, you know that at Plaxo, open source is our lifeblood. Our infrastructure is built on Linux, MySQL, and hundreds of other open source tools and libraries. Ecards uses the open-source LAMP stack in order to speed development, Thunderbird was one of our first supported clients and available under an open-source and public license, The Plaxo Open API enables the open-source practice of “mash-ups” to allow you to move your data outside our “information silo”, When people see how our Address Book Widget puts that mash-up power in the hands of anyone, they think there must be a catch. The only catch here is the principle stated in our privacy policy: “Your information is yours (not ours).”—an inherently “open-source” idea.

It is because we build on it (operations and eCards), provide it in code (Thunderbird client), and live its principles (Open API and widget), that it makes sense that we would want to participate more in the community. Luckily at this year’s OSCON, we have a chance to do so in the form of three talks.

  • I’m giving a talk “Underpants Gnomes eCards” in the PHP track to explain from a “developer in the trenches” perspective how a revenue product was created using LAMP. Hopefully it will be a little fun to see the things we got right, as well as some of the missteps we made along the way.

  • Joseph, who wrote the Address Book Widget, will explain all the interesting problems he ran into when creating Web 2.0 “mash-up” in his “Cross-site Ajax” talk.

  • Finally, I put a talk about some of the practical Ajax design patterns we use here at Plaxo in a “0-60 Ajax” talk.

...Continue reading "OSCON 2006"...

[04.20.06] Poker Night

A few of us plaxors have started a weekly poker night. From the trash talking, to the bluffing that you're bluffing (or are you?), to the gut wrenching all-in moments, it's a very fun diversion. I could tell you about the time Michael's flush got beat by Mark's full house, or when Ryan doubled up with quad jacks on the very first hand, or when my 9-6 beat Mark's 9-7 in an all-in battle for first place. And that's only from the first three weeks.

There has been some debate about how constructive the game of poker really is. I think it actually reinforces some useful skills. You can talk about bluffing, betting, and pot odds all day, but when it comes down to it, poker is a game about decision making. The best poker players are the ones who can gather the most information and make the best decisions based upon it. Can that be applied outside of poker? My bet is yes.

More photos here...

-- Russ Davis, Plaxo Client Engineer

I just got a note today that zvents had implemented our Address Book Access widget, so I navigated over there and indeed they have!

Plaxo Widget on zvents

When you're on an event page, just look for the "Email this event to a friend" link. From there, you can launch our widget to quickly grab your friends' e-mail addresses and share the event page with them. A quick timesaver we hope :)

We've seen some pretty good response towards our widget; more and more people are signing up to use it everyday. Hey, why build Yahoo, Hotmail, GMail, and Outlook import when Plaxo's already done it for you? If you're interested in the widget, or have questions about it, feel free to e-mail me.

-- Mark Jen, Product Manager

Update: Looks like they've mentioned it on their blog as well :)

At 5:12 am this morning, the Bay Area marked the 100th anniversary of the Great San Francisco Earthquake.

Almost twenty years ago, I had the opportunity to meet with a survivor of the Great Quake, when I was doing some volunteer work in a convalescent ward.

“Jack” was an enterprising 10 year-old living in San Francisco when the earthquake struck. Among other things, the 7.8 magnitude quake knocked out all of the telegraph lines, severely disrupting the operations of the large west coast railroad companies, most of which had their headquarters in the city. In the days after the earthquake, Jack got a job running messages from the rail yards to the headquarters of the Southern Pacific Railroad. Apparently, he so impressed the company brass that they hired him on and, ultimately, paid for him to go to school. He continued to work for the railroad through the ensuring decades, opening up new routes, helping the company manage the transition to diesel engines, living through the mergers, expansions, etc. until he retired at the age of 77, having spent sixty seven years of his life working for the same company!

Fairly impressive, especially for those of us in an industry where most companies are hardly more than a few years old. Yet, despite this wonderful history, Jack did have some cautionary words about devoting your life to a company. “After all,” Jack pointed out, “No one from the railroad has come to visit me in the hospital.” Buildings can fall. Companies can merge or disappear. But, ultimately, it is our connection to people, rather than institutions, that prove the most lasting.

If you're running a recent version of the Plaxo toolbar for Outlook or Outlook Express, you'll see the Click to Connect button and drop-down whenever you get an e-mail from someone. One of the options is to "Get a map or directions" for the person that sent you that message. It's handy when you need to visit someone's office or get driving directions to their home.

Click-to-Connect button
Click-to-connect button inside an Outlook e-mail message

Click-to-Connect popdown
Click-to-connect expanded to show the sender's contact info and relevant actions

Well now it's even handier, because when you click that link, you'll get a page with the map embedded inside it. You can toggle between showing your contact's work and home address (if the person has chosen to share that information with you), and you can also click to get driving directions from your own home or work address.

Click-to-Connect embedded map page
Embedded map page linked from Click-to-Connect

We chose to use Yahoo! Maps for our mashup because they provide automatic geo-coding (turning a mailing address into latitute/longuitude), so it was easy to say "show me a map of Mark Jen's work address" and bam!

Hope you find this fun and useful!

--Joseph Smarr, Plaxo Server Engineer

We love to read about people's experience with Plaxo... good or bad. Here are a couple of recent mentions of Plaxo in the blogosphere:


We'd like to encourage people to share their thoughts, comments, and experience with Plaxo by blogging about it. We're listening and will use the feedback to improve the Plaxo service. We'll also try to highlight those posts here on our blog from time to time.

When we started Plaxo we were running on a handful of Linux boxes. In fact, I think we had as many development machines as we did production servers. The initial roll out was 2 database servers, running MySQL, each with a couple IDE drives in them of around 80gigs a piece. That was about 3 and a half years ago.

Once we started growing we moved into Dell servers with their external storage, that was ummm...interesting. Let's just say that Dell should stick to what they are good at, making desktops. So we moved on.

Now we've grown to over 200 servers, which includes over 25 DB pairs (primary/secondary for redundancy), each capable of storing between 600gig to 1TB. We're still running MySQL, on InnoDB, but not much else is the same. We've installed a SAN environment built around storage from Pillar Data Systems, and a whole slew of servers from Penguin Computing , which run very nice Opteron chips from AMD. I won't go into more specifics as to what we have in place, but will say that it takes 6 full data center racks to hold just the storage, and no we aren't being paid by Pillar or Penguin to say this. :-)

Here's a glimpse at a bit of the storage:

Plaxo OPS cage

Yeah, we know it's not a huge environment, and there are certainly larger environments in most any data center, but we thought it'd be interesting for our customers to understand what it really takes to run this service. Maybe it'll entice a few of you to show your appreciation and become premium users, hint hint.

Some of you have been watching the OPS Blog, which we keep updated with any issues that the service is experiencing. It's not a perfect service, but we try darn hard to provide a fast, reliable and secure experience, and hope you can bear with us when we do have little issues.

Finally, we're hiring in the OPS department if any of you talented Operations Engineer/Unix Admin types are looking for a challenge! See ya next time.

Believe it or not, a common opening line in support emails is "no one will probably read this, but..." This sentiment is magnified for companies that offer the unusual combination of free service and tech support. Combine this with previous bad experiences with online customer support and the opening line isn’t too surprising.

We consistently beat our target 24-hour response time on standard email support channels and we boast a round-the-clock VIP support channel that's resolving most of our Premium member's issues within a few hours. But we understand that a single email may not have all of the information needed to diagnose a user's problem. Several emails may be sent back and forth before the nature of the issue can be fully understood. Before you know it, 3 days have passed and the member is ready to throw their computer out the window.

We recently decided to offer chat support to cut the wait time and provide immediate support. It wasn’t as simple as adding an icon to our Support page. We needed a tool that was highly reliable (no dropped chats), very low chat latency (it doesn't take 10 seconds before the other person receives what you just typed) and easy to use for the user. But there were many things to also consider besides the obvious. We had to decide on cost, administration, security, back-end requirements, front-end requirements, protocol support, scalability, user convenience, operator convenience, monitoring, real-time statistics and analysis, multi-chat ability, images and so on. And it's a bigger challenge with many providers offering closely the same features.

Plaxo live chat

We also had to hand select from our customer care team that fit this style of support. When answering support emails, you have time on your side - time to research the problem, time to consult with engineers and time to compose a neatly written response. With chat support, everything happens on the spot. It's important to have an answer within seconds, type complete sentences quickly and accurately, and staying away from using IM shortcuts. IMHO, IM shortcuts personally confuse me, LOL. But one of our most unanticipated challenges was training our Live Chat team how to gently let down our customers who ask them out on dates. Who knew that would be one of the most often asked questions?

We’ve found that an overwhelming 98% of those who use Live Chat are satisfied with their support simply because the resolution time is within minutes instead of hours. But is chat for everyone? Probably not. Personally, I prefer shooting out an email and waiting for an answer to read at my convenience. But it's good to offer a different kind of support channel for someone who may need an answer right now than right later.

[04.11.06] Plaxo on the Go

A few of us from Plaxo made the trip to CTIA Wireless 2006 ® in Las Vegas last week. We joined 40,000 other attendees from over 90 countries in oohing and aahing over the latest wireless phones, services, and applications that will be available in America over the next 3-4 months. (Some of our team also got to go to the granddaddy wireless show in Europe, 3GSM, a couple of months ago.) At CTIA, there were over 900 exhibitors and we didn’t even come close to seeing them all.

The phone manufacturers’ booths (Motorola, Nokia, LG, Samsung to name a few) were packed with new phones and people wanting to see them. There were phones that reminded me of kids’ transformers – depending on which way you opened them up, it could be a phone, camera or video camera. Phones showing live tv whose screens turned vertically or horizontally depending on how you preferred to watch the show – with no interruption as you turned the screen! Phones with Zeiss optics for the cameras, the first 10Mpixel camera in a phone, a phone with a Flash-based UI, high quality music players and streaming video on others, a phone with a built-in 4GB harddrive or of removable memory (you can store a lot of music and images in 4GB!), phones with wifi, phones running linux, more phones with push-to-talk and bluetooth…phones for kids, phones for seniors, … Now all I need is a phone to do my laundry. If you need more details on the new phones at CTIA, visit the experts at www.PhoneScoop.com.

Now that phones can deliver and display rich media, the phone is a platform for entertainment and personalization - attracting companies such as MTV, Disney, ESPN, HBO, AOL, as well as game developers to the show. We talked to application vendors about surround sound (yes, on the phone!), location-based technology (maps and directions), haptic technology (the phone rumbles as you play a game), cartoons and games, ringtones and mp3 players, streaming video and live tv, controlling your tivo from your phone, and speech recognition.

Also fun was the wireless fashion show which had young designers competing for the top prize in innovation with wireless technology – everything from a baseball jacket with an led billboard which scrolled “CTIA Wireless” (image the lights of Vegas on legs), a purse used as a signaling device (to catch a cab, let the waiter know you’re ready to order or catch the attention of your SO) to clothing which emitted aromatherapy if it sensed the wearer was stressed.

CTIA announced that 25.7 million new wireless subscribers were added in America in calendar 2005 bringing the total number of estimated wireless customers in the US to 207.9 million. Wow. That’s a lot of you trying to make calls, send SMS, share photos and ringtones, and send emails from the phone. So we’re thinking, what can Plaxo do to help you out? If you’ve got a mobile phone and you’re a Plaxo member, we’d love to hear what you want from Plaxo while you’re on the go. Let us know on the Plaxo Community Forums or by commenting on this post!

title
1_fellas

Plaxo is business. But it's not business all the time. We're a tight group. We respect each other. We don't ever take sides. Except maybe in bowling. Bowling together, we settle scores, but we enjoy our time. We're good to each other. Like family.


2_mta
3_jhc
4_mrt

trev_2389
Trevor bowls with style and grace.

jie_2372
Jie knocking down pins.

joseph_2367
Joseph's left hook.

swami_2365
Swami, Ben, Huy, and Stuart

joseph_2353
Drew Colace watches Joseph's back

jing_2357
Jing keeps score

In our new Plaxo eCards release, you'll find even more ways to add a little personality to your eCards, including one of my favorite new features -- custom card borders.

Three of our graphic designers, Christian Bohland, Michael Rowley, and Bill Tani, came up with the designs, playfully exploring borders made of different physical materials and objects. Terry Chay wrote the algorithm to create the borders across cards of all different sizes and Trevor Gattis engineered the eCards customization panel. Didn't they do a great job?

A wooden frame: Border_wooden copy A metal frame: Border_metal copy
A cool gel border: Border_gel copy Prickly barbed wire: Border_wire copy
An incomplete puzzle edge: Border_puzzle copy A spray of sunflowers: Border_flowers

And there's more to check out! I must warn you, though. They do get addictive. I went a little crazy this morning creating cards for this post and can't wait to get even more borders up soon...maybe a goth border, shaggy 70's border, bubble wrap border, bling border...hmmmm...

What new borders would you add to Plaxo eCards?

--Janice Ta, Product Manager, Plaxo eCards

edit card optionsOne of the coolest aspects of Plaxo is that your address book is self-updating. When Plaxo members in your address book change their contact information, it also gets automatically updated in your address book. Vice versa, when you change your contact info on Plaxo, people who have you in their address book can get your latest info. The importance and value of this feature is increasing rapidly as the Plaxo network continues to grow and the percentage of Plaxo members in your address book continues to rise.

Today we are enhancing this core feature by giving Plaxo members greater control over how they notify others and receive notification of such changes.

Receiving Member-to-Member Notifications

New choices, now available from your communication preferences, include:

  • Daily or weekly digest. Instead of getting individual member-to-member e-mail notifications each time someone changes their contact info, you can choose to get a single weekly message.
  • Silent update. You have the option to suppress member-to-member notification e-mails globally, or for specific individuals in your address book.

Communicating Your Own Changes

When you’re updating your own contact information online you also have a new “silent mode” option, which still automatically updates Plaxo members who have permission to see your contact info, but withholds sending them an e-mail notification. This option is particularly useful when making small changes to your contact info.

As always, you continue to have control over who gets your home or work contact info via your sharing options .

We hope these changes improve the Plaxo experience even more and as always, we want to hear what you think.

--Dassi Shusterman, Plaxo Product Manager

One of Plaxo's cooler integration features involves putting little icons in Outlook's contacts view that indicate various pieces of state (e.g. Plaxo member, updated, bounced, etc) and a number of people have wondered how we do it.

Originally, the feature started out as part of a screenshot in some early mockups. When we were first designing the UI, we had a designer mockup a bunch of screens. One of them had a cutout of Outlook with a little Plaxo icon in the upper right. When we saw the screen we said, "Hey, that's really cool! How can we actually implement that?"

We actually ended up implementing the feature twice. Our first implementation started out as an exercise to see if it was even possible. It worked, but it left a lot to be desired. Initially, we annotated the name of each Plaxo member in your address book by adding an underscore to the end. When Outlook displayed the contacts view, the code would grab the pixels using GetDIBits and then perform some super simple OCR.

The concept is pretty simple, but getting it to actually work took some time. First, you have to subclass the window so you know when it's being drawn and can grab the bits. Now, in the WM_PAINT call, you can have something like this:

HDC hdc = GetDC(hwnd);
HDC hdcBuffer = CreateCompatibleDC(hdc);
HGDIOBJ hOldObj = SelectObject(hdcBuffer, m_hBuffer);

BitBlt(hdcBuffer, 0, 0, w, h, hdc, 0, 0, SRCCOPY);

if (GetDIBits(hdcBuffer, m_hBuffer, 0, (DWORD)bi.biHeight,(LPBYTE)lpbi +
              (bi.biSize + nColors * sizeof(RGBQUAD)), (LPBITMAPINFO)lpbi, (DWORD)DIB_RGB_COLORS)
    DrawCards(hwnd, hdcBuffer);

BitBlt(hdc, rcUpdate.left, rcUpdate.top, rcUpdate.right - rcUpdate.left, rcUpdate.bottom - rcUpdate.top,
       hdcBuffer, rcUpdate.left, rcUpdate.top, SRCCOPY);

SelectObject(hdcBuffer, hOldObj);
DeleteDC(hdcBuffer);
ReleaseDC(hwnd, hdc);

I left out a few details (getting the bits per pixel, heights, widths, etc) but that's the general idea. Now that you have the bits, to the next step is actually figuring out who's a member and where to draw the cards. Once that’s done, we’ll also need to know how wide each darkened name region is. Fortunately, the left and top borders are a fixed number of pixels (exactly how many changes slightly based on Outlook version and theme) so finding the first name region is easy. Now all we need to do is scan right, looking for the first white pixel as that represents the end of the name area.

Once you know how wide the name region is, you can calculate the number of columns and start searching for name regions. Scanning from the top, name regions are identified by their fixed background color (#D4D0C8) or their highlight color (#0A246A). Once you find one, it’s pretty easy to check for an underscore at the end by scanning the name region from the right border. If you find one, you draw the little icon and move on to the next name region.

Obviously, there are all kinds of problems with this approach and as soon as we'd implemented it, we knew it wasn't shippable. First, we were modifying the data in the address book for purely display purposes. Second, scanning the bits is pretty slow. Third, there are lots of cases where the bits aren't drawn (e.g. partial updates, obscured windows, etc) or are drawn differently (fonts, colors, etc). The list goes on.

We decided it was a pretty neat idea, but we needed to find something that was a lot more robust. Dru came up with a much better approach. Using techniques described by Matt Pietrek and Jeffrey Richter in various books and Microsoft Journal articles, there’s a clever way to insert your own function in between various system calls. For those looking for something more in-depth, check out this overview

The basic technique goes something like this: when a module (exe or DLL) is linked against a .lib stub, calls to external DLL functions are placed in an import address table (IAT) in the module. When the module is then loaded, the Windows loader resolves those imports by filling in the IAT with the addresses of the functions in the DLL. One benefit of this level of indirection is that it allows for functions to be relocated within a DLL without having to recompile all of the modules that use it (i.e. if you rebuild a DLL, you don't have to rebuild all of the exes that link to it). While not designed for this purpose, it also provides a systematic way to insert code in between the caller and the callee (for calls dispatched by the IAT) by changing the address in the IAT.

Here's a screen shot of the dependency walker included with Microsoft Visual C++ showing the imports that will be resolved at runtime in the upper right. For example, plx_core.dll has an import entry for BitBlt in GDI32.dll:

To draw the icons, all we have to do is replace the import entries for some of the text drawing functions in Outlook (DrawText, TextOut, etc. depending on the version). To do that, we’ll first walk through the import descriptors, since there's one descriptor per DLL. In the screenshot above, each item under plx_core.dll corresponds to an import descriptor. Once we find the descriptor we're looking for, we then have to find its entry in the import table. The following code finds the correct import table and then looks for entry you're trying to replace:

while (pImportDesc->Name)
{
  // note that the szImportDLLName should match the szDllName (from 
  // c_szDllName that we passed in). we can optimize this to continue
  // if the names don't match
  char* szImportDLLName = MakePtr(char*, hLocalModule, pImportDesc->Name);

  // do a case insensitive compare and if these names match, break so that we can
  // process this import descriptor
  if (_stricmp(szDllName, szImportDLLName) == 0)
    break;

  // iterate to the next import descriptor
  pImportDesc++;
}

// if we have an invalid import descriptor, then we know that we didn't find the 
// DLL we were looking for.
if (!pImportDesc->Name)
  return FALSE;


PIMAGE_THUNK_DATA pThunkAddress;
pThunkAddress = MakePtr(PIMAGE_THUNK_DATA, hLocalModule, pImportDesc->FirstThunk);

// as long as these are non-null, we can keep iterating
while (pThunkAddress->u1.Function)
{
  // if we get a match, then return the current pThunkAddress
  if (DWORD(pThunkAddress->u1.Function) == dwAddressToIntercept)
    break;

  // otherwise, iterate to the next PIMAGE_THUNK_DATA item
  pThunkAddress++;
}

if (!pThunkAddress->u1.Function)
  return FALSE;

// pThunkAddress now contains the import entry we're looking for

Once you have the import entry, you can replace it with your own call:

// we can write to this address, so save off the old API so that we can still access it.
if (p_pApiOrg)
  *p_pApiOrg = PVOID(pThunkAddress->u1.Function);
 
// we can write to the address of this function, so simply write over the old address
// with the address of our new function.
pThunkAddress->u1.Function = (DWORD)pApiNew;

For the sake of some brevity (not that it's very short in the first place), some of the details are left out (e.g. the page pointed to by pThunkAddress is probably write protected so you have enable writing while you update the import entry using VirtualProtect and then disable write access once you're done), but it's the right idea.

By replacing the import entry for various text drawing functions (DrawTextEx, ExtTextOut, etc), we can pretty easily track when things are drawn in the address book. Unfortunately, it's always a little more complicated in practice, as different versions of Outlook uses different functions and you only want to replace those calls when the address book is being displayed. Another thing to watch out for is when other people change the import table. Once you take care of those issues though, it's pretty straight forward to have a quick lookup table for items that should have icons. In the end, hooking into the IAT is a lot faster, more robust, and more precise than doing OCR ;) and that's still how we draw the icons today.

If you're interested in more information, check out IAT articles on Code Project

We recently had our second full-day hackathon at Plaxo, which we affectionately refer to as “Haxo”. [Our first Hackathon was last December, but somehow we never got around to blogging it (doh!).]

Some of our Haxo projects (see more)

Amazon wishlist in birthday reminder
Amazon wishlist in birthday reminder

Firefox toolbar
Firefox toolbar

mod_gzip analysis
Analysis of website performance

PlaxoRank
PlaxoRank

For the uninitiated, a Hackathon is a designated day where you’re freed from all your normal daily obligations (meetings, bug fixes, upcoming releases) and you can work on whatever you want. We provided breakfast, lunch, and dinner, and everyone worked frenetically from the morning until late at night. The general rule is that projects have to be somewhat related to the company’s direction, but everyone is encouraged to work on something new and different, and in particular on something that wouldn’t otherwise make it to the top of the priority list. This includes cool new features that might apply to a niche of our user base, fixing some long-standing but low-grade annoyances or bugs, or research about some potential new market or technology. Everyone in the company is encouraged to participate—not just engineers. Some of the PMs and Biz team members rolled up their sleeves and started coding, while others made mock-ups or proposals.

It’s always amazing what a passionate and creative bunch of people can accomplish in a single day. It sometimes makes me wonder if everyday shouldn’t be a Haxo day! Here are some examples of the projects we built during Haxo II:

  • Send an SMS to your friend’s phone using Click-to-Connect
  • See your friend’s Amazon wish list inside a reminder of their birthday
  • Firefox toolbar, with one-click auto-signin access to Plaxo Online
  • Highlight any text in a web page and add it to your address book or calendar (using NLP to parse out the different fields of information)
  • Send a Plaxo eCard using any photo found on the web
  • Sync your bookmarks between Firefox and IE (and access them on Plaxo Online)
  • Periodic backup wizard that runs automatically to create a snapshot of your data
  • "PlaxoRank" comparison of how connected two contacts are (ala AimFight)
  • One-box find-as-you-type search of all your contacts, calendar, tasks, and notes
  • Shared group address book
  • Tool to collect and report all the unique crashes (with stack traces) from our server farm
  • Profiling our web site performance (found several easy ways to make it faster!)
  • Internal dashboard of which Plaxo features are being used the most (from our data warehouse)
  • Candid photos of everyone at Plaxo

We hope to release some of these new features in our production service soon. And we’re planning to make Haxo a monthly affair, given how successful it’s been so far. But while the things produced during Haxo are always impressive, the most valuable outcome is that everyone leaves so happy and energized. After all, we’re all builders and hackers at heart, and as anyone will tell you, entrepreneurship is 10% inspiration and 90% perspiration. So the real point of Haxo is to let everyone bask in that 10% a little longer, so we can all do what we really love most.

Every year, there has been talk about having a Plaxo Ski Trip, but it had never happened. Well, this year it finally did :)

This past weekend, 14 of us went up to North Lake Tahoe for some skiing and snowboarding. Peter graciously hosted us at his cabin in Tahoe Donner and since we had so many people, we rented a condo nearby for additional sleeping arrangements. Many of us left Thursday night and spent Friday at Northstar.

P1030455.JPGP1030459.JPG
P1030467.JPGP1030490.JPG

The rest of the crew drove up and joined us Friday night. People split off between Northstar and Squaw on Saturday, but we reunited for dinner and games afterwards.

P1030526.JPGP1030524.JPG

All in all, the first annual Plaxo Ski Trip was a success; can't wait 'till next year! :D

--Mark Jen

Any Plaxo members out there want to join our Plaxo Fantasy Baseball league? We're a few spots short of a league, so we thought it would be fun to invite a couple of Plaxo members to join us!

For those of you familiar with Fantasy Baseball, we will be running a weekly Head-to-Head Points league. This is your chance you be your own baseball manager: ... building your team through a draft, trading with other managers in the league, and filling out your lineup. Lineup changes are weekly, so it shouldn't take too much time.

We are planning on conducting our online live draft later this week, so you can pick your team yourself or have your team auto-selected based upon pre-draft rankings. Our fantasy league starts next Monday and will run for 24 weeks with the top 4 teams making the playoffs. Plaxo prizes will be given to the winners. Who knows... maybe we'll let the winner pick their own favoriate feature in put into the next release of Plaxo :-).

If you're interested, please let The Commish know and I'll send you the details!!! It'll be fun, and you'll get to compete against your favoriate Plaxo employees! Come and join us!!!

The Commish

P.S. The only thing I ask is you be a Plaxo member :-)

A few months ago, we launched the Plaxo Partner program and our Open API. It's been a great success so far, with over 10 partners already signed up to Plaxo-enable their applications.

When it comes to address books, many companies first take the "build it, and they will come" approach, investing heavily in developing an address book database infrastructure that they then hope their users will populate. Lots and lots of evidence shows that this doesn't work: people don't add entries fast enough to cope with the ever changing dynamics of their network; and import tools are not used because as soon as you import data from another address book, it's out of date: people move, change jobs, get new email addresses and mobile phone numbers.

Plaxo's goal is to enable partners to create complete and accurate address book as well as new sources of revenue, by focusing first on getting complete and accurate data into the address book, and then on keeping it that way. One way we do this is through the Plaxo API and its accompanying tools.

The Plaxo API is accompanied by a set of tools for importing data from most sources of address book information (Outlook, Outlook Express, Yahoo!, Gmail, Hotmail, AOL, etc.). The two together help you create a complete address book on your site that's connected via Plaxo to all the other places your users store data, and to all the other people your users know. It can help grow your business and help you offer new services that use the data.

If you have a site or a service you think needs a connected address book, we'd like to talk with you.

[04.01.06] We didn't do it

We got a ton of emails today from bay area locals that someone spray-painted a billboard on Highway 101:

Tagged Billboard
Billboard on Highway 101, near San Mateo exit (92)

So, I just wanted to make it clear to everyone that, to our knowledge, no Plaxo employee did this and that we do not condone illegal activity or criminal behavior. Our best guess is that this was done by one of our over-zealous users or by one of our detractors (to make us look bad). I guess we could say "thanks", but really it's not nice and please don't do anything like this again.

If anyone has information about who did this, please contact the San Mateo Police.

And, if anyone from Apple is reading this, please know that we are sorry that this has happened to your fine billboard. [btw: We'd love to partner with you guys, give me a call.]

--Rikk Carey