Quantcast

Going For It: Bootstrapping Booms in Philadelphia

June 4, 2009 – 2:46 pm by Cristina Martin Greysman Printable Version Printable Version

growth1

Vuzit participated in the recent “Entrepreneur Expo” at the University City Science Center, which   drew more than 50 companies and 400 attendees. The Expo showcased new business ideas and innovation in the Philadelphia area. Read more in the article, “Going For It: Bootstrapping Booms in Philadelphia.”


New Enterprise Document Control Software and Developer Community at Redesigned Vuzit.com

May 11, 2009 – 8:06 am by Cristina Martin Greysman Printable Version Printable Version

Vuzit continues to evolve to meet the growing demand for our products. Today, at the redesigned vuzit.com, we are announcing the Vuzit DocuPub Platform. This is a new name for the Vuzit service that thousands of web and software developers have been using for over a year to provide “look but don’t touch” security to documents online.  The Vuzit DocuPub Platform can be licensed as a subscription or as an on-premise installation for organizations that need to host documents and files within their own IT infrastructure.

We are also previewing Vuzit SecureVu on the new web site. Due to be released in mid-2009, this feature-rich application is built on the Vuzit DocuPub Platform and provides businesses the full life-cycle of document distribution and control out of the box.

Most importantly, we’ve made it easier for software and web developers to work with us with our improved Developer Community.  At http://vuzit.com/developer, all the documentation, tools and code samples can be easily accessed in one place.

See the full press release at http://www.prweb.com/releases/2009/05/prweb2403804.htm

As always we welcome feedback from the community to let us know how we are doing.


Vuzit Web Services Command Line Tool - VuzitCL

April 30, 2009 – 10:18 am by Brent Matzelle Printable Version Printable Version

VuzitCL - Vuzit command line

Here at Vuzit we’re dedicated to providing the best possible experience for developers. That’s why we spend so much time on support and developer tools. Well today we are announcing VuzitCL, yet another tool to make your life easier. VuzitCL is a command line interface to the Vuzit Web Service API. As with all of our developer tools it’s totally free and open source. With this tool you don’t even need programming experience to automate the upload and deletion of documents.  Below is a single command that uploads a file:

vuzitcl -k PUBLIC_KEY,PRIVATE_KEY -u “c:/temp/test.pdf”

To use the command above for yourself just replace PUBLIC_KEY and PRIVATE_KEY with your personal Vuzit developer public and private keys, respectively. You can sign up to get your keys from here.

VuzitCL is also handy for use in programming environments in which we don’t currently have full support.  So far we have Javascript, PHP and Ruby fully covered.  VuzitCL should help those of you that have been eagerly awaiting the Java, .NET or Python versions we’re working on.  Read the tutorial to see how you can use VuzitCL with your programming language.  

Download yourself a copy of VuzitCL and start using it today. Below are a few links that should get you started:


Ruby Online Document Viewer API Released

April 16, 2009 – 11:23 am by Brent Matzelle Printable Version Printable Version

VuzitRuby 

At Vuzit we write much of our code in Ruby so this release is very exciting for us. So let me introduce you to VuzitRuby, the Vuzit Web Services library for Ruby. With this tool any developer (and hopefully non-developers) will be able to automate the upload, load and deletion of documents using the Vuzit platform.

As with our PHP library it’s just a couple lines of code to perform any action. Here’s an example:

require "vuzitruby"  

Vuzit::Service.public_key = 'YOUR_PUBLIC_API_KEY'
Vuzit::Service.private_key = 'YOUR_PRIVATE_API_KEY'

doc = Vuzit::Document.upload("c:/path/to/document.pdf")

puts "Document id: " + doc.id

Getting Started

To get up and running you just need to install the VuzitRuby RubyGem by running the following command:

gem install vuzitruby

The VuzitRuby library is open source so you are free to build it directly into your free/commercial application.  It’s hosted on Github so you can even create your own version of it if you wish.  

Below are some other helpful links for getting started:

Do you have VuzitRuby in my Programming Language?

Right now we support the following programming languages:

If you’re interested in a library for your programming language then let us know.   If you want to try to write your own then also let us know. We’ll do everything we can to help you build it. The languages on our short list are Microsoft .NET, Java and Python.


Reverse Engineering the 100% AJAX Vuzit Document Viewer

April 15, 2009 – 11:00 am by Chris Cera Printable Version Printable Version

Most people think about documents as individual files, and this is where our viewpoint contrasts with the norm.  We believe that working with files should be merely an option, and a less desirable one for certain applications.

At Vuzit we try to eat our own dog food with every subsystem we build into the Vuzit stack.  As I’ll explain here, we have built our viewer and website using all the same components that we offer to our customers.

Viewer Architecture

The core of the Vuzit stack is our Web Services which provide access to each document’s attributes and content.  Then our 100% AJAX Viewer queries the attributes and pages so that it can render the document (using the Show and Static Image API methods respectively) .  This middle layer, the Vuzit Viewer, could be enhanced or replaced with any document display technology.  The outer layer of the Stack is the Web Site that builds the Vuzit Viewer into its web pages.

Vuzit Stack

The Vuzit Viewer uses only our published Web Services API

I’m happy to announce that with the Vuzit JavaScript 2.6 release our Viewer is exclusively using only our published Web Service APIs to display documents.  This means that anyone could build a Viewer, and perhaps, an even better viewer than Vuzit using our own back-end.  Here is a basic summary of the RESTful Web Service queries that take place:

Document Attributeshttp://vuzit.com/documents/oc.json?key=Vuzit
Page 1: http://vuzit.com/documents/oc/pages/0.jpg?z=2&key=Vuzit
Page 2: http://vuzit.com/documents/oc/pages/1.jpg?z=2&key=Vuzit

This is some early work on the GET /Resty approach mentioned by Brian McCallister from Ning at ETE 2009.  Here is an excellent slide displayed using our Static Image API):

Brian McCallister Diagram

The Vuzit website uses only our published JavaScript API

It’s also worth noting that the http://vuzit.com website uses the same Javascript API that we provide to everyone else.  We use HTML, CSS, and our JavaScript API to layout every page, specify the toolbar buttons, and finally use our secure authentication protocol to load private and sensitive documents.  We don’t use any special code on our site, but we might forget to document a feature from time to time.

