Project Punch

Copyright 2000, 2001
Joe Oguri

oguri_joe@bigfoot.com

http://geocities.datacellar.net/projpunch

Version 1.4d

PrPuLogo.bmp (10142 bytes)
Updated 8/28/01

 

 

NOTE: If you came to this web link looking for a program called PalmGen, look HERE. This is a developers tool used to create GNUC code for the Palm Pilot. ALSO NOTE: The new Version 2.0 GUI Java version of this NOW AVAILABLE.

What is Project Punch:

Combination Punch Clock and Personal Project Manager.

Project Punch is an project management program for the Palm handheld computer. It is a personal project manager with an integrated task punch clock. The main idea of this application it to answer 2 questions for people who are responsible for project tasks: (1) Am I on schedule?, and (2) Did I guess my effort for each task correctly? It can also be used as a punch clock (time card) application.

Update: May 11, 2004

Version 1.4d is the last version. I don't plan to update the version any more. I get the feeling that the Palm OS days are numbered... just a guess. Anyway, I have forgot most of the programming skills that I learned to make this tool, so I don't think I will be updating it any time soon. Unless I get loads of free time to work on significant new features, I dont think I will get back to it. If I do, I will spend time porting it to Java. It will remain free. Unless I loose my job and need to feed my family!

Thanks for the Emails. I hope you have found it useful.

Joe

Feature Summary:

  • Punch Clock
  • Personal Project Manager
  • Keyboard Friendly

Version 1.4d Update Summary:

  • Vacation Lists: See Instructions below.
  • Gantt Chart Enhancements:
    • Select Time Range (Start and End Dates)
    • Displays Year
  • View Options: This screen got a makeover, and some added functions.
  • Option/Bug Fix: When changing the End Date of a task, in version 1.3, the duration would change, not the start date. This is now an option under View Options.
  • Option: Can hide index numbers.
  • Fixed 1.4 bugs. Quickly after releasing 1.4, I got word that there were some "Fatal Crash" problems. After severlay tries, I tracked it down, and plugged the holes. My thanks to Alessandro Zummo for his helpping me find and fix the problems.

German Version will be available later: Many thanks to Tom Droste for his time converting the text for Version 1.3. I need to merge what I have, and ask Tom if he's up for another round!

Also, someone has offered to create a Spanish version as well. I need to find the mail message of that person, and politely ask if they too are still interested.

Still NOT WORKING:

  • Notes for Project
  • Project File Rename
  • Task Linking: This is next on my list... Version 1.5, or something like that. If I need to change the database format, it will be Version 2.0. If this is the case, there will be a built in conversion tool that will go to the higher version. This will automatically convert your current databases, so you will not be able to go back to any previous (1.x) versions of Project Punch. But who wants to go back? As Pumba once said.. "Leave the past in your behind...". Hakuna Matata.(for those of you without kids, it's from Disney's The Lion King)

Legal Stuff:

USE THIS PROGRAM AT YOUR OWN RISK!

Not responsible for any damage, loss of money, loss of hair, or loss of data this program may cause. Taken as is, No warranty. This program can be used and distributed free for any non-commercial use.

Download:

Version 1.4d: You can get it at http://www.palmgear.com/, and http://www.palmtracker.com/ , or download it from here.

PGHQgetit.jpg (9478 bytes)

NOTE: I've been having bad luck with downloads...Many people have had problems downloading it from this palmgear.. so here are some alternatives. If all else fails, email me oguri_joe@bigfoot.com, and I'll send it back to you.

Version 1.4d:

AT&T@homehttp://members.home.net/joeoguri/PrjPunch14.zip

