nginx and d3pie

Posted on Jun 22, 2014 in d3pie, Form Tools, Open Source Projects | 0 comments

In anticipation of moving over to a new host, I’m trying out Digital Ocean with one of my smaller scripts:

This morning I set up a “droplet” (virtual server) and configured it with node and nginx. In theory, it should run a lot faster for, which is completely client-side and can thus benefit from nginx more than Apache. I *am* running it on a VS with very low memory (512MB) so I guess we’ll see how it goes. This is very much an experiment.

I’ve just updated the DNS so now we play the waiting game. What could go wrong, right?

Read More

Back to Form Tools!

Posted on Jun 2, 2014 in Blog, Form Tools, Open Source Projects | 1 comment

I posted this on, but thought a second post here was in order. A good day. :)


As of today, I’m returning to work on Form Tools. Woo! Exciting day! In case you’ve no idea who I am, I’m not surprised – I’ve been a bit of an absentee landlord the last couple of years. My name’s Ben Keen, I’m the lead developer. I was the guy that created Form Tools 10 years ago this summer (whoah!).

Maybe I should start with a little history.

Some history

Three years ago, thanks to my business partner Joseph Lo and a grant from the British Columbia Institute of Technology (BCIT) I was able to quit my job and work full time on Form Tools, working to commercialize the script and make it into a viable business. This gave me time to work on such features as the premium Form Builder and Data Visualization modules – both of which have greatly enriched the project. A big thanks to everyone who’s purchased them!

Read More

Back at Central1!

Posted on May 20, 2012 in Form Tools | 0 comments

And so ends the year of working on Form Tools!

Last Monday I returned to my previous job as a web developer at Central1 Credit Union. It’s really great to be back – awesome to see everyone again – and great timing too: they’re in the midst of developing of a large scale JS framework, which is going to comprise the bulk of my time over the coming months. After a few days of staring blankly at code and gulping pots of coffee I now have a fairly decent understanding of the architecture. I love the underlying pub/sub pattern being used for module communication and I fully intend to use it in some of my own projects.

But where does all this leave Form Tools? That’s the question I’ve been puzzling over for the last few months.

I’m going to be taking a step back from the project for the next couple of years. I very much hope to return to it (and I’ll never be completely absent) but I need a break. Speaking candidly, the whole idea of charging for certain components never sat well with me. Call me a hippie, call me a commie, but I’m simply not interested in charging for my work. Form Tools was a hobby and converting it into a business made sense at the time, but now that it’s “out there” I found my interest waning more and more. It very much became a job. So now I’m back at full time work, I’m going to be focusing my spare time on other projects, starting with my revamp, which you can find on github here.

But there are other reasons for this decision. Form Tools isn’t exactly cutting edge and I’ve been feeling more and more it’s been keeping me back these last couple of years. Beyond re-architecting the script once or twice, re-thinking the UI, and the fun problems that that raised, the vast bulk of the work has simply adding functionality. Technologically-speaking, it’s pretty hum-drum and I found myself getting more and more anxious to branch out into new territory.

Plus, I may be a PHP developer but… I’m a self-hating one. I kind of hate PHP! :-) It’s terrific for smaller scripts – I mean, unequivocally good – but for anything larger… yikes! As Tchaikovsky once said of his own music “my seams always show”. I’ve been converting over to object oriented and holy cow, do PHP’s seams ever show. It’s a functional language with OO hideously grafted upon it. And it’s only getting worse over time (have you checked out namespaces? What the hell…?!). When I was just working with other OO libraries I didn’t mind it so much, but now I’m developing in it I find myself saying urrrrgh a lot. Definitely time to branch out.

Anyway, I *do* plan on returning to Form Tools, but not for some time. I want to check out Python, Ruby and Node; I want to finish the revamp; I want to completely revise this site with a responsive layout and a different backend. And when I do return to FT, there’s gonna be a whole lotta changes.


Read More

PHP Smarty Template mode for CodeMirror 2

Posted on Mar 12, 2012 in Code, Form Tools, JavaScript, Open Source Projects | 2 comments

A Smarty syntax highlighter for CodeMirror has long been needed for my Form Tools script, so this weekend I finally took a few hours to put one together. It’s not been reviewed by the CodeMirror developer yet (Marijn Haverbeke), but will hopefully find its way into the main script at some point. I also plan on developing a HTML-JS-CSS-Smarty mixed mode, which will be useful in many places.


[UPDATE: Marijn accepted my changes and it’s now part of the CodeMirror repository].

[UPDATE 2: I added in Smarty 3 support in May, 2013].

Read More

Form Builder module video demo

Posted on Nov 19, 2011 in Form Tools, Fun Stuff | 0 comments

