This month the award goes to Julian Egelstaff (jegelstaff) for his new version of Formulize!
Where are you from, and where do you live now?
I am from southern Ontario, Canada, although I spent nine years living in Ottawa during and after going to Carleton University there. I have lived in Toronto since 2001.
How long have you been programming?
I have been programming since I was around 10 or so. I learned BASIC in school on Commodores (back when they actually taught you something about computers in school, instead of teaching you how to use one particular piece of software), and I had to teach myself the Atari dialect of BASIC using only the barest of reference manuals for the language -- which was actually quite hard because, for example, in Atari BASIC you had to dimension your string variables before you could use them, but in Commodore BASIC you didn't have to, so for months I only wrote programs that relied on number inputs.
I actually stopped tinkering with most of that stuff during most of high school, but kept an aptitude for computers. Later when I ended up working in software companies, it showed through that I knew more than how to turn a computer on, so I ended up programming scripts to automate desktop publishing procedures.
Plus the internet exploded around that time, so I learned HTML and related things, and eventually in a very round about way, that led to PHP programming.
What is your expertise?
My primary expertise is consulting. I listen to what people are trying to do, and then figure out the technical options that are available for achieving their goals. Usually, I'm talking to people about web-based systems that they are trying to design or build, but it's not always web-based.
I co-founded Freeform Solutions (http://www.freeformsolutions.ca) as a not-for-profit company, with a mission to help other not-for-profits use computers and technology to better meet their own missions. So it's a big umbrella in which I can focus my consulting expertise to help organizations that are doing good works, and I can hopefully help them do things better.
All the programming and web development stuff is actually secondary to the primary goal of providing good technical options to people who have great ideas, but no technical capability.
What got you to XOOPS?
We were looking for a flexible system as the base for a data entry and reporting tool. XOOPS had a strong set of fundamentals -- user management, permission management, decent set of standard community website modules, etc -- plus it had Formulaire, which was pretty close to what we wanted at the time. 100 hours of hacking later and we had Formulize 1. That was 2004.
XOOPS was attractive because from 2000 to 2002, I had worked in house at an organization that had built a portal system for their own use, and many of the concepts of permissions and user management that we had explored in that system, without really knowing what a portal system was -- no one had really created a portal system as a product in 2000 -- many of those concepts we had, were similar to what XOOPS had, so it was a good fit and a natural extension of what we had started with a few years earlier.
That other code base was not open source and we couldn't keep working on it, so since XOOPS was a mature code base that was freely available and maintained by other people, this was a huge plus.
What do you like the most about XOOPS?
I like the clean object structure, and the effective use of the smarty template engine, not that we make full use of that in Formulize, but anyway.
XOOPS by itself doesn't do a whole lot out of the box, but it's a very flexible platform for developing applications on. It's a very lightweight programming framework, almost more that it is a portal system. On that basis, it functions very well.
This also makes it very flexible for integrating with other systems, which is my greatest interest right now. So that makes XOOPS a good candidate system for using when you want to extend the functionality of other websites by using some XOOPS-based tool, like Formulize, for example. This was the subject of one of my presentations at the FSOSS conference in Toronto this year (http://fsoss.senecac.on.ca/2008/?q=node/85). There will be a video of the presentation available on the fsoss website in another week or two.
Why did you decide to develop Formulize ?
We wanted to build something that was an evolution of what we had built in the earlier non-open source code base I mentioned. We had a client who needed a webform-based, data entry and reporting tool, and we knew exactly how to build one that could meet a variety of business needs, since we had done it already. So we started rebuilding what we had already done, using Formulaire as the base, since it was close to a lot of the basic functionality we needed.
One of the key ideas was to build something that was flexible, because we knew the client would have needs in the future that were different from what their immediate needs were, but they would not be able to have us build something new in the future. So there was a very specific design goal with Formulize, from the very beginning, to make the capabilities very general, so you would be able to use it to model a variety of processes and procedures, in a standardized way.
It turns out that approach is very flexible and extensible, and a lot of the later development has been motivated by trying to see how far we can push that idea, and whether we can come up with the most powerful business process modeling tool in the open source world, while still being mostly accessible to non-programmers.
What is your major achievement in programming that you're most proud of?
Without a doubt, my ZCE certification.
That's the industry certification for being an expert PHP programmer. You have to understand, my post-secondary educational background is in Journalism and Philosophy. I was a computer dabbler, I was good at math, but I was not a super computer nerd in school. I did not study computer science or computer engineering, or anything remotely technical in high school or after that. But I had some kind of knack for programming, and I ended up with jobs that crossed the boundary between technical implementations and system design.
Before I did the desktop publishing automation work that I mentioned, a fully trained programmer at that company had tried to write something for the desktop publishing department. And it was a complete failure, because the programmer didn't understand the desktop publishing process, the subject matter. So when I stepped in to give it a try, I didn't know one tenth of the programming that the original programmer knew, but I knew the subject matter, and I knew enough programming that I made a workable automation script, that was in use at that company for four years, which is a long time in the computer business!
So I kind of fell into programming sideways, by being the guy who had the global overview of what we were trying to achieve, and I understood just enough of the technical stuff to make sure the implementations I was working on would actually work right. Recently I read in an article in PHP Architect magazine, that when it comes to programming, it's better to do the right thing really badly, than to do the wrong thing really well. That about sums up my entry into the real world of computer programming.
So as I transitioned to web-based stuff and started using PHP about 8 years ago, there was a bit of a learning curve you might say. But by the time I was at the PHP Works conference in 2006, and they were offering the ZCE exam to all attendees free of charge, I thought, what the heck, I know a thing or two about PHP now, after writing Formulize and hacking on XOOPS and other things for a few years.
So I sat down and wrote the exam, no preparation, just with what was in my head that day. And I passed. So that was a pretty big validation that I was not really just doing the right thing in the wrong way anymore.
What are your hobbies, when you're not coding?
Well, it's not exactly a hobby...I spend most of my time that I'm not working, looking after my daughters. My wife has a very successful career as a lawyer for public sector groups, not-for-profits, and legal aid clients, and works outside of the house at that. So my main job is actually looking after our daughters, and I only do this "work" thing when they are in school, or when my in-laws are looking after them, which very generously, they do a couple afternoons a week.
So coding is really more like the hobby, and being Dad is the job. We also have a very nice 46 gallon aquarium that I enjoy maintaining and looking after the fish. And I am a bit of a movie buff, nothing huge, but we do have a small library of DVDs at home.
Your favorite movies and music?
It's hard to have absolute favourites, but Children of Men is probably the best movie I have seen in the last few years. I am a big fan of the new Battlestar Galactica, too bad they're drawing out the series on such a stupid schedule. And I can't get enough of Pixar movies, those guys are geniuses.
I like jazz music, and the occasional bit of classical. I haven't listened to any rock or pop music since high school really. Though I do have a soft spot for the Pet Shop Boys. Their last album was really good actually.
If you would have a chance for a 30 seconds commercial with a message to the world, what would you say?
Something about climate change. There are some really, really, really terrifying things going on there, and I am convinced time is running out to do anything about it that will truly make a difference.
People think that it doesn't matter what they do themselves, because they think the emissions of the US are really half the problem, or the emissions of China are what really matter. But that's not true, at least that's not the whole story.
First of all, someone has to show the way forward. There has to be innovation and setting an example, so we can see a way out of this mess. There has to be leadership by example.
But also, there's an old saying that is 100% true for mass population issues like climate change: "none the raindrops believes it's responsible for the flood". We all contribute to this problem. We can all contribute to the solution.