Tell us about yourself, and the company
I'm an English software developer, recently graduated with a Masters Degree in Computer Science. I'm 23, I think. The worrying thing is that I already have to stop and think for that, so in a few years maybe I won't remember at all. As well as a programmer, I'm managing director of my company, ocProducts. I basically do everything that no one else in the company does, and that includes much of the programming, all the business stuff, and lots of technical support and documentation. ocProducts is an incorporated company, since about 1 and a half years ago. I've been just working crazily the last few years to get to the company to the point it's at - that doesn't leave much time to do much else, but I do manage to keep a personal life and my sanity afloat.
At ocProducts we do anything relating to helping people make websites. At the moment most of the efforts go directly into pushing the development of our ocPortal website engine product forward, but we also succesfully been running professional services for quite some time.
What made you decide to use your programming prowess to develop a website engine?
I never really made a decision. I used to do open source 3D and gaming stuff for fun, and needed community software to power the development community I was creating - there wasn't really any at the time, except for forums, so I wrote my own. It was fairly straight forward because I did C++ work all the time, and really PHP (which ocPortal is written in) is just like a much simpler version of that.
As time went on I worked on a number of websites related to my gaming hobby, and at some point the code for those sites got to a point where I wanted to package it all up together and reuse it as a kind of product. At that point I was persuaded by people around my to try selling it, so I made some improvements and cleaned it up, and it was far more popular than I expected it to be. Since then we've been speeding ahead at an enormous pace, adding new features, improving the quality, making it easier to use, and generally making it suitable to a wider audience.
Do you think you will ever return to programming games?
I very much doubt it. Around the time of my life when I did write games, as a student, it was just a hobby. I was very involved with it all, and I did get to know the industry well enough to realise that all but a handful end up working ridiculous hours for uncompetive salaries, and with little prospect of getting much job variety. I have done a little bit of game based work, like writing our 'ocWorld' multi-user-dungeon addon for ocPortal, and we have a few fun future ideas for addons - but I don't have any serious plans.
ocPortal version 3 represents another milestone in the produce's release cycle. What can you tell us about this version's major differences/improvements?
All of our major releases to this date have had some kind of overarching goal, and for v3 it was to vastly improve usability. We listen to what our users tell us very carefully and try to act on anything reasonable - and there were very clear signals that things had to be easier to use. This wasn't only a problem with older versions of ocPortal - content management systems are often criticised for complexity, and we really wanted to turn things around and tackle it. One of my favourite improvements is our 'Theme Wizard' which allows people to make new colour schemes just by choosing a colour to base it around - ocPortal takes the colour, and rewrites all the images and CSS using a load of complex (but hidden) maths.
There are loads of other changes, but I don't want to make this interview go on forever, so readers interested in details can check out the posts in our blog... we wrote long posts about ocPortal 3 changes for every single day through May.
Many issues can crop up during development of such a large product. What issues have been the trickiest to solve?
The two biggest are definitely stability and design-direction.
The tiniest change in our code can cause all kinds of unforseen problems. Different web servers and configurations can behave differently, yet we can't possible test all possible configurations. We can't possibly fully retest ocPortal for each release, so we have to be clever and develop tools and efficient procedures to minimise the risk.
Design is a problem because we have all kinds of pressures on us to take ocPortal in different directions. This is a difficulty for meeting deadlines, but moreover there is often conflict between the directions. For example, we are often asked to make things easier to use, but also asked to add in a lot of complex functionality - unless we are very very careful, acting on one pressure would have major detriment on the others.
How do you work around these issues?
Well, I'm really happy with what we were able to do to work around bug problems. We developed this tool called the 'Code Quality Checker' that basically reads in PHP code and runs checks on it's structure. We're able to simultaneously automatically detect:
- PHP coding mistakes
- PHP compatibility problems
- Database compatibility problems
- Security issues
- (and some other stuff)
Basically we write our tool to a really strict format of PHP, so called 'formally-typed' PHP. We then just run a scan on our code before making a release, to pick up on unforseen problems. Of course, we still have to run manual tests, but we're able to eliminate 50% of bugs right off-the-bat, and they're usually the worst ones - the one's that cause the biggest failure, or security holes.
There's no real ultimate solution too resolving design-direction issues, other than making sure we document all our standards and all our design considerations formally, so that we always remember and understand the environment we work in - we then just have to be clever. We actually vehemently argue, as a team, over all the ideas we have, and this works as a fantastic refinement/trashcan filter.
How do you make sure ocPortal is compatible with all the different browsers out there?
Internet Explorer is the bane of our lives - Microsoft really need to get their act together because they cause countless web developers lost days trying to work around huge flaws in their browser. No other serious browser comes close to how buggy IE is with rendering web pages. Even IE 7 has major unresolved problems and huge gaps in their standards support.
Where do you see the Internet in 5 years from now? Will ocPortal adapt to the changes, or will ocPortal help make the changes?
The Internet hasn't honestly changed much in the last 5 years. A lot of the most vocal people seem to live in fantasy land where 'Web 2.0', 'AJAX', and 'Blogs' are making the Internet reach some super-innovative next-generation turning point - the truth is that most of this stuff has been around in some form for a long time, and is just evolutionary, not revolutionary. As broadband is adopted more, people have relied on the net more, and hence are better at using it and more involved - and that makes interest increase, and a result, things move forward. I just expect this to continue, and for things to be better but still completely recognisable. I mean, people talk about how social websites are the next big thing, but they've been around in some form since the original BBS.
ocPortal will continue to evolve too, and we'll keep on the forefront of things. We already have influenced the market - I don't think it's a coincidence that soon after our unique FTP-based self-extracting quick-installer was out, Joomla was marked down to have the same thing on it's roadmap. I've no doubt things like our integrated command line and theme wizard will be seen in, or at least planned for, competing products.
Outside ocProducts, what kind of things are you interested in?
This is where I'm supposed to say I enjoy sport, or guitar, or kung fu, or something. I'm sorry to disappoint, but my interests are far less normal . I'm interesting in things like AI, relativistic and quantum physics, code breaking, debating, and I have a strange love for programming parsers. The funny thing I suppose is even though I have a history with computers and gaming, I don't really care about either. Whilst I loved to write games, I never liked to play many. And, whilst I use computers pretty much all day each day, they're just a means to an end to me - I'm not interested in hardware, or operating systems, or advocacy, or just sitting there playing with them unless I have some kind of project to work on.
What websites do you visit yourself?
I'm an avid reader of SlashDot, and BBC News. I also check a few personal sites I'm involved in, or was involved with in the past - just to see how things develop.
I love to learn and am a bit obsessive of staying on top of happenings.
Apart from the mentioned sites, I generally just rely on where Google sends me, as well as a large collection of bookmarks should I be wanting something very specific.
What's your personal moderation style?
I guess my style kind of mirrors my politics - I'm a bit of a harsh liberal (liberal as per the UK meaning, not the derogatory US understanding ). In other words, I try not to restrict people much, but as soon as they blatantly disobey the the rules, the moderation comes out in force.
I also believe strongly in archives - I never like to delete anything unless there's very good reason to do it. If I wanted rid of something, I'd make an invisible archive for it. I suppose I just don't like to erase the historical record.
What do you like doing, and what do you hate doing?
I like just going out and solving problems that I care about, or making something really fresh and grand. I like removing things from my to-do list and sitting down to watch a video (it's not the video, it's the chance of a break!)
I hate having responsibility for getting things done that I don't yet know how to do or haven't proven I can do. It's not a matter of incompetancy, just fear of needing to succeed in the unknown. This comes up a lot in my professional duties, although I haven't yet had to give up on something or do it badly - perhaps because I stay away from what I know I suck at - painting.
What are your favorite books? TV shows? Music? Foods? Beverages?
My brother is always complaining that I don't read novels. I used to read lots, but I got bored of them. I suppose that's a bit controversial so I'm fully expecting flames now .
I read loads of non-fiction books. In fact, I have shelves and shelves packed full of nothing but computer and business books - and I've read them all. Knowledge is really important to me.
I mostly like comedy shows and science fiction, but there's only one show I'm really obsessive about - 'The League of gentlemen'. I only expect UK readers to know what it is, and it's not the same as 'the extraordinary league of gentlemen'. It's a dark comedy.
For music, I tend to like complex songs with lots of lyrics, mostly modern punk music. My favourite band is 'The Alkaline Trio'.
I love chocolate, french bread, fish fingers, and 'crusha strawberry/raspberry milk'. I don't like most food or drink though... things like pizza, curry, coffee, and most alcohol drinks. I eat a lot of meat-substitute products - although I'm not really a vegetarian, I sympathise - plus there's less chance of picking-up/spreading diseases.
How did you get involved in coding?
My Dad built computers as a hobby so I was always around them, and I started to teach myself to program when I was about 7. Back then there weren't really any learning resources available in wide distribution (unlike on the Internet today), and nobody else in my family was interested in programming so I had to teach myself from experience and what scraps of information I could find.
What advice can you give people just getting into programming?
Read, work on projects, read some more, and work on more projects. It takes many years to get to a professional level, and even most professionals have a very narrow focus. Just play/work hard, never stop learning, and always keep a critical and logical mind.
If you really love programing, it won't feel like work, so just consciously set yourself on your journey and enjoy yourself!
Any failures you want to tell us about?
Back with ocPortal 1 there turned out to be a major security hole and it was very widely reported. If you search even now, you'll probably find it on the first page of results. Since then I've been on a bit of a security crusade, implementing all kinds of technologies, procedures and performing a lot of research, to make as certain as I can be that it would never happen again. To be fair to myself I should point out that the security hole didn't work on all PHP configurations and wouldn't have existed if PHP had been designed better. Also I should say we got a patch out very quickly.
The other biggest failure was releasing ocPortal 2 with insufficient testing. I should never have assumed that casual beta testers would test all major functionality in a reliable kind of way. Like with the security hole, this caused my to generate another crusade - a stability one.
Any successes you want to tell us about?
I am honestly really proud of ocPortal and my team. As a team we've pulled off some huge feats such as:
- the most broadly-scoped system of it's kind, by far - we have our fingers in just about every webapp pie
- a completely icon based administration, with hundreds of custom-made icons
- our integrated unix-style command line, 'OcCLE'
- the theme wizard I mentioned earlier
- our 'quick installer' and setup wizard, that avoids the normal install/setup pains that come with products in our area
- our 'catalogues' system, that allows people to configure their own web-style database systems for their site without any programming
- the first full-featured (i.e. not just a blog or forum) free CMS hosting system
- the first system to offer user integration with third-party forum systems (this is quite common now)
- the first decent product of it's kind with it's own forum that can actually compete with the standalone forums (we have a lot of unique forum features that even the standalones still don't have, and we fixed quite a few prevalent mis-designed features)
Could you tell us about your future plans?
I would never have believed I'd be where I am 3 years ago, and during that time things haven't developed in the direction I expected. It's not that I'm disorganised, but things have really changed around me a lot in a ways I could never have predicted, and I'm always still learning. For me now, the future is as uncertain as ever - I expect to keep pushing ocProducts forward, but it's hard to tell whether I will be moving back towards a computer junkie or be keeping on a suit and hiring/firing all day long . Whatever happens, it'll be heavily focused around what our customer's ask for.
ocProducts has a lot of plans, hundreds of ideas for new features, and a good idea what direction the new version will be moving in. It's a bit early for me to release any of that, but interested readers should stay tuned to our website .