Project Definition
Final Project
Sample Files
Journal
Project Plan
Philosophy / Career
Resume
Journal
May 1, 2005: I finished up documentation, added the ‘help’ and ‘about’ to the ecard site, and finished my website!!! April 26, 2005: Presentation today! April 25, 2005: Finished getting PowerPoint together along with the images for presentation and handout with processes for the ecard send and receive process. April 24, 2005: I finished implementing the design, for entering the e-mail info and the confirmation that is displayed afterwards. At the end of the ecard I allow the user to adjust the location of the image. I could not estimate where the image should be without seeing it. The user is limited to the height and width of their original image-this determines how far left and right they can move the image. Also, I added in the Flash to Javascript error checking. This was a lot more simple than I had originally thought. April 23, 2005: Today I implemented the design for the HTML pages and flash. Getting the first html page set up was a little bit of a hassle. My ‘slanted’ logo made this a bit problematic, but I was able to get the logo (with many slices) imbedded into a table so the right hand size is frames filled with the green background (and not green images). I was also very happy when I was able to put the design in the background of flash and have it look practically seamless!!! I was a little worried that the transition from HTML to Flash and back to HTML would look awkward. I also came up with the solution to having the actual e-card background slated. I load the background image in flash, have a pre-made, static mask for the background. Then I mask that image, so it can overlap with the rest of the background. April 22, 2005: I finished adjusting the design for the ecard website and got the index page design implemented. Although it was more time consuming than I had expected (in optimizing images and arranging the table layout) using extra tables for the white border of the image snapshots worked very well. I was also able to minimize the amount of images needed for the design on the index page. April 21, 2005: I have added a ‘back’ button within certain parts of flash. I do not allow the back button to go back to resize the image. This would have been problematic if I wanted the user to be able to remask their image afterwards. Each time the user goes forward or back, I save all of the properties of the mask and recreate their points. I met with Professor Pankratz for a little bit today and showed him the animated ecard. April 19, 2005: Yesterday and today, I worked on the ‘regular system maintenance’ of the ecards. I found the program we wrote in Programming Languages to go through a directory and delete bad files. I modified it to delete files that are more than 15 days old and have the .txt, .jpg, and .msg file extensions. April 17, 2005: 1. I adjusted the send and receive processes to work with the hand waving. In the save process, I send all of the points and other variables to Perl at the same time. This is much simpler than saving each mask at a different time. When I was implementing the receive I ran into a similar problem I experienced before. I cannot use variables before they are loaded. This was time consuming, but you can successfully send a waving e-card to someone!! 2. I also added the message to the receive e-ecard. I append the message to the same .txt file for the variables of the e-card, and display the text with a scrollbar in flash. 3. I experienced today my first real disappointment of having to throw away code. With the hide and show points buttons, I forgot an important part. All of the points and lines are created within another movie clip called shape. All I had to do was make shape visible or not and the points would show and hide. All that work when there was such a simple solution. 4. To do: System maintenance, incorporate my designs, allow choice of wave or no wave, useful instructions for a new user, override back button, validate user entries, improve documentation, add more error checking, prepare for presentation, and I’m sure I will think of more along the way. April 16, 2005: 1. My solution to the alignment problem was to include the mask within the same parent movie clip. So the parent clip has the registration point for moving and rotating the image and the mask. This works so much better! I get a smooth rotation, and the mask does not change as I go. I was testing the rotations with buttons to rotate left or right, but I want to have the hand rotate automatically. If I use the setinterval timers, I do not get a smooth transition. I found that if I use onClipEvent(enterFrame) and set a flag when I want the rotation to start it works very well. When the user clicks, they automatically see their image rotating. I want this point to be able to be adjusted right after the user clicks a point, to they can chose the most optimal rotation point. This was a little tricky, but it works! 2. When the masks are drawn, I implemented hide and show points buttons. The hide points button, goes through each point and saves them in an array. It then deletes all of the points and clears all of the lines. When the show points button is clicked it recreates all of the points, checking for special cases in the beginning and the endpoints. It also takes into account whether the shape is closed or not. 3. My original intent for the order of masking was to create a mask around the image, and then within that mask create a sub mask for where the hand will wave. I have revised what I want the user to mask. This will simply the process greatly and ensure that each mask is as good as the user makes them. The first mask will be to outline the figure, with the exception of what will wave. Then they will see the entire image again, with a darkened area where their first mask was. Then they will draw a mask around the part that will wave. I have found that if the second mask is drawn to overlap the first on the edge it creates a much more smooth and realistic looking animation. April 14, 2005: After a long time of sitting in the stuffy library trying to figure this problem out, I found a site that referred to imbedding a movie clip inside another one. The parent clip becomes the registration point. If you rotate a parent clip, all of its contents rotate as well. But since I do not know what location I want to rotate around, I need to let the user identify that point. I created the following example to see if this was going to be the solution I was looking for: ./samples/regtest.swf This looks like a viable solution. So I imbedded the image that is used for the wave in another movie clip. I have 4 locations to address. The x,y coordinates of the point (where I want to rotate around), the x,y of the parent clip, the x,y of the child clip, and the x,y of the mask. Whenever I move the parent clip it moves all of it’s contents, so I have to move the child clip back that same distance so it remains aligned with the coordinates of the mask. I am having a little difficulty aligning all of these points when I am rotating the clips and the mask. That is the next task to fix. April 13, 2005: I met with Professor Pirman today and went over the status of my project and my design so far. He had some very helpful criticisms and was very positive about my project. Although some parts of my project are really pulling together, I ran into a very annoying snag for implementing the hand wave. Every image that I mask is a movie clip. Movie clips have a registration point. The purpose of the registration point can be seen when a movie clip rotates. It rotates around that registration point. For movie clips that are created statically you can chose exactly where you want the registration point to be, and you can move the movie clip to any x and y coordinates for their location. For movie clips that are created dynamically the registration point is set to (0,0). To make a dynamic clip rotate around a point other than (0,0) you adjust the x and y coordinates to the new point for rotating. This is inherently problematic for what I am trying to accomplish. I cannot rotate a clip on the bottom corner. Movie clips do not have a registration point property, so you cannot adjust this at run time. I found a flash developer online who has code which claims to dynamically set the registration point. There were two problems with this. 1. I couldn’t get the code to compile and after an hour I gave up trying to find where his error was. 2. The code looked like it was changing the x and y coordinates, which was not the solution I wanted. Tomorrow I will do more research into registration points and hopefully come up with a new plan. April 12, 2005: Yesterday and today I worked primarily on the design for the e-card site. It is coming together much better than my previous attempts have. Some aspects still need to be tweaked but a sneak peek can be viewed at: design.jpg April 10, 2005: Today’s all day task-hand waving. I began small with rotating a rectangle. I wanted to make sure that moving an object around an origin point was possible. 1. Create a second image, identical to the uploaded image w/ the same mask 2. Allow the user to draw another mask over this image-identifying the arm 3. Mask the second image, and rotate it I came across multiple snags. Flash does not allow the same shape to be used for multiple masks. After creating a second instance of the image, I had to create a second instance of the shape and then mask it. mask 1 = original image + shape1 mask 2 = copy of original image + shape2 (a copy of shape 1) mask 3 = copy of original image + shape3 In this process, I had a couple problems with the depth of each movieclip. Also, when I created mask3, I would get a blue version of shape1. I thought I was overwriting mask1. This took an hour to figure out. What really was happening was shape2 became visible and I just needed to hide it. You cannot mask twice and ensure the first mask. So another issue that I must address is making sure that the edges of the first mask stay intact if the second mask exceeds them. I do not quite have the rotation implemented, and I still need to adjust the size of the second image, if it is initially resized. The hand waving will be an optional feature to include in the e-card. April 9, 2005: All day today was devoted to designing the e-card logo & website in Illustrator. I was not as successful as I originally hoped, but I have quite a few ideas that I am working with. Hopefully I will get an inspiration and it will come together more smoothly if I don’t look at it for a day or two. April 8, 2005: I continued implementation of the background image. I had to update the method for updating the coordinates to append to the same id.txt file that was started with the background image. Then I added the code to display the background to the flash file, so after the image is masked, it can be previewed in front of the background that was originally selected. I also updated the receive process to display the background image. While updating the Flash files, I realized the importance of getting the Flash version working before I put it online. It is much easier to troubleshoot, and relieves much frustration when I upload a new version but forget to clear the browser’s cache. In addition, the amount of files I am dealing with is increasing. Keeping an up to date status of the e-card process from start to finish in my notebook has been extremely helpful to visualize what is going on and to remember what exactly I was doing the day before. April 7, 2005: I worked a little bit today on adding in the background image to the e-card. I started by making a rough version of the initial e-card web page. At the moment, it consists of an orange and a yellow background (I can’t give away my quirky backgrounds just yet). After clicking on a background, you are directed to upload your image. I pass along the name of the background as a parameter. Using JavaScript, the background becomes a hidden variable in the HTML form. This is then passed with the image information to a Perl program. The Perl program saves the image (id.jpg) and then saves the background to the properties file (id.txt). While I was updating the Perl program, I found a huge error I had made which prevented particular .jpg files to not show up correctly-they were corrupt. I parsed the .jpg information from the soi (FFd8) to the eoi (FFd9). Some larger images happen to have the FFd9 combination within them. All I needed was the $ anchor to parse until the last FFd9 is found and the save the image. I really owe the $ a lot of credit. $$ for the Unix transaction id and $ for the ending anchor. April 6, 2005: I added JavaScript to the html send email form, so it passes the current URL (with the id at the end) to the Perl program that sends the e-mail. I parse the URL to get the ID separate and then input that ID into the e-mail message that is generated. To send the e-mail message I have generic text that is in a file. Perl reads that file and replaces certain keywords with information about the current session, like the name of the person sending the e-card and the ID. Then it saves that message to a new file, which is named based on the id. Then the Unix mail command sends the e-mail with the message from that file. I will have my latest 'send' version up here soon. April 5, 2005: I added a log file, for writing times & processes to the send part of the e-card process. Whenever a file is saved, its info is appended to the log file. I also spent some time revising the very basic error checking that I had in place. When an image is uploaded and viewed in flash I give feedback to the status of the picture, whether it is loading, has loaded successfully, or there was an error. I had problems uploading large images. Initially I thought that the problem was in displaying them in Flash. However, after adding the error messages to the screen in Flash, I think the problem lies somewhere with my method of saving the .jpg. Certain larger files become corrupt when I save them to the server. I will have to investigate this further. As well, now Perl is able to send success/error messages that can be displayed in Flash as it is running. I still need to implement this for the receive process. At the moment, I am concentrating on pulling together the parts for the send process. In addition to the log file & error handling, I linked the html form for sending the email after the masking process. I pass the e-card’s ID from flash to the html form, but I need to pass it one further to Perl. April 4, 2005: I am able to send e-mail from the web! The 'From' on the e-mail comes from 'Nobody' so I was able to enter a return e-mail address to fake where it is coming from. I created a gmail account: wi.ecards@gmail.com for this purpose. In the process of sending e-mail I found a new frustration. IE and Netscape/Firefox/Safari represent the '@' differently when it is sent from an html form to Perl. IE sends the char, while the others use the hex representation %40. In Perl I have to check which is present and act accordingly. For IE I need to add in the '\' before the '@', for Netscape/Firefox/Safari I need to replace the %40 with ‘\@’ because the Unix mail command does not understand the hex representation. March 30, 2005: I stopped by Professor Blahnik’s office this morning and discussed some of the problems I have had sending e-mail. Professor Rohm had some good advice as well, so I went off to the lab to try to get an email sent from my area in compsci. Once I get that working then I will try to send it from on the web. Although their suggestions were helpful, I still could not get it to work. After stripping my program down to one line, Damian & Bennett found my error. In the email address there is a ‘@’ which is a special character in Perl, so I needed to add a ‘\’ in front of the @. Simple problem, but at least I know that I can accomplish this part of my program now. March 28, 2005: I found a flaw in my method of drawing the points. Each point that is drawn is within one background square on the screen. When I drew the points, each movie clip was hierarchally below this square. This created a problem because I could not view the image I masked. Previously, I had changed the square to be semi-transparent so I could see and mask the image, but I do not want to have a green tint to the image that a user uploads. I found that even though I am trapping clicks in this square I do not need to embed the movieclips in the background square, I can create them anywhere. I found that the easiest solution was to create a new ‘holder’ movieclip for all of the points, and have this holder be at the same level of the square rather than below. Now the points are independent of this square and I can mask a picture without having to adjust transparencies. In addition, I was able to incorporate the bezier curves into the send and receive of the e-card. I feel much more confident with my actionscript and understanding of Flash! March 26, 2005: Yesterday and today I went all around Wisconsin taking pictures of ‘quirky’ places for the E-cards. I am very anxious to get the interface for my website established. In addition, I can mask the shape! I cannot mask an image with the points that are created. I need to use a single movieclip with one shape to create the mask. So when the ‘mask’ button is clicked I go through each point, get the coordinates and create a new shape. Then I can mask the image. March 24, 2005: Today I began by trying to trap a click on a point. The static example defined the points statically so the mouse click functions were simple. However, I don’t know how to write an on click function for an object that is created on the fly. I found a solution. Whenever there is a click on the stage, I check if the x and y coordinates of the mouse are within a small distance of any of the points. So I sequentially go through all the movieclips. This many not be the most efficient option, but it seems functional for now. If the mouse coordinates are close, then I allow the point to be dragged. I set a flag and save the index of the point being moved. When the mouse is released and the flag is set, then I know to stop dragging the saved point. Then I need to redraw the line adjacent to the point. I am currently using flash’s lineto() function. I was able to create the curve with the curveto() function with the adjacent points. The curve was much simpler than I had anticipated, although this required special cases for the first and last point. The next struggle I had was clearing the previous line. There is a clear function for all of the lines, but to my knowledge I can’t get a handle to a line, to clear it individually. The line is not a movieclip. So whenever any point is moved, to redraw the line/curve, I clear all of the lines. Then I start with index 0 and redraw the lines/curves for all of the points. The close shape button added another special case for moving the points/curves, but I have accomplished the most difficult parts of the bezier curves already. I also added a clear button to remove all points (and their movieclips) and the lines. March 23, 2005: The next task is drawing a line from one point to the next. This requires having access to the previous point. I name each point incrementally, so the index-1 is the previous point. This seemed like a simple solution to get the x and y coordinates of the previous point, however, accessing a point’s coordinates was tricky. After hours of fighting flash, I found out about the eval() function. I need the full path name of the movie clip to access its coordinates, but I cannot access the parameters without setting a variable equal to the eval(path name). When I evaluate the path, I have what seems like a pointer to access the coordinates. Now I can get the previous point’s coordinates and I can draw a line between them!! I calculated the midpoint and added a handle between the two points. Eventually the handle will be used to adjust the curve. March 22, 2005: Today I began my attempt at bezier curves. I found an example that draws 2 points and connects the line between it with a handle and a curve. All of the points/curves are adjustable. All of the code for this example was static. The challenge will be to make it dynamic. The plan of attack: 1. Draw a point whenever the mouse is clicked. 2. Draw a line from point to point as they are drawn. 3. Calculate the midpoint between points and insert a handle for the line 4. Trap a click on a point 5. Allow a point or handle to be repositioned 6. Turn the line between points into a curve. 7. Redraw the curve based for the moved point 8. Clear the previous line/curve 9. Create a ‘close shape’ button & connect the first and last points with an adjustable handle between them 10. A clear button 11. Use this shape to mask the image (save all of the points into one filled shape & mask it) 12. Save the coordinates of the shape to a file (sending an e-card) & recreate the shape (receiving an e-card) To allow the user to adjust the lines they draw, each point must be a separate entity (in flash- a movieclip). These movieclips must be created dynamically, their properties must be able to be retrieved and change. This was an obstacle and began my fight with flash to get correct syntax and use the correct functions to implement the bezier curves. Once I understood the importance of the ‘depth’ parameter when movieclips are created this helped greatly. When flash creates movieclips dynamically, they have a hierarchy. You cannot have two movieclips with the same depth (or level). I initially overlooked this parameter when I was creating the points and they would disappear as I drew new ones. Now I can draw multiple points on mouse click. The greatest help in this process was flash’s debug feature because I can view the creation/name of each movieclip as they are created. March 16, 2005: I stopped by Professor Blahnik's office to see if he had any thoughts about Perl and the racing conditions. He decided to see if Professor Rohm was in, and she informed us about dollar-dollar ($$). It gets a Unix unique transaction ID, so I do not need to use a file to keep track of an ID. This fixes all racing conditions I may have had. I think $$ is my new favorite variable in Perl. March 15, 2005: I met with Dr. Pankratz today, and we discussed the racing conditions that I currently have with generating the ID for the sending session. He offered a possible solution, but thought Perl might have some kind of built in function to provide a lock. He showed me how I can send mail on the command line in Unix! This will be so much easier than I thought, and I should be able to get the email part implemented soon. So much to do yet though… March 13, 2005: With the new information from the Flash book, I started to build my version of the bezier curves for identifying critical points. I am able to start with two static points and adjust their coordinates and the curve between them, and I am working on creating a new point for every mouse click, and then be able to manipulate the curves for each pair of points. March 12, 2005: I found some topics that appear to be very helpful from the Flash book regarding: a trick way to blur images, implementing bezier curves, converting bitmap to vector, and the back button. I also looked up more information about generating e-mail from flash. The examples I found make it sound like I need something like sendmail installed on the server. I will have to look into that more. For receiving an e-card I now am able to pass the ID directly from Perl to Flash through the URL. This should fix concurrency issues from that aspect, however I still need to address them when the ID is generated. March 10, 2005: Today I had my walkthrough. Hopefully I will get some good comments from the class about my project. Bennett borrowed me his Flash book, so I will look at that soon. March 8, 2005: Between yesterday and today I am generating an ID for the 'send' aspect of the e-card, and allow the user to type in the ID for the receive end. Currently I am using a file to save the previous ID. Perl reads in the ID, increments it, and writes the new ID over the previous. It uses that ID to save the picture as 'ID.jpg' and information for the picture as 'ID.txt.' On the receiving end, Perl writes the ID to a file, and Flash goes to that file to read the ID and gets the .jpg and .txt information to recreate the display. I need to look into how to pass the ID directly from Flash to Perl and bypass writing to a file. March 6, 2005: To save the shape, I needed to save the x and y coordinates into an array. Then I could pass the array from Flash to Perl using a similar method as I used for the variables for the picture's properties. When Flash reads text file I needed to parse each x and y coordinate into a different array. Then I was able to use the drawing methods I used previously to recreate the shape and the mask. Originally, the mask was not identical to the original one, but I reevaluated where I was saving the x and y coordinates from, made adjustments, and I think it is working fairly well. I have only seen a couple instances where the recreation of the original mask is not identical to the first. When I re-do the way the user draws the shape to mask the image it should be exact every time. The next task will be generating the ID and setting up the system to deal with multiple images, picture properties, and masks. March 5, 2005: I worked on saving the height and width of the picture, as well as the size compared to the original proportions. I was able to save this information to a text file easily. The problem came in having flash read in this information from the file and adjust the picture's properties immediately. The output window has become my friend. I am able to view all of the current variables while Flash is running. I could tell that the information from the file was being read in Flash. There is a different issue that I was not aware of. When you read in variables you need to give Flash time to load them, they cannot be used right away. So by using the SetInterval function I was able to wait until the variables were loaded, then reference them, and adjust the size of the picture. This explains why in earlier examples the user had to click twice before the image would show up. Tomorrow I will try and save the shape and recreate the mask. March 4, 2005: I started to tackle the problem of saving the properties of the picture (this will occur in the sending process). I found a basic example that will save data from Flash using Perl. After awhile I was able to get this example running on compsci. The next step will be to apply this to my project and the picture properties. March 2, 2005: I met with Professor Blahnik this morning. He emphasized his concern for me to have a textbook as an actionscript reference. He gave me some good suggestions for solving a simpler problem to be able to accomplish the bezier curves. We also discussed possibilities for trying to blur the edges of the masked image. March 1, 2005: Dr. Pankratz and I discussed my latest diagram today. It explains my plans for the process to send and receive an e-card. It shows the transfer of information from the server and client during this process. I will get a copy of it online soon. February 28, 2005: I stopped by Dr. Pankratz’s office today and gave him a quick demo of the latest version of my project. We set up a meeting for Tuesday to talk about my project more. He suggested a new idea, so the user could avoid having to draw the mask. I could have a predefined shape in front of the user’s image, like a circle. The user could adjust the size of their image to fit with that circle, and possibly tweak the shape of the circle to fit their image better. A possibility would be to allow the user to draw freeform or use a predefined shape. February 27, 2005: I have made a couple improvements to the masking example that I was working with last, and I have various thoughts about the project so far. 1. I identified the location of the offset for the mask that was being drawn, and the offset of the image itself. Now, the shape that is drawn will mask over that exact point in the image. 2. If the image that is uploaded is larger than the size of the stage, or the border of the stage, I shrink the image to fit. You can also increase or decrease the size of the image within the size of the stage. This step is added before the mask, so the size of the image is not changing when the mask is being drawn. 3. The current example uses a static file name for the uploaded image, and it is hard-coded in Flash. I am working on incorporating the dynamic ability that I had for previous examples into the current one. Then I will be able to use Perl to generate a unique identifier for the image, and save the user's choices with that id. 4. I am still looking into incorporating bezier curves. I think that will make the masking process much easier for the user. 5. In addition to the image, I am developing a very lengthy to-do list when I think about the project as a whole. Here is another image to help describe the order of processes involved with the e-card: ./process.gif February 20, 2005: I was able to pull together a crude example in which a user can define critical points to mask an image. Of course there are bugs. I have to synchronize the origin of the image and the origin of the path that is drawn by the user so the mask occurs exactly where the user intended. I am researching more to try and implement this using bezier curves so the outline can be more exact. Ideas for implementing the project as Wisconsin E-cards: -User can upload his or her own picture into the e-card -User defines critical points for outline of the image -Image is masked and inserted into the e-card city/location of choice -User can pick from 3 to 5 different Wisconsin cities/locations -User can add ‘extras’ to the e-card (e.g. pick a hat for the image they uploaded, or the image may animate-a hand may wave hello) -User specifies recipient e-mail address of recipient and can insert a text message that will appear in the e-card -Recipient will receive e-mail notification and can view the e-card February 14, 2005: I visited with Dr. Pankratz and Professor Blahnik, and discussed my latest ideas for the project. Manipulating a .jpg seems more and more problematic. Professor Blahnik suggested that I focus my project on the strengths Flash has to offer (as a .jpg’s pixels cannot be accessed in Flash). I am also considering implementing the advertising aspect of the project as an e-card. This would definitely give me more focus and provide an ending point to strive for. February 13, 2005: I found that it is possible to obtain the x and y coordinates of the mouse in Javascript and in Flash. This will be particularly useful in Flash. I can have a user outline the image, save the outline that they draw, and use it to make a clipping mask of the image dynamically. I have a feeling this will be a bit of a challenge to pull together… I also need to add Javascript to the ‘submit’ button to restrict the uploaded file type to .jpg/.jpeg. To explain the communication process of HTML/Perl/Flash better, I created a diagram at: ./com.gif February 12, 2005: My big accomplishment- I am able to upload a .jpg and display it in Flash! The method: A .jpg’s start of image (soi) is 0xFF 0xD8 and end of image (eoi) is 0xFF 0xD9. Perl does pattern matching with characters, so I converted the soi and eoi in HEX to ASCII. Since the HTML form sends in extra information to Perl before and after the .jpg, I isolated the .jpg information using the ASCII versions of the soi and saved it to a file on the server. This Perl program executes another Perl program that displays the Flash file (which I fixed so now it is compatible with Firefox, Netscape, & Safari). You can test this out in the ‘Program’ link of my website. February 8, 2005: I met with Dr. Pankratz and explained my progress thus far. Once I am able to upload an image, I am still unsure what it is that I will do with the image. I am brainstorming possibilities. I have developed a project plan, which will need to be adjusted as soon as I determine my goal for manipulating the uploaded .jpg. February 6, 2005: From Perl, I can launch a Flash file. I created a Perl file that contains the html to open the flash. Perl then can do a system call to execute that program and Flash will appear. At the moment, it only works in Internet Explorer. February 5, 2005: Today I worked for a while trying to save an uploaded image to the server in Perl. I think I am close, but the .jpg I end up with will not display. I found that file size of the original and the ending picture are not identical so I think that is where my problem is. Hopefully I can get this resolved soon. Then I will be able to upload an image and display it dynamically in a running Flash program. February 3, 2005: I met with Professor Pirman today, and we discussed my capstone project. He emphasized the importance of a ‘universal’ example that I should use for applying the project. I hope that I will think of what that is relatively soon so I can begin to gather my thoughts about how to implement that example with the aesthetics of the project. I also think that the bug I had with Internet Explorer is gone. February 1, 2005: I now am able to read in a variable name (of a .jpg) from a file on the server and display that image in flash, but of course there are some quirks: 1. The ‘push me’ button must be clicked twice… I’m not sure what is causing that. 2. In Internet Explorer ‘pic.jpg’ does not show up in the text field, works just fine in Firefox, Netscape, & Safari (yes-I tested it on a mac) This looks much more promising for uploading an image, as I can use Perl to upload the image and I know that Flash will be able to get a hold of that image if I write the name of the image to a file. Another aspect to consider will be getting the Perl program to launch the flash file. January 31, 2005: I visited with Dr. Pankratz today and discussed some of ways I am going to approach my project. This evening I also made my first accomplishment! a simple Flash program to display any .jpg based on the URL entered at run-time (you can view this in the 'Program' section of my website). It was a nice refresher program to write to re-acclimate myself with Flash MX's buttons, movie clips, and actions. Next, I will probably try to upload an image and display it. January 30, 2005: I have received a vague set of directives for what appears to be a challenging and intriguing project. I am researching possibilities for how to proceed, and I am trying to determine that this project is indeed accomplishable. I have found resources for converting HTML to Actionscript, dynamically loading an image into Flash at run-time, dynamic drawing, and located other various Actionscript resources. I am still trying to determine how to potentially incorporate a user’s photograph and animate it. I am also trying to find if I can manipulate a non-vector based image in Flash or it may be more logical to manipulate the image independent of Flash and then import the altered image into Flash. Another alternative may be to have a preset, vector-based body and mask the user’s face onto it. Hopefully I will be able to make the requirements more definite soon as I continue to investigate my options.