Choosing the Best Tool for the Job
August 2, 2006 on 10:41 am | In General, Java | Add a commentKathy Sierra wrote an interesting entry on her Creating Passionate Users blog about how the “right tool” is not always the “best tool” for the job. According to her, one factor that is not to be neglected is the level of enthusiasm for using the tool, which can sometimes be even more important than the perceived appropriateness of it. Of the three main considerations (appropriateness, expertise and enthusiasm), expertise remains essential nonetheless.
I mostly agree with her opinion that the urge to learn a tool often creates enthusiasm and drives productivity upward. However, this holds true only if the users are capable and learn efficiently. If that is not the case, there is a risk that projects get delayed as users struggle with the tool. In most cases, seasoned developers can apply their past experiences to quickly become efficient with new tools. And, driven by enthusiasm, they become highly productive.
Technorati Tags: software, development, project, tool, enthusiasm
Related Posts:
- Beagle Dynamic Desktop Search Tool
- Boot Camp for Mac OS X on Intel-based Macs
- Domain-Driven Design, the quest for software perfection
- Three weeks with a MacBook Pro laptop
Refactoring by Renaming in Visual Studio .NET 2005
July 29, 2006 on 3:26 pm | In General | Add a commentRefactoring by renaming is very straightforward in Visual Studio .NET 2005. Here is how it is done.
You simply overwrite the identifier you wish to rename. The editor will display a symbol underneath it to signal that a refactoring operation is available, at which point you press Alt-Shift-F10 and select the correct operation from a drop-down list. The entire sequence does not require any clicks or keyboard shortcuts to access the refactoring menu. I have seen something close in X-Developer, but it was not as refined as this.
I almost regret using Vim for C# development all this time!
Technorati Tags: Refactoring, Renaming, Visual Studio, .NET, C#, Vim
Related Posts:
- Parallels on MacBook Pro
- Koders Code Search
- Arbitrary sort of selection options
- Ubuntu Linux on iBook G3 laptop
Windows XP on the MacBook Pro
July 27, 2006 on 11:06 pm | In General, Apple | 3 commentsI am running Windows XP within a Parallels on my MacBook Pro. All my software work flawlessly and as fast as on a native installation, which I can only attribute to the excellent virtualisation technology in the Core Duo processor.
I considered installing Windows XP on a separate partition and using BootCamp to boot into it, but dropped the idea when I discovered Parallels. I was so impressed that I did not have to wait for the end of the trial period to purchase a licence. Parallels is one of these must-have software for the Mac.
Technorati Tags: MacBook Pro, Mac OS X, Windows XP, Parallels
Related Posts:
- Parallels on MacBook Pro
- Boot Camp for Mac OS X on Intel-based Macs
- Three weeks with a MacBook Pro laptop
- More MacBook Pro goodness
Three Golden Rules to Tackle Complexity
July 21, 2006 on 11:27 am | In General | Add a commentAccording to Tim Newing, the IT Director of Camelot, there are three golden rules for tackling complexity in IT projects.
- Do not think of a complex project, but think of a collection of simple solutions.
- Manage outside the “business as usual”; instead, set up a different business structure so that the project team is not distracted by the normal business.
- Make sure that people have a good reason to complete the project. This is not the same as motivating them to make the project a success; instead, the objective is to convince them to put the lid on a project when it is time to do so and to prevent feature creep.
Technorati Tags: IT, Complexity
Related Posts:
- Successes in UK IT
- HOWTO: Filter spam efficiently
- wxWidgets time control
- How to identify and fix an anemic domain model
Successes in UK IT
July 21, 2006 on 11:15 am | In General | Add a commentThe IT industry in the UK has had a couple of much-needed success stories recently. This is a breath of fresh air amidst daily reports of major IT projects failing.
The first success is the completed modernisation of the British Transport Police IT systems.
The second is the positive progress made by the IT department of Camelot in revamping its retail infrastructure, which is the result of adopting the right methods to tackle complexity in such large projects.
Related Posts:
- Three Golden Rules to Tackle Complexity
- Linux will not displace Windows so soon
- Exception handling or result code
- JSF development with NetBeans 4.0
Essential Versioning Tools
June 14, 2006 on 8:52 pm | In General | 3 commentsTwo essential version control tools for today: “SmartCVS”:http://www.syntevo.com/smartcvs and “SmartSVN”:http://www.syntevo.com/smartsvn, both available from the same company.
Related Posts:
See Windows Vista
June 8, 2006 on 9:05 pm | In General | Add a commentA quick follow-up on my “earlier post”:http://coding.mu/archives/2006/06/08/windows-vista-beta-2-available/. Despite boasting about being a Mac OS X guy to someone who asked me if I had tried Windows Vista Beta 2 myself, I am curious about what is brewing in the Windows world. Although developing applications for Windows is what puts food on our table and pays the mortgage, I have remained relatively detached from the recent developments coming from Microsoft.
Anyway, to see what is coming up in Windows Vista, there is no better place than “See Windows Vista”:http://www.seewindowsvista.com/. Judging from the promotional videos, the features of the new operating system — the back-end features, that is — vastly improve on the ease of developing graphics-heavy applications. Of course, the Microsoft marketing gurus have chosen the juiciest videos, but there is one irrefutable trend: applications are becoming more and more graphical.
Technorati Tags: microsoft, windows+vista, graphics, videos
Related Posts:
- Internet Explorer, spyware?
- Copy/paste command-line utilities
- The ridicule of web applications
- Three weeks with a MacBook Pro laptop
How to identify and fix an anemic domain model
February 26, 2006 on 1:35 pm | In General | Add a commentCRUD applications tend to involve classes with many accessor methods and very little business logic, the behaviour being implemented at a higher level in manager (or god) classes. This usually signals that the domain model is anaemic. Many developers know the symptoms, but few know how to actually resolve the problem.
I have been suffering the same frustrations myself as I write classes that seem to have no responsibility other than to write and read attributes. OOP is not only rendered futile in such cases, but the amount of code that needs to be written also increases as I have to write classes that are effectively nothing more than data transfer objects and manager classes to act on those.
Through unit testing and refactoring, I have finally managed to develop a few simple rules to identify when a domain model is anemic. Without these two practices, it would have been just as difficult as many others are finding it.
Unit testing helped by forcing me into writing the “usage code” before implementing the classes. By first writing tests, I get an idea how the interfaces of my domain model will be used and can quickly flag up anything that seems out of place or redundant. For example, consider a simple Account that has the following responsibilities:
- Represent a user account
- Hold information about a user (ie. username, password, email address, status)
- Used for authentication
This class seems very dumb at first, and one is tempted to implement only getter and setter methods as the interface.
Now, say we write a unit test for user authentication. What most people will probably do is this:
assertTrue(account.getPassword().equals("testpassword"));
This, in the unit test, should immediately signal that the model is anemic. Here, the responsibility for checking that the input password is valid is handled by the calling code. However, the Account class is supposed to take care of this.
The fix is to refactor the unit test as follows.
assertTrue(account.hasPassword("testpassword"));
Now, the behaviour is encapsulated within the Account class, making the implementation of the “authenticate user” use-case more robust.
There are many such small refactorings that can be performed on one’s code in order to make classes richer and reduce the symptoms of anemic domain models. One has only to write good unit tests and refactor whenever one thinks that things can be written in a better way.
I follow these principles:
- If calling code reads an attribute from an object to then act on that piece of information, the behaviour should be moved to the object.
- Getters and setters should not be systematically implemented; instead, write setters and setters only when unit tests indicate that they will be needed.
- If there are chain method calls on an object, this indicates that the object is lacking some behaviour.
I am sure other programmers have their own personal ways of resolving anemic domain models. I would be very interested in reading what techniques others use.
Related Posts:
- Rapid web development
- Domain-Driven Design, the quest for software perfection
- Dream coding a Composition
- Better software faster
Internet service providers promise faster broadband for 2006
December 26, 2005 on 9:49 am | In General | 2 commentsIn their master plans for 2006, Internet service providers in Mauritius aim to increase the bandwidth of their broadband Internet services. To achieve this, they will make use of wireless network technologies that are easier to deploy across the country. WiMax will also allow speed of up to 3 mbps and provision of other services such as voice-over-IP telephony and video-on-demand. With such an infrastructure, the Internet service providers will be in a better position to compete with the current leader in this market, Telecom Plus.
Although the emphasis will be put on increasing the speed of Internet connection, the service providers will also continue their talks with the Information and Communications Technologies Authority (ICTA) on the subject of cost of connections to the SAFE cable, which they claim is too high and represent an obstacle to them lowering their prices.
Technorati Tags: Mauritius, Internet
Related Posts:
- How to Improve Download Speeds of BitTorrent
- Emtel launches 3G in Mauritius
- Using Apache Axis in NetBeans 5.0
- Fun with WiFi Freeriders
Ubuntu Linux on iBook G3 laptop
December 10, 2005 on 8:28 pm | In General, Apple | Add a commentI decided to try Ubuntu Linux 5.10 (Breezy) on my iBook G3 laptop after becoming a very satisfied user of the x86 version that runs on my other laptop and my computer at work. In the past, I installed Yellow Dog Linux and a previous version of Ubuntu Linux on the same iBook, but quickly became frustrated by the many tweaks required to make it run all the programs that I needed.
The installation was very easy, but as before I ran into some problems getting the laptop set up with my desired software.
First, Flash is not well supported. There are free open-source alternatives out there, but those are still very unstable and will not play well with all web sites.
Second, Java. Only IBM’s implementation of Java is available for the PPC and it is not even Tiger. I’m a developer, I’m supposed to be able to run the latest Java SDK.
Third, the iBook keyboard does not work as it should. Why should I press F12 to emulate a right-click when Apple said I should be Ctrl-clicking?
Which brings me to the realisation after I was afflicted with this terrible headache that I still have at the time of this writing. If Apple spent so much money on designing proprietary hardware and software that complement each other, it is because they meant those to remain inter-dependent. Never will there be an operating system that will run as flawlessly on an Apple product as Mac OS X. In fact, that is why I bought a Mac in the first place!
I then realised that my frustration was not about not being able to run Linux on this iBook, but rather about having to manage three different operating systems: Mac OS X on the iBook, Linux on the other laptop and Windows XP on the desktop. So now I’m taking another approach and planning on partitioning my computer usage so that each of these systems delivers in the area(s) it is most suited for. My initial plan is to keep the Windows XP machine for my gaming sessions, the Linux laptop as a server (for backup and other things) and the iBook as my main machine.
I will write later to report on my progress in attempting this objective.
Technorati Tags: Linux, laptop, iBook
ibook laptop linuxRelated Posts:
- Linux vs Mac OS X: Mac OS X wins
- Linux will not displace Windows so soon
- Three weeks with a MacBook Pro laptop
- Boot Camp for Mac OS X on Intel-based Macs
— Next Page »
Powered by blog.mu with Pool theme design by Borja Fernandez.