Challenge: Build Vuzit into your product

We have designed our Premium+ product to be integrated within other products and services.  It’s simple, scalable, customizable, and secure.  Contact us for more details.


Upgrading your account is much simpler

April 13, 2009 – 8:40 am by Chris Cera Printable Version Printable Version

Upgrade Banner

We recently added an upgrade process that allows Basic and Simple account holders to upgrade their plans easily with a credit card.  From the Account Summary section of the Vuzit Dashboard you can view your current plan, and click the Upgrade link to view the available upgrade options.  The process takes less than 2 minutes and is completely secure.

Account Summary

Why you should upgrade

We recently reduced our pricing on Simple and Premium plans which provide more documents, better support, security, more customization benefits than our Basic plan.  We have also added our Premium+ plan that is built with several features for integration into other products and services.  Call us at 215.966.6010 or email info@vuzit.com if you have any questions and a Philadelphia staff member will be happy to assist you.


Calling all PHP Developers - VuzitPHP web services library

March 18, 2009 – 2:11 pm by Brent Matzelle Printable Version Printable Version

PHP logo

On the coat tails of our web services API release we released VuzitPHP. This tool makes it such that PHP programmers can automatically upload, load, and delete documents using the Vuzit Platform. Below is an example of how to upload a document:


include_once "VuzitPHP/lib/vuzit.php";

Vuzit_Service::$PublicKey = 'YOUR_PUBLIC_API_KEY';
Vuzit_Service::$PrivateKey = 'YOUR_PRIVATE_API_KEY';

$doc = Vuzit_Document::upload("c:/path/to/document.pdf");

echo "Document id: " . $doc->getId();
?>

To get started all you need to do is download the code, sign up for a free account and replace the public and private keys with the keys from your account.

We’re Open Source Fans

A few of you may know I am the original author of PHPMailer the popular email transport library for PHP.  PHPMailer was downloaded over 3 million times, not including downloads from WordPress and Joomla as both projects use it.  As such I’m an “old school” PHP programmer and I’m pleased to bring Vuzit to the PHP community.

I’m also a huge fan of open source software (free as in beer) so I released PHPMailer under an open source license, allowing anyone to use it for commercial purposes. The VuzitPHP library has an open source license as well so you are free to build it directly into your free/commercial application. We at Vuzit believe that sharing source code improves the world we live in and hope that VuzitPHP will make a small contribution, whether or not you choose to use it with Vuzit.

Github logo

The team and I decided to post the project on the excellent Github social coding service. The purpose being that it allows developers to make their own versions (”forks” in coder-speak) of the project to make enhancements. It truly is an open way to share source code.

Getting Started

For those looking to get started using VuzitPHP check out the following wiki pages:

More Code Libraries Coming Soon!

We’re planning on writing libraries for a few more programming languages soon. So far the most requests that we’ve had are for the Microsoft .NET FrameworkRuby, and Python.  If you have one of your own then drop us an email.


Vuzit Product Line and API Updates

March 9, 2009 – 3:02 pm by Chris Cera Printable Version Printable Version

We have made a number of significant updates this weekend which includes new product line updates, and improvements to our Developer APIs.

Premium+ Product Launched

Product Line

We have released our new Premium+ offering which is a complete solution for integrating Vuzit into your product or service.  This is a completely customizable version of Vuzit that allows you to share, publish, secure, and track your documents.  It also provides the ability to view large CAD drawings with customizable image and document sizes.  We are very excited about this new product line, and look forward to how working with customers on integration with their products and services.  Please contact us for more details how we can help you customize Vuzit to meet your requirements.

Pricing Updates

We have updated the attributes and pricing of our current product line.  Thanks to all of the great feedback we have received from current and potential customers, and we are confident that the new product lines will address future customers more adequately.  Our most inexpensive plan allows you to share and publish documents at a cost of only $4.99/month with the first month of service for free!  Please contact us if you are a current customer, and want to switch to any of the new plans.

Vuzit 2.6 Javascript Library Released

This update uses our new show web service internally, and a number of presently hidden services.  The performance of the Viewer has increased since the new implementation requires significantly less processing on our servers.

Web Services Updated

We made a number of updates to the error handling and documentation which should make it easier for developing applications with Vuzit.  We also discovered a bug in the signature code (thanks to a developer that contacted us) which we quickly resolved in production once we received the report.  The bug only affected trial users that attempted to use the Web Service APIs, and not our existing customers that have dedicated accounts.  The documentation for the web services has been significantly updated, especially the section about generating signatures for signing your requests.


Upcoming News

We have some big news coming in the next few weeks.  Stay tuned!


Open IT Online Internet Explorer Plugin Launches with Vuzit

March 3, 2009 – 1:58 pm by Chris Cera Printable Version Printable Version

We recently announced a partnership with Open IT Online where the Vuzit service is available in their extremely popular Firefox plugin.  We are very excited to announce that we have expanded our partnership with Open IT Online Lite for Internet Explorer 6, 7, and 8.  Open IT Online now has the potential to reach over 90% of internet users with its support of most major internet browsers:  Internet Explorer, Firefox, and Flock.

Open IT Online can use Vuzit to provide viewing of many popular document, spreadsheet, and presentation formats without the need for bloated and expensive software like Microsoft Office.  We are excited about the expanded reach of this product, and we continue to promote Open IT Online because of its tight browser integration, intuitive user interface, and ease of use.

Download for Internet Explorer

After you install the plugin, you must right-click the document and select “Open Document with Open IT Online” and select the Vuzit service to view the document.

Choose a service

Please provide us with Feedback on this new extension, and share any ideas you have for improvement.  You can also download the Open IT Online plugin for Firefox.

IE Logo


Vuzit Launches Web Service APIs

February 19, 2009 – 9:00 am by Chris Cera Printable Version Printable Version

Our Web Service APIs have been in private beta for several months, and are now available to all of our Premium+ customers.  These services were designed to provide the capability to easily build Vuzit into existing online products and services.  The Web Service APIs allow developers to interact securely with their Vuzit account to easily upload, remove, and retrieve attributes about documents.

Complete Security

