Hey!
I don't want to talk about joomla's performance or server performance or anything like this :)
I want to talk about our performance and how fast do we get stuff done???
There are people that can do the same job twice as fast as other and most of the time it is not because they are smarter, but because they use better tools.
Can we all share with the world what our favorite tools are how they help us in our day to day live to save time and be more effective. You can write anything down - from dev environments to twitter clients. Let us make this the ultimate performance guide for all other joomla developers :)
I'll start with a very small list:
development:
netbeans (or eclipse if you want, but a good PHP IDE is a must)
filezilla(we all need to transfer files)
psPad(for random file edits and tasks this is perfect)
redmine (each project should be organized and this is the tool for it!)
phing (I hope that there aren't any developers out there that build their joomla extensions by manually ziping files anymore.. - alternative for those that can java is ant)
communication:
skype
Outlook (yes believe it or not - a hardcore fan here)
Comment by Alain Rivest on April 11, 2011 at 7:08pm Having two screen is a must! One for the code / debugger, one for the browser.
Having a local web server. It's a lot easier and faster to test your code than to always copy on another server.
Using a source manager like SVN. It allows you to track your changes, I cannot live without it!
Comment by Daniel Dimitrov on April 12, 2011 at 7:53am Yep, 2 screens is a must, I agree! I want to have a 3rd one as well :D
About SVN - how are you organizing your repository?
For example, if you develop a joomla component - do you publish the whole joomla installation to your repository, or do you go only for the folders concerning your extension.
Also do you have experience with developing websites with svn? Where you store the whole project in svn, you work on your copy, commit and then just execute the update command on the actual website?
Comment by Matt Thomson on April 12, 2011 at 5:13pm For SVN I use assembla, its ability to add milestones and track progress is awesome. I only keep my extension files in the svn, and I keep a the local copy of the svn in C:\repostories\myproject. Within 'myproject', all the files are stored as they would be in Joomla, eg administrator\components\...
Then I symlink the files folders into a Joomla install on my local host. That way all the programmes on my computer, including my localhost and my ide, think the svn files are part of the Joomla install, but when I commit, only the extension files are comitted. There is no need for the svn to register when the rest of Joomla changes, this makes things complicated, and makes upgrading Joomla a pain.
Each commit I make a make a comment, and put in what assemble ticket this relates too. That way in my revision log, assembla will make the link from the revision to the ticket automatically. This makes it easy to track past changes.
I use tortoise svn, instead of a plugin like subclipse. I like to keep my svn seperate from my ide, so I can swap my ide if I need to, without having to reinstall subversion.
I find Zend studio (based on eclipse) does a better job of php and javascript than others. I have tried eclipse, zend studio, aptana, komodo and netbeans. I think they are all reasonably good, with zend studio being a little better.
I do my build tasks with straight php, as I need to do some funky stuff with preg_matching and replacing. It is still just as easy as running one php url and having a package made, Jfile and Jfolder have some good functions for this.
I also try and do everything online, for example I use gmail not outlook. If my laptop dies/ gets stolen, I want as much as possible online, so I don't have to recover files. I use mozy backup to automatically backup my important files every day in the background to a remote server.
For a live server, I use a vps at rochen. I don't like the possible speed problems or possible security issues on a shared server. Rochen know Joomla really well, and they manage the vps so I can get on with my job. Also their alert service means I don't have to try and monitor when my extensions have a security flaw, I get told of any flaws in Joomla extensions asap by email (having your site hacked is not good for productivity).
I use vmware workstation + 2x windows xp installations to test in IE7 and IE8. I have tried lots of solutions to get multiple IE's on one operating system, but I find they never truly duplicate virtual machines.
I still find firefox + firebug + webdeveloper toolbar is the best for frontend inspecting of sites. I think firebug has saved many dozens of hours.
As someone who comes at this more from the design/content end of things, I'm using a lot of the Adobe Creative Suite for my primary tools. For the level of work I'm doing (not at all bottom-up extension or app development, but lots of custom templates), Dreamweaver works fine for me as an IDE. The best tool for mocking up visual design work -- hands down -- is Adobe Fireworks: It offers the best combination of manipulating bitmap and vector image elements. (I find that Photoshop and Illustrator lean too heavily in their respective directions for mocking up Web site designs.)
One simple thing I invested in which massively boosted my productivity is a solid state hard drive. Not having to wait more than a couple seconds for applications (and operating systems) to boot is a massive time saver in the long run. (Another thing which really helps is learning the keyboard shortcuts for applications and the OS: so much faster than using the mouse.)
My preferred development environment? Well, it's actually the host server where the live Web site is to reside. I typically like to have a VPS server with the capacity for multiple accounts, and hang a locked-down development version of the site off a spare IP address. Yes, this is slower than localhost development, but I like to be able to put a site through test runs in the actual PHP/Apache environment where it will ultimately reside. And if the site starts to slow down, that probably indicates a server environment problem I want to know about anyway. (Plus, I'm sick and tired of XAMPP being finicky about not being installed on my C: drive.)
Another essential software tool is the Firebug plugin for Firefox: great for figuring out design issues and/or cleaning up the mess that others have left behind.
I agree that more monitors is better, and I have two widescreens (and a 4:3 that rotates to vertical alignment in the shop ... stupid cheap Chinese capacitors). I geeked out a little and bought a Das Keyboard ... and I invested in a good, gaming-quality mouse as well.
I'm currently in the market for a decent task chair ... and I can't decide if the high-end Herman Miller options are worth it. Any opinions on this?
I'm mention again that I'm coming at this as more of a designer/producer/implementer, rather than a PHP developer, so my tools and methods are a bit different than the code ninjas out there.
Comment by Alain Rivest on April 12, 2011 at 9:32pm @daniel My projects in svn are organized in the same way as the final zip file. I use a bash script to create the archive and to create new releases in svn (create a new branch with the version number).
I try not to test my code every 5 minutes, so I code something for some time, then I create a package and I install it. Not the fastest way but it allowed me to found bugs with the installation! :)
And no, I never put a whole web site in svn. If I'm building a complex site I prefer to make backups with Akeeba in case I break everything or want to roll back something.
Comment by Matt Thomson on April 12, 2011 at 10:51pm @Alain
"I try not to test my code every 5 minutes, so I code something for some time, then I create a package and I install it. Not the fastest way..."
It seems it would be better to symlink the files into Joomla, rather than making a package and installing it. That way you can test whenever you want, and you can still run your build/installation task and test this whenever you want (so nothing is lost, just the abilty to test instantly is added).
Comment by Daniel Dimitrov on April 13, 2011 at 4:37am @Matt, that is a pretty cool idea (the symlinking :))
I actually have only the files that I work on in svn (but they are not outside of joomla) - this has a side effect that svn thinks that I have a lot of new files in the language folder :) and when I need to commit or update I have to go to each folder to see what has changed. I'll change this for some project and will see if I like your method more.
About your last comment - I couldn't understand what is the other bonus of having the files outside of joomla? The phing script builds the package in less than 30secs...
Ah, btw cool to hear that redmine has the same features as assembla :)
@Kevin - I think that you forgot to add a good mouse like this one: http://www.logitech.com/en-gb/mice-pointers/mice/devices/7108
Comment by Alain Rivest on April 13, 2011 at 7:07am
Comment by Matt Thomson on April 13, 2011 at 6:08pm Hi Daniel,
I can see how putting the whole of Joomla in the svn folder, but only adding the extension files, would work ok, but I think as the project gets more complicated, things will get a bit messier and hard to navigate. For example, if you add a new file to your project, you have to remember to add this to the snv, but not the Joomla ones. If the svn is seperate, you just add everything.
Can you tell me what comment you meant when you mentioned 'my last comment', I'm not sure which comment you mean.
Comment by Daniel Dimitrov on April 14, 2011 at 3:53am I meant this one:
It seems it would be better to symlink the files into Joomla, rather than making a package and installing it. That way you can test whenever you want, and you can still run your build/installation task and test this whenever you want (so nothing is lost, just the abilty to test instantly is added).
© 2012 Created by Amy Stephen.
You need to be a member of All Together, As A Whole to add comments!
Join All Together, As A Whole