Nicholas K. Dionysopoulos: Our safety is our speed
Who are you and what do you do?
I'd normally say that I'm Nicholas Dionysopoulos, a 30-year-old Mechanical Engineer turned web developer, mostly known as the developer of Akeeba Backup. However, I prefer to introduce myself as “Hi, I'm Nicholas and I'm a Joomlaholic”.
I was into computers and programming ever since I was 11 years old. Not being able to pursuit education in Computer Science, I decided to study Mechanical Engineering. While working as a business consultant, I was moonlighting as a Joomla! developer and site builder and began working on the JoomlaPack backup component. In December 2009 I decided to let go of my Mechnical Engineering day job and focus on what I do best, developing Joomla! extensions. I did a few custom projects in the past, but have now decided to stick to my own projects.
Besides developing and supporting software, I am a regular contributor to the Joomla! Community Magazine, roam the globe attending and speaking at Joomla! Days and related events, write (mostly technical) articles on my blog and generally spreading the Joomla! love every way and everywhere I can. When not acting like the geek I am, I enjoy playing the guitar, singing and spending time with my family and friends. I'm not yet married, but my relationship has now entered RC and will soon go stable ;)
What hardware are you using?
Due to the need to support my software on virtually every server setup imaginable, I have ended up with a ton of hardware that's been a nightmare to set up and maintain. Yet, it's all indispensable for thorough quality control.
For starters, my main development and testing machine is a MacBook Pro 13.3". I chose it mainly for its splendid battery life, illuminated keyboard (geeks love working when everyone else is sound asleep!) and because it's easy to use. It also serves as a test machine for IIS using Windows XP Home Edition in a VM, as well as a test machine for Ubuntu Linux 10.10 32-bit. It's so good for developers that I seriously wonder how I could ever work on anything else.
The secondary machine is a HP Pavillion notebook (Intel Core i3, 4Gb RAM, 320Gb HDD) dual-booting Windows 7 Home Premium 64-bit and Mandriva Linux 2010.2 64-bit. It's used mostly to test compatibility with popular local server environments and testing with the browser we all love to hate, Internet Explorer.
The tertiary machine is an old AMD Turion 1.3GHz MSI laptop with 2Gb of RAM and a fried GPU. It serves as a test server, thanks to Ubuntu Server 10.10. It's configured to simulate a mid-end live hosting environment, complete with virtual hosting assignment, suPHP, you name it. It's used to test the software's behavior on a typical mid-end hosting environment.
The quaternary machine is an Asus EeePC 900 (Intel Celeron M 900MHz processor, 1Gb RAM, annoyingly slow 12Gb SSD drive) with Windows XP Home Edition and WAMPserver, simulating the typical low-end hosting environment. It's purposely very slow and cumbersome to use. If you pay less than 4$/month for hosting, you know the kind of setup I'm talking about and why it's paramount to test software on it.
The quinary machine is what I call my “Frankentop” machine: a desktop machine assembled by cannibalizing older dead kits and upgrading a few select parts, like a broken down HDD or the motherboard which caught fire –the stink of the burning PCB lasts for days– two years ago. It dual boots Windows 7 Home Premium and Ubuntu Linux 10.10. Unlike the other machines, it's free of development utilities and is used to test the installation and operation of the desktop utilities (like eXtract Wizard or Remote Control) under typical user conditions. It also serves as the invoicing machine, which is the real reason it's indispensable, but that's another story.
Having 5 machines and 9 different environments -or 12, if you count different local server packages used on the Frankentop and the HP Pavillion- I can perform decent quality control of the software I publish before you see a public release. Of course, experience shows that it's not enough, but I have run out of plugs and room to store more machines!
And what software?
I am more eclectic with software than with hardware. I have chosen one tool for each task, specifically one tool which does the requested task perfectly. I prefer writing code than tinkering with software which is supposed to help me write code. My father taught me that the tools don't make the man, but the proper tools can unleash a man's productivity. Everything I use abides by that rule.
I do all development on Aptana Studio 2 (an Eclipse distribution) using Eclipse PDT and Subclipse. Tools such as XDebug, FireBug, FirePHP and J!Dump make my life much easier when debugging. Documentation is written in DocBook XML 5 format using XMLMind's XMLEditor Professional. Image editing is handled by Acorn and screen capture by LittleSnapper. The documentation rendered to human-friendly formats using the standard toolchain of DocBook XSLT filters and Apache FOP. Builds, including documentation builds, are automated using Phing and my standard set of custom Phing tasks. Version control is now primarily handled using Versions for Subversion repositories and Tower for Git repositories. Assembla is used for hosting the repositories and organizing the volunteer teams of beta testers and translators. Panic's Transmit is used for FTP, SFTP and Amazon S3 transfers.
What would be your dream setup?
After all those years trying, testing, tweaking and selecting, I already have the perfect tools for doing my job. What I find myself in need of is more people to help me bring the backlog of ideas I have into existence. This is the most invaluable resource and the toughest one to get hold of. Quality people with skills and dedication are very hard to find. It's the single thing that separates reality from my dream setup and the absolute proof that not all problems can be solved with money (unless you have ridiculous amounts of it, like the software behemoths of the corporate world).