All requests to the Vuzit Web Service APIs are optionally secure where each request is signed with a private key.  This authentication protocol should be familiar to developers that have used the popular Amazon S3 web service.  This method can be bolstered with Secure Sockets Layer (SSL) for transport layer encryption.  We use 256-bit AES encryption which is stronger than most implementations available today.

Web Services

The Web Service APIs conform as much as possible to the design principles of REpresentational State Transfer (REST) using the HTTP 1.1 protocol with responses returned in either XML or JSON.  Documents can be securely added and removed from your account, and the ability to query parameters about each document is available.  We have provided a number of examples on how to use these APIs from within your products and services.  It’s worth mentioning that these APIs are language-agnostic and can be integrated into any language or platform.

Take me to the documentation!

Example

Documents uploaded to our Share section do not have any permissions attributed to them.  We can request the attributes of these documents by calling the Show method, which can be conveniently called with a web browser.  Click here to see the following XML generated dynamically:


http://diglib.org/forums/fall2007/presentations/Payette1.pdf
8 720
540
1322267

1194374255
oc
jpg
3

Feedback Please!

We will continually update the documentation based on the feedback we receive.  We are trying to make these interfaces as accessible as possible, and appreciate any feedback on how to improve them.  We are also planning to launch a community website, and will be posting any code contributions that developers want to share with one another.


Vuzit In The News

February 11, 2009 – 9:00 am by Chris Cera Printable Version Printable Version

We received a lot of press in recent months and haven’t had the time to respond to many of the articles. We bring you this “News Roundup” to say thanks to all the people that have written or interviewed us.

2/11/2009

A press release from today in MarketWatch that announced our funding round. [Link] (Updated 12:15PM EST)

2/2/2009

Allen Stern at CenterNetworks announces our entire round of funding. [Link]

2/2/2009

DreamIt Ventures discusses our funding round on their blog. [Link]

1/29/2009

The official press release from Innovation Philadelphia discusses the CEIF award. [Link]

1/28/2009

Solomon D. Leach of the Philadelphia Metro interviews CEO Brent Matzelle after we closed our round of funding. The image is generated using our Static Image API. [Link]

1/28/2009

Dave Speers reports on the CEIF with Innovation Philadelphia. [Link]

1/23/2009

Peter Key of the Philadelphia Business Journal discusses the state of all the DreamIt companies post-DreamIt, and discusses the progress of Vuzit. [Link]

12/22/2008

Michael Liedtke of the Associated Press discusses cloud computing companies, and Vuzit appears among the names of many giants. [Link]

11/18/2008

Philly.com writes an unsolicited testimonial about Vuzit via Twitter and it couldn’t be better! They use Vuzit within their powerful Web Content Management (WCM) system called Clickability.

We’ve been using it for a few weeks now; it plays nice with our CMS and works well for our users.

10/9/2008

Dave Speers interviews the Vuzit team in early August 2008. [Link]

9/5/2008

Mike Armstrong of the Philadelphia Inquirer writes about the DreamIt Ventures program. [Link]

9/4/2008

Video of CEO Brent Matzelle giving a variation of the pitch to investors on the last day of the DreamIt Ventures program.


Meet Vuzit! from DreamIt Ventures on Vimeo.

8/8/2008

Ben Franklin Technology Partners press release on all investments they approved in the current cycle. (NOTE: Vuzit was previously known as Hovitate). [Link]

8/6/2008

Joseph N. DiStefano of the Philadelphia Inquirer lists the current round of investments by Ben Franklin Technology Partners. (NOTE: Vuzit was previously known as Hovitate). [Link]


Open IT Online Firefox plugin partners with Vuzit

February 3, 2009 – 4:49 pm by Chris Cera Printable Version Printable Version

I’m excited to announce a new partnership with Open IT Online, a free Firefox plugin that provides online document and image viewing capability by using several online services.  Open IT Online has been downloaded over 800,000 times (18,000 weekly), and has a fantastic reputation with 5-stars on the Mozilla AMO website. The founder of Open IT Online, Denis Remondini, is a Firefox guru who previously founded the popular PDF Download plugin (now a part of Nitro PDF Software).

Open IT Online can use Vuzit to provide viewing of many popular document, spreadsheet, and presentation formats without the need for bloated software like Microsoft Office.  We chose to partner with Open IT Online because of its tight browser integration with Firefox, intuitive user interface, and ease of use.

Vuzit is the latest addition to Open IT Online’s broad menu of viewing options, and I’m confident people will prefer Vuzit for it’s speed, reliability, and preservation of formatting.  We’re excited by the opportunity to connect with the Open IT Online community, and really look forward to their feedback on this new development.

Download It Now

After you install the plugin, you need to change the default viewer to Vuzit!

Enjoy!


Vuzit Expands with New Financing

February 2, 2009 – 3:19 pm by Chris Cera Printable Version Printable Version

We recently raised capital in an effort to expand our team. Several press releases have gone out about individual awards, but this CenterNetworks article was the first to discuss the entire investment round. Robin Hood Ventures lead an angel round that also included Innovation Philadelphia, Ben Franklin Technology Partners of Southeastern Pennsylvania, and an individual angel. Coley Brown has joined our Board of Directors and currently serves as Vice President of Sales. We’re thrilled by these new developments, and we are really looking forward to great things in 2009.

It’s been a real pleasure working with all of these groups over the past several months, in addition to the University City Science Center, DreamIt Ventures, Baiada Center for Entrepreneurship, Philly Startup Leaders, and an innumerable number of mentors that have stepped-up to give us advice. This is a big THANK YOU to the Philadelphia startup community.


Audio of Panel with CTO Chris Cera at Fall Forecast 2008 Conference

January 30, 2009 – 6:24 pm by Brent Matzelle Printable Version Printable Version

Chris recently participated in a fantastic panel discussion entitled “Real World Cloud Computing Experiences” with Toby DiPasquale, Andrew Kortina, and Chris Richardson at the Fall Forecast 2008: Computing From The Clouds conference.

Ken Rimple from Chariot Solutions moderated the panel, produced the audio, and wrote the following summary of the panel:

