Refresh before you print, otherwise images might not be displayed!

  • May.20.2006 @ 3:30am

    Date: May.20.2006

    Start Time: 3:30am

    End Time: 5:30am

    Elapsed Time: 2:00

    Who Was Present: Andy Kant

    Context: Acceptance testing/bug fixing

    This mainly consisted of figuring our all of the bugs with my previous solutions. This including catching and ignoring exceptions on any TagConduit call since the TagConduit throws an exeception whenever a file has no tags. After a bunch of tries, I was able to get a stable (and from I could tell, no major bugs) which I used to make a new installer. The installer (along with an installer for the .NET Framework 1.1) is available on our website.

      Meeting Minutes
    • Tag v1.0 (~2.5mb) – Windows (local mirror)
    • .NET Framework version 1.1 Installer (~22mb) (local mirror)

  • May.19.2006 @ 7:15pm

    Date: May.19.2006

    Start Time: 7:15pm

    End Time: 1:15am

    Elapsed Time: 6:00

    Who Was Present: Andy Kant

    Context: Debugging Paste with Tags

    Well, I am the one who is ending up fixing this problem even though its not my part of the project. Corey can't seem to figure it out for whatever reason after 2-3 weeks and I doubt that David cares. Since Jon and I have to work on making the demo script for the senior design show, I decided just to split with him and have him work on the demo and I'll work on fixing this bug. The first thing I noticed when starting to debug is that Corey/David were ignoring all exceptions. This explains why they never knew what was happening. If they watched the exceptions (like popping up a message box), they would have noticed that it crashes whenever the TagConduit library was called. After some further debugging within the TagConduit library, I discovered that there was a problem with the working directory for the new process that was being started not being passed to php.exe. This seemed rather peculiar so I looked up the ProcessStartInfo class (used to configure how processes are started) to see what was going on. Looking at the WorkingDirectory property, I noticed that it mentioned that working directories worked differently when UseShellExecute was true than when it was false. Based on the information on the MSDN UseShellExecute page, it can be assumed that shell applications (such as Paste with Tags) are forced to stay in UseShellExecute = true mode. The TagConduit requires this property to be false because that is the only way the output of the application can be redirected and parsed by the library. Based on this information, it is impossible that the "Paste with Tags" functionality ever worked. The only logical explanation for whether it worked before is that the entry happened to already be in the database from previous tests.

    The easiest solution I came across was to just make a standalone console application (C# console application) that calls the TagConduit for the shell. I used this method because that's the reason that the Modification Tool works while "Paste with Tags" does not. By passing the file paths to this standalone application, I can bypass the shell execution issue that I mentioned already. There is a possibility of solving this issue directly in the TagConduit (specifically making their own process instances without doing any output redirection and having UseShellExecute set to true. The standalone console application only handles one pair of source/destination along with the operation at a time and is pretty much just calling the corresponding TagConduit functions while also making sure to handle exceptions. Every TagConduit tag query that doesn’t have a corresponding database entry throws an exception so they must be handled. This application also implements the aforementioned RemoveAllTags issue.

    While fixing this bug, which turned out to be much easier than Corey/David's 2-3 week lack of success suggested, I also added the "Copy of" algorithm to handle filename collisions on file copies. I implemented this because it was only a few lines of code and Corey/David were too lazy to do it (or so it seems). I spent a considerable amount of time on this because I attempted to use some information built into the shell to determine the filenames. Specifically, the file operation can return an array of pointers to the new filenames called hNameMappings. This consists of a list of SHNAMEMAPPING objects. I was never able to get any information from this ability though so I gave up on it and went to a manual algorithm instead. All this does is when a file copy is initiated, all of the destination file paths are checked. For each file path destination, the algorithm checks for the existence of the filename itself first, then if that exists, it checks for Copy of <filename>. If this already exists, it checks for Copy (N) of <filename> where N starts at 2 and keeps incrementing. It takes the first filename that doesn't already exist in the system; pretty simple. I also added clearing of the clipboard after the file operations, this prevents the Explorer crash if you "Paste with Tags" more than once (Corey's idea from earlier).

    Another issue I found is that the Tag context menu conflicts with the Adobe Acrobat context menu. After some searching in the registry, I noticed that Acrobat's context menu shell extension was named ContextMenu.dll, which is the same as ours. I changed the Tag context menu shell extension assembly to TagContextMenu.dll and now there are no conflicts.

    After fixing these bugs I fixed some minor Tag Monitor bugs. It turned out that we weren't handling exceptions for whenever a file had no tags. We also forgot to check if a file exists before deleting its tags. I added a remove all tags call whenever move operations are done to make sure tags don't overlap.

  • May.19.2006 @ 3:00pm

    Date: May.19.2006

    Start Time: 3:00pm

    End Time: 3:30pm

    Elapsed Time: 0:30

    Who Was Present: Andy Kant

    Context: Meeting minutes

    I compiled the minutes for the meetings from this week.

      Meeting Minutes
    • May.15.2006 – Status Update Meeting (no local mirror)
    • May.18.2006 – Team Meeting (no local mirror)

  • May.18.2006 @ 12:15pm

    Date: May.18.2006

    Start Time: 12:15pm

    End Time: 1:45pm

    Elapsed Time: 1:30

    Who Was Present: Andy Kant, Jon Davis, Corey Sullivan   (David Rehfeldt is missing/excused, Corey Sullivan was late)

    Context: Team meeting

    We talked about what we should do for the senior design show. Andy and Jon will be working on making a scripted demo. We will be putting post-it notes on objects in the room. We would also like to have an extra print-out of our poster to help explain our project.

    "Paste With Tags" still does not work. We don't really have any idea of what is wrong with it, just gotta keep debugging.

  • May.16.2006 @ 11:00pm

    Date: May.16.2006

    Start Time: 11:00pm

    End Time: 1:30am

    Elapsed Time: 2:30

    Who Was Present: Andy Kant

    Context: Poster

    I fixed up any potential problems and emailed the poster to Durant. The final PDF can be downloaded here.

    Tag Poster: Absolute Final

  • May.15.2006 @ 6:45pm

    Date: May.15.2006

    Start Time: 6:45pm

    End Time: 8:30pm

    Elapsed Time: 1:45

    Who Was Present: Andy Kant

    Context: Poster

    I made all of the changes mentioned by both Dr. Welch and in Dr. Durant's email. The final PDF can be downloaded here.

    Tag Poster: Final

  • May.15.2006 @ 5:00pm

    Date: May.15.2006

    Start Time: 5:00pm

    End Time: 6:00pm

    Elapsed Time: 1:00

    Who Was Present: Andy Kant, Jon Davis, David Rehfeldt, Corey Sullivan, Dr. Welch

    Context: Weekly status update with Dr. Welch

    Notes about the cycle report...We should write the report to describe our system. People will know by seeing us talk about C#, PHP, and SQLite that we learned it on our own because they aren't part of our program. We followed the list too literally. We need more diagrams, we need more interaction diagrams and flow charts. We didn't talk about ghost file cleanup. We forgot to attach the documentation to the report. We need an assessment of our planning and tracking. We possibly have a business case that isn't economic. Whatever we would do for economic cost would probably be artificial (it might just be us giving our time). Perhaps a donation/shareware model would work. We need to put in something to show that we are aware of economic costs. Cost of laptops, software licenses, office, etc...A realistic hourly number is $50/hr including benefits. We need to be aware of realistic constraints. Perhaps we should talk about trade-offs between SQLite (free but less features) and Access (license).

    Notes on the poster...We should make the fixes. Dr. Welch and Dr. Suri thought that our stylized screen captures got our point across very well.

    Peer evals are due this week. Log books are due sometime this week, we can turn them in whenever, he doesn't care if it includes dates to the end. Final draft of the report is due Monday. Our senior design show should probably have a scripted demonstration. We decide what we want for our senior design show. We should be prepared to answer technical questions but don't need to make that a component of our show as most people will be non-technical. The senior design show is graded in a combination of the poster, how we demonstrate, how we answer questions. Our senior design show grade is up to Dr. Welch.

    Licensing...Our Microsoft license probably says non-commercial. For the ShellLib, we would have to email the original author for permission. It should be fine to release our PHP and TagConduit as open-source on Source-Forge. We would probably have to have a developer's license in order to sell it.

    There will be no Tuesday meeting, but there will be a Thursday meeting.

  • May.14.2006 @ 11:30pm

    Date: May.14.2006

    Start Time: 11:30pm

    End Time: 12:00am

    Elapsed Time: 0:30

    Who Was Present: Andy Kant

    Context: Poster

    I finished making all of the suggested changes to the poster. I also emailed it to Dr. Welch. The only change I could see being made is going through and converting all text to vector shapes to guarantee no font issues.

    Tag Poster: Final Draft

  • May.14.2006 @ 9:30pm

    Date: May.14.2006

    Start Time: 9:30pm

    End Time: 11:30pm

    Elapsed Time: 2:00

    Who Was Present: Andy Kant, Jon Davis

    Context: Testing

    We did some extended testing on the temporary files problem with the monitor. We found that the issue is encountered randomly and only in Release mode. The problem is that when MS Office opens or saves a file it makes temporary files. On these temp files we do a check on the Hidden attribute which works most of the time. Eventually we gave up on finding out what exactly causes this random error and added another check on the regular expression ~.*\.tmp which cleared up our problems.

    Next, we recompiled all of the applications, added the helpfile, and rebuilt the installer. We then ran acceptance tests on a number of computers. What we discovered is that "Paste With Tags" no longer worked in that the files were copied/moved but the tags were no longer copied/moved. After some confusion with other team members, we decided that we are going to fix this bug during our team meeting this week since we need to finish up our cycle report and poster tonight.

  • May.14.2006 @ 7:15pm

    Date: May.14.2006

    Start Time: 7:15pm

    End Time: 8:00pm

    Elapsed Time: 0:45

    Who Was Present: Andy Kant

    Context: Meeting minutes

    I compiled the minutes for the meetings from this week.

      Meeting Minutes
    • May.08.2006 – Status Update Meeting (no local mirror)
    • May.09.2006 – Team Meeting (no local mirror)

  • May.14.2006 @ 5:45pm

    Date: May.14.2006

    Start Time: 5:45pm

    End Time: 7:15pm

    Elapsed Time: 1:30

    Who Was Present: Andy Kant

    Context: Testing

    I fixed the bug that Corey mentioned with the browser which is that it crashes when you open a file that has no program association. I tried causing the bug myself which just causes an exception. This meant that we can simply catch the exception to detect whenever a file doesn't have an association. Based upon this, I figured there was three ways this could be handled.

    • Pop up a message box saying the file has no associations
    • Open the containing folder instead
    • Launch the Windows Open With dialog

    The last option, using the Open With dialog, seemed to be the best solution if it wasn't too difficult. Through a quick Googling I found a couple pages (written by the same author and using the same code, here and here) that described what need to be done. It resulted in very little code actually being added to our program. The Open With dialog worked flawlessly and is now applied in the browser. I also just added "Open With" to the context options for search results since it only took a few more lines of code and could be useful.

    I also tried to figure out the file monitor issue with MS Office files (they get renamed to hidden and oddly named files), but I have been unable to replicate the issue more than once.

  • May.13.2006 @ 8:30pm

    Date: May.13.2006

    Start Time: 8:00pm

    End Time: 11:30pm

    Elapsed Time: 3:30

    Who Was Present: Andy Kant

    Context: Poster

    I worked on finishing the main design of the poster. This combined the original graphic panels with two main points listed as well as a series of features in bullet points. I posted this WIP version on our website for other team members to comment on.

    Tag Poster: Near-Final WIP

  • May.11.2006 @ 12:00pm

    Date: May.11.2006

    Start Time: 12:00pm

    End Time: 12:40pm

    Elapsed Time: 0:40

    Who Was Present: Andy Kant, Jon Davis, David Rehfeldt, Corey Sullivan

    Context: Poster discussion

    We looked at the work-in-progress version of the poster. There should be a header for each panel shortly describing it. Some suggestions for the right panel are to add the textbox cursor (vertical bar, not mouse cursor) in the textbox to indicate that it is an input. Another suggestion is see what the middle panel looks like by having the post-it note in the middle with the files in a circle around it. We should have somewhat of a background, although probably just a header and footer. We should have two blown up lines of text to explain the main details. We should also have some bullet points and small explanations of each panel. Main points: Custom data to your files and finding the files you tagged. We should include the Tag icon somewhere. Another suggestion is to put our names on actual tags in the corner. Another suggestion is put our names as files and add an "SE" tag to it.

    Corey will be spending most of Sunday working on assembling the cycle report.

  • May.10.2006 @ 11:30pm

    Date: May.10.2006

    Start Time: 11:30pm

    End Time: 2:00am

    Elapsed Time: 2:30

    Who Was Present: Andy Kant

    Context: Poster

    More of the same designing graphics. I finished the initial revisions of our main three panels (the main graphics on our poster).

    Tag Poster: Initial Graphic Panels

  • May.10.2006 @ 5:30pm

    Date: May.10.2006

    Start Time: 5:30pm

    End Time: 9:30pm

    Elapsed Time: 4:00

    Who Was Present: Andy Kant

    Context: Poster

    Just worked on the poster designing graphics based on what we went through in our team meeting.

  • May.09.2006 @ 12:00pm

    Date: May.09.2006

    Start Time: 12:00pm

    End Time: 12:40pm

    Elapsed Time: 0:40

    Who Was Present: Andy Kant, Jon Davis, David Rehfeldt, Corey Sullivan

    Context: Team meeting

    We need to finish the cycle report and poster by next Monday. We will be splitting the three major portions of the cycle report (listed on the rubric) for three people and one person working on the poster. Our extreme programming method should be talked about in II.A (Math, Science and Engineering). The economic analysis will be done in I.C (Contextual Understanding).

    • Poster: Andy
    • Report
      • Problem Context (I): David
      • Design of Product (II A-C): Corey
      • Design of Product (II D-F): Jon
      • Implementation (III B): Jon

    We talked about concepts for the poster. We plan on putting bullet points in the open areas but this is our current concept:

    Tag Poster: Concept

  • May.08.2006 @ 5:00pm

    Date: May.08.2006

    Start Time: 5:00pm

    End Time: 5:45pm

    Elapsed Time: 0:45

    Who Was Present: Andy Kant, Jon Davis, David Rehfeldt, Corey Sullivan, Dr. Welch

    Context: Weekly status update with Dr. Welch

    We abandoned "Paste With Tags" in the same directory of the copied file. This is because we are not notified of collisions. We never figured out why Explorer crashed upon double paste. We could possibly check for the existing files but right now we just disabled copies upon rename collision.

    We looked at posters.

  • May.07.2006 @ 3:30pm

    Date: May.07.2006

    Start Time: 3:30pm

    End Time: 4:30pm

    Elapsed Time: 1:00

    Who Was Present: Andy Kant, Jon Davis

    Context: Documentation

    Jon and I worked on finishing the comments within the source code. We added summaries and organized all of the methods in the browser, monitor, and conduit. These summaries provide all of the needed information on function usage as well as they are used in the context-sensitive pop-up menus in the Visual Studio IDE. We also updated the installer to support more than just Windows XP. It now supports all .NET 1.1 supported platforms (found on this page). Something to note is that if the program is reinstalled, the tag database will be overwritten which we would like to avoid. We're not sure our free program we used to make the installer can check for an existing database. We are still waiting on Corey and David to finish their documentation (a help file to integrate into the browser). They also are making a package for Linux and will be testing on *nix and other Windows systems.

  • May.07.2006 @ 12:15am

    Date: May.07.2006

    Start Time: 12:15am

    End Time: 12:50am

    Elapsed Time: 0:35

    Who Was Present: Andy Kant

    Context: Meeting minutes

    I compiled the minutes for the meetings from this week.

      Meeting Minutes
    • May.01.2006 – Status Update Meeting (no local mirror)
    • May.02.2006 – Team Meeting (no local mirror)

  • May.06.2006 @ 8:00pm

    Date: May.06.2006

    Start Time: 8:00pm

    End Time: 11:45pm

    Elapsed Time: 3:45

    Who Was Present: Andy Kant, Jon Davis

    Context: Installation package

    Jon previously noticed an issue in the file monitor in that when a Word document is opened, the tags are moved to a temporary file. After the document is saved, it actually re-generates an entirely new temporary file which is then renamed to the original file name. This results in a ghost file with the path of the original temporary file. A couple solutions we considered were ignoring files with a prefix of ~ and ignoring any files with the Hidden attribute. We decided on the latter since any legitimate file could be prefixed with a ~. A quick Google search turned up an article on MSDN that gave us the exact code we needed to validate a file as hidden. This is only applied to renamed files.

    For the installation package; after some research and looking at my engineering logs, we decided to use Advanced Installer since it does everything we need to do without being too much of a hassle. Configuring consisted of filling in a bunch of fields, adding the files, adding the registry keys, and configuring some options. After configuring the package in Advanced Installer (which was rather easy to do, but took some time), we were able to build the MSI installer. This MSI also includes an uninstaller automatically which is nice (accessed from the Add/Remove dialog). We first tested this by removing all of the old registry keys and associations from Jon's laptop. We then ran the installer and everything ran as it was supposed to, including the file monitor running at startup. Next we tested on my laptop, the programs ran fine but the context menu didn't work on mine. The cause of this is that the context menu system on my Windows installation is messed up beyond repair due to the context menu experiments I ran while trying to figure out how to do context menus. Most of my other context menu items don't work either. Giving up on the context menu portion, we then installed it on my desktop which never contained any Tag files so it is a fresh install. We ran the installer, and everything worked as expected. Finally, we installed the system on Jon's roommate's laptop, which was also a fresh install. On this system, nothing would load. Not the context menu, not the applications, nothing. It threw a weird error but I immediately recognized that it was probably due to the .NET Framework Version 1.1 being installed. After installing .NET, everything worked as expected. We are currently waiting for Corey and David to finish the documentation so that we can integrate it into the browser.

  • May.02.2006 @ 12:00pm

    Date: May.02.2006

    Start Time: 12:00pm

    End Time: 12:50pm

    Elapsed Time: 0:50

    Who Was Present: Andy Kant, Jon Davis, David Rehfeldt, Corey Sullivan

    Context: Team meeting

    We are splitting up installation into documentation and installer groups. Jon and Andy will be working on the installation package while David and Corey will work on documentation. We will all work on the testing.

    We tried getting the application to run on the team PC but weren't successful. We think this was because Corey entered the registry keys manually instead of running the .reg files he made previously. A possible solution for our problem with Paste With Tags twice in a row is to deny the operation upon name collision.

  • May.01.2006 @ 5:00pm

    Date: May.01.2006

    Start Time: 5:00pm

    End Time: 5:25pm

    Elapsed Time: 0:25

    Who Was Present: Andy Kant, David Rehfeldt, Corey Sullivan, Dr. Welch   (Jon Davis is excused)

    Context: Weekly status update with Dr. Welch

    Dr. Welch's main question is that we never mentioned whether or not acceptance tests passed. We passed all tests after fixing some failed tests (command line: copy file, GUI: move file, rename file). This week we need to make our installation package and re-test on a non-development computer. We should change our testing tasks to "Pass Acceptance Tests." We have encountered a context menu error when someone does paste with tags twice on the same clipboard, it will crash under this situation. Dr. Welch says that we should document this error. Dr. Welch suggests we do some debugging on the parameters. There is a flag that we can disable the operation upon name collision. We don't need a cycle report for this cycle.

    The last report we have left is the full design report, the draft is due Monday of week 10, with the final due Monday of exam week. Look at Dr. Durant's page as a guideline, but not all inclusive. For assessment purposes, random final papers are selected and reviewed for ABET to validate that we are achieving our outcomes. Also see the final report rubric. Learning PHP and SQLite demonstrate independent learning. An economic analysis should be done. The rubric is just about how they're looking and what kinds of evidence.

    Next week we will look at the posters. The poster is due Monday of week 10.

  • Apr.30.2006 @ 9:00pm

    Date: Apr.30.2006

    Start Time: 9:00pm

    End Time: 1:30am

    Elapsed Time: 4:30

    Who Was Present: Andy Kant, Jon Davis

    Context: Acceptance testing

    For this phase, Jon and my task was to do acceptance testing on all of the GUI's to make sure they match our previously written acceptance tests. We started by making some fixes we knew were broken, which were the integration portions with Corey's newly written registry handler for grabbing the install path. This worked flawlessly as we could see the Modification tool now worked properly and we could also launch the Modification tool from the Browser. We had 17 GUI tests to go through. The 5th test (1.5) failed, as it was for "Remove All Tags" functionality via the context menu, a button for which wasn't present. It turned out that we didn't update the source from CVS properly and after doing this, this functionality worked properly. Other than that, the only tests that failed were file move and rename (and therefore also delete, test cases 1.6 and 1.7) no longer worked for the file monitor. After loading up the debug version of the monitor we found that any time a change was made to the database, a file was created by SQLite, and then was promptly deleted. This operation by SQLite gets detected by the file monitor as a move operation by the monitor and throws it into an infinite loop of SQLite temporary files. This is a problem we encountered before but thought that we resolved. We tried researching the problem but then turned to analyzing the logs instead. After a while we realized that these SQLite file move operations were actually just the creating and deleting of a temporary file with the same path. Using this knowledge we discovered that it goes into an infinite loop due to whenever a SQLite operation occurs, it causes a move operation which launches another SQLite operation, which continues forever. We added a check to make sure the creation and deletion paths for the move operation were not the same and everything worked fine on that front. The next problem we encountered with these operations was that the case of file paths on Windows systems was still inconsistent even though we thought we fixed it previously. After trying to find some other solutions and trying some other solutions on the official documentation page for realpath (PHP), we were still getting inconsistent results. We gave up and decided to force lower-case letters on all Windows systems (we can detect Windows using some PHP code). After fixing the inconsistent paths problem, we stumbled across another problem on accident. We discovered that when a tag was removed from a file, if the tag no longer applies to any other files it still exists in the database. This wasn't really a quick fix, but we altered the RemoveTags and RemoveAllTags functions in storage.php to run a check on orphaned tags following their removal from a file. There was some minor syntax errors on the first try but they were easily fixed. Following all these fixes, we ran our acceptance tests again and everything passed.

    After all of our acceptance tests passed, we proceeded to make some minor style/GUI related changes to the Modification tool to make sure it looked consistent with the styling of the other applications.

  • Apr.30.2006 @ 5:00pm

    Date: Apr.30.2006

    Start Time: 5:00pm

    End Time: 5:30pm

    Elapsed Time: 0:30

    Who Was Present: Andy Kant

    Context: Meeting minutes

    I compiled the minutes for the meetings from this week.

      Meeting Minutes
    • Apr.24.2006 – Status Update Meeting (no local mirror)
    • Apr.25.2006 – Team Meeting (no local mirror)

  • Apr.30.2006 @ 2:30pm

    Date: Apr.30.2006

    Start Time: 2:30pm

    End Time: 5:00pm

    Elapsed Time: 2:30

    Who Was Present: Andy Kant, Jon Davis

    Context: General testing

    This session was focused on general testing as we hadn't finished testing with the monitor and also hadn't properly linked the Modification tool to the browser. We encountered lots of problems during this phase, mostly related to the integration of tools. We couldn't get the Modification tool to launch properly, and then later we weren't able to get it to save. We had no idea why this was so we asked Corey and he didn't know, so Jon, Corey, and I tried researching to figure out why this was. We didn't really have much idea between the three of us. We tested working directories in our compiles, we tried editing the Tag Conduit as it did not encapsulate file paths in quotes, but we couldn't get anything working. Eventually, Corey figured out that all programs launching set their working directory to the home directory (c:\documents and settings\<user>) by default and he looked at TortoiseCVS's code to see they loaded the install path from a registry key. Corey made a series of registry keys both to register the context menu as well as the install path which he sent us and we were then able to get everything to work. This will also help us for making sure we know which keys need to be added for our packaging stage. For the most part, this session consisted of debugging our integration problems. Once Corey figured it out, Jon and I took a break from testing since we needed Corey's implementation of the registry handler for the install path.

  • Apr.24.2006 @ 5:00pm

    Date: Apr.24.2006

    Start Time: 5:00pm

    End Time: 5:30pm

    Elapsed Time: 0:30

    Who Was Present: Andy Kant, Jon Davis, David Rehfeldt, Corey Sullivan, Dr. Welch

    Context: Weekly status update with Dr. Welch

    No real questions on the cycle report, the only real note is that time logs for Andy and Jon were swapped. We encountered some bugs via the File Monitor as to the case sensitivity of paths on Windows systems. We also added ghost file cleanup to the Browser.

    For the presentations, we were one of the most disagreed upon groups. Three put us strong and above average while one put us heavily below average. Group balance, background and context were rated low. The font was too small. Good illustrations and screenshots. [Really] Nice point about Google. Questioning the mentioning David's attendance problems (or specifically in that form). We don't have any performance data of using our system as far as tagged versus untagged (don't know if this is possible). Lack of balance. As a group grade, that puts us around an AB.

    We still need to come together and integrate everything all together, which shouldn't be much work. For the most part, all functionality is finished. We also talked about working on packaging. We are in pretty good condition overall. For the senior design show, we could put tags on actual objects to help explain our project (door, window, etc...).

  • Apr.23.2006 @ 7:00pm

    Date: Apr.23.2006

    Start Time: 7:00pm

    End Time: 11:00pm

    Elapsed Time: 4:00

    Who Was Present: Andy Kant, Jon Davis

    Context: Tag Monitor testing/integration

    This took much longer than it should of. We needed to integrate the Tag Conduit into the Tag Monitor now that we actually have the Conduit and all we got was problems. We tested each of the components used to try to trace the source of the errors (Tag Monitor, Tag Conduit, PHP backend) but we weren't really coming up with anything. Eventually while dumping the Conduit results of a list tags function on a specific file that we knew had tags, we noticed that it threw an error that the file didn't exist in the database. We looked into the PHP source and realized that the SQL queries are case sensitive and Windows is a case insensitive file system. If the user was to use the GUI system for managing all of their tags, this problem would never be encountered. However, since the installation procedure for the modification tool hasn't been made yet, we've been managing all of the tags via the command line. This has given us inconsistencies in the case of pathnames where some characters may be capitalized while others may not. The PHP has to stay case sensitive since that portion is 100% multi-platform. We discussed possible solutions, one being normalizing the filenames on the C# side which wouldn't work when people use the command line within Windows. Another solution was to pass a boolean to the PHP for case insensitive mode which was the best we came up with by that point. We decided to talk to Corey to see what he though and after explaining the situation he came up with the idea of just setting an environment variable which would probably be better than sending a boolean with each request. Taking this idea, I researched a bit and found that there was a PHP function that will convert both absolute and relative paths into their proper case, realpath(string path). Using this function we were able to add the ability to extract proper case paths regardless of file system and without setting an environment variable. There was still an inconsistency with this in that the drive/partition case wasn't forced, so we decided to force this to a capital letter in the situation that the path starts with [a-z]:\. There was still yet another problem which took a while to figure out which was a logic error in the parse_file method of our PHP. It was looking for slashes to determine whether an absolute or relative path was passed and did an improper comparison (===false instead of ==false). We changed the logic and everything worked properly.

    After fixing all of these errors, preliminary tests for file deletes, renames, and moves have been successful but we want to do a bit more extensive testing this week.

  • Apr.23.2006 @ 6:30pm

    Date: Apr.23.2006

    Start Time: 6:30pm

    End Time: 7:00pm

    Elapsed Time: 0:30

    Who Was Present: Andy Kant, Jon Davis

    Context: Tag Browser testing

    We executed all of the test cases; they all passed. We updated all of the test documents accordingly. This verifies that pretty much all of the functionality in the browser has been finished. The only feature that still needs to be implemented is the integration of launching the modification tool on a file from within the Tag Browser as well as possibly the icon overlays.

  • Apr.23.2006 @ 3:30pm

    Date: Apr.23.2006

    Start Time: 3:30pm

    End Time: 6:30pm

    Elapsed Time: 3:00

    Who Was Present: Andy Kant, Jon Davis

    Context: Tag Browser development

    For development we had to add a ghost file cleanup utility to the Browser application. This turned out being pretty easy as a ListGhostFiles method was already in the Tag Conduit and the PHP backend. The ListGhostFiles method was a bit broken in that it returned empty lines along with the actual paths, so we filtered those out within the Tag Conduit. The Tag Conduit then passes an ArrayList of strings with all of the paths of ghost files within the database (i.e. orphaned tags). We had a couple ideas for implementing ghost file cleanup. The first idea was to do it the same method as the console version which is to prompt for every file while also giving an option to remove all ghost files. It was decided that this would require too much work on the user's end as they couldn't see which files applied to remove all and it would take too long to iterate through the entire list if it was long. The alternative was to use a GUI with a listbox that listed each of the ghost files and give the user the ability to select which ghost files they wish to remove from a single control while also providing a remove all function. This succeeds in getting around both issues with the other method so this is the method that we ended up going with. Just to make sure the user doesn't accidentally click Remove All instead of Remove, the Remove All button requires a confirmation dialog to be validated. This turned out to be the simplest solution for the user while also being pretty simple on the programming end, probably even more simple than the first method.

    Tag Browser: Ghost File Cleanup

    We also fleshed out the About dialog a bit, mostly as a placeholder as some portions will have to be updated. I designed an icon for the system as well, which will be used in any of the Windows applications that have a use for an icon. There were also a couple bug fixes that needed to be made, primarily that the selected items in the filters list turned to the wrong background color after they had be become unselected.

    Tag Browser: About

  • Apr.13.2006 @ 6:20pm

    Date: Apr.13.2006

    Start Time: 6:20pm

    End Time: 6:50pm

    Elapsed Time: 0:30

    Who Was Present: Andy Kant

    Context: Cycle report

    I updated and organized my engineering log in order to package it to submit to Dr. Welch as it is the end of the cycle.

  • Apr.13.2006 @ 6:00pm

    Date: Apr.13.2006

    Start Time: 6:00pm

    End Time: 6:20pm

    Elapsed Time: 0:20

    Who Was Present: Andy Kant

    Context: Meeting minutes

    I compiled the minutes for the meetings from this week.

      Meeting Minutes
    • Apr.10.2006 – Status Update Meeting (no local mirror)

  • Apr.13.2006 @ 4:30pm

    Date: Apr.13.2006

    Start Time: 4:30pm

    End Time: 6:00pm

    Elapsed Time: 1:30

    Who Was Present: Andy Kant

    Context: Cycle report

    Corey asked me to make some diagrams for the search algorithm since Dr. Welch asked us to make one in his response to our first draft of the cycle report.

    Search Algorithm: Overview
    Search Algorithm: PHP Backend

  • Apr.13.2006 @ 12:00pm

    Date: Apr.13.2006

    Start Time: 12:00pm

    End Time: 1:45pm

    Elapsed Time: 1:45

    Who Was Present: Andy Kant

    Context: Presentations

    The first group was TELS. They made good progress and should be on track to finish. It seems as though every page requires a 60+ KB download. This seems rather excessive for a PDA website; my guess is that they are using tables to display everything. It would probably be better to design with CSS which would probably cut down the total size to around 20KB or lower.

    The second group was House Controller. I thought this was a very cool and useful project. It was neat to see them be able to turn on a standard lamp on and off via a web browser.

    The third group was KMS. This looks like a pretty reasonable replacement for a normal version control system. It looks like it would be most useful for office situations with lots of shared documents that need to be version controlled. The ability to browse by categories and such is a very useful feature that isn't found in common version control systems.

    The fourth group was NAE-50 which is a project to control N2 devices sponsored by JCI. This project is basically porting a subset of JCI's current system from Windows/.NET to Linux/Mono. To me this project isn't all that interesting so that is all I have to say about that.

    The fifth group was GPSCar. It looks like they made loads of progress and will be on track to finish. It would be neat to see a live demo of giving the car GPS coordinates to drive to. The kill switch was a great feature. I'm wondering why they are using FTP for communication if it is so inefficient though. Perhaps a custom protocol? Maybe they just don't have time for it.

    The sixth and final group was Man at Work. They seemed to make some decent progress but I don't think they will finish on time since they didn't receive the actual PDA's that they are running on until last week. I'd be extremely surprised if they finished on time.

  • Apr.10.2006 @ 11:00pm

    Date: Apr.10.2006

    Start Time: 11:00pm

    End Time: 2:00am

    Elapsed Time: 3:00

    Who Was Present: Andy Kant

    Context: Cycle report

    I wrote sections for the cycle report including the Tag Browser section as well as PHP changes/fixes made by Jon and I. I also made included a screenshot of the Tag Browser in the report.

      Cycle 3 Report Sections
    • Tag Browser (local mirror)
    • PHP Changes (Andy/Jon) (local mirror)
    Tag Browser Screenshot

  • Apr.10.2006 @ 5:05pm

    Date: Apr.10.2006

    Start Time: 5:05pm

    End Time: 5:30pm

    Elapsed Time: 0:25

    Who Was Present: Andy Kant, Jon Davis, David Rehfeldt, Dr. Welch   (Corey Sullivan is excused)

    Context: Weekly status update with Dr. Welch

    We haven't had time to work on the cycle report yet. We need to integrate the Windows applications together. We will be working on the documentation of all of the components. We should probably still test large files with the file monitor. We will probably adding the ghost file cleanup to the GUI. We demonstrated the browsing tool. Our presentation is reasonably strong but it is too early to tell. We had issues with eye contact and nervousness.

  • Apr.09.2006 @ 3:00pm

    Date: Apr.09.2006

    Start Time: 3:00pm

    End Time: 12:30am

    Elapsed Time: 8:00 (90 minutes interruption due to food/TV)

    Who Was Present: Andy Kant, Jon Davis

    Context: Browsing tool development

    Jon and I basically finished pretty much everything. The only stuff we have left is further integration as well as possibly a ghost file cleanup tool. We had some issues with the search logic for the PHP. It was rather bizarre and at first we didn't think it was doing what it was meant to since the comments didn't really say why. We basically had to re-engineer it (didn't change the code though) to figure it out. We rewrote the entire function from scratch discovering that the reason it was written the way it was because of SQLite's lack of nested queries. We also had some issues understanding how the parse_tags function worked in the PHP. The only thing we ended up changing was the format of the information that was returned. Other than that, most of the time was spent doing a bunch of smaller UI things like adding sorting to the listviews, making selected filters act as required tags in the search, etc... We had to do a bit of research for the context menu in the results view. The site I came across that we used as a reference was this newsgroup thread. We don't have the Explorer functionality right now; I don't know if we'll have the time to put it in. We also made the search functionality run in its own thread. This allows us to cancel the search as well as not lag up the application (not as though it matters, everything is disabled except for the cancel button). Neither of us has written a multi-threaded application in C# so we had to do some research. This Worker Threads tutorial helped us understand how to start a thread for a function and we learned how to kill threads from this generic overview. Here is the C# code for multi-threading functions (mainly for reference). // Start thread.
    Thread newThread = new Thread(new ThreadStart(this.FunctionName));
    newThread.Start();

    // Kill thread.
    newThread.Abort();
    newThread.Join(); // Blocks until the thread is dead.

  • Apr.09.2006 @ 2:30pm

    Date: Apr.09.2006

    Start Time: 2:30pm

    End Time: 2:45pm

    Elapsed Time: 0:15

    Who Was Present: Andy Kant

    Context: Meeting minutes

    I compiled the minutes for the meetings from this week.

      Meeting Minutes
    • Apr.03.2006 – Status Update Meeting (local mirror)

  • Apr.07.2006 @ 9:30pm

    Date: Apr.07.2006

    Start Time: 9:30pm

    End Time: 10:30pm

    Elapsed Time: 1:00

    Who Was Present: Andy Kant, Jon Davis

    Context: Browsing tool tests

    Jon and I wrote all of the test cases. They ended up primarily just being integration tests since we can't really do any unit tests on this particular application. The test cases are posted in CVS.

  • Apr.06.2006 @ 12:00pm

    Date: Apr.06.2006

    Start Time: 12:00pm

    End Time: 1:15pm

    Elapsed Time: 1:15

    Who Was Present: Andy Kant, Corey Sullivan, Jon Davis, David Rehfeldt, Dr. Durant, Dr. Welch, Dr. Suri, Dr. Barnicki, other teams

    Context: Presentations

    The first group was WASTE, I missed this presentation due to being late.

    The second group was S Link. This seemed like an extremely cool project. Granted, I wouldn't find it very useful because I really only listen to MP3's unless I'm in my car. However, they did some pretty cool stuff to control a Sony CD changer from a computer which would be very useful for anyone that had a Sony CD changer.

    The third group was Line Splosion. Their progress was fun to see, although the game didn't look like all that much fun. It's disappointing that they don't have the time to implement the pneumatics on the chair but I didn't really expect them to in the first place due to time constraints.

    The fourth group was Vehicle Speed. Their project doesn't seem like it is going to amount to much due to the amount of time spent on getting the embedded system working correctly which is unfortunate.

    The fifth group was Snowstorm. Their project was alot easier to understand this time, looks like the project could be fun to play with once its done but it would've been nice to see a demo. The powerpoint animations worked pretty well as a demo replacement though.

  • Apr.04.2006 @ 12:00pm

    Date: Apr.04.2006

    Start Time: 12:00pm

    End Time: 12:30pm

    Elapsed Time: 0:30

    Who Was Present: Andy Kant, Corey Sullivan, Jon Davis, David Rehfeldt, Dr. Durant, Dr. Welch, Dr. Suri, Dr. Barnicki, other teams

    Context: Presentations

    We gave our presentation first. I think it went very well even though we weren't able to demo anything. We only got one question which was easily answered.

    The other group that went today was Business Accounting Package. I have to say, I'm still curious as to the point of this project. It is basically just an extremely simple accounting program. They say that its meant as a free alternative to Great Plains which is an extremely expensive program. They also want it to be multi-platform so it is written in Java. First of all, there's already tons of these types of applications, and I'm sure that there is also plenty that have their functionality. For that matter, if they would've taken then web application route instead of the server/client model; it would be even more multi-platform, still multi-user, and would be much cheaper to produce. They don't gain anything by making it a desktop client due to the simplicity (and/or lack of features) of their application. It seems like the majority of their development time has been spent on building the server/client model and CommandFactory whether than adding any significant features. In its current state it isn't anything more than a SQL table viewer which makes it seem that they have wasted the last trimester and a half.

  • Apr.03.2006 @ 5:50pm

    Date: Apr.03.2006

    Start Time: 5:50pm

    End Time: 6:50pm

    Elapsed Time: 1:00

    Who Was Present: Andy Kant, Jon Davis, Corey Sullivan, David Rehfeldt

    Context: Presentation

    We talked about the modification tool UI a bit in regard to add/edit/update/remove functionality. We also discussed the presentation as far as merging our individual slides. We edited text on all of the slides. We practiced the presentation.

  • Apr.03.2006 @ 5:10pm

    Date: Apr.03.2006

    Start Time: 5:10pm

    End Time: 5:40pm

    Elapsed Time: 0:30

    Who Was Present: Andy Kant, Jon Davis, Corey Sullivan, David Rehfeldt, Dr. Welch

    Context: Weekly status update with Dr. Welch

    The majority of our tasks this week aren't marked complete because they are multi-week tasks. We talked about the ghost file cleanup and possibly moving it to the C# rather than have it reside in the PHP because there are prompts. Using C#, this interaction can be made much easier for the user. We could possibly either iterate through each ghost from the PHP, or implement a return all ghosts command that can be iterated through on client side. We could also add a "Yes to All" command for cleaning up ghosts. We haven't touched overlay icons yet. We will be finishing development this week and then will be executing tests next week. Corey and David have found some bugs in the backend. Possible issues are that our integration won't work. We demonstrated both the modification and browsing tools.

  • Apr.02.2006 @ 10:30pm

    Date: Apr.02.2006

    Start Time: 10:30pm

    End Time: 11:30pm

    Elapsed Time: 1:00

    Who Was Present: Andy Kant

    Context: Presentation slides

    I worked on making slides for the presentation. The overview slide was taken from the last presentation since I think it can be reused. Here is the PowerPoint I prepared for the presentation:

      PowerPoint
    • Presentation Parts

  • Apr.02.2006 @ 10:00pm

    Date: Apr.02.2006

    Start Time: 10:00pm

    End Time: 10:30pm

    Elapsed Time: 0:30

    Who Was Present: Andy Kant

    Context: Meeting minutes

    I compiled the minutes for the meetings from this week.

      Meeting Minutes
    • Mar.27.2006 – Status Update Meeting (local mirror)
    • Mar.28.2006 – Team Meeting (local mirror)

  • Apr.02.2006 @ 6:30pm

    Date: Apr.02.2006

    Start Time: 6:30pm

    End Time: 10:00pm

    Elapsed Time: 3:30

    Who Was Present: Andy Kant, Jon Davis

    Context: Browsing tool development

    The majority of our work this week was over the appearance of the GUI. We used the original browsing tool prototype as an example of what we might want in the actual browsing tool. We decided that the GUI was way too busy, so we cleaned it up and added the ability to collapse the Filters panel. We finished all of the major GUI elements, including styling, animations, window resizing, as well as an animation for when the application is actually searching. We decided not to write test cases this week because we didn't really know what was testable. It seems that we can't really do unit tests, so we will work on writing integration tests next week. Since we the Tag Conduit isn't done yet, we wrote a placeholder code fragment that gets file information for the path listed in the search bar and displays it in the results. We are very happy with how the GUI turned out; it is clean, attractive, and very usable. We should possibly change the color of the Search button as well as make it wider. Just as a note, if tags are selected in the tags panel, they will be applied as extra search terms.

    Tag Browser GUI

  • Mar.30.2006 @ 2:00pm

    Date: Mar.30.2006

    Start Time: 2:00pm

    End Time: 4:00pm

    Elapsed Time: 2:00

    Who Was Present: Andy Kant, Jon Davis

    Context: Browsing tool development

    We decided that we wanted both Filter and Search panes in the GUI, however, Filters aren't always important so enabled the user to hide the panel if they wish. We also animated this act of hiding the panel so that it is more attractive and noticeable to the user.

  • Mar.28.2006 @ 12:25pm

    Date: Mar.28.2006

    Start Time: 12:30pm

    End Time: 12:50pm

    Elapsed Time: 0:20

    Who Was Present: Andy Kant, Jon Davis, Corey Sullivan, David Rehfeldt

    Context: Team meeting

    Corey/David will be working on the Tag Conduit and Modification Tool. Jon/Andy will be working on the Tag Search (main GUI). We need to allocate around 1-1.5 hours to working on the presentation this week. For the presentation, we could talk about issues (file monitoring, context menu stall, David's attendance, scheduling issues at the beginning of the trimester). Are we going to deliver and is the product we're delivering what we wanted it to be originally. Also talk about the development such as the command line tool. A status update for the project. We also need the rest of the cycle 3 plan and the STRAT form. We've had some setbacks, but we're still on track.

  • Mar.27.2006 @ 5:00pm

    Date: Mar.27.2006

    Start Time: 5:00pm

    End Time: 5:35pm

    Elapsed Time: 0:35

    Who Was Present: Andy Kant, Jon Davis, Corey Sullivan, David Rehfeldt, Dr. Welch

    Context: Weekly status update with Dr. Welch

    Corey/David finished the context menu hooks. Corey demonstrated it for Dr. Welch (although it happened to have crashed Explorer). Overlay icons are now a possible feature. It might be useful to make an icon overlay manager so that the user can set the overlay priority. The file monitor may fail due to the timer but it probably won't be encountered. We should do some tests with multiple gigabyte files. With the context menu, the modification option doesn't show when folders are also selected. We need to consider whether we should include these directories and how we should handle them. We should send the guy an email that wrote the ShellLib to see if we can get permission to release the code as open source.

    We are finishing our Iteration #1. We are going first for presentations so we should work on our presentation this week.

  • Mar.26.2006 @ 8:00pm

    Date: Mar.26.2006

    Start Time: 8:00pm

    End Time: 9:00pm

    Elapsed Time: 1:00

    Who Was Present: Andy Kant

    Context: File monitor test execution

    We created the test cases and then executed them. There wasn't much to it since we can't really do automated tests, we have to test by deleting/renaming/moving files manually and then comparing the results in the debug console to what we expect. The debug console is only enabled when the application is compiled in debug mode.

  • Mar.26.2006 @ 3:45pm

    Date: Mar.26.2006

    Start Time: 3:45pm

    End Time: 7:20pm

    Elapsed Time: 3:35

    Who Was Present: Andy Kant

    Context: File monitor testing

    We added the ability to monitor file move operations. This uses a DataTable that adds each filename, path, and previous event as a row upon each event that happens. If the counter event (Created for Deleted and vice versa) is found on a file with the same filename within a given period of time (5 minutes in this case), the operation is detected as a file move and no tags are deleted. After 5 minutes or the program exiting, whichever comes first, the tags are deleted. I remembered later that we need to add a check to see if the file exists anymore before we run the delete tags operation.

  • Mar.23.2006 @ 5:00pm

    Date: Mar.23.2006

    Start Time: 5:00pm

    End Time: 6:15pm

    Elapsed Time: 1:15

    Who Was Present: Andy Kant

    Context: File monitor testing

    We previously noticed an error in the file monitor in that the main window still showed up even though it was supposed to be hidden. We used one of the methods told to us by our friends in order to get it to hide correctly. There really isn't much to talk about in most of these development phases, not much is talked/thought about that isn't the actual development.

  • Mar.23.2006 @ 2:20pm

    Date: Mar.23.2006

    Start Time: 2:20pm

    End Time: 2:45pm

    Elapsed Time: 0:25

    Who Was Present: Andy Kant

    Context: File monitor code review

    After people came back from getting food we went through the code for the file monitor. No problems were found but we primarily discussed methods of monitoring file move operations. Basically what we came up with was that we should implement a cache system that checks for file moves. Through some testing, we found that file moves on the same partition fire the Deleted event before the Created event, on different partitions it is vice versa.

  • Mar.23.2006 @ 12:30pm

    Date: Mar.23.2006

    Start Time: 12:30pm

    End Time: 2:00pm

    Elapsed Time: 1:30

    Who Was Present: Andy Kant

    Context: Context menu development

    I helped develop the context menu system since Corey and David couldn't figure it out. I was able to get most of the menu functionality working that they were having problems with. Here are some websites that I came across that helped me get it to work.

    • Rating Column (specific comment)
    • Shell Extensions
    • Context Menu Handlers

  • Mar.21.2006 @ 4:00pm

    Date: Mar.21.2006

    Start Time: 4:00pm

    End Time: 4:20pm

    Elapsed Time: 0:20

    Who Was Present: Andy Kant

    Context: Meeting minutes

    I compiled the minutes for the meetings from the "team" meeting today.

      Meeting Minutes
    • Mar.21.2006 – Team Meeting (local mirror)

  • Mar.21.2006 @ 12:15pm

    Date: Mar.21.2006

    Start Time: 12:15pm

    End Time: 12:35pm

    Elapsed Time: 0:20

    Who Was Present: Andy Kant, Jon Davis   (Corey Sullivan and David Rehfeldt are missing)

    Context: Team meeting

    We are supposed to be talking about the problems Corey and David had about the context menu, but they are not here, therefore we can not help them.

    For the file monitor, Andy and Jon will be doing code reviews and testing this week. Corey and David were complaining about deleting tags when a file is moved. There is no possible way for us to detect a normal move, that is the point behind our "Paste with Tags" functionality. We decided that if the user is paranoid about accidentally deleting tags, they should disable the monitor, or perhaps we will add the ability to disable just renames or just deletes. If there is confusion with the "Paste with Tags" logic, we also suggest possibly adding a freeze property to the file database in order to prevent any operations from being run (such as delete) until the file is unfrozen. A suggestion with the "Paste with Tags" functionality is to change the text for the menu item at runtime to "Move with Tags" or "Copy with Tags" depending on the operation. The main problem with the monitor right now is that we are unable to fully hide the dialog window at the current time. We need to test different methods of hiding the dialog.

  • Mar.20.2006 @ 9:20pm

    Date: Mar.20.2006

    Start Time: 9:20pm

    End Time: 9:40pm

    Elapsed Time: 0:20

    Who Was Present: Andy Kant

    Context: Meeting minutes

    I compiled the minutes for the meetings from the status meeting today.

      Meeting Minutes
    • Mar.20.2006 – Status Update Meeting (local mirror)

  • Mar.20.2006 @ 5:05pm

    Date: Mar.20.2006

    Start Time: 5:05pm

    End Time: 5:30pm

    Elapsed Time: 0:25

    Who Was Present: Andy Kant, Jon Davis, Corey Sullivan, David Rehfeldt, Dr. Welch

    Context: Weekly status update with Dr. Welch

    We have been having trouble getting the context menu application to work. The main problem is that we are having problems getting the entries into the actual menu. Dr. Welch asked when most of the work was done, Corey/David said mostly just on Sunday. As of right now, our new plan is to finish up development of the context menu as well as testing. The file monitor is mostly finished, with testing and code review to do this week. Andy is going to help with looking at the context menu tomorrow during our classtime/meeting.

    Jon demonstrated the file monitor application for Dr. Welch. The monitor only monitors renames and deletes while we will be implementing copy/move via the context menu.

    We should start our final presentation/poster earlier. The poster should start around week 9.

  • Mar.19.2006 @ 10:30pm

    Date: Mar.19.2006

    Start Time: 10:30pm

    End Time: 11:30pm

    Elapsed Time: 1:00

    Who Was Present: Andy Kant

    Context: Meeting minutes

    I compiled the minutes for the meetings from this week.

      Meeting Minutes
    • Mar.13.2006 – Status Update Meeting (local mirror)
    • Mar.14.2006 – Team Meeting (local mirror)

  • Mar.19.2006 @ 3:00pm

    Date: Mar.19.2006

    Start Time: 3:00pm

    End Time: 5:00pm

    Elapsed Time: 2:00

    Who Was Present: Andy Kant, Jon Davis

    Context: File monitor development

    Most of this session was spent on trying to get the dialog window to be hidden. We found out from a couple friends some code fragments: METHOD 1
    Form1 form = new Form1();
    form.Hide();
    Application.Run();

    METHOD 2
    // Inside 'Forms' class
    [STAThread]
    static void Main()
    {
       Forms myForm = new Forms();
       if ('ShowAtStart')
       {
           Application.Run(myForm);
       } else {
           Application.Run();
       }
    }

    We were able to remove the application from the alt-tab interface by making it a tool window (just by coincidence, verified by one of our friends). We thought we were able to hide the application fully using an undocumented method but proved not to be true. We need to fix this during the next week. We also added the debug console as well as the ability to enable/disable debug logging. The way we implemented it, it is only displayed and functional when the application is compiled in debug mode. This can be set using the following code: #if DEBUG
    // Insert code here.
    #endif

  • Mar.16.2006 @ 6:00pm

    Date: Mar.16.2006

    Start Time: 6:00pm

    End Time: 9:00pm

    Elapsed Time: 3:00

    Who Was Present: Andy Kant, Jon Davis

    Context: File monitor development

    Jon and I developed the monitoring and logging systems for the file system monitor. We have had relatively no issues since it is mostly reusing code from our original monitor prototype. We have had issues with making the dialog window (used for debugging) hidden by default as it is not as simple as "this.Visible = false;" We have found a couple websites that have given us information but haven't yet gotten this to work.

      References from this session
    • Creating a System Tray Application
    • Making a Startup Windows Form Invisible

  • Mar.14.2006 @ 12:20pm

    Date: Mar.14.2006

    Start Time: 12:20pm

    End Time: 12:55pm

    Elapsed Time: 0:35

    Who Was Present: Andy Kant, Jon Davis, Corey Sullivan, David Rehfeldt

    Context: Team meeting

    We are doing relatively well right now. We will be adding system tray abilities to the file monitor such as launching the main app quickly. Andy/Jon will be working on the file-system monitor while Corey/David will be working on the context menu. Looking at week 3, we have code reviews and testing which will include fixing bugs. As far as our searching app, we want atleast Open/Open Containing folder functionality, but full explorer context if possible. The file monitor will be made as a startup application, not a service. We need to insert some cycle report time in week 5 as well as presentation time. We also updated the strat form.

  • Mar.13.2006 @ 5:00pm

    Date: Mar.13.2006

    Start Time: 5:00pm

    End Time: 5:35pm

    Elapsed Time: 0:35

    Who Was Present: Andy Kant, Jon Davis, Corey Sullivan, David Rehfeldt, Dr. Welch

    Context: Weekly status update with Dr. Welch

    We worked on writing the tests. There was some confusion as well as overplanning. We need to redo some unit tests. We are, however, on track to start development this week. Dr. Welch needs the current state of our cycle 3 plan. We need to look at Dr. Welch's comments on the cycle 2 report. We need binary deliverables, possibly more specific. We don't need a deliverable every week but there should be one every two weeks atleast. We don't need to follow SDL norms, but we may want to break it down more. We don't necessarily need everything on the checklists for reports. We plan on revising the strat form tomorrow. Dr. Welch recommends extending cycle 5 to two weeks. Monday of week 9 the program should work, packaging/installing can sometimes be juggled in cycle 5. We should have the strat form done by Wednesday.

  • Mar.12.2006 @ 11:35pm

    Date: Mar.12.2006

    Start Time: 11:35pm

    End Time: 12:05am

    Elapsed Time: 0:30

    Who Was Present: Andy Kant

    Context: Meeting minutes

    I compiled the minutes for the team meeting from this week.

      Meeting Minutes
    • Mar.07.2006 – Team Meeting (local mirror)

  • Mar.12.2006 @ 10:00pm

    Date: Mar.12.2006

    Start Time: 10:00pm

    End Time: 11:35pm

    Elapsed Time: 1:35

    Who Was Present: Andy Kant, Jon Davis

    Context: File-system monitoring test cases

    Jon and I worked on the test cases for the file monitoring module. This covers the following:

    • Rename
    • Delete
    • Clipboard Copy and Paste
    • Clipboard Move and Paste
    • Drag & Drop Copy
    • Drag & Drop Move

    I don't know how to link directly to CVS, but the test plan resides at doc\Testing\File Monitoring\file_monitoring_test_plan.html while the accompanying test case results files are in the same directory. We did a pretty bad job mainly of overplanning this week. Jon already wrote all the acceptance test cases for everyone because they only took him a little bit of time to do.

  • Mar.07.2006 @ 12:10pm

    Date: Mar.07.2006

    Start Time: 12:10pm

    End Time: 12:40pm

    Elapsed Time: 0:30

    Who Was Present: Andy Kant, Jon Davis, Corey Sullivan, David Rehfeldt

    Context: Team meeting

    First we discussed possible status meeting times. A current possible time is Friday's at 11am, Corey left to ask Dr. Welch. This didn't work so we need to try for Wednesdays at 5pm.

    What we need to do this week... We are switching groups to Corey/David and Andy/Jon since Andy and David know both of the languages we use the best. Andy/Jon are doing file-system monitoring unit test cases. Corey/David are doing context menu unit test cases. We will be having team meetings on our normal Tuesday class time. We will be also meeting during our two hour block on Thursdays, we will decide on a week by week basis though. We will not be doing Saturday meetings this quarter. For acceptance testing, David/Jon will be writing general acceptance tests, while Andy/Corey will write acceptance test for the GUI. Development weeks will be from Wednesday to Tuesday assuming our status meeting will be on Wednesdays.

  • Feb.17.2006 @ 9:30pm

    Date: Feb.17.2006

    Start Time: 9:30pm

    End Time: 10:00pm

    Elapsed Time: 0:30

    Who Was Present: Andy Kant

    Context: Cycle report

    I helped out more with the cycle report by explaining the deliverables for our next cycle. Iteration 1: File Conduit
    Week 1 Deliverable: Test Cases
    Week 2 Deliverable: File Monitoring Service, Paste with Tags ability
    Week 3 Deliverable: Windows Context Menu Integration with Tag Modification ability

    The first iteration of the third cycle consists of three weeks of work on the File Conduit. The first week will primarily be spent on designing test cases and the test plan for the File Conduit. The second week will focus on finishing the file monitoring service which will monitor renamed and deleted files and will update the database accordingly. Also in week 3, the “Paste with Tags” ability will be finished, which will allow files to be copied or moved and will update the database for the new files. For the third week, the tag modification system will be integrated into the Windows Explorer context menu, allowing users to select one or more files and manage the tags that are applied to them.

    Iteration 2: Tag GUI/Tag Conduit
    Week 1 Deliverable: Test Cases
    Week 2 Deliverable: Tag Conduit
    Week 3 Deliverable: Tag GUI

    The second iteration of the third cycle is comprised of three weeks of work on the Tag GUI along with the Tag Conduit. The first week will be spent designing test cases as well as the test plan for these applications. The second week will be used to develop the Tag Conduit which acts as an intermediary between the back end and the front end. The third week will consist of finishing the main Tag GUI application which allows the user to search and browse the tagged files.

  • Feb.17.2006 @ 7:30pm

    Date: Feb.17.2006

    Start Time: 7:30pm

    End Time: 9:30pm

    Elapsed Time: 2:00

    Who Was Present: Andy Kant

    Context: Work on context menu

    I worked on the context menu prototype, I'm starting to make some good progress using the File Rating project I found before. This has provided an example of what I hope will allow me to add all the abilities I need. Unfortunately, I had to stop in order to help with the cycle report so I will continue this during the weekend or during break.

  • Feb.17.2006 @ 7:00pm

    Date: Feb.17.2006

    Start Time: 7:00pm

    End Time: 7:30pm

    Elapsed Time: 0:30

    Who Was Present: Andy Kant

    Context: Meeting minutes

    I compiled the minutes for the status update meeting from this week.

      Meeting Minutes
    • Feb.13.2006 – Status Update Meeting (local mirror)

  • Feb.15.2006 @ 4:30pm

    Date: Feb.15.2006

    Start Time: 4:30pm

    End Time: 5:45pm

    Elapsed Time: 1:15

    Who Was Present: Andy Kant

    Context: Work on context menu prototype

    I'm the only one working today since Corey didn't want to work today anymore because he already has ten hours this week. I believe he will be trying to do the same stuff on his own time, primarily to learn C# better.

    I found a couple sites that have functions for adding context menu items such as at this site. For the time being, I'm going to add the registry information using the function posted on the previous website. While doing my research on the context menu, I stumbled across a page which might help us with integrating the Explorer context menu into our main Tag GUI. I also came across a page that may be useful for C# shell extensions in general, File Rating.

  • Feb.13.2006 @ 4:05pm

    Date: Feb.13.2006

    Start Time: 4:05pm

    End Time: 4:25pm

    Elapsed Time: 0:20

    Who Was Present: Andy Kant, Jon Davis, Corey Sullivan, David Rehfeldt, Dr. Welch

    Context: Weekly status update with Dr. Welch

    We were able to successfully grab files and file operations from the clipboard.

    Command line tool tests...David and Jon ran the tests but two of them failed. They have to fix the bugs before they can retest.

    Finishing the cycle...Make sure the command line tool is done (this is actually a task originally scheduled for next cycle).

    For cycle 3, we need better definition of binary deliverables in our plan. The more effort put into our cycle report submission, the more comments he can give us.

    We demonstrated both the clipboard prototype as well as the current progress on the command line tool. The backend and code behind testing for the command line tool were also shown to Dr. Welch.

  • Feb.12.2006 @ 11:00pm

    Date: Feb.12.2006

    Start Time: 11:00pm

    End Time: 12:45am

    Elapsed Time: 1:45

    Who Was Present: Andy Kant

    Context: Working on use cases/SRS

    I finished updating the use cases to a common template as well as finished the SRS. I don't know how to link to CVS, but the files are in the doc component.

      Documents
    • Software Requirements Specification (SRS) (local mirror)
    • Use Case: Command Line Tool (local mirror)
    • Use Case: File System Changes (local mirror)
    • Use Case: Tag Modification (local mirror)
    • Use Case: Tag Searching (local mirror)

  • Feb.12.2006 @ 7:00pm

    Date: Feb.12.2006

    Start Time: 8:00pm

    End Time: 11:00pm

    Elapsed Time: 3:00

    Who Was Present: Andy Kant

    Context: Working on cycle report and SRS

    I worked on the sections of the cycle report that I was responsible for as well as refined the SRS with the agreed upon changes. I still have to update the SRS with the list of use cases.

      Documents
    • Cycle 2 Report sections (Clipboard prototype, SRS) (local mirror)

  • Feb.12.2006 @ 4:30pm

    Date: Feb.12.2006

    Start Time: 5:45pm

    End Time: 7:00pm

    Elapsed Time: 1:15

    Who Was Present: Andy Kant

    Context: Meeting minutes

    I compiled the minutes for the meetings from this week.

      Meeting Minutes
    • Feb.06.2006 – Status Update Meeting (local mirror)
    • Feb.06.2006 – Team Meeting (local mirror)
    • Feb.11.2006 – Team Meeting (local mirror)

  • Feb.11.2006 @ 3:30pm

    Date: Feb.11.2006

    Start Time: 3:30pm

    End Time: 3:50pm

    Elapsed Time: 0:20

    Who Was Present: Andy Kant, Corey Sullivan

    Context: Work on context menu prototype

    We are researching about how to add items to the context menu in C#. In the research, I found a tutorial that might be useful later, C# does Shell, Part 2 (shell file operations. I also came across some code on adding a context menu item in C#. We are quitting for the day because Corey has previous obligations. Also, we are ahead of time with our prototypes and need to work on the cycle report.

  • Feb.11.2006 @ 2:30pm

    Date: Feb.11.2006

    Start Time: 2:30pm

    End Time: 3:15pm

    Elapsed Time: 0:45

    Who Was Present: Andy Kant, Jon Davis, David Rehfeldt   (Corey Sullivan is excused)

    Context: Team meeting

    First I helped fix David's engineering log display issues.

    We talked to David about his attendance problems. We informed him that it is not only affecting him, but affecting all of us due to our extreme programming model. We need to work in pairs plus it has screwed up the times Corey and Andy have worked because Andy and Jon carpool together. If David's attendance doesn't improve, we need to bring it up with Dr. Welch.

    The cycle report...We should talk about our OS integration work as well as our protoypes and development. ABET requirements need to either have their own section or be mentioned in the report. The SRS and use cases are very important for our report. We should try to get our narratives done tonight because Corey wants to work on combining them tomorrow. Final product documents should be fine for tomorrow. We looked at Dr. Durant's checklist:

    • Reqs/specs - Andy
    • Risks and contigency plans - Jon
    • Project status - David (Corey/Andy?)
    • Justification for continuation... - Jon
    • Revise plans - Corey
    • High level design... - Per group

    Demonstrated a proof-of-concept application for grabbing files that are copied/cut to the clipboard as well as capturing the file operation which will be used for our "Paste with Tags" command since file monitoring on copying/moving is not possible.

    We also went through David and Jon's PHP code (specifically the storage class). There were some possibly logic issues but everything looks very good.

  • Feb.09.2006 @ 2:55pm

    Date: Feb.09.2006

    Start Time: 2:55pm

    End Time: 3:30pm

    Elapsed Time: 0:35

    Who Was Present: Andy Kant, Corey Sullivan

    Context: Work on context menu prototype

    Corey found a page that explains the "Preferred DropEffect" which tells us whether the clipboard operation is a copy or cut operation. This apparently works for both drag & drop as well as keyboard shortcut models. We have found that the first byte in the "Preferred DropEffect" is the only one that is really important in finding the file operation. If it is equal to 2, then it is a move. If it is equal to 5, it is a copy.

    We are quitting now since Jon is my ride and David did not show up to work on their portion.

  • Feb.08.2006 @ 4:05pm

    Date: Feb.08.2006

    Start Time: 4:05pm

    End Time: 5:10pm

    Elapsed Time: 1:05

    Who Was Present: Andy Kant, Corey Sullivan

    Context: Work on context menu prototype

    Priority of prototype features:

    • Definite: Paste w/Tags
    • Possible: Right-click Drag & Drop
    • Possible: Keyboard shortcut (for paste w/tags)

    There are many C# shell programming tutorials on The Code Project. I also found two C# clipboard examples: Clipboard handling with .NET and Clipboard handling with .NET - Part II. I also found a useful tool on the website that tells you which formats are supported by the clipboard data. Using a little information from this site, we were able to extract what we needed to do to retrieve the data from the clipboard as well as verify that it is a file. We were very happy to see that our prototype was successfully able to grab the list of files of the clipboard. Using the formats tool, we will be looking "Shell IDList Array" and "Preferred DropEffect" to see if either of them contains copy/cut information. "Shell IDList Array" is more likely because it also occurs in a drag & drop sequence.

  • Feb.06.2006 @ 5:00pm

    Date: Feb.06.2006

    Start Time: 5:00pm

    End Time: 5:20pm

    Elapsed Time: 0:20

    Who Was Present: Andy Kant, Jon Davis, Corey Sullivan, David Rehfeldt

    Context: Team meeting

    We reviewed David's use case, it looks fine. We reviewed Andy's use case, Corey mentioned to go through it and make sure the wording is consistent.

    For the SRS, the requirements are fine. David says we should add a goal for the command line tool to be file-system and OS independent. For dependencies, we need to add an entry that there is a requirement that the underlying technologies need to be made for the specific OS. The CPU/memory requirements (listed in goals) should also be listed under constraints.

    Wednesday's team meeting will now be forced development time. Corey may not be able to come to the meeting on Saturday.

  • Feb.06.2006 @ 4:00pm

    Date: Feb.06.2006

    Start Time: 4:00pm

    End Time: 4:40pm

    Elapsed Time: 0:40

    Who Was Present: Andy Kant, Jon Davis, Corey Sullivan, David Rehfeldt, Dr. Welch

    Context: Weekly status update with Dr. Welch

    The file copy/move operations cannot be handled. We have resorted to adding a separate "Paste with Tags" command to the context menu. This is definitely a disappointment, but it can't be avoided.

    There is no time logged for actual development time. There were some errors in the time entry table, but the time was also reallocated as Jon and David are now taking over all of the command line tool while Corey and Andy are now working on context menu prototypes. We are planning on finishing the SRS in our team meeting today, which should be able to be dropped into the cycle report. Dr. Welch says our planning has been a bit ragged. Tasks have been underplanned and some people are underperforming compared to others.

    The cycle report should contain all of the information necessary for a completely different team to be able to take over after us. Dr. Durant has a list of things he looks for, Dr. Welch will be using the same checksheet as the first cycle report. Any design work should be summarized, the SRS should be discussed and possibly appended. Source code from prototypes doesn't really need to be included, screenshots of it running and code snippets may be applicable. The creation of test plans is another idea of what to put in. Dr. Welch will grade as a "manager" type (see below). He's not going to read all of the source code. He will read the SRS and will make comments on functional requirements. It will also be compared to the first cycle report. Test plans won't be thoroughly read because there is a certain level of trust extended to the team. It would be best to have a review done ahead of time. A review will catch about 70% of the problems.

      Three purposes of the cycle report
    • Executive has 10 minutes to look over the report (executive summary)
    • Manager who is going to read the main body, have major areas highlighted
    • Developer will look over appendices and technical details

    For engineering logs, Dr. Welch will only grade the dates that are in this cycle. Dr. Welch likes the engineering logs to be in chronological order, but it isn't that important.

    There will be no meeting on the Monday of finals week.

  • Feb.06.2006 @ 3:00pm

    Date: Feb.06.2006

    Start Time: 3:00pm

    End Time: 3:30pm

    Elapsed Time: 0:30

    Who Was Present: Andy Kant

    Context: Tag modification use case

    I worked on creating the tag modification use case. It is written in a Word document for the time being to save time. I will be editing all of the use cases this week and will be converting them to a common HTML format. I also posted the documents temporarily in the web tree so that they can more easily be reviewed. They will be put into CVS at a later date.

      Documentation
    • Tag SRS (1.01) (local mirror)
    • Tag Modification Use Case (local mirror)

  • Feb.05.2006 @ 11:30pm

    Date: Feb.05.2006

    Start Time: 11:30pm

    End Time: 2:15am

    Elapsed Time: 2:45

    Who Was Present: Andy Kant

    Context: SRS document

    I worked on creating a new SRS template since the SDL one is broken and we don't want to require an XSL stylesheet. I also added some information that wasn't filled in before, but there is some sections that might need to be modified or updated in our team meeting on Monday. I'm not going to add it to CVS quite yet because some of it needs to be changed.

  • Feb.05.2006 @ 8:00pm

    Date: Feb.05.2006

    Start Time: 8:00pm

    End Time: 9:15pm

    Elapsed Time: 1:15

    Who Was Present: Andy Kant

    Context: Meeting minutes

    I compiled the minutes for the meetings from this week.

      Meeting Minutes
    • Jan.30.2006 – Status Update Meeting (local mirror)
    • Feb.01.2006 – Team Meeting (local mirror)
    • Feb.04.2006 – Team Meeting (local mirror)

  • Feb.04.2006 @ 2:05pm

    Date: Feb.04.2006

    Start Time: 2:05pm

    End Time: 3:10pm

    Elapsed Time: 1:05

    Who Was Present: Andy Kant, Jon Davis, Corey Sullivan   (David Rehfeldt is missing)

    Context: Team meeting

    Corey says to avoid Word documents as much as possible simply because you can't compare file differences. We looked at Jon's use case, which is good except for some minor typos. We also looked at Corey's, which had some grammar errors. We talked about the SRS and Work Context a little bit. We will finish looking at the use cases and SRS in our Monday meeting. Andy will be making a template for the SRS and will be making a common template for use cases (and converting the use cases to it as well). David and Jon will continue to work on the command line tool. Corey and Andy will now be working on making a prototype for putting items into the context menu (such as a custom copy/cut/paste files operation). Jon and David will also be executing their test cases. We will likely skip the Wednesday meeting.

    We also replanned the next week. Specific tasks were written down by Corey and will be updated in the PT tool by Jon. New entries include the cycle report, the SRS review, and changes to the development tasks for the paired teams.

    Personal note...David has been 40 minutes late for one of the other team meetings this week, he was 40 minutes late for meeting with Jon to work on development yesterday, and he has no showed to this meeting. We've decided that we need to mention it to David in our next meeting.

  • Feb.03.2006 @ 4:50pm

    Date: Feb.03.2006

    Start Time: 4:50pm

    End Time: 5:55pm

    Elapsed Time: 1:05

    Who Was Present: Andy Kant, Corey Sullivan

    Context: Work on file conduit prototype

    I was able to find a C# implementation of CRC32 to test with for hashing. Since there is now a chance that we will have to hash at every file write, we need a fast algorithm. There was also another class that I found which is the one I used because it was easier. It took ~11 seconds to run the CRC32 hash on a 350mb file and the CPU usage of the program averaged between 30-40%. If a last write is called twice, only the first hash even finishes, the second one gets lost. CRC32 is not an option, nor is any hashing upon every file save. We looked for alternatives, but apparently there are none because it simply isn't possible with Windows. Windows only throws certain events. We don't have an efficient way of getting a copied file's source nor any way at all for doing a moved file's source since that would require a persistent hash which requires too much CPU/time to do. Our new solution, unfortunately, doesn't automate on all file operations. We plan on adding a "Paste with tags" item to the context menu since that will force our application to get the new and old file locations. We can still automatically monitor rename and delete.

  • Feb.03.2006 @ 4:00pm

    Date: Feb.03.2006

    Start Time: 4:00pm

    End Time: 4:50pm

    Elapsed Time: 0:50

    Who Was Present: Andy Kant, Corey Sullivan

    Context: Work on database design/coding

    We looked at SQLite's website to determine how to set the database up. There are only four datatypes: int, float, text, and blob. After designing the initial CREATE TABLE queries, we talked with David and Jon and decided that they should work on the database coding since they don't have much work to do with the command line tool. We will be working on the OS integration file conduit prototype.

  • Feb.01.2006 @ 4:00pm

    Date: Feb.01.2006

    Start Time: 4:00pm

    End Time: 5:25pm

    Elapsed Time: 1:25

    Who Was Present: Andy Kant, Jon Davis, Corey Sullivan, David Rehfeldt

    Context: Team meeting for design review

    Backend design review...

      Storage
    • Abstract class
    • No database reference
    • No SQL
    • Review
      • Removed "removeFile" function, ambiguous
      SQLite : Storage
    • Where the actual queries happen
    • Separate derived classes allows for XML, SQL, etc...
    • Review
      • Looks fine
      Command
    • Abstract class
      • Looks fine
      [command_name] : Command
    • Each command has execute and help functions
      • Looks fine

    Personal note for searching...AND = +"search", OR = "search", NOT = -"search"...just an idea. This keeps everything simple in a single line textbox.

    Frontend design review...

      Search GUI
    • David says we should color the search button orange (focuses user more)
    • Review
      • Seems fine for now
      Mange Tags GUI
    • Review
      • Good solution
      File Conduit Prototype
    • Copy and move events aren't very trackable
    • Looked at table of events, Corey and Andy should test this further to see if there's any better methods or whether it can be done

  • Jan.30.2006 @ 4:05pm

    Date: Jan.30.2006

    Start Time: 4:05pm

    End Time: 4:50pm

    Elapsed Time: 0:45

    Who Was Present: Andy Kant, Jon Davis, Corey Sullivan, David Rehfeldt, Dr. Welch

    Context: Weekly status update with Dr. Welch

    We went over the file conduit prototype including ideas for monitoring file copying/moving. There doesn't seem to be a great solution, but MD5 hashes might be the best solution given what information is available to us. Doing realtime MD5 hashes of all tagged files isn't realistic because then we would have to update MD5's every time a tagged file is changed.

    Time logged...Corey and David are short on time. Andy and Jon had unplanned tasks to do so they are not (SRS, PT tool). Design reviews didn't get done because the development of prototypes has affected the design. We cancelled two meetings since they were unnecessary (which is fine, because its not good to have a meeting just to have it).

    Overall status of project, we are in very good position for the command line tool to move ahead, but the front end will be more difficult.

    Showed the command line to GUI integration prototype. The prototype directly captures the output stream of the command line tool. The command line tool can be used just like any other command line tool.

    Security of the command line...Consider the constraints of Windows, PHP, and SQLite. The project is somewhat parasitic on the operating system since it watches file operations which would be considered malware. Security is a constraint that we need to look at. We need to look into the security of the MD5.

    Patents are also a future concern.

    The presentation...There was pretty solid agreement between the faculty that reviewed us. The average for the team was about 6/10's of a deviation above the average. Three said that it was a strong presentation, one said that it was average. Presentation grade is between 91-95. Individual comments...Too much text on the slides, not enough eye contact (make eye contact with the whole room), good overview, wondering why it is only for a single user (as in justification), liked the pros/cons of database backend discussion. Our presentation was one of the top two or three presentations. We should to work on better engaging our audience; take the faculty that do better jobs of this as an example.

  • Jan.29.2006 @ 10:45pm

    Date: Jan.29.2006

    Start Time: 10:45pm

    End Time: 11:55pm

    Elapsed Time: 1:10

    Who Was Present: Andy Kant

    Context: Working on SRS

    I worked on writing the SRS today. I already had most of the requirements written up from earlier, but I also filled in some other sections. We still have missing use cases, a missing use case diagram, and a few other sections I need to fill in yet.

  • Jan.29.2006 @ 10:15pm

    Date: Jan.29.2006

    Start Time: 10:15pm

    End Time: 10:45pm

    Elapsed Time: 0:30

    Who Was Present: Andy Kant

    Context: Meeting minutes

    I compiled the minutes for the meeting from the past two meetings.

      Meeting Minutes
    • Jan.23.2006 – Status Update Meeting (local mirror)
    • Jan.28.2006 – Team Meeting (local mirror)

    I also posted the updated UML on the website as well as the file conduit prototype.

      Design Files
    • Frontend Design UML (local mirror)
    • File Conduit Prototype (no local copy)

  • Jan.29.2006 @ 8:35pm

    Date: Jan.29.2006

    Start Time: 8:35pm

    End Time: 10:15pm

    Elapsed Time: 1:40

    Who Was Present: Andy Kant

    Context: Frontend design

    I decided to change the design of the main GUI somewhat. I combined the two tabbed screens into a single screen. I also drew up the UML for the updated GUI. I noticed that the textbox was missing from the Manage Tags UML so I updated that too.

    Tag Browser GUI Update
    Tag Browser UML
    Mange Tags UML (updated)

  • Jan.28.2006 @ 2:50pm

    Date: Jan.28.2006

    Start Time: 2:50pm

    End Time: 4:10pm

    Elapsed Time: 1:20

    Who Was Present: Andy Kant, Corey Sullivan

    Context: File conduit prototype

    We need to find a way to list all of the physical disks. I found one page that showed how to list all logical disks, but that lists all drives, including CD-ROM's. However, I also found a page that lists drives using the System.Management .NET assembly which successfully gives us a list of hard drives/partitions. We changed the way that the FileSystemWatcher checks CHANGED commands to just FileName and DirectoryName. The times in-between actions aren't really relevant as the size of the file affects it. We ran a bunch of tests to find the action sequences of the different ways to copy/move/rename/delete.

    File Conduit Sequence Tests 1
    File Conduit Sequence Tests 2

  • Jan.28.2006 @ 2:10pm

    Date: Jan.28.2006

    Start Time: 2:10pm

    End Time: 2:50pm

    Elapsed Time: 0:40

    Who Was Present: Andy Kant, Corey Sullivan, Jon Davis, David Rehfeldt (30 min late)

    Context: Team meeting

    Design reviews...make sure all designs are up on the website, do individual reviews for Monday which we will talk about in the meeting. Corey and Andy got their prototype working but need to work on getting a list of hard drives to scan. There seems to be no performance hit by monitoring as long as it isn't printed to the screen. There is issues with copying and moving, MD5 hashes only look at the contents of the file, not the access times or related attributes. The best solution is probably to derive our own FileSystemWatcher class that contains our own logic to identify file moves/copies/deletions/renames.

    Jon and David have made the command line program and the GUI, and now they just need to integrate them together.

  • Jan.27.2006 @ 4:05pm

    Date: Jan.27.2006

    Start Time: 4:05pm

    End Time: 5:55pm

    Elapsed Time: 1:50

    Who Was Present: Andy Kant, Corey Sullivan

    Context: File conduit prototype

    To do our file-system watching, we developed a GUI prototype using FileSystemWatcher on MSDN as a reference..The GUI was written in C#/.NET. To run our test, we moved a directory that contained 36 files, 1 folder, and was 734mb big. Here are the test results:

    File Conduit Performance Tests

    We attempted to make a C++ equivalent to see performance gains but C++ still has the garbage collector with .NET. For files that are being copied and then are cancelled as they are being copied, it throws both created and deleted. The file copy event does not include the old path, a way for generating this is checking for other files with the same name in the database and checking file sizes. We can do a [MD5] hash on both files to compare them as well. Will need to watch for "Copy of..." prefixes for files in the same directory. Renamed files are the only ones that include the old path.

  • Jan.23.2006 @ 4:05pm

    Date: Jan.23.2006

    Start Time: 4:05pm

    End Time: 4:30pm

    Elapsed Time: 0:25

    Who Was Present: Andy Kant, Jon Davis, Corey Sullivan, David Rehfeldt, Dr. Welch

    Context: Weekly status update with Dr. Welch

    Need to check if the C# FileSystemWatcher class is restricted to NTFS partitions or whether it can do any partition type. We need to look at the performance of the FileSystemWatcher (CPU/RAM). We should probably ignore networked folders, something to look into. FileSystemWatcher looks to only be available on the NT file-systems.

    Retrieving lost tags...We could possibly do a hash on all of the files to do an automated "retrieve tags from old file." There's issues in this in that the timestamp may affect the hash. Doing a find on the hard drive would be slow. We could possibly add something like "update tags...browse for file."

      Cycle 2 Goals
    • Frontend design
    • Backend design
    • Prototypes

    We demonstrated the "Manage Tags..." GUI. Dr. Welch mentioned nested tags, but we don't plan on implementing that.

  • Jan.21.2006 @ 8:00pm

    Date: Jan.21.2006

    Start Time: 8:00pm

    End Time: 8:10pm

    Elapsed Time: 0:10

    Who Was Present: Andy Kant

    Context: Meeting minutes

    I compiled the minutes for the meeting from today.

      Meeting Minutes
    • Jan.21.2006 – Team Meeting (local mirror)

  • Jan.21.2006 @ 6:00pm

    Date: Jan.21.2006

    Start Time: 6:00pm

    End Time: 8:00pm

    Elapsed Time: 2:00

    Who Was Present: Andy Kant

    Context: Frontend design

    I am working on designing the primary application frontend. I am trying to find a way to make a listview like Explorer in .NET (since we will likely be using C#). I found a site with a bit of information on how to do it. I also found the IShellView documentation on MSDN. I decided to scrap this since we can figure it out later and just continued working on the GUI. I wanted to keep things simple so there isn't many controls in the dialog. The primary control is the ListView which will display all of the actual files. I'm not sure how to integrate the Explorer/Shell context-menu or normal shell operations into this. I found a commercial control, but that costs a decent amount of money ($125) and we're trying to keep this free of any fees or licensing issues. Anyways, I figured the dialog should have separation of search and browsing, so I went with a tabbed interface. However, it might be better to combine the ideas from both panels to keep it a bit more simple. Here are some mock-up's.

    "Tag Browser" Window, Search Tab
    "Tag Browser" Window, Browse Tab
    "Tag Browser" Window, Tools Menu

  • Jan.21.2006 @ 3:15pm

    Date: Jan.21.2006

    Start Time: 3:15pm

    End Time: 4:00pm

    Elapsed Time: 0:45

    Who Was Present: Andy Kant, Corey Sullivan, Jon Davis, David Rehfeldt

    Context: Team meeting

    Talked about project status and what will go into the status update report.

    For the SRS, we need some non-functional requirements like that the back-end is portable. Corey will make the work context diagram. Everything should be emailed to Andy. We should make use cases for:

    • Tag modification (Andy)
    • Search for files (Jon)
    • Changing the file-system (Corey)
    • Other use case (David)

  • Jan.20.2006 @ 4:05pm

    Date: Jan.20.2006

    Start Time: 4:05pm

    End Time: 6:00pm

    Elapsed Time: 1:55

    Who Was Present: Andy Kant, Corey Sullivan

    Context: Frontend design

    Corey and I worked on designing the manage tags frontend for a while. At first we started with a simple add tags dialog and a separate manage tags dialog but after some consideration and combining controls that didn't really need to be separate; we came up with the following GUI which we believe is simple, straightforward, and fulfills the user's needs. We also drew up the UML for the GUI.

    "Manage Tags..." Window (via context menu)
    "Manage Tags..." UML

  • Jan.19.2006 @ 10:00am

    Date: Jan.19.2006

    Start Time: 10:00am

    End Time: 11:50am

    Elapsed Time: 1:50

    Who Was Present: Andy Kant, Corey Sullivan, Jon Davis, David Rehfeldt, Dr. Durant, Dr. Welch, Dr. Suri, Dr. Barnicki, other teams

    Context: Cycle presentations

    Watched the presentations as well as gave our own presentation. I thought our presentation went fairly well, as we were able to answer the questions that were thrown at us.

  • Jan.19.2006 @ 8:45am

    Date: Jan.19.2006

    Start Time: 8:45am

    End Time: 8:55am

    Elapsed Time: 0:10

    Who Was Present: Andy Kant

    Context: Meeting minutes

    I compiled the minutes for the meeting on Wednesday.

      Meeting Minutes
    • Jan.18.2006 – Team Meeting (local mirror)

  • Jan.18.2006 @ 4:00pm

    Date: Jan.18.2006

    Start Time: 4:00pm

    End Time: 5:25pm

    Elapsed Time: 1:25

    Who Was Present: Andy Kant, Corey Sullivan, Jon Davis, David Rehfeldt

    Context: Team meeting to work on presentation

    We assembled the presentation from everyone's individual work. There are some slides that need to be added such as Conclusion and Questions as well as the display of the slides tweaked. We also practiced giving the entire presentation and found it to be too long so we had to remove some information as well as slides.

  • Jan.18.2006 @ 3:10pm

    Date: Jan.18.2006

    Start Time: 3:05pm

    End Time: 3:15pm

    Elapsed Time: 0:10

    Who Was Present: Andy Kant

    Context: Meeting minutes

    I compiled the minutes for the meeting on Monday.

      Meeting Minutes
    • Jan.16.2006 – Team Meeting (local mirror)

  • Jan.18.2006 @ 9:55am

    Date: Jan.18.2006

    Start Time: 9:55am

    End Time: 11:55am

    Elapsed Time: 2:00

    Who Was Present: Andy Kant

    Context: Presentation

    I worked on making slides for the presentation. Here are some diagrams and the PowerPoint I prepared for the presentation:

      PowerPoint
    • Cycle 1 Presentation Parts
    Concept
    Mock-Up: Tag Context Menu
    Mock-Up: Viewing Tags

  • Jan.17.2006 @ 10:00am

    Date: Jan.17.2006

    Start Time: 10:00am

    End Time: 10:45am

    Elapsed Time: 0:45

    Who Was Present: Andy Kant, Corey Sullivan, Jon Davis, David Rehfeldt, Dr. Durant, Dr. Welch, Dr. Suri, Dr. Barnicki, other teams

    Context: Cycle presentations

    Watched the presentations, didn't notice anything new.

  • Jan.16.2006 @ 4:00pm

    Date: Jan.16.2006

    Start Time: 4:00pm

    End Time: 4:40pm

    Elapsed Time: 0:40

    Who Was Present: Andy Kant, Corey Sullivan, Jon Davis   (David Rehfeldt is missing)

    Context: Team meeting

    We have chosen to use PT tool to record our times. We need to decide on a GUI language; possible languages are: C++, C#, and Java.

      The Presentation
    • Project Background
      • Purpose/Concept
      • Technologies/Alternatives
      • Proposed Architecture
    • Risks/Issues/Constraints
    • XP discussion
    • Next Goals/STRAT Form
    • Questions

  • Jan.12.2006 @ 3:25pm

    Date: Jan.12.2006

    Start Time: 3:55pm

    End Time: 6:55pm

    Elapsed Time: 3:00

    Who Was Present: Andy Kant

    Context: Cycle report

    I worked on righting the management summary portion of the report. This is mostly up to date but needs this week's time logs. As I was compiling time logs from everyone's engineering logs, I noticed that I have been averaging around 2.5 more hours per week than the rest of the team (but I'm the only one spending the amount of time we're supposed to). That is kind of lame but I don't think it is a big deal since we are in the research phase and sometimes there just isn't much to do, which can be seen by my low hour weeks compared to my high hour weeks.

      Documents
    • Cycle Report updates (local mirror)

  • Jan.12.2006 @ 1:25pm

    Date: Jan.12.2006

    Start Time: 1:25pm

    End Time: 1:55pm

    Elapsed Time: 0:30

    Who Was Present: Andy Kant

    Context: Cycle report

    I worked on fleshing out the requirements section of our report more. This includes narrative and explanation of the different tiers of requirements.

  • Jan.12.2006 @ 10:00am

    Date: Jan.12.2006

    Start Time: 10:00am

    End Time: 11:55am

    Elapsed Time: 1:55

    Who Was Present: Andy Kant, Corey Sullivan, Jon Davis, David Rehfeldt, Dr. Durant, Dr. Welch, Dr. Suri, Dr. Barnicki, other teams

    Context: Cycle presentations

    I took some notes during the presentations. They aren't notes on specific projects, but rather what came into my mind as a good idea for our presentation as I was watching them.

      Three Quarter Projects
    • Splosion
      • Overview of functionality and how it acts - IMPORTANT
      • Plan for the next cycle - IMPORTANT
      • Risks
      • Milestones
      • Demo
      • Two people standing on each side of screen (unimportant but thats the way every group did it)
    • Car Alarm to Cell
      • Be ready for design choices/decision questions
    • Jump
      • N/A
    • Knowledge Management System
      • Make sure colors in diagrams are readible (no black on dark/vibrant blue)
      Two Quarter Projects
    • GPS-Car II
      • N/A
    • JCI
      • Technology choices and alternatives

  • Jan.11.2006 @ 7:10pm

    Date: Jan.11.2006

    Start Time: 7:10pm

    End Time: 7:25pm

    Elapsed Time: 0:15

    Who Was Present: Andy Kant

    Context: Meeting minutes

    I compiled the minutes for the meetings for today.

      Meeting Minutes
    • Jan.11.2006 – Team Meeting (local mirror)

  • Jan.11.2006 @ 4:05pm

    Date: Jan.11.2006

    Start Time: 4:05pm

    End Time: 5:30pm

    Elapsed Time: 1:25

    Who Was Present: Andy Kant, Corey Sullivan, Jon Davis, David Rehfeldt

    Context: Team meeting: Cycle report, Cycle 2 plan

    Dr. Welch says our report should be more of a single flowing narrative rather than a series of deliverables. We also need management summaries such as time logs, important meetings, and related items. We should also change the structure of our report. I should do the management section.

      Cycle Report Structure
    • Intro
    • System Block (part of Intro)
    • Constraints/Risks
    • Technology
    • Research
    • Architecture
    • Issues
    • Management
    • Conclusion

    Corey needs 1 hour per week for status update reports. Andy needs 45 minutes per week for minutes per week. David needs 1 hour per week for XP research.

      Cycle 2
    • Week 1
      • Design (7 hours per person)
          Pair design
        • Backend - David, Jon
        • Frontend - Andy, Corey
      • Meetings (3 hours per person - no status update; Mon/Wed/Sat @ 1 hour each)
    • Week 2
      • Design Review
        • Backend - 1 hour
        • Frontend - 2 hours
      • Frontend - File conduit prototype (4 hours - Andy, Corey)
      • Tag Conduit - Get the frontend and backend to talk with each other (4 hours - David, Jon)
      • Meetings (4 hours per person - status update/Mon/Wed/Sat @ 1 hour each)
    • Week 3
      • Backend development (6 hours per person)
        • Command line - (1 pair; 6 hours)
        • Database Logic - (1 pair; 5 hours for communication, 1 hour for DB setup)
      • Meetings (4hrs per person - status update/Mon/Wed/Sat @ 1hr each)
    • Week 4-5
      • Backend development (3 hours per person)
        • Command line - (1 pair; 3 hours)
        • Database Logic - (1 pair; 3 hours)
      • Cycle Report (3 hours per person)
      • Meetings (4 hours per person - status update/Mon/Wed/Sat @ 1 hour each)
      Updating Cycle 3 (since we're moving up Backend development)
    • Weeks 1-2
      • Frontend - File Conduit
    • Weeks 3-6
      • Frontend - GUI/Tag Conduit

  • Jan.10.2006 @ 8:20pm

    Date: Jan.10.2006

    Start Time: 8:20pm

    End Time: 8:50pm

    Elapsed Time: 0:30

    Who Was Present: Andy Kant

    Context: Meeting minutes

    I compiled the minutes for the meetings for today and yesterday.

      Meeting Minutes
    • Jan.09.2006 – Status Update Meeting (local mirror)
    • Jan.09.2006 – Team Meeting (local mirror)
    • Jan.10.2006 – Team Meeting (local mirror)

  • Jan.10.2006 @ 5:30pm

    Date: Jan.10.2006

    Start Time: 5:30pm

    End Time: 6:15pm

    Elapsed Time: 0:45

    Who Was Present: Andy Kant

    Context: Proofreading the cycle report

    David compiled our cycle report and sent it out to everyone. I reviewed it and found all of the errors I could fine.

      Reports
    • Tag Cycle 1 Report Draft (Edited by me)

  • Jan.10.2006 @ 10:15am

    Date: Jan.10.2006

    Start Time: 10:15am

    End Time: 10:30am

    Elapsed Time: 0:15

    Who Was Present: Andy Kant, Corey Sullivan, Jon Davis, David Rehfeldt

    Context: Team meeting: Cycle report, architecture

    An architecture note, the Logic command line should have XML output as a flag and not by default. David will be assembling the cycle report.

  • Jan.09.2006 @ 4:45pm

    Date: Jan.09.2006

    Start Time: 4:45pm

    End Time: 6:00pm

    Elapsed Time: 1:15

    Who Was Present: Andy Kant, Jon Davis, Corey Sullivan   (David Rehfeldt is missing)

    Context: Team meeting on architecture

    A great way of managing single/multiple tags would be a dialog with a combobox where you can add/change. The backend will probably contain the command line just by the nature of how PHP works. An example of capturing console output with C# can be found here.

    For our architecture, we basically have three main blocks: Logic (Backend), File Conduit (Frontend), and the GUI (Frontend). The Logic, by being written PHP, inheritently acts as a universal console application whose output can be captured by the Frontend, likely in XML. The Conduit is all of the hooks made to the operating system to capture file operations and other system calls. The GUI is the context-menu and searching application.

    Logic can be broken into two components: Command Line and DB Logic. The Command Line is the universal interface for the Frontend to contact. The Command Line will capture input, validate it, and make function calls to the DB Logic (which contains all base functionality). The Command Line then outputs (echoes) the result. DB Logic should pass associative arrays to the Command Line which will have a ToXML() function.

    The File Conduit is a collection of OS dependent system calls that are passed along to the Logic (preferably in a separately spawned process). This Conduit is mostly a file operation monitor.

    The GUI contains its own Tag Conduit component that adds tags/edits tags/etc... The Context Conduit launches Tag CRUD (dialogs), another component of the GUI. The third GUI component is the Tag Search engine/application.

  • Jan.09.2006 @ 4:10pm

    Date: Jan.09.2006

    Start Time: 4:10pm

    End Time: 4:45pm

    Elapsed Time: 0:35

    Who Was Present: Andy Kant, Jon Davis, Corey Sullivan, Dr. Welch   (David Rehfeldt is missing)

    Context: Weekly status update with Dr. Welch

    We talked about total hours spent. Andy's hours are in the correct range at around 33 hours total while everyone elses is low at around 20-25 hours. The Cycle Report needs to be turned in atleast 48 hours before the due date to be reviewed to help us. We need to work on our presentation this week since we have to give it next week. We should watch this week's presentations and judge on our own on which ones are good and which ones are bad.

    For the SRS and use cases/user stories...There should be few use cases that are complex that run from launch to quit. For XP, user stories are basically short use cases and are typically converted to functional requirements. User stories actually work well for a project since it actually works in fragments, but use cases might be nice in discovering functionality. We don't need an actual SRS but all of that information needs to be identified. We don't need an SRS but we need an equivalent. Another company should be able to develop our product based off of our SRS/equivalent. Dr. Welch needs our user stories to be something to measure by as a goal for us to meet. Use cases may make more sense for a search/browse dialog. Use cases can be great for thinking up ideas for future and unforeseen behaviors. Dr. Welch needs an SRS-like document that justifies our project and is complete: Why is this project valuable? Who are the stakeholders? We could also possibly make an Icon Overlay Priority editor.

    Some grey area in our update is a decision of what installer, Dr. Welch hasn't heard of the Nullsoft installer. We should decide on an installer and say why we chose it. The Nullsoft installer has been around since the beginning of Windows. We also talked about the portability and platforms for our application. We want to have a command line version of the application running on Windows, Linux, and Mac OS X. We want to have the application directly integrated into Windows.

  • Jan.08.2006 @ 11:45pm

    Date: Jan.08.2006

    Start Time: 11:45pm

    End Time: 12:45am

    Elapsed Time: 1:00

    Who Was Present: Andy Kant

    Context: Windows OS Integration report

    I finished composing my OS Integration research report on Windows.

      Research
    • OS Integration – Windows (local mirror)

  • Jan.08.2006 @ 11:15pm

    Date: Jan.08.2006

    Start Time: 11:15pm

    End Time: 11:45pm

    Elapsed Time: 0:30

    Who Was Present: Andy Kant

    Context: Website updates and meeting minutes.

    I am updating the calendar for the websites with all of our events occurring in the next two weeks. I also wrote the minutes for our meeting on Saturday.

      Meeting Minutes
    • Jan.07.2006 – Team Meeting (local mirror)

  • Jan.08.2006 @ 7:30pm

    Date: Jan.08.2006

    Start Time: 7:30pm

    End Time: 11:15pm

    Elapsed Time: 3:30

    Who Was Present: Andy Kant

    Context: Write requirements for cycle report

    I finished converting all of the user stories into actual requirements. This was for our cycle report as well as our actual requirements. I combined some of the user stories since it seemed to be redundant to have such similar requirements down twice. I also made sure to number all of them and sort them by type so that we can easily reference them. I also added a requirement for something that wasn't a user story, which is that all back-end code shall be platform-independent.

      Documentation
    • Preliminary SRS (Jan.08.2008) (local mirror)

  • Jan.08.2006 @ 2:45pm

    Date: Jan.08.2006

    Start Time: 2:45pm

    End Time: 4:00pm

    Elapsed Time: 1:15

    Who Was Present: Andy Kant

    Context: Type up and organize user stories (for use for requirements)

    I went down to the lab today to type up all of the user stories we kept yesterday. I made some minor changes based on what we talked about during our meeting. I also took photos of all of our posted user stories (we posted them on the board separated by categories) as well as our preliminary database design. It is extremely simple design; mostly because it fulfills our needs and should be fast given how small the schema is.

    Posted User Stories
    Database Design

    Here are our user stories:

      Backend Required
    • Unicode – The program supports Unicode. The tags must be Unicode safe.
    • Networked drive – The application should be able to tag files on remote/networked drives so long as they have a local path (not http:// or ftp://)
    • Deleting tags – The user can delete all tags of multiple files or certain tags of the user’s choosing.
    • Edit the tags of multiple files – The user chooses multiple files and edits tags common to all of the files.
    • Edit the tags of a file – The user chooses a file and edits tags associated with that file.
    • Add tags to one file – The user chooses the file and adds the tags to the file.
    • Add tags to multiple files – The user selects multiple files and adds tags to the files.
    • Search and replace tags – Search for a tag in all tagged files and replace with the new given tag. Show the user results and get confirmation before replacing. (Example: replace SDL portfolio with Old SDL portfolio).
    • Remove tags from multiple files – The user chooses multiple files and removes tags common to all of the files.
    • Remove tags from one file – The user chooses a file and removes tags associated with that file.
    • File searching – The user can search for multiple tags using all or any of the tags and support Boolean search logic.
    • File searching – The user searches for files with inputted tags. The search returns all of the files with the matching tags.
      OS Integration Required
    • Deleting multiple files – The user deletes multiple files. The application removes all tags associated with the deleted files.
    • Deleting one file – The user deletes a file. The application removes the associate tags.
    • Ghost file cleanup – Go through and remove any tags for files which can no longer be found.
    • Copying multiple files – The user copies multiple files. The tagging services copies all tags associated with those files.
    • Copying one file – The user copies a file. The application also copies the file’s tags.
    • Software installation – Upon installation, the installer also installs and sets up the database.
    • Software installation – The user installs the service (if there is one) and tag utilities.
    • Moving multiple files – The user moves multiple files. The tagging application remembers all of the files’ tags. (The file index is updated with the new path/filename)
    • Moving one file – The user moves a file. The application still knows what tags are assigned to the file.
    • Software uninstall – The user uninstalls the software and that removes both the software and the stored tags.
    • Searching front-end – The searching application should be able to do everything the integrated features can do.
    • Help file/dialog – The user should be able to list all command line options with descriptions.
    • Linux man page – A man page should be available on Linux/UNIX systems.
      Backend Not Required
    • Associated tags – The user should be able to see other tags that files with similar tags use.
    • Mass export – The user wishes to back up the tags. The service can save the database as an XML file (possibly compressed).
    • Importing tags – The user imports tags and the service merges the imported tags with the database.
    • Exporting tags – The user selects files to export. The service stores the tags and outputs the XML.
    • Associated files – The user should be able to see other files with the same tags as any given file.
      OS Integration Not Required
    • Tag directory – The application should be able to build a browseable tree of HTML pages listing files by tag. (Like JavaDoc)
    • Folder tagging – While right-clicking a folder, be able to tag all files in the folder.
    • Installation – OS integration should be optional. (Either at runtime or in the installer)

  • Jan.07.2006 @ 3:30pm

    Date: Jan.07.2006

    Start Time: 3:30pm

    End Time: 4:05pm

    Elapsed Time: 0:35

    Who Was Present: Andy Kant, Corey Sullivan, Jon Davis, David Rehfeldt

    Context: Team meeting: Cycle report

      Splitting up the cycle report:
    • Review/summarize proposal and requirements Andy
    • Proposed architecture Corey
      • (Rec.) System block diagram
    • Technologies considered for key components David
      • Pros/cons
      • Tentative choice and justification
    • Key project/technology issues Jon
      • Cost
      • Lifecycle
      • (Rec.) Experiments conducted
      • (Rec.) Prototypes built
      • (Rec.) Risk factors
      • Other
    • Organization
    • Writing style
    • Other

    It should be mentioned that the PHP language itself is secure, it is the libraries that are insecure. We also discussed our database design as well.

  • Jan.07.2006 @ 2:15pm

    Date: Jan.07.2006

    Start Time: 2:15pm

    End Time: 3:30pm

    Elapsed Time: 1:15

    Who Was Present: Andy Kant, Corey Sullivan, Jon Davis, David Rehfeldt

    Context: Team meeting: Combine user stories

    We started by going through everyones user stories.

    • Searching: Instead of searching for AND and OR, rather have a toggle for ANY or ALL words. This makes searching more simple.
    • Many other user stories, too many to list.

    We are sorting our user stories into command line stories and OS specific stories. This is to help abstract our background tasks from our frontend ones (which will be OS specific). In the database, files should be indexed in a case-sensitive manner. The way research is going, we probably won't need a persistent service. We could support import/export for both XML (possibly zipped) and SQLite database files directly. The required categories are things we must do while the not required are things we would like to do if we have time.

      Four categories of user stories
    • Backend Required
    • OS Integration Required
    • Backend Not Required
    • OS Integration Not Required

  • Jan.07.2006 @ 1:05pm

    Date: Jan.07.2006

    Start Time: 1:05pm

    End Time: 1:35pm

    Elapsed Time: 0:30

    Who Was Present: Andy Kant

    Context: Windows OS research

    My primary objective for research today is to find a suitable install script application for Windows systems. There are a few common installers.

    • Windows Installer (MSI files)
    • InstallShield
    • Nullsoft Scriptable Install System

    InstallShield is commercial so that one won't serve our purpose. Windows MSI Installers are very popular nowadays. The Nullsoft Installer is very popular for small projects and is also open-source. Both the MSI and the Nullsoft are fairly customizable and free. There are also installer authoring tools for both installers to make things easier. An MSI authoring tool is Advanced Installer which has tons of easy to use features, but the free version doesn't let you manage Windows services which we will probably need. I found a site with many resources on MSI authoring. However, most of the actual authoring tools cost multiple hundred dollars. EIther installer would probably suffice. Using the freeware version of Advanced Installer would probably be the easiest, but that's only if our program doesn't use services. Because the Nullsoft installer is open-source, there are many plugins that allow almost any functionality you could want; here is some information on managing services with the Nullsoft installer. There is also a plugin for Eclipse for authoring Nullsoft installers. Overall, I think the Nullsoft installer is probably the best choice since it will be able to do everything we might need to do, it's free, and it is very customizable.

  • Jan.07.2006 @ 11:55am

    Date: Jan.07.2006

    Start Time: 11:55am

    End Time: 1:05pm

    Elapsed Time: 1:10

    Who Was Present: Andy Kant

    Context: Writing user stories

    I am working on writing user stories for our meeting today. We are all writing user stories on our own and then combining them at the meeting. The user stories for the Shell could very easily take more than their time estimates since none of us have done those things before. All of these user stories are aimed at Windows since that is our primary platform.

    User Stories

  • Jan.05.2006 @ 9:50pm

    Date: Jan.05.2006

    Start Time: 9:50pm

    End Time: 11:20pm

    Elapsed Time: 1:30

    Who Was Present: Andy Kant

    Context: Group calendar research and implementation

    I found a new calendar plugin for WordPress to try out, LiveCalendar via the WordPress Plugins Database. It turned out this plugin just jazzed up the calendar with some AJAX; it had nothing to do with events. However, I did find out that there was some additional features in the EventCalendar plugin had that I didn't know about. You can have all of the upcoming events list in the sidebar as well as be highlighted in the calendar. This seems like the only choice for a group calendar since we need one that can easily integrate into our website and can be controlled through the same system we already have implemented. A standalone group calendar application would require another set of logins for everyone and would not integrate well into the website. The next five upcoming events are also listed in the sidebar.

    I have EventCalendar successfully installed and integrated into our website. This plugin is able to override the old calendar (that lists blog posts). Not only does it add events to the calendar (highlighted in a different color), but it also makes the calendar AJAX so that it doesn't have to reload to show other months.

      Here are the instructions for adding an event to the site:
    • Make a blog post like normal, setting the category to "Events"
    • Edit the post
    • Check "Edit Timestamp" and change the timestamp to the date and time of the event
    • Save the changes

  • Jan.05.2006 @ 9:30pm

    Date: Jan.05.2006

    Start Time: 9:30pm

    End Time: 9:50pm

    Elapsed Time: 0:20

    Who Was Present: Andy Kant

    Context: Assembling meeting minutes

    I assembled the minutes for the team meeting held on Saturday, December 21st.

      Meeting Minutes
    • Dec.21.2005 – Team Meeting (local mirror)

  • Dec.21.2005 @ 4:00pm

    Date: Dec.21.2005

    Start Time: 4:00pm

    End Time: 4:30pm

    Elapsed Time: 0:30

    Who Was Present: Andy Kant, Corey Sullivan, Jon Davis, David Rehfeldt

    Context: Team meeting

      Scripting and storage choices:
    • PHP
      • Easy to setup
      • No external dependencies
      • We can strip out the extensions we don't use
      • PHP5 is true OO
      • Filesize is small (less than 1mb)
      • Already known by multiple people in the team
      • PHP is reasonably fast, but we're not going to do much more than one or two queries per operation
      • Frontends will be written in the best/easiest language for the operating system, and not PHP
      • Why not Ruby or Python?
        • They are very different languages from what we're used to
        • We don't have the time to learn a language and still implement everything we want
    • SQLite
      • Easier/faster to check multiple tags at the same time
      • Small footprint and filesize
      • Has the functionality we need
      • Portable, runs on most operating systems
      • Stable, in development for over five years
      • Bundled with PHP
      • Why not XML?
        • Easier to implement
        • Has its own internal language
        • Requires parsing
        • Extremely slow
        • Makes comparisons and searches much slower
        • Could possibly be used to export
        • Will probably be used for configuration settings

    Jon and Corey should start researching and practicing PHP since they don't know it yet. PHP has an excellent online manual with most entries having user comments. User stories plans will be scaled back from 5 hours to 1.5 hours per person with an addition 1.0 hour meeting to talk about them.

  • Dec.21.2005 @ 10:00am

    Date: Dec.21.2005

    Start Time: 10:00am

    End Time: 10:20am

    Elapsed Time: 0:20

    Who Was Present: Andy Kant

    Context: Assembling meeting minutes

    I assembled the minutes for the team meeting held on Saturday as well as the status update meeting on Monday.

      Meeting Minutes
    • Dec.17.2005 – Team Meeting (local mirror)
    • Dec.19.2005 – Status Update Meeting (local mirror)

  • Dec.19.2005 @ 4:05pm

    Date: Dec.19.2005

    Start Time: 4:05pm

    End Time: 4:55pm

    Elapsed Time: 0:50

    Who Was Present: Andy Kant, Corey Sullivan, David Rehfeldt, Dr. Welch   (Jon Davis is sick)

    Context: Weekly status update with Dr. Welch

    Dr. Welch says to compute the totals for the columns in the tables to make it easier to read. Dr. Welch says our hours planned for the winter break are excessive and probably more than anyone is going to spend. Hours allocated range from around 12 to 17 hours.

    We are considering XML and SQLite for data sources. Indexing would be important for SQLite. XML wouldn't be great for this application because data isn't transported over systems. XML could take up needless space. We should have portability with SQLite, including importing and exporting. XML is extremely portable. SQLite runs and almost all systems, as well as implementations in most languages. We also need to consider if someone wants to upscale this to another database. We should have documented why we picked a certain database (and whether we will facade it), and explain why its practical to use even if there is future scalability. Dr. Welch says we should plan our technologies and implementations for the future. The fact that a database can easily cross-check multiple entries may prove to extremely important. Searching the entire hard drive for filenames would be slow for singular XML or flat text. SQLite is in the lead. Dr. Welch says we may not have our criteria finalized yet. Storage, speed, API, long-term maintainability, standardization, and portability are some important attributes.

    For OS integration, we need to be able to track copy/delete/rename/move. Tracking is going to be the hardest of our work. The need for speed in tracking should be considered in which data source we choose. Dr. Welch also suggests we try to spawn a new process from the copy hook. Linux, we would maybe make a wrapper around these commands, but there is a possibility that we can latch onto a signal.

    For the scripting language FAQ (David), we should have it say what we want to know. Dr. Welch says he needs to understand the context and criterion under which it needs to be used. We will need to be able to provide a reason for why we used or didn't use a language. For the FAQ, it isn't just research, but rather a summary.

  • Dec.18.2005 @ 9:05pm

    Date: Dec.18.2005

    Start Time: 9:05pm

    End Time: 9:20pm

    Elapsed Time: 0:15

    Who Was Present: Andy Kant

    Context: Helping write the status report

    I filled in the OS integration research and group calendar portions of our weekly status update report.

  • Dec.17.2005 @ 2:00pm

    Date: Dec.17.2005

    Start Time: 2:00pm

    End Time: 2:20pm

    Elapsed Time: 0:20

    Who Was Present: Andy Kant, Corey Sullivan, David Rehfeldt   (Jon Davis is sick)

    Context: Work on weekly status update, team meeting

      What to do for data reports
    • Storage
    • (Physical) Executable size
    • Memory footprint
    • CPU usage
    • Cross platform capabilities
    • Recommendation

      What to do for OS reports
    • How to hook onto copy/move/delete/rename
    • How to [double] overlay icons
    • How to handle context menus

    Andy should also look into Windows Installers (also, put time into user stories). Jon should look into installers for Linux (makerpm and other items).

  • Dec.17.2005 @ 11:05am

    Date: Dec.17.2005

    Start Time: 11:05am

    End Time: 1:15pm

    Elapsed Time: 2:10

    Who Was Present: Andy Kant

    Context: Windows OS integration research

    The first Windows research I did was on creating icon overlays within Explorer. MSDN actually had an article specifically for this: Creating Icon Overlay Handlers. In order to do an icon overlay, you need to manipulate COM as well as make a registry entry. A subkey must be added into the registry at HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers. More information on that can be found in the article. I also found another reference article that includes the actual programming (in C++) for overlaying an icon. A limit to overlaying icons is that an icon can only be overlaid one time. This means that we can't have both a TortoiseCVS overlay and a Tag overlay. Priority is defined via implementing the method GetPriority in overlay handler. It must return a number 0-100, with 100 being higher priority. The highest priority overlay will be displayed. Implementing GetOverlayInfo returns the location of the icon to use for the overlay, while IsMemberOf defines what the icon can apply to. In order to set whether an icon will be overlaid, we are allowed to do all the logic we need, so we would be able to connect to a database or whichever other method in order to check. For this purpose, it would likely be a good idea to have a persistent database connection to minimize lag in displaying icons. Overall, implementing icon overlays looks to be relatively simple. We will probably need to set a low priority on our overlays because they're probably not as important as other icons that use overlays.

    I have found The Code Project's Shell Programming section to be an excellent resource for all things Explorer (which is what the majority of the difficult work in implementation will entail. There is a series of articles on writing Shell extensions, all of which require COM. I found articles (with example code) for:

    • Shell extensions intro
    • Shell extensions that operate on multiple files at once
    • Shell extensions that generate pop-up windows for files
    • Shell extensions that provide custom drag and drop functionality
    • Shell extensions that adds pages to the properties dialog
    • Shell extensions to be used on the Send To menu
    • Shell extensions for owner-drawn context menus as well as context menus for a directory background
    • Shell extensions that adds columns to the details view
    • Shell extensions for custom icons based on the filetype

    Most of those links will be useful for us. There is a large number of other tutorials on the Shell Programming page such as custom copy to/move to context handlers within the context menu.

    It took a while to find a document on it, but it indeed is possible to monitor (as well as approve or deny) file copy/delete/move/rename operations. I found an article explaining how to implement Copy Hook Handlers on MSDN. This requires adding registry entries under HKEY_CLASSES_ROOT\Directory\shellex\CopyHookHandlers. Logic can be run and the operation can return yes (the file can be copied), no, or cancel (no and cancel all further operations). The copy hook handler receives the following information:

    • The folder's name
    • The folder's destination or new name
    • The operation that is being attempted
    • The attributes of the source and destination folders
    • A window handle that can be used to display a user interface

    At this point in time I haven't been able to find an actual code example for copy hooks.

  • Dec.15.2005 @ 1:00pm

    Date: Dec.15.2005

    Start Time: 1:00pm

    End Time: 1:25am

    Elapsed Time: 0:25

    Who Was Present: Andy Kant

    Context: Group calendar research

    David changed the permissions for all of the files in our web tree so I was able to test the Event Calendar for WordPress. It is pretty simple and straightforward. You need to create a blog entry in the Events category and set the posting time to the time of the event. It has a special side calendar that makes the date red when there is an event. The actual browsing of events isn't very straight forward and I had to modify the website theme in order to say the actual time of day. Overall, Event Calendar is usable but I am going to look for some better alternatives.

  • Dec.15.2005 @ 9:30am

    Date: Dec.15.2005

    Start Time: 9:30am

    End Time: 10:25am

    Elapsed Time: 0:55

    Who Was Present: Andy Kant

    Context: Convert last team meeting's note to meeting minutes and group calendar research

    I assembled the minutes for the team meeting held on Wednesday.

      Meeting Minutes
    • Dec.14.2005 – Team Meeting (local mirror)

    For the group calendar, I started by googling for WordPress plugins. I came up with a couple good plugin sites, WordPress Plugin Repository and the WordPress Plugins Database. From the WordPress Plugins Database site I found Event Calendar which is really the only decent plugin for WordPress I found. I am not able to test this now because the team doesn't have write permissions to the WordPress directories on Jade. Group permissions can be added recursively. I wrote an executable script to automate this, which simply contains the command: chmod -R g+w * The script is in the main Tag directory and can be executed simply by typing "./resync"

  • Dec.14.2005 @ 4:00pm

    Date: Dec.14.2005

    Start Time: 4:00pm

    End Time: 4:20pm

    Elapsed Time: 0:20

    Who Was Present: Andy Kant, Corey Sullivan, Jon Davis, David Rehfeldt

    Context: Team meeting to talk about management overhead

    We will plan to meet as a team up to three times a week (each an hour long). Possible times are after our status update meetings with Dr. Welch, on Wednesdays at 4pm, as well as Saturdays in the early afternoon. Saturdays will be mostly meant to work on the weekly status updates.

    Jon will be helping with user stories after OS integration research. Andy will be working on finding a suitable Group Calendar application/plugin. David's database research is being extended to three hours. We would like to have our cycle report done near the end of week 4 so that we can have Dr. Welch review it. For the cycle report, there will be 5 hours per person spent on the cycle report in week 4, with an additional 5 hours per person to revise and finish the report in week 5.

  • Dec.12.2005 @ 4:25pm

    Date: Dec.12.2005

    Start Time: 4:25pm

    End Time: 5:20pm

    Elapsed Time: 0:55

    Who Was Present: Andy Kant, Corey Sullivan, Jon Davis, David Rehfeldt

    Context: Team meeting to write cycle plan, finish up detailed proposal

    We are updating our cycle/iteration plan to do DB/data and OS integration research simultaneously. For database/data, we need to research SQLite, MySQL, and PostgresSQL. Specifically, we need to figure out if SQLite is sufficient. We need to see if we can scale down MySQL and PostgresSQL because they take too much overhead. For non-DB storage, we need to consider XML, PDB, etc... For OS integration, it may be two weeks of research. We need to consider Windows, Mac OSX, and Linux.

    • Non-DB storage: Corey (done by Dec.18.2006) - 5 hours
    • OS integration: Andy, Jon (done by Jan.8.2006) - 5 hours each
    • Databases: David (done by Dec.18.2006) - 2 hours
    • User stories: David, Corey (done by Jan.8.2006) - 4-5 hours
    • Requirements/SRS: Andy, Corey, David, Jon - 3 hours each

    We are changing our team meeting day to Saturday because it is easier to coordinate that everything is done. We will be meeting at 2pm on Saturday.

    I also assembled the minutes for both the status update meeting with Dr. Welch as well as our team meeting held afterwards.

      Meeting Minutes
    • Dec.12.2005 – Status Update Meeting (local mirror)
    • Dec.12.2005 – Team Meeting (local mirror)

  • Dec.12.2005 @ 4:05pm

    Date: Dec.12.2005

    Start Time: 4:05pm

    End Time: 4:25pm

    Elapsed Time: 0:20

    Who Was Present: Andy Kant, Corey Sullivan, Jon Davis, David Rehfeldt, Dr. Welch

    Context: Weekly status update with Dr. Welch

    Our detailed proposal and STRAT form are done but not submitted. We still need to submit our detailed proposal and write our low level cycle plan. We need to improve our team communication. We need to finish those documents as soon as possible.

    Technologies...PHP5 and Ruby are true OO. Look into case tool availability for the technology we choose. Enterprise Architect supports PHP (and supposedly Python in the Corporate edition said Dr. Welch). Overlaying icons may be difficult. Overlaying icons and TortoiseCVS-like context menus will be more interesting than just a simple context menus. Double overlaying with TortoiseCVS would be cool but might be difficult, if impossible.

  • Dec.11.2005 @ 12:45pm

    Date: Dec.11.2005

    Start Time: 12:45pm

    End Time: 3:00pm

    Elapsed Time: 2:15

    Who Was Present: Andy Kant

    Context: Engineering log print styling

    Today I worked on the print styling for the engineering log template. I (hopefully) finished the engineering log template unless any bugs are found. It can be found for download here (local mirror).

      Modifications
    • Added: A script now parses all links and converts them to footnotes when printing (grabs every link on the page and lists them as footnotes on a per entry basis). IE has an error at a certain point in the script, but it still does what it is supposed to do on that line so I'm not going to bother with it.
    • Added: Finished the print style sheet. Refresh before you print, otherwise images might not be displayed!

  • Dec.10.2005 @ 8:00pm

    Date: Dec.10.2005

    Start Time: 8:00pm

    End Time: 11:40pm

    Elapsed Time: 3:40

    Who Was Present: Andy Kant

    Context: Ruby research

    The first website I looked at for research was the official Ruby website.

      About Ruby
    • Is an interpreted scripting language
    • Object-oriented
    • Many features to process text and do system tasks (like Perl)
    • Simple, extensible, and portable
    • Free
    • Has simple syntax
    • Has exception handling
    • Operators are aliases for methods, they can be easily redefined
    • Is a complete object-oriented language, meaning everything is an object
    • Methods can be added to a class at runtime
    • Has only single inheritance to keep things simple
    • Features true closures
    • Blocks of code can be passed to methods or converted to closures (like JavaScript)
    • Has a garbage collector
    • Writing C extensions in Ruby is easier than in Perl or Python
    • Scaling of numbers (like choosing a Bignum over a normal Fixnum) isn't important, it is handled automatically
    • Variables don't need to be declared, rather it uses naming conventions to define scope
        Variable scopes
      • 'var' = local variable
      • '@var' = instance variable
      • '$var' = global variable
    • Can load extension libraries dynamically (depending on the OS)
    • OS independent multi-threading, whether its supported by the OS or not
    • Highly portable, but mostly used in Linux
        Supported OS's
      • UNIX
      • DOS
      • Windows 95/98/Me/NT/2000/XP
      • MacOS
      • BeOS
      • OS/2
      • etc.

    Inside the FAQ linked from the official Ruby website (FAQ actually resides on RubyGarden, I found a page comparing Ruby to Python (another language we're considering).

      Comparison with Python
    • Both are object oriented
    • Python is a hybrid, allowing procedural and object-oriented programming
    • Ruby is pure object-oriented, but can act like a procedural language
    • Because Ruby is pure OO, it has features Python lacks (currently)
      • A unified type/class hierarchy
      • Metaclasses
      • The ability to subclass everything
      • Uniform method invocation (no separate functions and methods, only methods)
      • Only has single inheritance, but can include a module to insert all of that module's methods, constants, etc. into the class
    • Ruby is more complex than Python
    • Ruby is very similar to Perl

    I found a good reference for beginners, a site for newcomers to Ruby. Also, the entire first edition (version 1.6, a bit outdated) of Programming Ruby can be found for free online. However, there is a new edition that you can purchase that includes some information on Ruby on Rails. Like Perl and Python, Ruby also has full regular expression support, tight integration with the OS, shortcuts, and dynamic evaluation. Ruby can be used to write GUI's and server processes. It can also be used to serve web pages, interface with databases, and to generate dynamic content. Ruby only consumes modest system resources. Ruby is easy to learn. Ruby can be used to make native API calls in Windows, COM integration, and Windows Automation. There are many extensions for Ruby, including Ruby/DBI for connecting to databases. Ruby/DBI includes a number of drivers: MySQL, PostgreSQL, SQLite, and others. Some drivers, such as SQLite, require other libraries to work. For MacOSX, there is a Ruby library to use Cocoa objects in MacOSX. I also found an excellent index of Ruby sites on Ruby Central's links page (some links may be dead). Another great site is the Ruby QuickRef which includes very useful reference. I also came across a site that has the history and some other simple examples and information on Ruby. Another good website I found is one that compares GUI toolkits for Ruby.

    Here is my technology report on Ruby as it applies to our backend: Technology Report on Ruby (local mirror)

  • Dec.10.2005 @ 3:55pm

    Date: Dec.10.2005

    Start Time: 3:55pm

    End Time: 6:00pm

    Elapsed Time: 2:05

    Who Was Present: Andy Kant

    Context: Meeting minutes, engineering log template

    I converted my engineering log for the December 7th meeting to a minutes document and posted it in our blog.

      Meeting Minutes (linked to our team website)
    • Dec.07.2005 – Team Meeting (local mirror)

    I updated my engineering log template and style sheet, along with adding some JavaScript for viewing via the web.

      Modifications
    • Added: Attachment ability.
    • Added: JavaScript for toggling the view of attachments, so embedded images don't take up as much room unless they need to be viewed.
    • Added: <code> element management; this surrounds a <code> element with a purple box and uses monospace type. NOTE: <'s need to be changed to &lt; and >'s need to be changed to &gt; within the code!
    • Changed: CSS style sheet renamed to "elog.css" and the new JavaScript being named "elog.js".
    • Changed: Head section of the log now has a JavaScript reference and an updated CSS reference.
    • To Do: CSS print style sheet.
      Attachment Usage
    • Make an attachment by adding the following code into the body section of an entry: <div>
         <span>TITLE_FOR_ATTACHMENT</span>
         <img src="IMAGE_LOCATION" />
      </div>

  • Dec.08.2005 @ 8:10pm

    Date: Dec.08.2005

    Start Time: 8:10pm

    End Time: 9:35pm

    Elapsed Time: 1:25

    Who Was Present: Andy Kant

    Context: Meeting minutes

    I worked on refining the style sheet and template for meeting minutes to make it more presentable. I converted my engineering logs for the team meeting on December 3rd and the status update meeting on December 5th to the meeting minutes template. I uploaded and posted on our blog the two meeting minutes. I will be working on the last missing meeting minutes document this weekend.

      Meeting Minutes (linked to our team website)
    • Dec.03.2005 – Team Meeting (local mirror)
    • Dec.05.2005 – Status Update Meeting (local mirror)

  • Dec.07.2005 @ 4:00pm

    Date: Dec.07.2005

    Start Time: 4:00pm

    End Time: 4:47pm

    Elapsed Time: 0:47

    Who Was Present: Andy Kant, Corey Sullivan, Jon Davis, David Rehfeldt

    Context: Team meeting

    Talked about how we're going to record time. PT tool is gone and LEIA is down. We will most likely just use our engineering logs and/or a spreadsheet. We will look into a time tracker plugin for WordPress.

    Jon worked on a preliminary plan for the entire senior design period. We will be having two iterations within each cycle. This also applies to our STRAT form.

      Iteration 1 (Cycle 1, 4 weeks)
    • Tier One: Research (Andy = Ruby, David = Python, Jon/Corey = PHP)
      • Deliverable: Technology Review/Report
    • Tier Two: DB/Data storage and backend research
      • Deliverable: Technology Review/Report
    • Tier Three: OS integration research
      • Deliverable: Technology Review/Report
      Iteration 2 (Cycle 1, 1 weeks)
    • Requirements (approval by Andy - Req's manager)
      • Deliverable: SRS Document, Use Cases, User Stories
    • Presentation (Oral cycle report, week 6)
      • Deliverable: Presentation
      Iteration 3 (Cycle 2, 2 weeks)
    • High Level Design
      • Deliverable: HLD Diagrams (ex. Flow, State, Activity diagrams)
    • Design Review
      • Deliverable: Review Checklist, Defect Log
      Iteration 4 (Cycle 2, 3 weeks)
    • Low Level Design (entire group)
      • Deliverable: Low Level Design Pseudo-Code
    • Design Review
      • Deliverable: Review Checklist, Defect Log
      Iteration 5 (Cycle 3, 3 weeks)
    • Coding (backend?)
      • Deliverable: Source Code, Unit and Acceptance Tests
      Iteration 6 (Cycle 3, 3 weeks)
    • Coding (frontend?)
      • Deliverable: Source Code, Unit and Acceptance Tests
    • Integration
      • Deliverable: Test Case Results
      Iteration 7 (Cycle 4, 2 weeks)
    • Testing
      • Deliverable: Test Case Results
      Iteration 8 (Cycle 4, ~2 weeks)
    • Deployment
      • Deliverable: Finished Product
    • Installer
      • Deliverable: Installer
    • Presentation
      • Deliverable: Presentation

  • Dec.05.2005 @ 4:05pm

    Date: Dec.05.2005

    Start Time: 4:05pm

    End Time: 4:48pm

    Elapsed Time: 0:43

    Who Was Present: Andy Kant, Corey Sullivan, Jon Davis, David Rehfeldt, Dr. Welch

    Context: Weekly status update with Dr. Welch

    Our detailed proposal will be written on Wednesday. In our weekly memos, Dr. Welch would like to see milestones worked on and planned vs. actual (both separated by team member). Also, it should show issues we have. There should be a secondary table with the modified plan for the next week. This includes modified and extended milestones. We talked about our decision to use an extreme programming model because it is more dynamic and fits our project. It keeps people active and changes the plan week by week. Dr. Welch says that the academic software engineering community is a bit hesitant about agile methods (such as extreme programming). It is more of a developer enthusiasm rather than a proven technique. Dr. Welch says that we can use extreme programming as long as we still have the three levels of planning. We still need to have end of cycle goals. We may use our extreme programming model is the final decision. WordPress blog software is fine for the website, but security is a concern.

    Technologies...PHP can be used for web applications as well as via command line. Python is commonly used for standalone applications. PHP can also be used for GUI's using PHP GTK and other libraries. Ruby is a new scripting language that is object oriented by nature. We want to implement tagging via the right click context menu, similar to TortoiseCVS.

    Deliverables for this week are the Detailed Proposal with the STRAT form and cycle plan (nice to have the cycle plan separate). SDL processes are not forced. SRS and other documents should all be in a single document, whether on the web or otherwise. Reports are reviewed for free by Dr. Welch as long as they are reasonably ahead of time.

  • Dec.03.2005 @ 1:15pm

    Date: Dec.03.2005

    Start Time: 1:15pm

    End Time: 2:38pm

    Elapsed Time: 1:23

    Who Was Present: Andy Kant, Corey Sullivan, Jon Davis, David Rehfeldt

    Context: Discuss this week's research and make some decisions concerning the website and team roles

    Jon researched some team roles as relating to extreme programming (since we are considering doing that). These included team leader, minute taker, log watcher, integration manager (explained later), development manager, planning, quality assurance, and requirements. Extreme programming is for dynamic projects that are team oriented. Its made to be very efficient. Planning starts off with user stories; basically the customer describing how they would want to use the product. Release planning is the overall product layout; this is the overall plan and is generic. Iterations last 1-3 weeks, it is similar to a cycle within a cycle. Each iteration has iteration planning and iteration unit planning. Each iteration, simply work on only what is to get done in that iteration. There should be teams of two working together. There is also stand up daily meetings where everyone stands up in order to finish the meeting quickly. If anything isn't working, it should be changed. Design should be kept simple, name all classes with obvious names and that everyone knows what everything is so that it is easier for integration. Need a design mechanism that is easy to change (such as using cards). Never add functionality that is for later or assigned to someone else; follow the plan. Save code, don't throw anything away. Make sure there is a defined set of coding standards and create unit tests before programming. There will be two pairs of people. Only one pair should be implementing while the other one is integrating and vice-versa (hence the integration manager). Make it work, make it right, make it fast (in that order). No 4am coding, no overtime coding. All code must have unit tests, all code must pass unit tests. Create new unit tests on found bugs. Tests should be based off user stories and should be automated if possible. Each iteration should have time scheduled for fixing failures in tests. We should have two iterations per cycle. Iteration format: standup meeting, create the iteration plan, fix previous bugs (new unit tests), create unit tests for the new iteration's code, coding, testing on the unit tests, if it isn't working then create new unit tests for the next iteration.

    Team leader should also be the contact manager, meeting facilitator, log watcher, direction. Quality manager handles quality, checks unit tests, ensures proper testing, would also be useful to be the integration manager. Planning/development manager organizes the plans for each cycle/iteration and ensures that everyone follows the plan. Requirements manager ensures that requirements are being created and managed.

      Initial Team Roles
    • Team Leader/Contact Manager/Log Watcher: Corey Sullivan
    • Quality/Testing/Integration Manager: David Rehfeldt
    • Planning/Development Manager: Jon Davis
    • Requirements/Minutes Manager: Andy Kant

    Andy talked about website suggestions; notes for this section were taken by David. We will be having a blog powered by WordPress along with a group calendar.

      Ground Rules
    • Extreme programming rules (like no 4am coding)
    • Everyone must participate and contribute ideas, be open minded
    • Post a blog entry for when you accomplish or do something
    • Communicate problems at the time that you have them, don't let them drag on.
      Ground Rule Abuse Responses
    • Verbal communication (scolding)
    • Repeated offenses will cause us to schedule a meeting with the advisor

    What is our teams motivation? We are sick of losing files or losing track of them and remembering what they are. We want an easier way to categorize and organize our files.

    David had a preliminary plan for the cycle, mostly consisting of research. For week 2 we are splitting up some scripting research.

      Week 2 Research
    • PHP: Corey and Jon
    • Python: David
    • Ruby: Andy

  • Dec.03.2005 @ 12:32am

    Date: Dec.03.2005

    Start Time: 12:32am

    End Time: 2:06am

    Elapsed Time: 1:34

    Who Was Present: Andy Kant

    Context: Research the needs for our project website

    In my searches for what we should have on our project website, I decided to check the 3-quarter team websites (linked from Jade). Most of the 3-quarter team websites had either nothing or merely a placeholder up; which is a surprise considering they have been working an entire quarter and don't have any public presence. The Line-Splosion team had a simple entrance page linked their main documents and then also had a Wiki posted which contained lots of information. The Wiki looks like a excellent way of organizing common information as well as reports. They are using MediaWiki to power their Wiki. This is very popular Wiki software and is the same software that powers Wikipedia. The S-Link team also had a website posted with most of their information. They posted the same sorts of information that we posted on our project websites for SDL. This includes product documents such as the SRS, proposal and other reports. They also had a section dedicated to storage of research. The VR Toolkit team simply had a listing of their documents and reports.

    The Knowledge Management System team has probably the most complex website. They have a blog posted on their main site with consistently updated news entries and also allows for comments to posts. I talked to Ryan Palumbo about their website and he said they used BBlog to power their blog. I looked into this software and it looks simple to implement and extremely customizable. They also have a very nicely organized archive of news posts that is easy to read and isn't congested which I think is a nice touch. They have a group calendar which they don't seem to use; I'm not sure how useful it would be anyways. I'd say it would never hurt to have a group calendar to schedule meetings and other events on, but I'm not sure how much use we would make out of one either. They have an AJAX-based file indexer that indexes their reports and product documents in a tree-based interface. It would be nice to be able to view important documents via our website, but I think this particular indexer is overkill. It is bulky and makes the valuable information less readable. It would be better to write our own indexer that presents a more readable interface with all trees already expanded. They have an Engineering Log tracker which requires a login so I'm not sure if they enter their logs online or if they upload them or what. It would be useful to be able to view everyone's Engineering Logs though. Other than that, they have a couple extra important highly used links to FAST and Dr. Durant's senior design website which has a large amount of information. Given that the Opal server now requires us to VPN to MSOE in order for us to use it; it would be nice if the professors would run a version on Jade for us. I'm not sure that is possible, and it kind of defeats the purpose of having all FAST data in a single place so that would be unlikely.

    During the senior design meeting on Thursday (Dec.01.2005) as well as just plain discussion this week, we talked about what we might need for the website. A blog is something definite, as it makes it easier to see our progress publicly. David suggested using WordPress for the blog. WordPress is a popular PHP-based blog system, one of the major two blog systems (the other being Movable Type). They both have their benefits; however WordPress is completely free whereas Movable Type has a free version along with a couple licensed versions. My only concern with using WordPress is that it may be overkill for our use. I think WordPress would be a better choice over BBlog simply because it has a more usable interface and already presents us with a nice structure for our website. We should also make sure to have a well-organized news archives page. As for other portions of the website; I think we should have an indexing of product documents directly in our website because it is easier to access than embedding it into a Wiki. The group calendar would be useful but not altogether necessary. A Wiki would be a great way to store and share our research but not for anything above that. This can be discussed in our team meeting on Saturday (Dec.03.2005) afternoon. I think that we should have a Wiki up to share our research or have our Engineering Logs posted online. This way, we will always be able to see each others' important notes. A Wiki would probably be the better way to do this as we can keep it more organized. My suggestions for software to install would be WordPress for our blog and MediaWiki for a research Wiki. I have already written a good PHP file indexer that could be easily modified to fit our purposes.

  • Dec.01.2005 @ 12:32am

    Date: Dec.01.2005

    Start Time: 10:02am

    End Time: 11:23am

    Elapsed Time: 1:21

    Who Was Present: Andy Kant, Corey Sullivan, Jon Davis, David Rehfeldt, Dr. Durant, Dr. Welch, Dr. Suri, Dr. Barnicki, other two quarter teams

    Context: Overview of senior design meeting

    Dr. Durant talked about senior design; the PowerPoint can be found online. Detail for what goes into presentations and other documents can be found on senior design websites such as Dr. Durant's (and for us, Dr. Welch's). The first cycle is for research and the second cycle is primarily for requirements. We should look at risks and how we should handle them. Most high risk activities should be done during the winter quarter. This could mean prototypes to test technologies. All major risks should be sorted out before the spring quarter. Cycle 5 is the wrap-up cycle; which includes weeks 9, 10, and exam week. The senior design show will be on May 26th, 2006. Cycles 1 and 2 are five weeks long, cycles 3 and 4 are four weeks long, and cycle 5 is three weeks. Prototypes to test technologies are considered milestones; there will be milestones throughout the quarters. There will be two cycle reports per cycle, to be emailed to your advisor and Dr. Durant (To: Dr. Welch, CC: Dr. Durant). Information on the team status report (weekly) can be found at this website. There is an expectation of averaging 8-10 hours per week spent on senior design. There will be peer evaluations at the end of each quarter.

    • C1: research/prototyping
    • C2: requirements/prototyping
    • C3-4: incremental development x 2 (e.g. design/build/test/integrate/test)
    • C5: poster, brochure, final documentation

    Logs are important for reference, if something goes wrong, and as intellectual property. It can also be used in a court of law as evidence. It is also useful for remembering why you made a decision. This can include almost anything, such as URL's and debugging procedures. The log should be able to stand on its own and should be reproducible. Code changes and algorithmic discussions should be in the log, but the user can be pointed to CVS for the full source. A checklist can be found on Dr. Durant's website.

    Mary Jo Wellenstein from counseling services gave a presentation on teamwork. The project depends on the task plus the process. We should get to know team members and learn what is going on in their lives. We should pick team roles based on our strengths. People need to know what they are doing right as well as wrong. The process is crucial; the task is only part of it. Teams should have ground rules (such as everything needs to be on time). There also should be consequences to failing ground rules. This will strengthen the team. Examples are "must make it to the team meetings" with a consequences being "having to buy pizza." Attached is a scan of the handout for the presentation on teamwork.

    Senior Design Teamwork Handout