AngelFire:  PrjPunch14d.zip (http://www.angelfire.com/ma/ojoe), You will need to follow the link to Project Punch Version 1.4d. Angelfire no longer allows you to go to a file link directly from a non-Angelfire page. It's a free web service... fair enough!

GeoCities: PrjPunch14d.zip (http://geocities.datacellar.net/projpunch/PrjPunch14d.zip) I think the same may be true for this one, but you are already here. This is why it may not work from other sites, like PalmGear.


Program Description:

Often times employees are asked to come up with and commit to a schedule for tasks to be done (like coding up an application). These schedules usually come with the assumption that there will be a certain percentage of distractions, for example, more urgent tasks, unforeseen problems, etc. When these distractions exceed the allowed time, it becomes difficult to determine if the original estimates were too low, or if the distractions became significant enough to compromise the schedule. This tool will help determine when this happens, give a warning when a schedule starts to slip, and help determine why.

PrPuTaskEdit.gif (25662 bytes)Project Punch is a complete punch clock application that will track time records for a given task. These tasks can be named and categorized. Time records are tracked when  you punch IN and OUT of each task. The time on each task can be sub-totaled for a given time range and by task category.

Project Punch is also a personal project manager. By defining your work week (number of hours per work day, the days of the week you work), and given a estimate duration and effort factor for each task, it computes end dates for a list of tasks. With the Gantt chart, at a glance you can quickly determine if you are on track or not. The PROGRESS CHART will show percentage of completion, and show if the estimate was too low or high for each task when compared to the actual time spent on the task. It will help distinguish between under estimating how long a task will take (task duration) from under estimating the daily distractions (effort factor). PrPuGant.bmp (25662 bytes)

Project Punch is a keyboard friendly application. Several screens allow keyboard navigation for fast data entry. For example, the Task Edit screen will advance text fields on the TAB key, and will issue an "OK" event with the Enter key. The Project and Punch views use "n" to create a new task record, and "v" to toggle between the 2 views.

 


Limitations:

  • 20 Project File limit. If you work on more than 20 projects at once, you work too hard.
  • Task Duration Limit: 300 days for each task. If each task is longer than this, Project Punch is the wrong tool. Note: The number of days in a project can exceed 300 days. The limit is on the number of days in 1 task.
  • Since start and end dates can only be specified in days, there is no way to start a task after a specified number of hours.
  • Time records that cross over days.. times entries can't be edited in some cases (when the end time is before the start time).
  • No fields in this program will accept a floating point number. All text input numbers are whole numbers (hours, days, etc.). Geeky Programmer's Note: I got a FloatToString(), but not a StringToFloat().
  • If you select a large task duration, and a very small effort factor, the program will APPEAR to hang. It's doing a lot of calculations to figure out where in the future the task will end. You can either wait, or,.. well if your really in a hurry you can hit the reset button, but I would recommend waiting a minute or three.

Instructions:

Installation

  • Unzip the PrjPunch.prc file.
  • Install PrjPunch.prc using the Palm Install program.
  • For the German version, install PrjPunchGerman.prc (available since Version 1.3).

Getting StartedPrPuOpen.bmp (25662 bytes)

  • Creating and Opening a Project

When Project Punch starts up for the first time, the Open Project page will come up with a list of current project files (should be an empty list), and a list of buttons off to the right. By pressing New, you will be prompted for a project file name. Enter any name (up to 32 characters... I think) and press OK. This will bring you to the Project Properties page.

You can return to this page via the menu option "Open Project /O". The way the other buttons work (Open, Delete, Rename, and Props) is a bit different. You need to select the button first, then tap on the file name in the list. I think I may reverse this in a future release. Props will actually Open the project file, and bring you to the Project Properties view described below.

NOTE: Rename is not working yet.

  • Setting Project Properties

PrPuProps.bmp (25662 bytes)The Project Properties page will allow you to define what you mean by a "Work Day", "Work Week", and the default task effort value. The defaults are set for a normal work week (8 hours a day, Monday-Friday). Hit OK when you are done setting up the properties. This will bring you to the Punch Clock view.

The Project Properties fields are described below.

Hours in WorkDay should be set to the number of hours in your average work day. For most people (in the USA) this would be 8 hours. Note that this value is used in the conversion of  the time records to the Days format in other pages. This will show up when you compare the Estimate and Actual task duration. It will also effect the progress shading in the Gantt and Progress charts in the Project View pages.

WorkWeek is used to define your work week. You can specify each day of the week as a Full workday, a Half work day, or a day off (None). Each day is the number of hours you specify in Hour in WorkDay. From this information, Project Punch can determine the number of hours in a work week. By indicating which days of the week you work, and how much each day you work  Project Punch will use this information to calculate Start and End dates when scheduling tasks, and to  calculate the Actual Duration time of a task when formatted in Weeks.

Default Effort is used to set the effort factor field of any new task when you create it. You can always change it back to any value when you edit the task.

Pay Period can be Weekly, Bi-Weekly:1 or Bi-Weekly:2 (depending on which week the pay period begins.. use trial and error to figure out which your company uses), Half Monthly (from 1-15, and 16 to the end of the month), and Monthly.

Start Work Week is used again in the display of time records for a given range. If Pay period is weekly or bi-weekly, this sets when the pay period starts. It is also used as the Weekly mark in the Gantt chart.

Vacation Settings will bring you to the Vacation list page, which is not implemented yet.

Adding A TaskPrPuTaskEdit.bmp (25662 bytes)

The Task Properties page is used when you create a new task, or modify an existing task. The fields and their behavior are described below.

Task: This field is used to set the Task name. It can be up to 300 characters... give or take. Each task is automatically assigned unique ID number.

Scheduled: When a task is scheduled (the default), it will shows up in the Project View, allowing Gantt and Progress Bar views. When this box is unchecked, it is taken off of the Project View list.

Estimate Duration: The total time needed to complete the task (assuming 100% effort). This is equivalent to the Work column in MS Project.Once you select a value for the duration, the End date for the task will be automatically computed (based upon effort factor and Start date). If you set the End date, the Start date will be computed.

Effort Factor: The percentage of effort you predict you will devote to this task over the scheduled time range. If a zero is entered here, the task is considered to be a Milestone, and only the Start Date is can be set. Once you select a value for the effort factor, the End date for the task will be automatically computed (based upon estimate duration and Start date). If you set the End date, the Start date will be computed.

Start/End Date: By choosing to set either the Start or End date, the other will be calculated based upon the estimate duration and effort factor entered above. However, in the View Options screen, if you have the Fixed: field set to "Start Date", when you change the end date, the Task Duration will change. The default is Fixed Task Duration, so changing the end date will change the start date.

Link & Start to End Popup. NOT IMPLEMENTED.

Completed: Check when the task is completed. This will cross out the description text in the Punch and Project views. There is also options to hide these tasks from the Punch View, or both views under "View Options".

Actual Duration: Will display the total time actually logged (from the Punch clock time records) on the task. This value can not be edited, but you can control the format (Hours, Days, Weeks) with the popup.

Time: Will bring you to the Time Card List displaying all of the time records for this task over the currently selected time range.

OK: Will change the record, and return to the previous view.

CANCEL: Will not change the record, and return to the previous view.

Delete: After prompting you to make sure you're sure, this will delete the current task and return to the previous view.

Hardware Scroll Key: You can traverse through the next and previous tasks in the currently selected range and category. By scrolling to the next or previous task, it is the same as hitting OK (it will save any changes you made to it). This is useful for setting up or reviewing the categories for all tasks.

Keyboard Shortcuts: The enter key will activate the OK button function. The TAB key will advance to the next text field.Using the

Punch Clock

PrPuPunch.bmp (25662 bytes)The Punch Clock view is where tasks punched IN and OUT. This page will display the task name, Punch status, and time clocked (actual time spend on the task) for the selected time range. Tasks can be subtotaled by category using the category selection next to the title. When you start to work on a given task, tap on the second column marked "OUT". It will bold the row, and the status will change to "IN". Any previously marked "IN" will toggle back to "OUT".

Note that tasks that have been marked as Competed do not show up on this list if the option to hide the completed tasks is set. If you somehow get the Completed box checked, and the Schedule box unchecked (the will not show up in Punch Clock and Project View screens if that hide option is set) you can get them back by deselecting the hide option in the Options:View Options menu.

Tapping on the task description (Column 1) will bring you to the Task Edit screen for that task. Tapping on the time column (column 3) will bring you to the Time List view, and will list all of the time records for that task in the selected time range.

You can display time totals in one of 4 formats. Hr:Min will display the time in Hours:Minutes. Hr.Dec will display the total time in Hour Decimal format (1 hour and 30 minutes would be displayed as 1.5). Days will display the total in the units of days as defined in Hours per Workday field in the Project Properties page. For example, if you set that to 10 (you work a 10 hour workday), then the total will be the number of hours divided by 10. Weeks will display the number of weeks as defined by the Work Week section in the Project Properties page. Again as an example, if you work 10 hours a day for 4 Full days, the total number of weeks will be the number of hours worked on the task divided by 40 (10 x 4, get it?). If you work 10 hour work days, and work 2 full days and 3 half days (weird, but this is only an example) then the task hours would be divided by (let me see.. 10x2 is 20, plus 3 x (10/2).. that's 15... so divide by...) 35. I think most people could leave these settings alone, and work M-F for 8 hours a day.

There are two "convenience" buttons on the bottom. New will create a new task by brining you to the Task Edit screen. Proj View will toggle between this screen and the Project View screen.

There is a time range select pop up that can select Today, Yesterday, PayPeriod, and Last Pay Period, and All. You can also use Select Range to select a specific time range. This time period will be used to display the actual time for each task shown (logically OR-ed with the category setting), and will be used when you go to the Time List view. It will display only the time records in the selected range.

Keyboard Shortcuts:

  • Toggle View Button (v)
  • Creating a New Task (n)

Project Views

PrPuGant.gif (2038 bytes)The project view is used to view information about the overall project status. For both Gantt and Progress Chart views,  bars represent the tasks. The bar will be clear for estimated time. The portion of the bar that is shaded is the actual time. If the actual time exceeds the estimated time, a black bar will be seen at the end, represent the time (or percentage of time) that the task ran over the estimated time.

The Project View has 4 modes (or views, I just think it's bad English to say Project View has 4 views... not that that's important...). Each view can be selected through the popup trigger at the bottom of the screen, or by typing in the appropriate letter indicated in parenthesis below.

Note that tasks that do not have the Scheduled check box marked do not show up on this list. If you somehow get the Completed box checked, and the Schedule box unchecked (the will not show up in Punch Clock and Project View screens if that hide option is set) you can get them back by deselecting the hide option in the Options:View Options menu.

Gantt Chart View (g): The Gantt chart will display a solid vertical line that represents the current day. It will display dotted lines that represent week boundaries on the day selected in the Project Property view as "Start Work Week". You can control the range of time to view by pressing the button under the Gantt chart that shows the date range. You will be prompted for Start and End dates. If you're a wise guy, and try to select an End date that is before or equal to the Start date, it will give you a range of one day (the start date). The range is persistent, i.e., it will remain set for the project until you select a new range. The year of the start date is displayed in the lower right hand corner of the screen.

The object of the game is to keep all gray and/or black filled blocks to the right of the line. This means you are on or ahead of schedule. Any white to the left means that the given task is behind schedule. As stated above, the black means you mis-guestimated the task duration. But so long as the gray part is in front of the line, you still could be on schedule.

PrPuProgress.bmp (25662 bytes)Progress Chart View (p): This is a quick view to see the percentage of the project you have complete. The bars represent 100% of the task. Gray will show the among of time spent of the task so far. If there is black at the end, that means the estimate duration was missed. How much it was missed (in terms of percentage) can be seen by the length of the black. The checkbox is the "Completed" choice (same as in the Task Edit form). If it is checked, the text will be Striked indicating (on other views) that that task is completed.

Start/End Date View (s): This is really just a text representation of the Gantt chart. It will show the actual Start and End dates for each task. If an item is a Milestone (the estimated duration is zero), then only the Start date is shown.

Estimate/Actual Duration View (e): This is a text representation of the Progress bars, with the estimate and actual duration shown. The units in the table are always in Days.

Toggle View Button (v): This will send you to  the Punch Clock view.

Category Selection: Duh.

New Button (n): This will take you to a Task Properties screen for a new task to create.

Keyboard Shortcuts:

  • Toggle View Button (v)
  • Creating a New Task (n)
  • Gantt Chart View (g)
    • Gantt Forward (f)
    • Gantt Back (b)
  • Progress Chart View (p)
  • Start/End Date View (s)
  • Toggle View Button (v)

Time Card List

PrPuTimeList.bmp (25662 bytes)The time card list view can be accessed through the main menu, or by the Command T Graffiti keystroke. This will list all time entries in the selected time range (selected in the Punch Clock view). The Time List view can also be accessed through the Punch Clock view by tapping the time column of a given task. This will list only the time records for that task in the given time range.

If the Time Record has no title, the Time List screen (titled "Time Records") will list the Task ID and date, the start time, and the total time in Hr:Min format. The format control on the bottom of the screen will only control the Total time format. If the title field of the Time Record has been filled in, the line will display the title text, and the total time in Hr:Min format. The time range selection will set the range of records to view. Tapping on any record in the list will bring you to the Time Card Edit screen for the selected record. This will allow you to edit it, even if it's currently in the "IN" state. This is good for correcting the start time of a task time record, but remember that the end time will automatically change to the current time (since it's in the "IN" state).

Use the task selection popup to choose the list of time records for a specific task, or "All tasks" for a complete list within the selected time range.

OK: This button will bring you back to the previous list screen... either Punch View or Project View.

New: This button will bring you to the Time Card Edit screen if a specific task is selected (generally by tapping the time column in the Punch Clock view). If there is no specific task selected (you are viewing all tasks for a given time range) an error message will come up saying "No Task ID has Been Selected".

Time Card Edit

PrPuTimeEdit.bmp (25662 bytes)This screen is used to create new time records and to edit existing time records. You can enter a "Title" to remind you of any specifics related to the time, and choose a Start Date, and End Date. The time range is set by tapping on the upper time. This will bring you to the system screen for entering a time range. This has the limitation that the end time can not be before the start time. Well, if you work from 10pm to 6am, this is not good. If you use the Punch Clock view to create the time record, it works fine, so long as you don't try to edit the time record. But in it's current state, you can't edit the record unless the start time just happens to be  before the end time.

The task selection will change the task that the time record is associated with. It will initially display the current task name that this time record is applied to. You can change it to any other task.

The Status button does nothing, and does not represent the true IN and OUT status of the record. The total time is always displayed in Hr:Min format. The other buttons are self-explanatory, except the Notes button which is not implemented. That's what the title is for!

Vacation Day List

PrPuVacList.bmp (25662 bytes)This vacation day list can be accessed through the main menu, or by a Command V Graffiti keystroke. It will list any vacation days that have been assigned. The term "Vacation Day" also refers to half days, sick days, holidays, personal holidays, and leave. For anything else, there is an "Other" category. Each of these categories are totaled separately below the list, and the grand total for the given range is displayed in the lower right hand corner of the screen. The view ranges include last year, this year, next year, and All.

To edit any entry, tap on the line of the entry in the table. To create a new entry, tap on the "New" button. To return to the previous screen (Punch Clock or Project View), tap on the "OK" button.

Vacation Edit

PrPuVacEdit.bmp (25662 bytes)This screen is used to create new vacation day records and to edit existing records. You can enter a "Title" to to name or describe the time to be taken. The Start and End days specify the range of the time off. You can specify over non-work days (typically weekends), and these days will not be included in the "Total Days" count. If you specify a range of half days, the total is still in full days. For example, if you specify a range of 6 working days as Half Days, the total will display a total of 3 days. You can also specify the type of time off:

  • Vacation Day
  • Sick Day
  • Half Day
  • Holiday
  • Personal Time (or Personal Holiday)
  • Leave
  • Other (anything I didn't think of that you need to track separately).

Any time specified by a vacation day entry will be scheduled as a non-working day (or half day) when you schedule a task.

NOTE: Version 1.4 will automatically reschedule all tasks. In order for the vacation entries to take effect for an existing task, you will need to re-enter the Task Properties screen, and exit. A quick way to reschedule them all is to list all tasks in the Project View or Punch Clock screens, select the first task, and then use the hardware scroll button to traverse through all of the tasks. This will effectively update them all.

Usage Tips

  • When breaking down a project into tasks, the tasks should be defined in the range of a few days or weeks.
  • Estimate should assume no major interruptions. How long would it take you to finish the task if that is all you had to work on.
  • When estimating a task duration, account for regular breaks (assume coffee breaks, reading Email, and regular interruptions, etc.). This way you don't need to punch IN and OUT for every small interruption. If you work an 8 hour day with a 1 hour lunch, you may want to set your Hours Per Workday to 9, and just punch in and out once each day.
  • Effort factor is your best guess as to either what may fly your way, or perhaps, you know that you will be only working "half" on one task, and "half" on another at the same time (I've never seen this work in real life). Or you can use it as a flexible fudge factor make the dates work out. I usually like 80% myself.

Future Plans

No Promises, But... I hope to eventually put in the following features:

  • Task Linking. This is planned for in an upcoming release.
  • Desktop Application
  • Task Outliner, if it doesn't turn my code into a complete mess.
  • Report Generation
    • Simple PDF reader/writer
    • Status Report Automation
    • Full Blown Conduit
  • Manager's Server: To collect information from several different HotSync conduits. Every time you perform a HotSync, you can have the option to update your information on a central Project Punch server. This is WAY in the future, and only an idea at this point. It's something I would never need, but I want to play around with CORBA, and I'm curious what I can get working. But first, I have to figure out how to write a Java conduit!

Brief History: I started this program because we were being forced to track our time where I once worked, which got me started on the Punch Clock thing. At first, I used another great freeware program called "Punch Clock" by a company (or some teenager in his bedroom... it's hard to tell these days) called "Psync.Inc" . I have not tried it recently, but unlike mine, it now has a desktop application. It's still available at PalmGear. Like every program, it didn't do exactly what I wanted, the way I wanted, so I wrote my own. Then I got the idea of hooking up the schedule stuff.... I've always been bad at schedule estimates, so I wanted a tool to help me figure out how to do it better. Things morph so much as you get into a project, it's hard to figure out why things slip, or get under-estimated by so much.

I hope to add more features and turn it into shareware at some point, and ask for a small fee. But this version, and any 1.x version is freeware, and will never expire (unless you count that year 2032 date limit).  It doesn't nag, or block any features. Version 2.x will have some beefed up features, and I will brace myself to really support it well. But for now, the program is useful for what it does, and seems to be stable. I would like to try my hand at writing a Conduit, and I've been looking at MS Project to see if I can tap into that in some crude way. I also love to write GUI applications in Java, so at some point I would like to write a desktop companion application. But, I don't see that happening soon!

And... just to plug another freeware program ... Progect (Project, spelled with a "G") is an outliner program where you can organize your tasks like MS Project. It's more of a task list than a project planner, but it's a great tool. I was using it to keep track of bug fixes and features for this program. I wish I could easily put this feature in my program, but I'm afraid it would bloat the software (and make a mess of it), since I did not design for this upfront. WARNING: The earlier versions of Progect were very buggy (would crash your Palm), but I am using the latest version, and it seems to be quite stable. I use it as a To-Do list for my work on Project Punch. It's great!

Enjoy. And keep to that schedule!

Please send any comments, suggestions, or bug reports to: oguri_joe@bigfoot.com

 

1