Today’s podcast is a redux of last Friday’s “Fall Forecast, Computing Among the Clouds” panel discussion. Moderated by Ken Rimple (me), our guests were

  • Kortina, a Google App / EC2 Developer
  • Chris Richardson, author of Manning’s POJOs in Action and developer of CloudTools, an EC2 deployment framework
  • Chris Cera, CTO of Vuzit, an Amazon EC2 / S3-based product for managing various document formats online
  • Toby DiPasquale - a long-time user of Amazon EC2 and S3

The panel discussed various aspects of cloud computing, including administration, scalability, security, tools and various strategies. It’s a good listen, with lots of interesting debate and dialog.

Enjoy the show. Please email your comments to techcast-feedback@chariotsolutions.com. Show notes will be available within a few days.

Thanks,

Ken

The audio is part of the Chariot Tech Cast series which covers a variety of web technology solutions including Ruby on Rails and Amazon Web Services.

Listen Now

[Website] [Podcast] [MP3]


Attention Firefox and Flock users — Just say Nodobe!

October 6, 2008 – 10:35 am by Chris Cera Printable Version Printable Version

Just say Nodobe!

We are happy to announce that the Nodobe Firefox extension was approved for public consumption by the Mozilla AMO editors this weekend.  It’s been downloaded over 500 times in the past couple days, despite a total lack of promotion on our part.  We created this plugin so we would use Vuzit in more of our daily activities. We’re hoping that this product will show others the flexibility afforded by the Vuzit platform.

Nodobe uses the Vuzit service to render documents in a full-screen window, so it supports 38 document and image file types.  To protect your information, we use SSL to encrypt your documents when it is presented to you.  The extension only works with documents on the public internet: it does not work with documents located on your computer, or documents behind a private website session (e.g. Gmail).

Your feedback is essential in shaping the direction of this product.  We have adopted the GetSatisfaction customer support platform to manage feedback on this product.  Please take a moment and let us know what you think … we really appreciate it!

Here are links to pages about Nodobe:

I’ll close by saying THANK YOU to the AMO editors.  This is an impressive network of volunteers that care deeply about the Mozilla project, its users, and overall making the internet a better place.  Take a look at the AMO policy to get an idea of how they operate.

FirefoxFlock


CTO Chris Cera to speak on MADV Panel

September 18, 2008 – 1:18 pm by Brent Matzelle Printable Version Printable Version

Chris Cera will be speaking on a panel at the Mid-Atlantic Diamond Ventures Fall Forum. The panel is entitled “Managing and Mentoring the Chronologically Very Young Entrepreneur – Strategies for Success”. The panel is tomorrow, September 19, 2008, and consists of the following participants:

We are excited to talk about the origins of our company, and starting-up in the Philadelphia region. Here was the agenda we received as a Microsoft Word document, and displayed using our Static Image API:


Google Chrome and Javascript API Updates

September 17, 2008 – 10:00 am by Chris Cera Printable Version Printable Version

Google Chrome is not only a dip into the browser market for Google, but also the Rich Internet Application space as a whole. We were thrilled to discover that Google Chrome worked flawlessly with Vuzit on the day it launched. We learned about Google Chrome at the same time as everybody else … when the AJAX-based comic book was “leaked”. Google should start using Vuzit to distribute their documents internally, and perhaps they will bleed less sensitive information (OK, I actually think this was a very well orchestrated PR stunt).

We recently released the 2.4 version of our API. Developers previously had to display a Vuzit viewer in order to query document properties [code][html]. This requirement has been removed, thus making it easier to use Vuzit as more than just a document viewer. The API changes only affected the vuzit.Viewer() constructor which now takes an array of options. We are using this array to secretly test new features on our production server. Stay tuned ….


CTO Chris Cera speaking at upcoming Fall Forecast 2008 Conference

September 16, 2008 – 7:01 am by Brent Matzelle Printable Version Printable Version

Our CTO, Chris Cera, will be participating in a panel discussion called “Real World Cloud Computing Experiences” next month at the upcoming Fall Forecast 2008 Conference. This is a full one-day conference being held outside of Philadelphia at the Penn State Great Valley campus. If you will be in the Philadelphia region you should definitely check out this event to hang out with the 250-300 architects and developers, speakers, and [your favorite] the Vuzit team.


Fall Forecast 2008: Computing Among the Clouds


Vuzit hits the front page of the Philadelphia Business Journal

August 29, 2008 – 2:31 pm by Brent Matzelle Printable Version Printable Version

Peter Key of the Philadelphia Business Journal (PBJ) wrote another article featuring Vuzit that was just published today. This marks the third time that Vuzit has been included in the Journal. I personally really like this one because it includes a cool photo of Chris Cera and I (beautifully taken by Curt Hudson). We’re the two guys in the front center photo:

Brent Matzelle and Chris Cera

Chris ran out and grabbed a copy and added it to Vuzit:

Read article in Vuzit (full screen)

Read article on the PBJ web site


Vuzit now supports 38 file formats including Microsoft Office!!

August 12, 2008 – 1:36 pm by Chris Cera Printable Version Printable Version

Today we are excited to announce support for 37 new file formats. This includes a number of different Office suites, images, and vector graphics file formats. The most requested applications were Microsoft Word, Microsoft Powerpoint, and Microsoft Excel. Both the Microsoft Office 2003 and Microsoft Office 2007 flavors of these applications are supported. We have received a number of requests for different image formats with TIFF being the most popular request.

The table below categorizes the 38 different file formats supported by Vuzit.

Adobe PDF: pdf
Microsoft Office: doc, docx, rtf, xls, xlsx, ppt, pptx
Images: png, jpg, gif, tif, bmp, ppm, xpm
Vector Graphics: eps, ras
Text Files: txt
OpenOffice: odt, odf, ott, odg, odp, stw, sxw, std, sxd, sti, sxi, sxc
StarOffice: sda, sdd, sdw, vor
OpenDocument: otg, stp, ods, pts

We are also annoucing increased image quality for our Premium account holders. Our existing customers will receive this quality update automatically.

As always, we welcome your feedback!


Ben Franklin Technology Partners Approves $100,000 Investment in Vuzit

August 7, 2008 – 8:00 am by Brent Matzelle Printable Version Printable Version

Ben Franklin Technology Partners Logo

The team and I have known about this for a couple weeks but were waiting for the press release to make the official announcement. Here’s the blurb from the press release (edits are in braces []):

