Use Pidgin for faster Flowcharts and Relationship Diagrams

I’ve released a new version of Pidgin (still in beta) this weekend, with some cool new features, but although I’ve used pidgin in posts before, I’ve never actually blogged its original release for lack of time.

Pidgin is (free) tool for people who, like me, aren’t very good at drawing and would rather a computer do that for them. If diagram tools are more of a fiddle than a help to you, then you might prefer Pidgin too.

Pidgin is a simple language for describing graphs, which it then draws for you, so you can focus on jotting down your thoughts instead of battling some drawing interface. It can now draw two useful types of diagrams: Entity Relationships Diagrams and (new this week), Flowcharts.

Entity Relationship Diagrams

These are specifically useful to software engineers, but in fact any hierarchy, tree or object graph can be drawn so these are for all sorts of things. In Pidgin, stick to the singular form of the things and then describe how they’re related, like this:

Car contains one Engine
Car uses Petrol
Engine contains many SparkPlug
Petrol is Fuel

Pidgin will then draw it for you:


Notice that has, uses and contains have a special significance in Object Oriented Programming, and they’re represented with symbols stolen from UML.  If you just  want a simple hierarchy, the stick to using has. You can also wrap entities in speech marks if you need more than one word to describe them. Here’s an example planning the menu structure for a website (but it could just as easily be an org chart):

"Homepage" has "Footer"
"Homepage" has "Top Menu"
"Homepage" has "Homepage Body"
"Homepage Body" has "Blog News Summary"
"Footer" has "Privacy Policy"
"Top Menu" has "1. About Us"
"Footer" has "Contact Us"
"1. About Us" has "1.1 History & Mission"
"1. About Us" has "1.2 Staff"
"1. About Us" has "1.3 Blog Recent Posts"
"Top Menu" has "2. Program & Services"
"2. Program & Services" has "2.1 Overview"
"2. Program & Services" has "2.2 Great Programme A"
"2. Program & Services" has "2.3 Great Programme Z"


You can create a wide variety of useful relationship diagrams like this, pretty much as fast you think – it’s a real time saver. See more examples of Entity Relationship Diagrams made with Pidgin.

Flowcharts – new!

Pidgin now supports a very simple flowchart syntax so you can describe processes. I haven’t bothered with the usual diamond, round and square box styles as I’ve always thought they make flowcharts messy and hard to read and they don’t add anything. Pidgin flowcharts are simple and clean to read. You just write then between steps and if you need a conditional step, simply write it before then , like this. (the condition can be anything):

EnterCar then StartEngine
StartEngine then "Did it start?"
"Did it start?" yes then DriveHome
"Did it start?" no then "Try again?"
"Try again?" yes then StartEngine
"Try again?" no then Panic
DriveHome then Done

Notice I’ve wrapped the conditional steps in quotes, this isn’t just because they’re more than one word: currently you must use speechmarks if you want to use a question mark.


Editing Pidgin – new code editor

The code editor has some powerful new features. If you double click an entity, the other instances are highlighted too.  You can CTRL-double click some or each of them to edit more than one name at once, which is super handy. To rename all instances of a token, CTRL-H for search and replace. (Be aware Pidgin is case sensitive, so MyEntity is not the same as myEntity – you’ll end up with a wonky diagram, if you do that.)


Pidgin is still very much in beta, so save your text and graphs if they’re important, just in case. It now catches many basic syntax errors and gives line numbers (but it doesn’t catch everything yet and sometimes you just won’t get a graph if you make a mistake):




New Display Options

There  are two new display options for graphs: layout and privacy. 

Private graphs let you elect to hide a graph from public lists (although, in fact, no graphs are listed anywhere yet, but this is something I intend to support in the future since it’s nice to share work.)


Layouts by default are left to right (horizontally) vertical layouts are more readable for certain graphs:


That’s pretty much it for this release!

If you find it useful, or find any bugs or have any feedback, do let me know.