ThoughtWorks - fighting developer abuse
Ya gotta love a “company”:http://www.thoughtworks.com with a “sense of humour.”:http://www.youtube.com/watch?v=sjnxFyJT2I4
Ya gotta love a “company”:http://www.thoughtworks.com with a “sense of humour.”:http://www.youtube.com/watch?v=sjnxFyJT2I4
After a nearly two and a half month wait, I am no longer an employee at Environment Canada. I packed up my stuff, closed my accounts and turned off my computer for good today and walked out the front door for the last time as an employee. The reason for this leaving is that I am finally joining ThoughtWorks.
I have to admit though that this all seems a little surreal due to the long wait. I can hardly believe that the time has finally come to start work. The current plan is to fly to Chicago for training–ThoughtWorks Immersion–and then join a team and start working.
I really can’t wait to start and am definitely looking forward to working with other ThoughtWorkers and learning from them. And hopefully in some small way I can contribute something back and they can learn something from me.
Onwards and Upwards!
I am just wondering what people are using as a Subversion client on OS X? I have found two, neither of which I like all that much:
* “SmartSVN”:http://www.syntevo.com/ — This is actually an excellent program, but it is not real mac like and it is also not free for commercial projects.
* “svnX”:http://www.apple.com/downloads/macosx/development_tools/svnx.html — This is a more os x like app, but it is somewhat non-intuitive to use since it splits the repository from the local copy; however, it is free to use for kind of project.
What I would like to find is something like “TortoiseSVN”:http://tortoisesvn.tigris.org/ but for the Mac. I know someone is developing a similar product, but I can’t remember the name or the URL. So are other developers using?
One thing that I have picked up while reading through the /Agile Web Development with Rails/ book is the style of development that it uses. For lack of a better term, i call this starting at the center.
The example in the book is an application called depot which is an online shopping cart. The point at which the book starts development is by finding the most central aspect of a shopping cart and adding just that little bit of functionality; in this case, a product. Without products, the web app can’t do much of anything. But you can deal with products without having users or shopping carts or sessions or anything else setup.
I have always heard that you need to start with the part of the system that poses the most “risk”. The problem is that I have never really heard a very good definition for the word risk. From a certain point of view, not having the ability to deal with products in an online shopping cart poses a certain amount of risk.
The usual definition of risk is the part of the system that poses the greatest architectural problem or the part of the system that you don’t know how to do or the parts of the system that will take the longest to do. I have always wondered how you know all this about a system before you even start to code?
Personally, I like the “start at the center” method of software development because it gives you a very clear place to start adding functionality and it makes doing test-driven development easy as well as you know what you are testing. It also allows you to start coding without having the entire system figured out.
There is an excellent video posted on Google Video about a talk that “Chad Fowler”:http://www.chadfowler.com/ did for the West Michigan XP Users Group. The talk is entitled, “Don’t Follow the Lemmings.”:http://video.google.com/videoplay?docid=-8984753198261505541 In the video, he offers up some advice on how to be a success, or how to move beyond your current plateau and not be one of the developers shaved off the bottom.
One interesting point that he makes fairly early in his talk is, he says that he was once asked by a young programmer how to become a great programmer and his answer was, “you seem like a very smart person, why have I never heard of you?” The point that he is trying to make is that developers need to get their names out there and do things that result in people knowing who they are.
Another point that he makes in the talk is that, he as a manager, likes to hire the disruptive programmers; the people who are not opposed to offer up an opposing viewpoint. As he says, if you are not offending someone then you are doing something wrong. I tend to agree with this, with the one caveat that there is a difference between stating your opinion, even if contrary to the accepted view, and being a jerk.
This is an excellent talk to watch, but be warned that it is almost 2 hours long.
I had a few spare hours today and installed “Trac”:http://trac.edgewall.org/ onto my “Dreamhost”:http://www.dreamhost.com account using a “tutorial I found at Natmaster.com.”:http://natmaster.com/articles/installing_trac_0.10.php The tutorial is excellent and is mostly cut and paste. There is some editing of files though so you will need to know how to use a text editor.
There was one part of the tutorial that did not work for and that was getting dbauth up and running. The tutorial states add the following to trac.ini:
[central]
database = /home/{your username}/trac_sites/dbauth.db
envroot = /home/{your username}/trac_sites/{your trac project id}
However, Trac kept complaining that envroot was not specified in trac.ini. The only fix I could find for this was to use the following instead from the “dbauth site:”:http://www.trac-hacks.org/wiki/DbAuthPlugin
[dbauth]
database = sqlite:/home/{your username}/trac_sites/dbauth.db
envroot = /home/{your username}/trac_sites/{your trac project id}
users_table = trac_users
users_envname_field = envname
users_username_field = username
users_password_field = password
users_email_field = email
perms_table = trac_permissions
perms_envname_field = envname
perms_username_field = username
perms_groupname_field = groupname
cookies_table = trac_cookies
cookies_envname_field = envname
cookies_cookie_field = cookie
cookies_username_field = username
cookies_ipnr_field = ipnr
cookies_unixtime_field = unixtime
I am not sure how much of this is needed though. My problem may have stemmed from the fact that I was unable to download the version specified in the tutorial and had to get the plug-in manually. Although, the version I downloaded was 0.10.
Now to learn how to use the software.
Since I have not been able to find a reliable and fast ftp client for OS X, I have found a much easier method of upgrading my WordPress install. Here it is in short:
# Upload the zip or tar file to my host
# ssh into my account and unzip the file
# copy over all the files in the resulting wordpress directory into my public html directory using the following command
$ cp -R --reply=yes ../wordpress/* ./
This ensures that all the files are overwritten and I only have to upload a single file. Now granted, this will only work if you have shell access to your hosting account.