[Vuzit] was approved for a $100,000 investment. The Philadelphia company’s flagship product, Vuzit, can be inserted in Web pages to allow visitors to the pages to read documents without having to use other software or download them. [Vuzit] is participating in a program at the [Science Center] designed to help young companies get themselves ready for venture funding. The program is run by DreamIt Ventures, a seed-stage venture fund that takes equity stakes in companies in the program and counts Ben Franklin Technology Partners among its investors.

The team and I are really excited about the news. Ben Franklin Technology Partners is well known throughout the area for their very thorough due diligence. Making it through this process is a badge of honor for Vuzit.


Paypal Website Payments Pro (US) with Recurring Billing and ActiveMerchant

August 1, 2008 – 12:12 pm by Chris Cera Printable Version Printable Version

When we decided to use Paypal Website Payments Pro (US), we were slightly bummed that ActiveMerchant didn’t support recurring billing. We almost jumped to a different payment processor, but finally decided to roll up our sleeves and write the code ourselves. In the spirit of giving back to the open source community, we have posted the code below under the MIT License used by ActiveMerchant.

I started with the code from the PayflowGateway class, and modified it until it worked with Website Payments Pro. I also took some ideas from a PaypalExpress implementation written by Oleksandr Bondar.

Here is the code:

# The MIT License
#
# Copyright (c) 2008 Vuzit.com, Chris Cera, Tobias Luetke
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.

require 'rubygems'
require 'active_merchant'

module ActiveMerchant #:nodoc:
module Billing #:nodoc:
class PaypalGateway < Gateway

# I invented the :suspend action, and this doesn't appear in payflow.rb
RECURRING_ACTIONS = Set.new([:add, :cancel, :inquiry, :suspend])

@@API_VERSION = '50.0' # not sure if this overrides the variable in PaypalCommonAPI

# Several options are available to customize the recurring profile:
#
# * <tt>profile_id</tt> - is only required for editing a recurring profile
# * <tt>starting_at</tt> - takes a Date, Time, or string in mmddyyyy format. The date must be in the future.
# * <tt>name</tt> - The name of the customer to be billed. If not specified, the name from the credit card is used.
# * <tt>periodicity</tt> - The frequency that the recurring payments will occur at. Can be one of
# :bimonthly, :monthly, :biweekly, :weekly, :yearly, :daily, :semimonthly, :quadweekly, :quarterly, :semiyearly
# * <tt>payments</tt> - The term, or number of payments that will be made
# * <tt>comment</tt> - A comment associated with the profile
def recurring(money, credit_card, options = {})
options[:name] = credit_card.name if options[:name].blank? &amp;amp;&amp;amp; credit_card
request = build_recurring_request(options[:profile_id] ? :modify : :add, money, options) do |xml|
add_credit_card(xml, credit_card, options[:billing_address], options) if credit_card
end
commit('CreateRecurringPaymentsProfile', request)
end

# cancels an existing recurring profile
def cancel_recurring(profile_id)
request = build_recurring_request(:cancel, 0, :profile_id => profile_id) {}
commit('ManageRecurringPaymentsProfileStatus', request)
end

# retrieves information about a recurring profile
def recurring_inquiry(profile_id, options = {})
request = build_recurring_request(:inquiry, nil, options.update( :profile_id => profile_id ))
commit('GetRecurringPaymentsProfileDetails', request)
end

# suspends a recurring profile
def suspend_recurring(profile_id)
request = build_recurring_request(:suspend, 0, :profile_id => profile_id) {}
commit('ManageRecurringPaymentsProfileStatus', request)
end

private

def build_recurring_request(action, money, options)
unless RECURRING_ACTIONS.include?(action)
raise StandardError, "Invalid Recurring Profile Action: #{action}"
end

xml = Builder::XmlMarkup.new :indent => 2

ns2 = 'n2:'

if [:add].include?(action)
xml.tag! 'CreateRecurringPaymentsProfileReq', 'xmlns' => PAYPAL_NAMESPACE do
xml.tag! 'CreateRecurringPaymentsProfileRequest' do
xml.tag! 'Version', @@API_VERSION, 'xmlns' => EBAY_NAMESPACE

# NOTE: namespace prefix here is critical!
xml.tag! ns2 + 'CreateRecurringPaymentsProfileRequestDetails ', 'xmlns:n2' => EBAY_NAMESPACE do

# credit card and other information goes here
yield xml

xml.tag! ns2 + 'RecurringPaymentsProfileDetails' do
xml.tag! ns2 + 'BillingStartDate', options[:starting_at]
end

xml.tag! ns2 + 'ScheduleDetails' do
xml.tag! ns2 + 'Description', options[:comment]

unless options[:initial_payment].nil?
xml.tag! ns2 + 'TrialPeriod' do
xml.tag! ns2 + 'BillingPeriod', 'Month'
xml.tag! ns2 + 'BillingFrequency', 1
xml.tag! ns2 + 'TotalBillingCycles', 1
xml.tag! ns2 + 'Amount', amount(options[:initial_payment]), 'currencyID' => options[:currency] || currency(options[:initial_payment])
end
end

frequency, period = get_pay_period(options)
xml.tag! ns2 + 'PaymentPeriod' do
xml.tag! ns2 + 'BillingPeriod', period
xml.tag! ns2 + 'BillingFrequency', frequency.to_s
xml.tag! ns2 + 'TotalBillingCycles', options[:payments] unless options[:payments].nil? || options[:payments] == 0
xml.tag! ns2 + 'Amount', amount(money), 'currencyID' => options[:currency] || currency(money)
end

xml.tag! ns2 + 'AutoBillOutstandingAmount', 'AddToNextBilling'
end
end
end
end
elsif [:cancel, :suspend].include?(action)
xml.tag! 'ManageRecurringPaymentsProfileStatusReq', 'xmlns' => PAYPAL_NAMESPACE do
xml.tag! 'ManageRecurringPaymentsProfileStatusRequest', 'xmlns:n2' => EBAY_NAMESPACE do
xml.tag! ns2 + 'Version', @@API_VERSION
xml.tag! ns2 + 'ManageRecurringPaymentsProfileStatusRequestDetails' do
xml.tag! 'ProfileID', options[:profile_id]
xml.tag! ns2 + 'Action', action == :cancel ? 'Cancel' : 'Suspend'
xml.tag! ns2 + 'Note', 'Canceling the action, no real comment here'
end
end
end
elsif [:inquiry].include?(action)
xml.tag! 'GetRecurringPaymentsProfileDetailsReq', 'xmlns' => PAYPAL_NAMESPACE do
xml.tag! 'GetRecurringPaymentsProfileDetailsRequest', 'xmlns:n2' => EBAY_NAMESPACE do
xml.tag! ns2 + 'Version', @@API_VERSION
xml.tag! 'ProfileID', options[:profile_id]
end
end
end
end

