Wednesday, January 14, 2009

Major Interface Update Coming

I've taken a long, hard look at what's currently possible with LucidChart's flow chart editor software.  I've received hundreds of emails from LucidChart users asking for new features or changes to the interface.

I'm happy to announce that a major update to LucidChart's interface is coming in the next few months.  The overall look and feel will not be changing much, but expect some major improvements:
  • Z-ordering for blocks and lines on a chart.  That means "send to back" and "bring to front" functionality.
  • Changing properties on multiple items at the same time using the Properties tab.
  • Optional real-time collaboration on documents.  Have your collaborators see your changes the moment you make them rather than only when you save.
  • Better reproduction of text in PDF and images.
  • Additional block and line types for complete UML support.
  • Document themes will allow you to apply a single attractive style to your entire document in one pass, and change that style whenever you'd like.
  • Third-party plugin support will allow for specialized block and line types you can optionally load for use in your documents.
If you are interested in developing third-party themes or plugins for LucidChart, please use the Contact form on LucidChart.com.

Thank you to the thousands of users who have already made LucidChart such a success.  I hope you are looking forward to this update as much as I am.

Thursday, December 18, 2008

LucidChart Passes 1,000 Users

I'm happy to announce that yesterday, LucidChart signed up its 1,000th user account.Font size  This is only 17 days after LucidChart's widescale launch on December 1st, 2008.  Thanks, everyone, for making LucidChart the greatest online flow charting application out there!

I'll continue posting membership size updates at every order of magnitude.

Friday, December 12, 2008

LucidChart Is Global!

I'm happy to report that LucidChart appears to have global appeal!

LucidChart has had visitors from 120 countries and territories, and registered users in 50.

A quick Google search and a review of sites referring visitors to LucidChart turns up favorable mentions and reviews in many languages:

There are probably more, but I couldn't recognize their languages.  The Internet is a wonderful place to start a business.

Monday, November 3, 2008

Web Publishing Tools

LucidChart has some very exciting new publishing features.  One is particularly exciting: Easily publishing an always-current image of a portion of your document.  You can see an example in this blog post.

That image will always be up-to-date with the latest changes to the LucidChart document from which it was produced.  That is, if I log in to LucidChart and edit that document, my changes will appear in this blog post without any additional effort.

Just click the Publish tab in the upper-right corner of the LucidChart editor, and click "Publish Part Of Current Page".  Then click and drag to select the part of your document you'd like to publish in this way, select your preferred image type and size, and you're done!  You'll be presented with a link that you can use to access an always up-to-date image of that portion of your document.

Enjoy!

Monday, October 27, 2008

jQuery AJAX Pagination For CakePHP 1.2

CakePHP offers some very good AJAX pagination for its reports.  In less than five minutes, I had the list of documents sorting and paging with AJAX (without reloading the entire page).  The problem is that this functionality relies on the Prototype javascript library.  I use jQuery in all of my projects, and including both in a single project just adds far too much download weight (each is about 30-50KB zipped).

So I whipped up my own AJAX pagination using jQuery.  Add the following Javascript function to your project:

function SetupAJAXPagination(filter) {
$(filter).find('a[href*=/sort:],a[href*=/page:]').click(function() {
$.ajax({
type: "GET",
url: this.href,
success: function(msg) {
$(filter).html($('<div>'+msg+'</div>').find(filter).html());
SetupAJAXPagination(filter);
}
});
return false;
});
}

Then, surround your report table with a div with an id (say id='pagination'), and call this function after your page loads:

$(function() {
 SetupAJAXPagination('#pagination');
});

Just like that, you're done.  Let me know if you use this!

ORDER BY Computed Column in CakePHP Pagination

Here's a CakePHP goodie for all of you who are struggling through using CakePHP's (excellent) built-in pagination functionality for complex queries.  In my case, I was doing a simple group-by and max() to return the latest time a document had been saved.  However, my problem extends even to pagination of a single table if you are doing any calculations in your SQL query.

