Friday 16 November 2007

Much better than one

    I have noticed one tool that I use rather often.
    I have laptop used both at home and at the office. Both at work and at the office I have desktop computer. Whenever I run some automated process on one machine I intensively work with another. It increases efficiency: Instead of waiting until NAnt and MSBuild will do their job and let me go ahead, I able to read, write, send/receive e-mails, prepare presentation and even develop on other machine. That's can be really big advantage for you, if you're already disappointed to have strong beliefs in multitasking OS.
    Until I installed synergy, it was very annoying to transfer some small amount of data between my computers (for instance, URL or connection string from PC to laptop). Even if you have instance messenger on both or well organized set of shared folders. My hands where getting tired because I should work with two keyboards and two mice.
    So, let's start with small practical introduction: So you have you're laptop (in my case PC-BORYS) to the left side of your desktop PC (BORYSDESK) with network connection established between them. Synergy is installed on both PC and laptop.

    It's convenient to share PC's keyboard and mouse, so consider laptop PC-BORYS as client and BORYSDESK as server. Here is main screen of synergy:

    On client all you need is to specify server name (either network name or IP), see figure above. On server you should set adjacent screens configuration. In my case it's two screens connected side-by-side like on figure below:


    Press start to share keyboard, mouse and clipboard on two PC's!

    You can't expect synergy to transfer windows and support drag-and-drop operation between PC's, but there are anyway quite useful features ...

Advantages:

    - synergy can work with any amount of PC's (imagine if you have 2 laptops and one PC)
    - clipboard buffer is also shared. You can copy-paste from one PC to another
    - configuration is saved
    - synergy doesn't require administrator rights on PC and perfectly works under normal user
    - clipboard buffer can be transferred with any kind of data (pictures, doc files and so on)
    - tray icon with connection status is provided