def get_pay_period(options)
requires! (options, [:periodicity, :bimonthly, :monthly, :biweekly, :weekly, :yearly, :daily, :semimonthly, :quadweekly, :quarterly, :semiyearly])
case options[:periodicity]
when :weekly then [1, 'Week']
when :biweekly then [2, 'Week']
when :semimonthly then [1, 'SemiMonth']
when :quadweekly then [4, 'Week']
when :monthly then [1, 'Month']
when :quarterly then [3, 'Month']
when :semiyearly then [6, 'Month'] # broken! i think
when :yearly then [1, 'Year']
end
end

end
end
end

Examples

Here are some incomplete snippets that should get you started with this code. Please note that the :payments and :initial_payment options were not part of the PayflowGateway.

Start a recurring payment profile:


options = {
# :name => # if not spec'd, the name on card will be used
# :profile_id => 'I-SEVK234C8U1M', # triggers :modify on recurring
:email => 'joe.customer@vuzit.com',
:starting_at => '2008-05-09T00:00:00', # change this

:periodicity => :monthly,
:comment => 'CHANGEME',
:billing_address => billing_address,
:payments => 0,
:initial_payment => 2500
}

ActiveMerchant::Billing::PaypalGateway.pem_file = @@fd_key
ActiveMerchant::Billing::Base.mode = :test

gateway = ActiveMerchant::Billing::PaypalGateway.new(
:login => @@merchant_username,
:password => @@merchant_password
)

response = gateway.recurring(amount, card, options)

Retrieve information about an existing payment profile:

response = gateway.recurring_inquiry(options[:profile_id])

Suspend an existing payment profile. Please note that this was not included in the PayflowGateway class:

response = gateway.suspend_recurring(options[:profile_id])

Cancel an existing payment profile:

response = gateway.cancel_recurring(options[:profile_id])

I strongly recommend to anyone extending the Gateway classes to immediately override the parse() method so you can inspect the Paypal response in it’s entirety, and not the cleaned version from ActiveMerchant.

We hope you find this contribution useful. This is our way of saying thank you to the Ruby community that have helped us so greatly.


Recent Vuzit Integrations

July 31, 2008 – 12:01 pm by Chris Cera Printable Version Printable Version

People post documents online everyday with Vuzit, but we love it when new platforms integrate our product. Below are some recent integrations with screenshots that you can enlarge by clicking on them.


cirip.io
Cirip.ro is an impressive micro-blogging platform that integrates just about every technology you can imagine. When somebody posts a link to a PDF document, it gets automatically displayed in Vuzit on the website. The best part about having an open API and development platform is that people will invent innovative uses of your product for you.

cirip.ro screenshot


Instant Goodness Logo

Instant Goodness is a simple way to create, share, and promote your interests, ideas, and information. When somebody creates a page with document content, it automatically converts it into Vuzit. Instant Goodness is using Vuzit to monetize these pages with Google Adsense in a way that is not possible by just posting a link to the document. With Vuzit they can capture page views of the document that were not possible with traditional methods.

Instant Goodness Screenshot


WidgetPlus Logo

Widget+ is an online desktop and widget framework development platform. Widget+ is an impressive virtual desktop that utilizes AJAX and web technologies to simulate a typical desktop experience, and when you open a document, it loads it using Vuzit.

Widget+ Screenshot

We are very excited about these platform integrators, so please let us know if you have questions about integrating Vuzit into your platform.


Audio Interview of CTO Chris Cera

July 30, 2008 – 9:09 am by Brent Matzelle Printable Version Printable Version

Chris was recently interviewed by Ken Rimple for a Chariot Tech Cast where he discusses development and deployment in Ruby, Rails, and Amazon Web Services (EC2 and S3). He also wrote some commentary about the interview on his personal blog.

Chariot Solutions holds the “Emerging Technologies for the Enterprise” Conference, and has an upcoming Cloud Computing Conference “Fall Forecast 2008 - Computing Among The Clouds” where Chris will be a panelist.

Listen Now

[Website] [Podcast] [MP3]


Dashboard Released

July 29, 2008 – 5:03 pm by Chris Cera Printable Version Printable Version

We have been heavily focused on our REST and AJAX APIs and have not concentrated too heavily on user tools that make it easier for users.  We are thrilled to release our Dashboard where you can securely log into your account over an encrypted connection, view all of your documents, easily embed them into your website, and delete them when necessary.  This is just a small taste of what we will be offering in the near future.  Here is a screenshot of the new interface (click the image to enlarge it):

User Dashboard Screenshot

256-bit AES SSL encryption support has been added to the basic Viewer and Dashboard.  This is more secure than the connection I use to connect with Commerce Online Banking (click screenshots below to enlarge).  HTTP over SSL (e.g. https) downloading is now supported by the conversion services as well.  We have integrated a seamless signup and workflow process using Paypal Website Payments Pro as our payment processor.  As a contribution back to the open source community, I will be posting the code I wrote to integrate Active Merchant with Paypal’s recurring billing very shortly.

Vuzit SSL Certificate

Commerce SSL Certificate

With this release comes the launch of our premium services which provide support and a number of additional features.  We believe these premium packages are the perfect fit for many of our current customers, and will create new opportunities moving forward.

Domain authentication has been enabled for the Javascript API, so you must register your web sites in the Dashboard or else you will get a friendly message telling you to register the site.  We added most websites of our current customers, so only publishers that didn’t have real accounts were effected by this change (shame on them!).

With all of these enhancements comes a newly designed website.  We hope that you find the interface more intuitive, and we appreciate your feedback.


Major User Experience Improvements and Opera Support