Hi all,

Demo time! Ordinarily I post screenshots of upcoming features and modules for our Form Tools script, but this time we thought I’d utilize some of this crazy “modern video technology” I keep hearing so much about.

Click the image to the right to watch a quick intro and demo to the Form Builder, showing how it can be used to create a simple “Contact Us” form on your site.

It’s a REALLY exciting new module, and the demo only touches on the base functionality. There wasn’t time to cram in all the really cool stuff (multi-page forms, validation, cool field types), so if people want more info, I can always do more videos.

Also, depending on what people think of them, I could start using them more in the documentation to explain and demonstrate the various Form Tools functionality. Personally, I think they’re a pretty great way to explain things – far better than mere screenshots. The one drawback, of course, is that you have to listen to me drone on and on, but hey, there’s always a downside.

View Demo

– Ben

Read More

Form Tools 2.0.5 UI Updates – Screenshots

Posted on Nov 11, 2010 in Form Tools | 2 comments

Hi all,

Thought I’d post a few screenshots to show you a few things coming in 2.0.5. None of these screenshots are totally final, but they’ll still give you a good idea of where we’re heading.

Edit Form -> Fields Tab

This page illustrates a lot of the upcoming changes, so I’ll discuss it in depth.

Edit Form -> Fields tabDatabase tab

First, the Database tab is missing. Yup! All gone! Now all functionality relating to the fields is found on this tab. You can use this page to add new fields, delete fields, update fields, update their database column sizes and names, data types, field types, whether they get “passed on” for POST forms, and to sort and group them. Grouping everything in one place substantially reduces configuration time – but, admittedly, may be a little scary for newcomers. I decided it was an acceptable trade-off.

Add fields

You may notice the section at the bottom right: that allows you to insert new field right into the form – and all with javascript (i.e. it happens immediately without a page reload). It also lets you add the rows at a particular point in the form – again, to speed things up. No more adding fields then having to re-order them. Those days will soon be long forgotten…


You may also note the absence of the text field in the “Order” column. In 2.0.4 and earlier, you had to enter in a row order value then click “Update” to re-sort the fields. This was slow since it required a page reload, and often took you multiple updates to get them in the order you really wanted. Now the sorting is done by drag-and-drop. I’ve been using this locally for a month or so and it is sooooooo much nicer. You can just mouseover the order column (the cell will highlight and the cursor changes to a pointer to indicate an action), click, then drag up and down. Visually, a space is made in the rows to indicate where you can drop.


This one’s exciting…! And a little worrisome. I’m NOT a fan of inventing new user-interface elements to solve problems – it’s almost always a bad idea, because it requires your users to learn new stuff. And users don’t like to learn new stuff. Better to keep within the existing UI toolset and find a workaround. However, after much hemming and hawing I decided to forge ahead with this: the feature was just too useful, and the solution was elegant.

See the blocks of grey column down on the very left-hand side? They indicate grouped fields. In the screenshot, the first & last name are grouped, as are the final 3 fields. By grouping them, you can then sort that entire group with a single drag-and-drop.

Here’s a typical use case: imagine your form had 100 fields and you wanted to move the bottom 5 fields to the top. With the Views functionality, this was all too common a problem. Right now you have to manually enter a new sort order for each field (which usually takes time hunting & scrolling the page to find the right row number) then you clicked Update. Now, you just click between the rows in that first “block column” and the rows are grouped – and drag them as a single unit.

Likewise, to ungroup them, just again click between the rows. In both cases, an icon appears to indicate grouping/ungrouping.

I’ve shown this feature to a number of people – all of whom like it very much – but a couple found it confusing at first. I’m working on adding some additional visual clues to make this easier to understand. This new grouping element will be added to many of the forms throughout Form Tools – so once you figure it out, it’ll come in handy all over the place.


The “Options” column has been removed and placed with an edit icon (the penultimate column). All forms in Form Tools now contain this icon to indicate being edited. It provides a little more room for other elements in the UI and is more consistent across multiple languages.

Scroll bar

Again, NOT a fan of inventing new UI elements! But… the scrollbar lets me add any number of fields to be edited for each row in this one page. This is very powerful. You can then access ALL form information from this single page – just a quick scroll will reveal the other fields, letting you update multiple fields simultaneously. This will save you LOTS of time! As you can probably tell from the screenshot – the scrollbar only scrolls those fields within it. The Display Text column – which you need to see at all times – remains fixed at the left so you never lose your bearings.

Other Pages

And here are some other page updates. They show much of what I already discussed: the grouping & ordering works like described. The Views page was improved to show a little info about the Views (# fields, # Views and # Filters) – to provide a slightly better overview on the page.

Read More