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
    • May.18.2006 – Team Meeting

  • 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
    • May.09.2006 – Team Meeting

  • 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
    • May.02.2006 – Team Meeting

  • 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
    • Apr.25.2006 – Team Meeting

  • 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

  • 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
    • PHP Changes (Andy/Jon)
    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

  • 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
    • Mar.28.2006 – Team Meeting

  • 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

  • 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

  • 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
    • Mar.14.2006 – Team Meeting

  • 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

  • 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

  • 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)
    • Use Case: Command Line Tool
    • Use Case: File System Changes
    • Use Case: Tag Modification
    • Use Case: Tag Searching

  • 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)

  • 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
    • Feb.06.2006 – Team Meeting
    • Feb.11.2006 – Team Meeting

  • 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)
    • Tag Modification Use Case

  • 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
    • Feb.01.2006 – Team Meeting
    • Feb.04.2006 – Team Meeting

  • 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 inc