If you just "SELECT concat(first_name,' ',last_name) as name", you can't sort on name using any of the built-in pagination functionality in CakePHP, period.  I was told this by one of the leading maintainers of the CakePHP project.  So I had to dig into the source of CakePHP and make a minor change.  To allow this kind of functionality, make the following change in /cake/libs/controller/controller.php, in the function paginate():

if (isset($object->{$alias}) && $object->{$alias}->hasField($field)) {
$options['order'][$alias . '.' . $field] = $value;
} elseif ($object->hasField($field)) {
$options['order'][$alias . '.' . $field] = $value;
} elseif (@$object->hasCalculatedField($field)) {
//BND CHANGE--There was no way to sort by a calculated column, period.
//One of the major maintainers said to hold the calculated values directly
//in the database (denormalization hell).
$options['order'][$field] = $value;
}

I added the last elseif in the snippet above.  You may then add a hasCalculatedField function to the model on which you're calling paginate(), and return true if the field name passed in is an acceptable field by which to sort.

I hope this helps someone else out there.  I know I broke the cardinal rule of CakePHP (don't change the contents of the /cake folder), but it had to be done.

Let me know if you're using this tip!

Saturday, October 18, 2008

Why another online collaborative flowchart program?

Recently, I ran into a problem I've had several times. I was on a team developing a complex product. The team leader maintained a monolithic Visio diagram of all the processes involved in administering the product.

Collaboration quickly became intractable. Few other members of the team had Visio installed, since licenses are very expensive ($359 on Amazon.com is the cheapest I can find as of this writing). The team lead emailed the monster diagram to the other members of the team, who either made changes on the document or just wrote back suggestions. The team lead then had the responsibility to sort through all the changes and (hopefully) integrate all the good suggestions and changes back into the master document. Rinse, repeat.

I decided to go find the good online solution. After all, there is a good online solution to every collaborative documentation project. Google Docs and Zoho have certainly showed the world that it's a feasible business, and feasible technically, to implement a good browser-based alternative to desktop applications.

I was extremely disappointed by what I found. The existing products online all had one or more of the following problems:
  1. They all used Flash or a similar browser plugin technology. While consumer computers have very high penetration of Flash, despotic corporate IT administrators often restrict these technologies.
  2. Collaboration was broken. Multiple users were unable to edit documents at the same time, or there was no integrated group chat among editors of a document, or merging others' changes into your own was a terrible experience.
  3. The user interface was abominable. Simple tasks like drawing a line from one block to another required three or more clicks. Zooming in and out was completely out of the question.
  4. Basic functionality was missing. Multiple pages were not allowed in a single document. Page size was not adjustable. Links between pages or documents didn't exist or required elaborate hacks.
  5. The interface was cluttered with dozens of useless features to expand the feature bullet-list on the marketing site. Blocks can be rotated and scaled to your heart's content. Hundreds of useless block types are available, like an image of a gas station.
In frustration, I gave up my search. I decided that it was time to fill a niche in the web application ecosystem that had previously been filled heinously ineptly.

So I have developed LucidChart with the following guiding principles:
  1. LucidChart must work well in Internet Explorer 6, Internet Explorer 7, FireFox, Safari, and Chrome without any plugins like Flash.
  2. Collaboration and change accountability is built in from the base. Any number of users can edit a document simultaneously, and their changes will appear on your browser seconds after they save, with nearly every kind of conflict resolved automatically without bothering you.
  3. The user must be able to perform any task in the least imaginable number of steps. For example, you drag an Off-Page Link block onto the page, type the name of a new page to create, and hit enter. With one click-drag and a few keystrokes, you've created a new page and an off-page link in the location you expected that links to that page and is appropriately labeled.
  4. The documents must have an arbitrary number of pages in standard printable sizes. The documents must easily and accurately print to attractive PDFs.
  5. The features required to meet customers' needs will be implemented, and no others.
It's available right now as a very early beta release. Check it out at www.LucidChart.com, and post here with any comments or recommendations.