June 17, 2008 – 12:28 pm by Chris Cera Printable Version Printable Version

It has been awhile since we sent out an update on our company and technology. Since getting accepted into the DreamIT Ventures program we have acquired new office space and two full-time employees. Greg Bright, one of the original founders, joins us full-time as the VP of Engineering and Dave Noreen as the VP of Sales and Marketing.

We just completed major software and infrastructure improvements, and I’m pleased to announce the following achievements:

  • We have ported a number of our services to the Amazon Elastic Computing Cloud (EC2). This provides us with the performance, scalability, and elasticity we need to move forward. In our measurements, we have reduced the time to convert new documents by 50%, and increased the overall speed of our web server by 66%.
  • The Prototype.js library has been removed from our core code. The previous release of Vuzit contained 217kB of Javascript code, while the latest version is only 45kB (improvement of 80%)! This is likely the smallest footprint out of any document viewer on the internet. Remember: Vuzit is 100% AJAX and does not depend on any browser plugins (e.g. Flash) or additional software.
  • Opera 9.26 and 9.50 are supported web browsers! We are certain that this 1.4% of the browser market is going to turn our core business into an overnight success (joke). Brent is an avid Opera user, and it has always bothered him that it didn’t work with Vuzit.
  • Enhanced viewer code to download pages much more intelligently which drastically improves the user experience.

We are really proud of our recent achievements, and expect many new developments over the coming months with our newly expanded team. Please keep the feedback coming on our forums, we love to hear from you. Stay tuned!


Vuzit featured in Metro

May 28, 2008 – 12:36 am by Chris Cera Printable Version Printable Version

The Philadelphia Metro

Vuzit was featured with DreamIt Ventures on the second page of the Philadelphia Metro yesterday in an article by Solomon D. Leach. The photograph was taken while we were diligently working at the Manayunk Brewery around noon on Memorial Day. The online version of the article can be found on the Metro website. A full screen version can be found on Vuzit.com. Here is an image using our Static Image API:


Vuzit wins Most Innovative Product at “The Bennies”

May 3, 2008 – 2:09 pm by Chris Cera Printable Version Printable Version

Our company, Hovitate, just won the Most Innovative Product award for Vuzit at the Ben Franklin Emerging Business Awards, also known as “The Bennies”. Below is the article published yesterday in the Philadelphia Business Journal newspaper, and the online version can be found on the PBJ website. We are excited by the recent recognition we are receiving from our City of Brotherly Love. Thank you!


DreamIt Ventures chooses Vuzit

April 28, 2008 – 10:38 pm by Brent Matzelle Printable Version Printable Version

The number of blog posts may have slowed down over the past month or so but things have been moving very fast for the Vuzit team.  I have a few announcements that I’ll be slowly leaking out over the next couple of days.

To start things off we were chosen as one of 12 companies for the the inaugural round of the DreamIt Ventures investment program.  For those not familiar with DreamIt it’s very similar to Y Combinator, another early stage venture capital organization. 

Here are a few articles about DreamIt from the Philadelphia Business Journal:

The team and I are honored to be chosen for this program.  The DreamIt founders which are composed of David Bookspan, Michael Levinson and Steve Welch are all entrepreneurs of the highest caliber and we look forward to working with them this summer.  The other chosen DreamIt teams are packed with very talented individuals and we’re eager to work closely with them. 


Major Imaging Update

April 26, 2008 – 11:59 am by Chris Cera Printable Version Printable Version

We recently pushed out an update that improves the imaging back-end. Here are some notes about the update:

  • Improved the image quality (drastically in many cases), so your documents will look better than ever.
  • Reduced the image size by 50%, so your documents will load significantly faster.
  • Processing time for initial conversion was reduced by 33%, thus reducing the time required to integrate a document into your site.

It is also worth noting that the MediaWiki extension written by Evan Sultanik now has a new home in the MediaWiki extensions directory.


Vuzit MediaWiki Extension

March 19, 2008 – 11:26 am by Chris Cera Printable Version Printable Version

Evan Sultanik has written a simple extension for MediaWiki that allows you to display documents inside your MediaWiki instance! MediaWiki is the open source software behind the Wikipedia online encyclopedia which claims 5% of all internet traffic. We are grateful for the time Evan spent developing and documenting the extension, and this just shows the power of the developer community when they are given an open development platform.

Here are the links:
- Vuzit MediaWiki Extension - includes installation instructions
- Example - Evan built the extension to display his Curriculum Vitæ

After installation, the following snippet is all you need to embed a document with the default settings:

<vuzit>http://www.welcomingcenter.org/documents/PMP.pdf</vuzit>

We are anxious to see the search and Flickr mashups that get developed using our Image APIs. If you have some ideas, please let us know.

Update (4/25/2008): This is now listed in the MediaWiki extensions directory. Thanks Evan!


Embed documents on your website or blog

March 11, 2008 – 7:34 pm by Chris Cera Printable Version Printable Version

Vuzit now has the capability to embed documents using a small snippet of HTML you can easily paste into your website or blog. It is built on our REST-based API so you can easily set the default zoom-level, page number, and even the X/Y position of the page you want to display.

Here is a document about the excellent open source database, Firebird:


Linkit easily converts your document links to use Vuzit

March 11, 2008 – 7:30 pm by Chris Cera Printable Version Printable Version

Switch your document links to the Vuzit online document viewer instead of the bloated alternatives, and your users will thank you. By including a small snippet of Javascript you can breathe new life into your document links.

By default, a small icon will be displayed to the right of the link letting your users know the document has been enabled with Vuzit. Here is a very simple example of what your link will look like once you enable your website with Linkit.

Fedora Commons at DLF Panel in Philadelphia

Liberty on the move

Wireless Philadelphia Initiative

Taking Philadelphia’s Temperature

Philadelphia airport guides travelers with Mac-based solution

This worked on my first attempt with Wordpress!


Static Image API — Let there be images!

March 11, 2008 – 6:19 pm by Chris Cera Printable Version Printable Version

We are letting document images roam freely. Our new developer tools include the ability to access an image of a particular page in 4 different resolutions including the thumbnails. These are enabled by the Document.getUrlImage() and Document.getUrlImageThumb() functions of the Javascript API. You can view our example as rendered html or go right to the code.

