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
- 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.
Version 1.4d: You can get it at http://www.palmgear.com/,
and http://www.palmtracker.com/ , or download it
from here.
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@home: http://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.
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.
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).
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.
- 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.
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 Started
- 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
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 Task
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
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
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.
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
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
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
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
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
|