Disadvantages:

    - when server is very busy, mouse and keyboard can freeze
    - It incorrectly works with different keyboard layouts and functional key (so it's good when you use one variance of latin alphabet)
    - It gets stuck if you place large amount of data in clipboard buffer

NB: It's open source, freeware project, which hasn't been changed since 2006. The latest version is 1.3.1

Thursday 8 November 2007

dotProject experience

    dotProject is light weight, free web-based team collaboration tool.
Hosting where I have tried it first was linux-based with cPanel X v2.3.0 as primary remote control. I'm not very good in administrating Linux server, but Fantastico tool installed dotProject in a few clicks. Of cause, I wasn't able to install specific version (I had experimented with , but as for me, it is extremely important that installation can be so easy. Anyway, team collaboration system is something customers don't pay for. And if you're collaboration tool don't demand your efforts, it's big advantage both for development and management.
    It's free, web-based and written in PHP. There are some entities you need to know about if you work with dotProject:

company - your team
projects - your global tasks, that make sense for management
tasks - your local tasks, that do not make sense for management
files - heterogeneous project documentation
forum - place where we can discuss something
tickets - some notes, that can either trigger discussion or task
events - calendar events
user - project contributor

dotProject has module structure. Each module can be represented as tool bar item (or hidden for convenient or security reason).


    Basic installation include following modules: Companies, Projects, Tasks, Calendar, Files, Contacts, Forums, Tickets, User Administration, System Administration, Departments, Help.
    For project like ours some of them are in fact surplus, so first I did is getting rid of Companies (we operate just one), Departments and Help. I was about to remove projects also, but realized that no task or event can be created without activating this panel. That's really strange, because logically I expected that like file can be created in files panel, or user in User Administration, tasks should be created on Tasks panel. This is little disadvantage: you can't set user rights to let them create tasks without removing or adding projects. Another inconsistency I have noticed is that user should have rights to operate forums to have right at least to post their message. Administrator can set although rights to create entities, and restrict to remove, but I think in most cases it's not a good solution.

dotProject in use


How to create user users in dotProject?

    Each user has rich profile with contacts (even ICQ is available), but which can not be extended with custom fields. To create user you should use User Administration panel and you can actually fill whole necessary information about them
Users should have role to be active. I reduced rights for project worker (by default project worker has all rights except administrative panel (User Admininstration and System Administration). dotProject proposes few standard user roles for different project contributors.

    User can be united in departments, project and companies, but I found this functionality somewhat surplus for me.
    There is a confusing field in user's profile called user type: it has no impact on rights or settings, but used only for information.

Tasks and tickets
    dotProject is not much convenient for doing this, but indeed that's good that tasks are more "heavy" than ticket, so tasks should be created from panel (there are 3-4 clicks needed. There are some attributes in tasks and projects that are not necessary: project can have states, tasks can be different types, and set of those states and types can be only changed by intruding to DB. Both tasks and project have budget, it's good that dotProject has this feature, but this field can be hidden for different roles, which makes this feature not very good for practical usage. In general all entity attributes in dotProject is not objects of administration, so you can't grant access to some entity with concealing some data for them.
    Tasks can be distributed by multiple people, but this requires from manager to see percentage of contribution, so probably it is reasonable to agree with team how to use percentage, otherwise it will be a mess.

Tickets supposed to be used as trouble reports, but can be used for "offline brainstorming" - people can express their proposals here.

Forums - are not very special discussion placeholder. Each forum has moderator, which has the same rights as anybody else, so this is not role, but just administrator

Files - that's really cool that dotProject has storage for homogeneous documents (in any format). It supports versions (and check in/check out operations) and allows to view the documents directly from browser.

Any version can be reviewed and all versions are kept in file system on the server. With mySql database which can be exported from server, it makes dotProject quite portable. File can be attached to certain task and project or not attached to any.

Calendar - good for organizing events. Events can be created by users in project pane and notification will be sent if needed. Actually after fanstastico installation notification works! Like most of entities events can have also web URL (for collaboration with Wiki) and bound to certain task

dotProject tuning


Other settings - there are plenty of settings, in System Administration panel even color scheme can be set, but there are anyway many properties that can be easily changed: for instance although you can set Saturday and Sunday as working day in calendar, you can't make Sunday in the end of week. Settings for notification and mail server can be set here,
custom fields can be attached to companies, projects, tasks and events, but unfortunately not to tickets and contacts.

It took 3 hours to install dotProject domestically on my Windows machine, but I'm lucky I did it: I have deployed our team DB on my machine and made my experiments even more thoroughly. DB include some significant settings that can be useful for dotProject customization (for example task and document categories and user types). They are represented as rows in certain columns of mySql database.

Other features

  • Contacts can be imported and synchronized with LDAP

  • Translation manager can be used for localization

  • User logs allow tracking user activity in project (Good feature for paranoiac managers)

  • There are more modules like search, history, install and so on available in System Administration


Let's briefly resume problems in dotProject

  There are some trouble with Cyrillic characters, which can make impediment for export/import DB or incorrectly rendered in PDF reports.
  I have found SQL injection error (discovered when I included to company name apostrophe character, see figure to the left)
  Calendar can't be set to European standard
  Initial color scheme is ugly, IMHO
  Fast localization and some attributes choice require changes in DB
  dotProject provides no integration with CVS systems, probably connection with development workflow should be conducted by filling some custom fields to tasks or making direct reference

Main conclusion: dotProject provides really good start for small and medium IT projects with good team collaboration platform which can be extended or in far future transferred to something and can be easily used together with Wiki or other CMS system.

Sunday 4 November 2007

Can team spirit be automated?

    Two weeks ago the remarkable workshop was conducted at our company: about different tools that may be used in different aspects of the IT projects. I was presenting CruiseControl.Net as build server and continuous integration tool. Other report was about Notepad++ - actually very good editor to amend configuration files. The third report was an overview of team collaboration tools given by our the most experienced consultant.
    His task was really challenging: web is flooded with different solution regarding team collaboration and managing IT-projects. It's really difficult to come up with something the top most convenient on this. IMHO, this tendency took unstoppable power from banal wish of every two from three developers to become a project manager. Another reason is that there is no good solution for managing IT-project indeed. Not all projects that have the modern infrastructure for collaborating have success. Among this, I have seen couple of successful projects were neither team collaboration nor bug tracking nor even source control systems were used. Accordingly to our gurus Tom DeMarco and Timothy Lister the most valuable thing is team spirit, which can not be replaced by tools or methodologies. Their book about peopleware is issued in 1987 and against all odds still lives after many collaboration tools are dead ...
    Day by day, moment by moment I am being persuaded there is no way to replace team spirit by some tool, like poor architecture can not be replaced by superb UML designing.
    Well let's turn back to our workshop: then only one tool attract my attention - dotProject - it was said to be free, light-weight and full functioning. With Trac that also is very remarkable (our company once had it as default tool for IT-startups), it is going to be something I'm gonna start future investigations.
    I felt I badly needed some place where I can see myself evolution of the team and evolution of the team collaboration.
    Two weeks after I suddenly get an opportunity to set some experiment with both Trac and dotProject. The first in line was dotProject, so in next post I am going to share experience about this ...

Thursday 11 October 2007

The real goal of Agile.

The 3rd Agile Gathering was conducted by Agile Ukraine in Kyiv on 9/10. I was participating as humble developer from our team listening to people who have already achievements (or at least pretended to have) in implementing agile technologies.

Being a participant of previous two gatherings I feel some remarkable symptoms, which probably may cause me to review agile technologies in different manner.

Organization crew strongly wants to sell certifications. So, they encourage everybody to become SCRUM certificated master (SCM), to have affiliation of the international agile community. Then you probably gain SCRUM Certificated practitioner. And the third stage of that is to become SCRUM Certificated trainer to be able to provide certification for other people. Capacities are growing: soon one more battalion of SCMs will appear in Kyiv. IMHO, it rather makes SCM devalued than increase percentage of successive projects, but let's see it together in the future.

Reporters lean to tell about their projects and how effective they are with agile. That's great, but why main accent is made "How to make your business applied for agile"? They prefer to answer question: "What kind of project should you manage to implement agile?", not "How to apply agile on some project?":
- How about deadlines? How can you check if you are meeting deadline or not, implied from your estimations?
- We do not operate with term "deadline". We have workflow, sprint, backlog, but do not use deadlines.


Well done. Thanks! Only challenge is to find such brave customer, that doesn't care about deadlines!

As for me, it's pathetic point of view: instead of appling process to business, let's make your business applied to the process. Bringing business to agile is even more ridiculous thing then bringing agile to agile software tool.

Accordingly to report of Adam Byrtek about his company Codesprinters agile techologies can be applied for small teams developing web-based solution on languages like Python. Unfortunatelly, that doesn't impress me much, because I can't drive out requirement of my customer and say: "Dear sirs, instead of delivering desktop client-server application based on Win32, we offer you web portal developed in Java".

Indeed, the most crucial thing is how to convert methodology to something worth to decision making people: would it be customer, headmaster, sales or owner you should represent your approach in his values.

I remember very remarkable book Critical Testing Processes by Rex Black. It impressed me very much because author managed to convert his technology to business benefits. Actually this is essential point of his thinking. Look at the first frame of his presentation here: his approach serves to save money. His listers don't even think what business values will be spent on implementation such QA-driven development. Because his approach is business value itself!

I can see community is progressing comparatively with last year: among people bedazzled with some extra-special-new-super-cool methodology appears essential community of pragmatic specialists, who will probably reenforce agile stronghold. Askhat Urazbaev from Luxsoft Moscow emphasized that agile is implemented not for agile, but to make project successful (in the meaning of business). I strongly belive in that and I also believe that agile will make software industry more successful, but for now I didn't get any good ideas how to make agile benefits evident for business. And this is very disappointing ...

Antipattern introduction seminar

    On Monday (09/10/2007) I was holding workshop about Antipatterns in our host company Ciklum. Attendance was quite low, but anyway I know start can't be easy.
    The topic is quite interesting, but since workshop was going to be mainly based on single book "Antipattern" by W. Brown and company, I strongly decided to brighten up it with my own experience. Project I'm involved in is all geographic map of Antipattern, so I had enough examples to make presentation pretty close to reality.
    I have found one peculiar thing: some people are really appreciate commiting to the main topic of presentation: they were steadily asking question and sharing their experience or opinion. Once I thought it's not good that reporter is frequently interrupted, but I really like it now. Only suggestion, that he (reporter) should be adequate on interrupting: to not argue very much and to know when to stop paying attention on the active listener.
    Next time I would rather have something like technical club, where all participants will be more or less equal ...


    And I believe I already have some ideas ...

Monday 1 October 2007

Windows 2000 must survive!

3 years ago I have switched from Windows 2000 to Windows XP. It's already year since WinXP is issued, but I have surprise intention to return to Windows 2000 again.
Today I have successfully compiled Outlook Integration solution in VS2005 based on new VSTO. And to my own surprise it was done without any VS extentions, w/o .Net framework 3.0 and even without Visual Studion itself. The secret?
Oh... There is no secret at all: VS2005 uses msbuild.exe to compile own solutions. It adds some tolerance to it, but my general build engineering approach is too keep build server and development as lean as possible. The thing I dislike most of all is when somebody updates list of prerequisites of our software and particulary preinstalled software necessary for development. My will would be to be able to compile everything in commandline without any additional tools.
In next post I'd like to describe this process in detail, but today I would like to concern attention on main principle:

Build process should be environment independent.
I.e. irrespective to environment that exists on build server the result should be invariant.
Some days ago we have established new build server and I accidently realized that it works different in testing environment. I swear to avoid situation like that in the future.
Seems to be like we are striving to a catastrophe?
Oh, yeah, we are: it happens when we try to deliver our soft built on new server to customer who has version of the old prerequisite ...
Somebody thinks that update is some kind of Tivoli. Oh, dear sirs, you are mistaken, it is some kind of Ragnarok!

Sunday 23 September 2007

Any good reason to have firewall?

I have been in trouble with VMWare so many times, that even now, when I'm deeply under pressure, I've started investigation. So, main question: how to deploy virtual machines host on fresh PC where firewall is used.
The only thing I know is that firewalls are special tools to control and restrict incomming and outgoing traffic within local network and in Internet. Before that I have used it rarely. That's some kind of phylosophical question: Should I it be used on home PC?
It is said that there are very manu malicious things downloaded to local PC from internet. But how can tool that requests if application lsass.exe can access address 198.162.1.4 port 443.
Well done! Challenging question. And what if I say no? Where will I get refuse next time?
Firewalls are all user-unfriendly. To be honest, they are not for common user. Let system administrators have deal with them. Home PC are buried under junk soft normally because their masters want to download this and that. Strange, how some people can proud with their "downloading". Oh, man, stop downloading that suxx video - you have no time even to see worth things!

So, let's come back to my investigation. So I have downloaded version of .PCTools firewall+. Lite and precious thing free of charge. The newest version has some interesting features:
They provide 2 modes of creating rules for the firewall: normal user and expert user.
The latter means that user will be requested for each attempt to connect distinct port and more presice rules will be created. Before that I have tried to use ISA, Kerio, McAfee and this soft looks quite good.
Another advantage is predifined rules that are spread over PC Tools which allow user fast customization with less amount of stupid questions.
So I have installed PC Tools Firewall on my laptop (Acer TravelMate 2700) with Windows XP SP2. Before that I've installed VMWare workstation 5.5. PC Tools install so called PCTools Driver that apparently used to track hardware activity. To my surprise those drivers are conflicting with VMWare drivers. PC Tools refused to work when 4 Windows Services belonged to VMWare are working. That's suxx! I knew that at my job people also have headache using VMWare and firewall. And even worse, that PC Tools doesn't output any presice info why did it fail! Only message "Failed to initialize firewall drivers, please try to reboot your machine. If the problem persists please contact PC Tools support". This case I have posted to PCTools forum.
Another problem I've encountered and also could not resolve is that Firewall don't allow to lock workstation. This is not so critical for me, since I don't lock my PC, but this might grow up into a great impediment for the team.
I have anyway registered my copy of PCTools firewall. I hope those guys won't left my suggestions without answer.

Although firewall doesn't make much distortion to booting process some of booting process are slowdowned. And I have measurements for Microsoft BootVis. After installing Office, Firewall, NetBeans and Visual Studio loading windows services take twice longer time then before.
$Sic transit gloria mundi!

Sunday 16 September 2007

Requirements metrics

This week the hotest question among Agile Group Ukraine) was discussion about approaches how to measure requirement completeness and feature readyness for shipping. There were basicly 2 basic opinions: Are there any defined approaches to detect if you have ready feature or not.
Strange why people things that business value can be measured before you have money flow?
My conlcusion is that there are tracking methodologies to measure development tasks and there are tracking for business tasks also. But there is no methodologies how to correspond business and development tasks ...

Monday 10 September 2007

Web application vs. desktop


    Nowadays I can see so many developers leaning to the web development as to something very promising. Being involved in process of development that represented to the end-user as desktop application, once I was quite excited with debates about what kind of application is the best.


    Whenever somebody asks me what kind of application I like to develop, web or desktop, I reply that my style is console application. In fact, lack of moderation became a curse of the modern society. And IT branch is not an exception: Each 2-3 years interface outlook is entirely changing: the most prominent software manifacturer are trying to make people require more and more flashy widgets for the user interface. But I do believe that the basics of all successful systems will be functionality determined by command line. Everything is going to be automated and command line is essential part of this. Look for instance on Perforce - versioning control system that we use. Indeed, P4 has provided very convenient command line that covers all needs of the software developer. Their clients (which are actually 2 desktop and 1 web interface client are secondary.


    Look at the google: simple interface for basic needs, - that's a formula of success. Gmail is preferrable mailer, google.com is the best search machine. You can be novice or master and use this interface in the same way. Oh, how user friendly it is indeed!

Sunday 9 September 2007

Message to IT Gurus

Dear IT Gurus!

I always used your publication to support my thoughts expressed on different meetings, jobs, simposiums and discussions. Whenever I represent community, but not act as a single man, I become more persuasive. I always suffered from the fact, that I can't thank you for that. And since today I have a new hope that situation is going to be changed. On this blogspot I will share my thoughts in software development, architecture, management and philosophy and I hope one day my marginal contribution to world IT communuty will be positive.
I don't fear that I'll have lack of material: my cup runneth over with my own thought, that can supply even more than this blog :)

One day you will know me, why not today?