Here is an example thumbnail:

Here is an example page:


Full screen viewer

March 11, 2008 – 5:18 pm by Chris Cera Printable Version Printable Version

Many of our users asked for the ability to display Vuzit in a full screen landing page. We have added an example of this to our examples page which you can view as rendered html and code. It’s worth noting that all of our examples are compliant with the XHTML Strict standard.

Now you can create a full screen Vuzit viewer on your website and direct all of your document links to that landing page and take advantage of your own advertising and analytics tools.

We love all the feedback we have been getting from all of our users. Please keep it coming.


Keyboard Shortcuts

March 11, 2008 – 4:32 pm by Chris Cera Printable Version Printable Version

A few of our users have asked for simple shortcuts to navigate through their documents. The shortcuts are a combination of commands used by many popular programs including the vim text editor, GMail, and Google Reader. The mouse must be located over the viewer in order for the shortcuts to work. We chose keys that would not interfere with the user experience afforded by the major browsers, but please let us know if we missed something.

Here is the complete list of the shortcuts:

Shortcut Key Action
<Page Up> Move up the length of the viewer
<Page Down> Move down the length of the viewer
n Move to the next page
p Move to the previous Page
+ or = Increase size by zooming in
- Decrease size by zooming out
<Down Arrow>
or j
Scroll down slightly
<Up Arrow>
or k
Scroll up slightly
<Left Arrow>
or h
Scroll left slightly
<Right Arrow>
or l
Scroll right slightly
<Home> Move to the first page
<End> Move to the last page

New Vuzit JavaScript API

February 26, 2008 – 11:09 am by Brent Matzelle Printable Version Printable Version

We just released a new version of Vuzit. This release includes the Vuzit JavaScript API, which includes two objects: Viewer and Document. They will give you a lot of control over your documents. Read on.

Viewer Object

The Viewer object controls the document viewer. Use it to change pages, zoom levels, and more. Here is a list of some capabilities:

Viewer usage: See this example.

Document Object

The Document object allows you to load various properties of the document like the number of pages, title, URL, and more. Here is a list of some capabilities:

Document usage: See this example.

We built the documentation using Natural Docs, the best document generator for JavaScript (in our opinion). It’s free and open source.


TechCrunch Loves Documents

February 19, 2008 – 10:43 pm by Brent Matzelle Printable Version Printable Version

If you weren’t a believer that web viewing software is one of the hottest new tools on the web then you probably haven’t been reading the news. TechCrunch, the third most popular blog in the world, just can’t stop talking about document-based startup companies. Vuzit hasn’t yet graced the pages of TechCrunch, except for a fan that made a nice comment about us, but the game is still early.


Latest Vuzit.com and Viewer Release

February 11, 2008 – 11:37 pm by Brent Matzelle Printable Version Printable Version

We’re really excited about the steady stream of people signing up every day to use Vuzit.  The response has been nothing but positive. We just released a new version of Vuzit based off some terrific feedback.  Below is a list of some of the changes we made in this release.

Document browsing

Check out the Latest and Most Popular documents pages.  We’ve made some interface tweaks to make this easier on the eyes.

Larger documents, more pages

We discovered that a lot of people were attempting to upload really large documents to Vuzit so we increased the allowed number of pages and document size to accomodate.

Speedier loads

We discovered a few areas to speed up the document processing.  It’s still not nearly as fast as we plan on making it but stay tuned, we’ll be making some big tune-ups to speed up the engine in the coming weeks.

Easier to build

We improved the Vuzit debugging messages so developers can more easily build applications.  If you have any more suggestions then let us know.

Bug fixes

We fixed a few bugs.  The viewer is more solid than ever!


Feature requests v1

February 7, 2008 – 8:37 am by Brent Matzelle Printable Version Printable Version

We’ve received a lot of feature requests from the feature forum, email, and other web sites over the past weeks. I posted some of them below. Now we’re just sorting through them to figure out what to add for upcoming releases. Thanks to all of you for the great response!

  • WordPress plugin
  • Blogger plugin
  • Widget to quick embed on a web site
  • Microsoft Office support (doc, xls, ppt, rtf)
  • MS Office 2007 support (docx, pptx, xlsx)
  • Open Office support
  • Increase the accepted file size and number of pages of documents
  • More developer debugging capability
  • Closer/larger zoom level
  • Reduce image aliasing
  • Preview document without being able to download the original document
  • Document annotation and collaboration

How do these features sound to you? Let us know!

Update 2/28/2008

The following issues have been addressed in our last two updates.

We will be addressing the remaining issues in the short-term.


Great initial feedback

January 31, 2008 – 11:22 am by Brent Matzelle Printable Version Printable Version

We had originally planned on making our first release a private one for friends only. It wasn’t to be. One friend submitted a link to Vuzit on Digg which led to Aaron Conran, a core developer of the Ext JS JavaScript library, posting a really positive review about Vuzit. I love this quote:

“Vuzit is a new service offered by Hovitate, LLC that allows you to embed pdf’s into your site in a slick AJAX powered viewer. It employs lazy-loading so that viewing large documents is blazingly fast and exposes a JavaScript API allowing you to interact with the document in JavaScript easily.”

,
Many thanks also go to David Hurth, author of the Ajaxonomy blog, for his great summary post about Vuzit.

Javascript News dropped us some link love as well. Thanks!

Since these posts we’ve personally received a ton of terrific feedback. I’ll be posting some of this feedback as well as some upcoming features as determined by this feedback soon. Check in soon!


Introducing Vuzit

January 27, 2008 – 2:30 pm by Brent Matzelle Printable Version Printable Version

After running silent for a very long time we’re now publicly announcing Vuzit - the first full featured, seamless office document viewer platform for the web. Right now we’re interested in collecting feedback. So please, tell us what you think about Vuzit. There are a couple ways to do so, either send an email to feedback@vuzit.com, post to the forum, or comment on this blog. We are all eager to implement the features and functionality that fit your needs. In the coming days I’ll enumerate the features we’ve implemented so far as well as some future plans.

You will notice that the web site right now is very developer-focused. We will be adding some consumer/blogger features soon so the web site will get a little less technical, at least on the home page. We’ll be updating this blog and the web site often so check back for updates.