<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
   <channel>
      <title>All Your Base Are Blog to Us</title>
      <link>http://www.personal.psu.edu/pzb4/blogs/all_your_base/</link>
      <description>The occasional rantings of a multimedia designer</description>
      <language>en</language>
      <copyright>Copyright 2008</copyright>
      <lastBuildDate>Mon, 28 Jul 2008 08:54:00 -0500</lastBuildDate>
      <generator>http://www.sixapart.com/movabletype/</generator>
      <docs>http://blogs.law.harvard.edu/tech/rss</docs> 

            <item>
         <title>Actionscript 3.0 Survival Guide</title>
         <description><![CDATA[<p>I know it's been a long time since I last posted. I've been busy and haven't felt much like writing. I decided to bite the bullet and only code in Actionscript 3.0 from now on. I've been using Actionscript 3.0 for a few months now and  have a few projects under my belt. I'm slowly coming around to seeing the benefits, but it's not been easy. I'm proposing a sort of "survival guide" of code that will help people get through the initial shock of trying to get something done in a new coding environment. Here are a few tips on coding Buttons, Controlling MovieClips, and doing Navigation. So, here goes.</p>

<p><b>Buttons</b></p>

<p>You probably have heard this before, but buttons are no longer coded to do their stuff within the button itself. All code must be in the timeline. Here is the typical way to make a button function now. After giving the button a name (myButton in this case), use this sample code:</p>

<p>myButton.addEventListener(MouseEvent.MOUSE_DOWN, doIt);</p>

<p>function doIt(evt) {<br />
  trace("I love Actionscript 3.0");<br />
}</p>

<p>What is kind of stupid is that even though I'm not passing anything to the function and should have no need to put anything in the parens after "doIt", it will throw an argument mismatch error if I don't put something in there ("expecting 0 got 1"). So if that happens, just type any old word in there and it'll run. Code purists will flame me, but it works. I think it's actually passing a mouse event, so a lot of people will put (evt:Event) there, but it's really not necessary for it to work.</p>

<p>I also see people importing classes unnecessarily like this:</p>

<p>import flash.events MouseEvent</p>

<p>before they write the button code. The button will work just fine without importing that! Too many people seem to be writing and importing packages to do code that will run without it. There is a time when you want to do that, when you are working on large projects or in groups where you want to control code more, but for most projects it is entirely unnecessary.</p>

<p>Also, it is important to note that if a button is not going to be in the timeline until frame 10, don't put the event listener in for it until frame 10. Otherwise it will throw and error if you have the listener in frame 1 and no button for it to refer to. </p>

<p>Personally, I don't know why you would need to even write an event listener for a button. This would be an improvement to actionscript if it were understood that a button by its very nature should already have a built-in event listener. Hey, whatever. Suck it up I guess. Let's move on.</p>

<p><b>Controlling Movieclips</b></p>

<p>If I wanted to use myButton to trigger another movieclip (called movie2) also on the main timeline to play, I would write the function like this:</p>

<p>function doIt(evt) {<br />
	movie2.play();<br />
}</p>

<p>But, if I have a movieclip (movie2) on stage and it contains a button that triggers the main timeline to play. I would have to write the event listener and function in the actions within that movieclip. Here is how I write the function (using the same button as before):</p>

<p>function doIt(evt) {<br />
	MovieClip(this.parent).play();<br />
}</p>

<p>So, from within that movieclip where the button is, I have to come up a level before I can tell the main timeline to play. You have to tell it that the main timeline (this.parent) is a movieclip or the play function will not run, hence the MovieClip() reference.</p>

<p>So, to get a little more tricky, let's say I want that button within a movieclip (movie2) to control yet another movieclip (movie3) on the stage. Here is how I'd write the function:</p>

<p>function doIt(evt) {<br />
	MovieClip(this.parent).movie3.stop();<br />
}</p>

<p>I think you get the idea.</p>

<p><b>Navigation</b></p>

<p><br />
Let's say I have a series of photos that I want to create navigation for. To make Previous and Next buttons work, after creating and naming the buttons, I wrote the following code in the first frame, which I named "photo1":</p>

<p>var nextLabel:String = "photo2";</p>

<p>next.addEventListener(MouseEvent.MOUSE_DOWN,goNext);</p>

<p>function goNext(evt) {<br />
	gotoAndPlay(nextLabel);<br />
}</p>

<p>stop();</p>

<p>Note there is no Previous button code since I'm only on the first photo. On the first frame of the next photo, I will name the frame "photo2" and in the actions I will have:</p>

<p>nextLabel = "photo3";<br />
var prevLabel:String = "photo1";</p>

<p>prev.addEventListener(MouseEvent.MOUSE_DOWN,goPrev);</p>

<p>function goPrev(evt:String) {<br />
	gotoAndPlay(prevLabel);<br />
}</p>

<p>So, in the first line, I'm updating the nextLabel variable to be "photo3" and introducing a new variable called "prevLabel" that points to "photo1". I then add an event listener for my Previous button which is now on the stage along with a new function called "goPrev" that takes me back to the previous frame label. Now for photo 3, all I need to do is to update the frame labels in the actions, which would look like this:</p>

<p>prevLabel = "photo2";<br />
nextLabel = "photo4";</p>

<p>There may be a sexier way to do it, but this works without a lot of hassle dealing with label arrays and such.</p>

<p>Okay, that's it for now. Hopefully this will help you through a few sticking points so you can get on with your projects in Actionscript 3.0. </p>]]></description>
         <link>http://www.personal.psu.edu/pzb4/blogs/all_your_base/2008/07/actionscript_30_survival_guide.html</link>
         <guid>http://www.personal.psu.edu/pzb4/blogs/all_your_base/2008/07/actionscript_30_survival_guide.html</guid>
        
                  <category domain="http://www.sixapart.com/ns/types#tag">Actionscript 3.0</category>
                  <category domain="http://www.sixapart.com/ns/types#tag">buttons</category>
                  <category domain="http://www.sixapart.com/ns/types#tag">Flash</category>
                  <category domain="http://www.sixapart.com/ns/types#tag">movieclips</category>
                  <category domain="http://www.sixapart.com/ns/types#tag">navigation</category>
        
         <pubDate>Mon, 28 Jul 2008 08:54:00 -0500</pubDate>
		 
      </item>
            <item>
         <title>SlingBox - this is pretty neat</title>
         <description><![CDATA[<p>I happened across this product today that I thought might have some value to higher ed. It's called a SlingBox. What it allows you to do is to watch what comes over your TV connection from any internet connection in the world. The box is plugged into your internet router at home, then into your TV signal receiver. It can then broadcast TV over the internet. I'm not sure exactly how it works, but it basically creates a video stream of pretty good quality that you can watch from any computer that has the SlingBox player s/w installed. It works on both Mac and PC and will even work on cell phones and palm devices. Here is the link:<br />
<a href="http://www.slingmedia.com/">http://www.slingmedia.com/</a><br />
(Watch the videos on the site. I like the one with the mime.)<br />
It's fairly cheap, too, starting at $129, $179, and $229 for the Pro model, which has the capability to be able to control the channel like a virtual remote), and send out HD video even over a DSL connection. Customer reviews are for the most part very favorable.</p>

<p>I was wondering whether something like this could be set up in a classroom to send video content to a computer set up elsewhere to receive and record the signal and prepare it for further distribution. Might be an interesting addition to Apple's Podcast Producer, or what TNS has been looking for to record Polycom conferences.</p>]]></description>
         <link>http://www.personal.psu.edu/pzb4/blogs/all_your_base/2007/12/slingbox_this_is_pretty_neat.html</link>
         <guid>http://www.personal.psu.edu/pzb4/blogs/all_your_base/2007/12/slingbox_this_is_pretty_neat.html</guid>
        
                  <category domain="http://www.sixapart.com/ns/types#tag">HD</category>
                  <category domain="http://www.sixapart.com/ns/types#tag">recording</category>
                  <category domain="http://www.sixapart.com/ns/types#tag">SlingBox</category>
                  <category domain="http://www.sixapart.com/ns/types#tag">streaming</category>
                  <category domain="http://www.sixapart.com/ns/types#tag">video</category>
        
         <pubDate>Mon, 17 Dec 2007 10:26:52 -0500</pubDate>
		 
      </item>
            <item>
         <title>Actionscript 3.0 - First Impression</title>
         <description><![CDATA[<p>Honestly, my first impression was - <strong>WTF</strong>? Actionscript 3.0 is quite a departure from 2.0. There are quite a few differences that will change the way you develop in Flash. I thought a good way to learn 3.0 was to take the simulation I did and recode it to meet 3.0 specs. I figured if I was going to give this away in San Diego, I might as well try to be current and give it a little longer shelf life. This was no easy task as I was to find out. </p>

<p>One big change in 3.0 is that there is no code permitted in buttons. All the code for controlling buttons is written into the actions layer of the timeline. Although it's quite a different way of working and requires more code, the one good thing I can say about this rule is that you don't have to keep opening buttons to see what the code is and where to change it. It's all there in the timeline. The bad part also is that ... it's all there in the timeline. At least opening the button you know what code goes with the button.</p>

<p>Another thing is that buttons don't automatically understand that they need to do something when they're clicked on. You have to tell Flash to listen specifically for when a button is clicked. In AS 2.0, I could click open the Actions panel for a Submit button and type in:</p>

<p>on (release) {   play();  }</p>

<p>In AS 3.0 I have to open the Actions panel for a frame in the timeline and first create an event listener object like this:</p>

<p>submitBtn_mc.addEventListener(MouseEvent.CLICK, submitAnswer);</p>

<p>Then I need to write a function that will be carried out when it's clicked on:</p>

<p>function submitAnswer(event:MouseEvent):void<br />
{	<br />
	play();<br />
}</p>

<p> In my simulation, however, it wasn't as simple as making the timeline play. I needed it to check which radio button was selected, update the counter, and then play so it would have to reload the data in the Flash movie. So here's what my Submit button does when you click on it:</p>

<p>submitBtn_mc.addEventListener(MouseEvent.CLICK, submitAnswer);</p>

<p>function submitAnswer(event:MouseEvent):void<br />
{	<br />
	photo.removeChildAt(0);<br />
	<br />
	if (button1.selected == true) {<br />
		counter = destination1;<br />
		play();<br />
	} else if (button2.selected == true) {<br />
		counter = destination2;<br />
		play();<br />
    } else if (button1.selected == false && button2.visible == false) {<br />
		counter = destination1;<br />
		play();<br />
	}<br />
}</p>

<p>Note the phrase in the above code that says:</p>

<p>photo.removeChildAt(0);</p>

<p>I had to add this because if I didn't, when I loaded a JPEG image into Flash, it would always stay there and not get replaced when a new one is put there to replace it. The new one would just go on top of it on another level. The code says to remove the child of "photo" (the name of my movieclip that I add the jpeg to) that resides at level 0. This would not have been necessary in AS 2.0, however, it looks like there may be more options if you can load more than one image into a movieclip on different levels.</p>

<p>Another whacky thing that really gave me a <strong>WTF Moment</strong> was that I could not easily change the font size and color of the text next to my radio buttons. The components in AS 3.0 are different than AS 2.0. I can no longer just change a few parameters for my component in the Component Inspector. To change the size, font, and color, I have to write some special code like this:</p>

<p>var tf:TextFormat = new TextFormat();<br />
tf.color = 0xFFFFFF;<br />
tf.font = "Arial";<br />
tf.size = 14;<br />
button1.setStyle("textFormat",tf);<br />
button2.setStyle("textFormat",button1.getStyle("textFormat"));</p>

<p>That's real intuitive, is it not?</p>

<p>And here is the code I had to use to load the jpeg into a movieclip:</p>

<p>var request:URLRequest = new URLRequest(imageArray[counter]);<br />
var loader:Loader = new Loader();<br />
loader.load(request);<br />
photo.addChild(loader);</p>

<p>No more simple loadMovie() commands. </p>

<p>One thing I do like in AS 3.0, however, is that to make a button invisible, you no longer need the underscore in front of "visible". It's just:</p>

<p>submitBtn.visible = false;</p>

<p>I did manage to get the whole simulation working in AS 3.0, but it took me a lot longer than I had ever anticipated. It also took a few bulletin board posts and some nice people to help me figure out <strong>WTF</strong> I was doing. </p>]]></description>
         <link>http://www.personal.psu.edu/pzb4/blogs/all_your_base/2007/12/actionscript_30_first_impressi.html</link>
         <guid>http://www.personal.psu.edu/pzb4/blogs/all_your_base/2007/12/actionscript_30_first_impressi.html</guid>
        
                  <category domain="http://www.sixapart.com/ns/types#tag">Actionscript 2.0</category>
                  <category domain="http://www.sixapart.com/ns/types#tag">Actionscript 3.0</category>
                  <category domain="http://www.sixapart.com/ns/types#tag">Flash</category>
                  <category domain="http://www.sixapart.com/ns/types#tag">simulation</category>
        
         <pubDate>Fri, 14 Dec 2007 22:24:29 -0500</pubDate>
		 
      </item>
            <item>
         <title>&quot;Centre County Marching Band Festival&quot; - Flash site created by my son</title>
         <description><![CDATA[<p>My son, Max, a senior at Bald Eagle Area High School, has been learning Flash on his own. For his FBLA (Future Business Leaders of America) project, he wanted to do a website on the Centre County Marching Band Festival of which he participated as a member of the BEA Marching Band (he's the trumpet section leader this year). As promised in my previous blog post, here is the link to his site. I put it up in my personal space temporarily until the high school puts it up on their server.</p>

<p><a href="http://www.personal.psu.edu/pzb4/max/ccmbfsite.swf">http://www.personal.psu.edu/pzb4/max/ccmbfsite.swf</a></p>

<p>He designed and animated the site entirely on his own. I only showed him how to code his link buttons properly and how to import the video clips into Flash. Not bad for a rookie, no?</p>]]></description>
         <link>http://www.personal.psu.edu/pzb4/blogs/all_your_base/2007/12/centre_county_marching_band_fe.html</link>
         <guid>http://www.personal.psu.edu/pzb4/blogs/all_your_base/2007/12/centre_county_marching_band_fe.html</guid>
        
        
         <pubDate>Sun, 02 Dec 2007 17:52:19 -0500</pubDate>
		 
      </item>
            <item>
         <title>The kick is down(?) and it&apos;s....good!</title>
         <description><![CDATA[<p>My two sons (age 15 and 11) were playing Madden football. One was kicking a field goal, the other was playing defense. They were pretty amazed at this play, so they captured the replay. The center hikes the ball and it hits the defender's leg as he attempts to block the kick. The defender falls on the ball, but if you look closely at the referee, he signals that the kick is good. The ball actually goes up through the uprights even though the kicker is nowhere near it when he kicks. So, this is either a glitch in the game, or one of the game developers is just a major Jason Elam (the kicker) fan. Watch the video...<br />
<a href="http://www.youtube.com/watch?v=sZl38fDmUes&feature=RecentlyWatched&page=1&t=t&f=b">http://www.youtube.com/watch?v=sZl38fDmUes&feature=RecentlyWatched&page=1&t=t&f=b</a></p>

<p>The other neat thing about this is that my kids were able to figure out how to shoot a video using our digital still camera and upload it to YouTube on their own. I was pretty shocked. </p>

<p>My 17 year old is working on a Flash website for FBLA at his high school. It's a website that shows the Centre County Band Festival (he's in the Bald Eagle Area marching band).  I'll post a link when he gets it done. I was really amazed at what he can already do with Flash. I showed him a few things, but he figured out the rest. Here is his Chickenzilla video he made in Flash (I've shared it with some of you already):<br />
<a href="http://www.youtube.com/watch?v=mNzXX6MpYL8">http://www.youtube.com/watch?v=mNzXX6MpYL8</a><br />
He worked on it all summer. He had a bunch of his friends over to help him record sound effects. It sounded really weird not knowing what the video was about while they were recording (he used Audacity). I was pretty impressed with what he was able to learn on his own. I'll post the link to the FBLA site soon. He has to have it done by next week, but it already looks pretty good for a rookie. </p>

<p>The children of the digital age I guess. Better add a few more computer workstations to the Digital Commons</p>]]></description>
         <link>http://www.personal.psu.edu/pzb4/blogs/all_your_base/2007/11/the_kick_is_down_and_itsgood_1.html</link>
         <guid>http://www.personal.psu.edu/pzb4/blogs/all_your_base/2007/11/the_kick_is_down_and_itsgood_1.html</guid>
        
                  <category domain="http://www.sixapart.com/ns/types#tag">Digital Commons</category>
                  <category domain="http://www.sixapart.com/ns/types#tag">Flash</category>
                  <category domain="http://www.sixapart.com/ns/types#tag">game development</category>
                  <category domain="http://www.sixapart.com/ns/types#tag">k-12</category>
                  <category domain="http://www.sixapart.com/ns/types#tag">video</category>
        
         <pubDate>Tue, 27 Nov 2007 19:37:16 -0500</pubDate>
		 
      </item>
            <item>
         <title>Test of h.264 Video Playing in Flash Player via Blog Space</title>
         <description><![CDATA[<p>This is going to be a test of whether or not we can possibly use blog space to do some flash video a la YouTube. I had to manually place some javascript code in this blog post (via SFTP transfer) to embed the FlowPlayer in my blog page. I have a folder called "video" in my blog folder now that I can upload to by clicking the Upload File button in my blog interface, then selecting  Set Upload Path. From there I choose <Site Root> and put "video" in the field next to it. I can then either make a post around that file or get the HTML to put it into my blog post.</p>

<p>BTW, to view the video, you would need to download the beta Flash 9 plugin that supports h.264, called "MovieStar". You can get that here:<br />
http://labs.adobe.com/technologies/flashplayer9/<br />
Note that it requires that you uninstall previous versions of the Flash player (see instructions on that page).</p>

<p><br />
</p>]]></description>
         <link>http://www.personal.psu.edu/pzb4/blogs/all_your_base/2007/11/test_of_h264_video_playing_in.html</link>
         <guid>http://www.personal.psu.edu/pzb4/blogs/all_your_base/2007/11/test_of_h264_video_playing_in.html</guid>
        
        
         <pubDate>Thu, 08 Nov 2007 10:50:35 -0500</pubDate>
		 
      </item>
            <item>
         <title>Update on the Simulation project and the Sports Museum Kiosk</title>
         <description><![CDATA[<p>I haven't posted for a while, mostly because I just hadn't had that much to say, but have also been busy with other things. </p>

<p>I blew the dust off the actionscript I'd written for the anesthesiology simulation with the idea of simplifying it and adding a couple of things. I don't remember if I mentioned before that I will be putting together a hands-on workshop for the 8th Annual International Meeting on Simulation in Healthcare in San Diego this coming  January. Sounds pretty hoity-toity. I'll basically be showing people the technical end of how I put this simulation together and how they can use the same template to create other simulations in the healthcare field. And who knows, maybe some rich southern-California company will offer me a job with a huge raise to create such apps for them. And maybe monkeys will fly out of my butt, too.</p>

<p>Anyway, back to the sim. What I wanted to do in this version was to simplify wherever I can. So, I decided to drop using XPath, as cool and as hip as it is, because I was afraid that people would forget to use the data binding part of it and would be frustrated that their code is right but that it doesn't work for them. So I used my more recently acquired understanding of XML to pull in the data and parse it. Once I homed in on the correct path to the data I needed, it was simply a matter of changing one number to get the data for each different field from the database and push it all into their respective arrays. Here is what the code now looks like:</p>

<p><br />
sims_xml.load('xml/sim.xml');<br />
	function processXML(xmlDoc_xml) {</p>

<p>// first we start a loop to get all the data from each field from each record</p>

<p>for (var n = 0; n&lt;xmlDoc_xml.firstChild.childNodes[4].childNodes.length; n++) {</p>

<p>// each array corresponds to a field in each record			<br />
// the first one is the scene number<br />
			 numberArray.push(xmlDoc_xml.firstChild.childNodes[4].childNodes[n].childNodes[0].firstChild.firstChild);<br />
              // then comes the title of the scene<br />
			 titleArray.push(xmlDoc_xml.firstChild.childNodes[4].childNodes[n].childNodes[1].firstChild.firstChild);<br />
              // this is the photo associated with each scene<br />
			 imageArray.push(xmlDoc_xml.firstChild.childNodes[4].childNodes[n].childNodes[2].firstChild.firstChild);<br />
              // this is the description of what going on in the scene<br />
			 descriptionArray.push(xmlDoc_xml.firstChild.childNodes[4].childNodes[n].childNodes[3].firstChild.firstChild);<br />
             // this is the question that is posed to the user<br />
			 questionArray.push(xmlDoc_xml.firstChild.childNodes[4].childNodes[n].childNodes[4].firstChild.firstChild);<br />
             // the next 4 things are the possible choices<br />
			 choice1Array.push(xmlDoc_xml.firstChild.childNodes[4].childNodes[n].childNodes[5].firstChild.firstChild);<br />
			 choice2Array.push(xmlDoc_xml.firstChild.childNodes[4].childNodes[n].childNodes[6].firstChild.firstChild);<br />
			 choice3Array.push(xmlDoc_xml.firstChild.childNodes[4].childNodes[n].childNodes[7].firstChild.firstChild);<br />
			 choice4Array.push(xmlDoc_xml.firstChild.childNodes[4].childNodes[n].childNodes[8].firstChild.firstChild);<br />
            // the next 4 tell the simulation which scene to go to if that choice is picked<br />
			 choice1DestinationArray.push(xmlDoc_xml.firstChild.childNodes[4].childNodes[n].childNodes[9].firstChild.firstChild);<br />
			 choice2DestinationArray.push(xmlDoc_xml.firstChild.childNodes[4].childNodes[n].childNodes[10].firstChild.firstChild);<br />
			 choice3DestinationArray.push(xmlDoc_xml.firstChild.childNodes[4].childNodes[n].childNodes[11].firstChild.firstChild);<br />
			 choice4DestinationArray.push(xmlDoc_xml.firstChild.childNodes[4].childNodes[n].childNodes[12].firstChild.firstChild);<br />
                    // this is the background image for the simulation (could be different rooms, for example)<br />
			 backgroundArray.push(xmlDoc_xml.firstChild.childNodes[4].childNodes[n].childNodes[13].firstChild.firstChild);<br />
			<br />
			 }<br />
}</p>

<p>sim_xml.load('sim.xml');</p>

<p><br />
Ok I see your eyes glazing over. The important thing about the above code is this - once I got the code right for one data field, if you look closely, each one thereafter was one number more (look at the last number in brackets for each line). Also note that they must be in the order that they appear in the XML file, so if you decide to add a field in the database, it's best to export it with that field at the end or it will hose the code.</p>

<p>The reason I mentioned the Sport Museum Kiosk was that what I learned in that project I'm also applying here in the sim. The kiosk has been used by the general public now all football season. The one problem we had with it was that occasionally it would act completely weird. Data would get confused with other data and the scrolling list of names would suddenly scroll to the end without even touching it. I was unable to duplicate this problem on my Mac. Worked perfectly every time. What I eventually came to figure out was that the interface was offering links to data that had not fully loaded yet. So, what I had to do was move the display of the links back a frame from where the XML is loaded, then tell it specifically to go to the next frame once all the data is loaded. So far so good. No more complaints. I think I have this problem licked. I'm employing the same strategy with the simulation. Make sure the gun is loaded before you try to fire it.</p>

<p>In a separate version of the simulation from what I'm doing for the workshop, I'll add some features like having a timer and a default scene for the sim to go to if someone takes too long to decide. Another feature is what we might call a dice. By that I mean that if the chances are 80% that something should happen, the Flash simulation should do something else 20% of the time. I haven't fully worked this part out, but I think I have an idea how I'm going to do it. It may involve another field for a time limit and one for the default scene to go to if they don't choose quickly enough. </p>

<p>As far as the 20% of the time idea goes, I'm not so sure how to implement this yet. If you had four different choices, you might have 4 different alternate outcomes other than the one that it would go to 80% of the time. Or perhaps there are only two real results, I don't know. It may depend on what the choices are. We will have to discuss this further, and it definitely won't be something we implement for the workshop in San Diego.</p>

<p>Well, that's all for now. I already wrote a lot more than I'd planned to write.<br />
</p>]]></description>
         <link>http://www.personal.psu.edu/pzb4/blogs/all_your_base/2007/10/update_on_the_simulation_proje.html</link>
         <guid>http://www.personal.psu.edu/pzb4/blogs/all_your_base/2007/10/update_on_the_simulation_proje.html</guid>
        
                  <category domain="http://www.sixapart.com/ns/types#tag">database</category>
                  <category domain="http://www.sixapart.com/ns/types#tag">filemaker pro</category>
                  <category domain="http://www.sixapart.com/ns/types#tag">Flash</category>
                  <category domain="http://www.sixapart.com/ns/types#tag">gaming</category>
                  <category domain="http://www.sixapart.com/ns/types#tag">multimedia</category>
                  <category domain="http://www.sixapart.com/ns/types#tag">simulation</category>
                  <category domain="http://www.sixapart.com/ns/types#tag">xml</category>
        
         <pubDate>Wed, 31 Oct 2007 14:26:07 -0500</pubDate>
		 
      </item>
            <item>
         <title>Adobe Max 2007 Conference - Day 3</title>
         <description><![CDATA[<p><strong>XML 101<br />
Robi Sen, Senior Partner at Twin Technologies</strong><br />
Spry is Adobe's open source Ajax framework. Not a presentation language. Just a way of formatting text. XML is easy to read by a computer and easy to read by a human. Why use it? Clear separation of data, meta data, and presentation, W3 recommendation, easy to read and understand, easy to extend, great tool support, used by many applications and platforms. When to use it? For a common way of sharing data, storing data (but not a database) as a flat file, RSS, ATOM, XHTML, WML, Abstraction layer. Don't use it when you need to operate in a low bandwidth environment, when you need fast or high performance, when you are dealing with data that should be in a relational database, when XML's various benefits are not actually requirements for your project. Has root and child tags. Showed examples of XHTML and RSS. XHTML is a standardized form of HTML that is very strict in order to play well with all browsers. Showed how he uses Cold Fusion to save data as XML. Talked about XML nodes and tags. Everything is a node. Attributes are children of nodes that are simple properties of that node (name, phone, width, class, etc.). Generally don't need to comment since it's pretty readable as is, but comments are done like standard HTML comments. All nodes must be closed, it should have a single root node, should be properly nested (<p><a>...</a></p>), tags and attributes are case sensitive, attributes have to be quotes. Need to escape certain data. Can use for email:   <email><![CDATA[brian@dum.com]]</email>. A namespace is a unique identifier. Points to a url where the namespace is defined. So if 2 docs have the same idenditifer, it will know which definition to use. XML Schema vs. DTD. DTD is the old way of doing things. XML Schema is the new way. Should use schemas instead. Can use Dreamweaver to validate XML. It does not have very good support for schemas and DTDs, however. XSLT is a stylesheet language. "CSS on steroids". Can translate docs from one format to another (xml to pdf). XPath is a language for querying XML. </p>

<p><br />
<strong>Introduction to Flex<br />
Tom Ortega, Flex Developer, Workday, Inc.</strong><br />
silvafug.org has breeze tutorials on Flex. Uses Flex Builder as an IDE. Flex is component oriented. Uses AS3. States are different page layouts, effects, transitions between states (fades, pushes, etc.). Components - can be skinned to give your application a new look. Flex Builder is a complete IDE with debugger. First, start a new project and specify how you want your application to access data. Basic mxml file is created automatically. Can switch between Source (code) and Design (interface) by clicking a button. You can drag and drop coponents onto the blank interface. Double-click to edit component attributes. Changing "lyout=verticl'" will automatically apply layout defaults to the interface. Buttos and label tags are nested in the mxml code. He demostrated creating a olgin form for an app. Added a Submit button and a cluck function for it. He then created a function in a CDtat tag. <br />
<!CDTATA[<br />
	public function changelabel():void;<br />
	{<br />
		formlabel.text = username.test;		<br />
	}<br />
]]&gt;</p>

<p>Although this presenter didn't do a very good job of presenting, I think I got enough out of this to get started with Flex.</p>

<p><br />
<strong>How to Shoot, Edit, Encode, and Author Video for the Web</strong><br />
Shooting - 3CCDs is better. Use HD if you really need to get detail, like in close-up shots of a flower, for example. Onboard mic is only good for about 5-10 feet from the camera. Next best thing is a shotgun mic, which can be aimed at the speaker, or use wireless mic or handheld. Use a tripod for steady shots. Fluid head has smooth operation for pans and tilts. Keep backgrounds simple to not only keep the subject the primary focus, but it will also render better for the web if the background is less complicated. White balance manually to get proper skin tones. Aim the camera at a white card and manually adjust the white balance on the camera after zooming in to the card. Properly expose your subject with lighting so as to not lose information either in the lights or darks, which could be unrecoverable. A Neutral Density (ND) filter will block out light when the light is too great. Adobe OnLoaction - PC app that helps you with lighting in the field. Key light is main light, fill light brings up detail opposite of the key light. Light background separately. Don't break the 180 degree rule. Do not shoot 2 subjects where they appear on the same side of the scrreen.  Use balanced audio cables (most XLR cables are balanced) to avoid noise. Keep sound level out of the red zone on the VU meters. Record 2 channels - 1 normal and one low, so if someone ends up shouting, you can switch to the lower level. <br />
Encoding - avoid long transitions and fades. They don't compress well. Break up the video to make it more user friendly. They only download what they need to see. Captions - more accurate at encoding time instead of relying on actionscript which may not hit a keyframe at the proper time. You should de-interlace after editing or while encoding to preserve detail. Should try to shoot in progressive mode to begin with. Keep an ear for interactive sound bites that might be useful later. MovieStar will support h.264 and AAC audio. Will scale much better across many mediums. Talked about general encoding options, which were pretty much review for me. Captions are now supported via XML file in Flash video via FLVPLaybackCaptioning and FLVPlayback components in tandem. The XML file is linked externally to the FLVPlaybackCaptioning component just as the FLVPlaybackComponent is linked to the external FLV file. You must use a Flash document that is based on Actionscript 3.0 to use these components. Once compiled, the captions play below the Flash movie. </p>

<p><strong>Building Applications using Actionscript 3.0 for Air<br />
Grant Skinner, Chief Architect/CEO gskinner.com</strong><br />
Cross-plaform deployment via ".air" file or through "badge install". Leverages your experience with HTML, Javascript, AJAX, MXML, and Actionscript 3.0. Script bridging allows you to bridge the gap between actionscript and javascript. Free download of AIR tools. Air is based on Central 2.0, which was a miserable failure for Macromedia. They're not making the same mistakes with AIR. There is full access to the file system (no sand box), no shared interface, applications appear as standard applications to the user. and a much more robust API. AIR is NOT a robust desktop programming environment (yet). Slim subset of APIs to work with, it's not extensible via libraries. Many online services are migrating to the desktop using AIR. Casual gaming is becoming popular as well. Installations and kiosks are also a good use of AIR. The support market can also benefit from AIR. New components and libraries could be more easily distributed. Showed some examples of new AIR apps: DiggTop (sharing top news stories), gTimer (synching timetracking data).BuzzWord (document handling), RichFLV (displays que points and keyframes of Flash videos). AIR can create apps that have a clear window so it looks like they're on your Desktop. <br />
To start using AIR:<br />
Download and install the Flash CS3 update for AIR, create a new FLA and set the publish settings to Adobe Air 1.0. The AIR API consists of a new set of libraries for actionscript 3.0. Used Air Application and Installer Settings to make the window transparent. ID should be your domain name. Set the Window Style to Custom Chrome (transparent). He went through some of the code for an app he was building. Showed how it could interact with the screen properties, how to do a drag/drop event, how to check the content type of a flle that is dragged, so you know whether or not to accept the drop or not. Showed that he could get it to create a new file on the user's computer from a file dropped on the interface.<br />
</p>]]></description>
         <link>http://www.personal.psu.edu/pzb4/blogs/all_your_base/2007/10/adobe_max_2007_conference_day_1.html</link>
         <guid>http://www.personal.psu.edu/pzb4/blogs/all_your_base/2007/10/adobe_max_2007_conference_day_1.html</guid>
        
                  <category domain="http://www.sixapart.com/ns/types#tag">max07</category>
        
         <pubDate>Wed, 03 Oct 2007 16:24:28 -0500</pubDate>
		 
      </item>
            <item>
         <title>Adobe Max 2007 Conference - Day 2</title>
         <description><![CDATA[<p><strong>Character Animation with Flash CS3<br />
Sandro Corsaro, Creative Direcotr for Disney Online </strong></p>

<p><br />
Gave a brief history of animation. Showed Muybridge and talked about persistence of vision. Showed example of animation and exaggeration. Talked about how Hanna-Barbara revolutionized animation. In 1940 a 6 min Warner Brothers cartoon cost $50k. They did a 21 minute animation called Ruff N Reddy for $2800 using "limited animation", which was the concept of keeping the head and body parts separate so that they did not have to be redrawn. Showed 1955 Nash commercial featuring Mickey Mouse (on YouTube). </p>

<p>Created an animation live using "stretch and squash". Draws on the canvas, then pulls points until he likes what he has. Adds features by drawing in a different color, deleting lines underneath that are not needed, then making the color black like the rest of the outline. Duplicated the contour of the face in another color, filled with a lighter color, then moved it to create a highlight and shadow. Separated body, eyes, and head as graphic symbols. Used "flinching" to add to character movement. So, the head would not just move left to right, but would pop up and down slightly while doing so. Used onion skins to create a front view of the character for a smoother change from left to right. Added blur lines to the front view that really helped sell the movement. Said he bought a TIVO and kept slowing down cartoons to see how they did movement. Showed us an animation of a crab (Flash's first mascot) and how it was created. All eye and mouth movements are in one graphic symbol and he jumps to different frames of that symbol to invoke that particular eye movement. Uses Single Frame First 32 in properties to call that individual movement. Important concept is that he uses graphic symbols instead of movie symbols to nest animations. Showed us a show reel that included some video with animation mixed over it (like Roger Rabbit) and told how he pulled it off. Reuses as much animation as possible. </p>

<p><strong>General Session</strong></p>

<p>Bruce Chizen - CEO of Adobe<br />
Feels weird about being a CEO and the pitfalls of being in such of a position, but discussed why it's all worth it to him. Said he got backstage passes saturday night to the Dave Mathews Band and said that they couldn't stop talking about the new Adobe products that the band can't wait to use. Then he headed out to this conference and it dawned on him that 4000 people were paying to come here and that he was just amazed with what people create with Adobe products. His objective was to inspire us, but he is instead inspired but what we do as users.</p>

<p>Steven Webster, Adobe Consulting<br />
Enterprise Applications<br />
A rich internet application experience is dependent upon what goes on at both front and back sides of the glass. Showed MFG.com - Uses Flex to manage data in real time for world buyers and suppliers bidding on RFQs. LiveCycle ES, built on Flex can manage data services, forms, rights management, digital signatures, process management, output, reader extensions, and barcoded forms. They can take a paper form and turn it into a rich internet application. Once a supplier is awarded a contract, the other bidders can no longer view documents that have to do with that contract. </p>

<p>Doug Mack<br />
Scene 7, an Adobe Company<br />
Leading "on demand" rich media publishing services. Enables creation of enhanced website experiences.  Dynamically rendered "single master image". Gucci.com - all images are dynamically delivered. Very elegant display of images and closeups rendered on demand. RDV - designing a football uniform that is rendered live on the website. Can render an uploaded logo onto a uniform in real time with perfect photo-realism. QVC has a desktop Air app that allows you to browse products while watching live video feeds. </p>

<p><br />
SHAREbeta<br />
Free gigabyte of storage for people to share files. Can select access level and can keep track of who you shared files with before. Can embed files in blogs and automatically creates thumbnails on the sharing interface. </p>

<p><br />
Danielle Diebler<br />
Pacifica, new Adobe product<br />
High quality voice for Adobe Flex and Air developers. </p>

<p>Nigel Pegg<br />
CoCoMo<br />
Adobe Acrobat Connect - New version built on new client/server architecture code named CoCoMo. It is now based on Flex. Real-time data messaging, real-time AV streaming, user identity presence & permissions, realtime publishing and collaboration. Showed some code that should be easy for developers to include real-time video in their rich web applications. Shared whiteboard is a component that can easily be added as well.</p>

<p>Mark Anders, Steven Heintz<br />
Thermo - RIA Design Tool<br />
Makes it easier for designers to build rich internet applications. Helps them wire in interactivity without writing any code. Has a seamless workflow for developers working with Flex Builder. On a blank canvas, he dragged a rectangle and changed properties such as the color. It automatically wrote some MXML tags to represent what was drawn. Pulled up a static comp in Photoshop. In Thermo, he started a new application and imported the PSD file, preserving all properties of the PSD file. It again automatically wrote the MXML code for the layout. Using the layout as a background, he selected the text and created a text input control by right-clicking it and selecting text input control from a dropdown menu. It retains the same font and style as the PSD file. Selected a row of album cover thumbnails and converted the row into a list of albums. Clicked on one album cover and set behaviors for rollover that includes transitions. Made the rollover state larger just by dragging the icon larger. Added artist name and album name to the rollover state. Transition was a tween between normal and larger state on rollover using a timeline to control speed of the transition (just like flash). Set the album and artist text fields to be dynamic. Created a scrollbar from a graphic of a rectangle by selecting it from a dropdown, then wiring it to the album list visually by making a line to it. No coding was involved at all in creating the interface. Everything is done automatically. This was a very impressive demonstration. Basically, an artist can create a live application from a Photoshop file.</p>

<p>Flash Media Server 3 will be released in 2008 as well as Adobe Media Player.</p>

<p><strong>Introduction to Actionscript 3.0<br />
Chris Florio, Professor of Interactive Media at the New England Institute of Art.</strong><br />
This was a hands-on session, but we mostly observed. There are about 10 different concepts that need to be mastered to know Actionscript 3.0. Actionscript 3.0 differs from the previous versions in that none of the code may go into individual symbols like buttons. All code must be entered into keyframes. AS3 is not compatible with code written in AS3, so there could be some interoperability issues. Even though AS3 is more verbose, the typical user will pick it up quickly once they get the hang of how buttons are implemented via event listeners. Most end up liking AS3 better. It is more consistent in that in AS2, there could be many different ways of doing the same thing, whereas in AS3 there is usually one correct way. It is more like a regular programming language now and is much faster at runtime. This was a good overview of what changes have taken place in AS3 and a good primer on getting up to speed quickly. </p>

<p><strong>Branding and Protecting Flash Enabled Video<br />
Robert Reinhardt, VP Multimedia Platforms Group, Schematic</strong><br />
Not much they can do until Flash Media Server 3 comes out yet as far as protecting videos. Talked about why Flash is a desired platform for video: ubiquity, player dominance, express install and autoupdate, player SDK availability, cross-platform reliability, high quality visual experience, collaborative environments. Showed different sites - ABC.com full episode player and Nicelodeon.com video, and how they can adapt the Flash player to fit their desired audience. Also showed ShopVogueTV, which was built on a Flex framework that doesn't look like a typical Flex site. For people who like to watch the ads and shop for products related to them. New AVC/H.264 codec will have superior image quality and compression. Available in Flash Player 9 update 3. Compared the two codecs, Spark and VP6. VP6 is more desireable because it can deliver higher quality at a lower bit rate. Spark would have to be used to make video backwards compatible with earlier versions of Flash. Turning Smoothing on for playback will result in nicer video, however, some pre-Intel Macs may bog down with it. Not many people know about this playback option (it is not a compression option). http://blogs.flashsupport.com has an interactive video bitrate calculator in the form of a wizard. Video codecs such as On2 VP6 and Sorenson Spark perform better when the frame width and height use multiples of 16. While you can use any width and height in your encoding settings, non-optimal dimensions can result in poor image quality and reduced frame rate. For the best image quality and playback, you should always use width and height dimensions that use a multiple of 4 (good), 8 (better), or 16 (best). Showed a few examples of things from  his book including a video class for AS3. Showed an example of captioning component FLVPlaybackCaptioning available for AS3 that can turn captions on and off. Showed how nicely the captions scaled when displayed full screen on the projectors screen. Made a customer skin that hid the playback controls to make the user watch an ad before the video. Used code to completely control the display of the video. Can cue up a bunch of instances of videos for the same FLV playback component.</p>]]></description>
         <link>http://www.personal.psu.edu/pzb4/blogs/all_your_base/2007/10/adobe_max_2007_conference_day.html</link>
         <guid>http://www.personal.psu.edu/pzb4/blogs/all_your_base/2007/10/adobe_max_2007_conference_day.html</guid>
        
                  <category domain="http://www.sixapart.com/ns/types#tag">max07</category>
        
         <pubDate>Tue, 02 Oct 2007 17:11:10 -0500</pubDate>
		 
      </item>
            <item>
         <title>Adobe Max 2007 Conference - Day 1</title>
         <description><![CDATA[<p>I'm going to try and blog while I watch this presentation.  There's like 4000 people here in one room, very much like the Apple keynote at WWDC. The geeks are in frenzied anticipation. There is a triple screen in the front of the room and music is blaring to the animated slides.</p>

<p><strong>Shantanu Narayen, president and CEO of Adobe</strong>:</p>

<p>How do we engage our audience? Make customer the focus of what we do. Great digital experiences are the exception, not the rule. Lessons learned on user focus:</p>

<p>1. Content is king - interface is often a barrier to to the content. Think about the content first and make interaction flow around it.</p>

<p>2. Make it personal - s/w should provide what the user wants when they want it. Phone demo. Designed for middle aged person, TV-based  interface design. Phone interface design for teenager - multimedia, video, fun oriented. Adapt the user interface to the target audience.</p>

<p>3. Less is (still) More - We are in a constant state of information overload. Focus on the heart of the problem and make the user experience simple. Showed demo of Premiere Express - very much like iMovie - drag and drop interface, simplified timeline, add captions, borders, transitions. </p>

<p>4. Movement has Meaning - cinematic affects and transitions can help the user experience. Adobe Media Player - Glide UI - helps your navigation by directing what your eyes see via movement. </p>

<p>5. Create an Experience, Not a UI - California bike race website - shows video of race and overhead view of GPS location of bikers during the race, chat built into the site, mulitple media engagement.</p>

<p><strong>Kevin Lynch:</strong><br />
Applications <br />
Video - Flash is now the #1 video player around the world. Will now support h.264 (embedded into the player). Will be easier to deliver video to multiple platforms. Moviestar - HD video up to 1080p delivered over the internet, multicore cpu boost, Example - Halo 3 - used flash player for interactive experience even though it's a Microsoft site. You'd think they would use Windows Media.<br />
Adobe Media Player- collect and watch videos - catalog of video feeds via rss. Can connect ads to videos to monetize them. Now available.<br />
FlashLite 3 - now available for creating content for mobile devices. </p>

<p>United Way website demo - used Adobe s/w to build their site. Cold Fusion 8 and Dreamweaver CS3 were used to enhance the site. After filling out a form, it creates a more user-centric experience. Pulls in local information, depending on how you answer the form, it may direct you to different pages. If you have children, it will direct you to a page that shows family volunteer opportunities in your area. Used Flex to dynamically generate jpeg images of volunteer tips. </p>

<p><strong>Rich Internet Applications</strong><br />
ScrapBlog (scrapbook blog) - drag and drop images, edit, rotate, create multiple pages. Can make thought balloons over people's pictures, Published directly to the web. </p>

<p>Adobe Air - to enable the creation of cross-platform desktop applications, includes an embedded SQL database, Customer Manager demo - sales rep field tool. Built on html and javascript. Uses web to do update a database of contacts. Can send info back to the live database. Written by one person in a couple of days. </p>

<p>Flex 3 - New features: Flex Profiler, Language Intelligence, Advanced Data Visualization Comps, Flex Framework Caching. Profiler - graphs memory useage over time, detailed view of all objects in memory, shows all methods and the time it is taking to run them. Helps to debug applications. Data visualization gives quick at-a-glance charts of application information. Framework caching - downloads application framework once, never has to again.</p>

<p>Air Developer Derby - Finalists were Spaz.air, Ora Time Tracker, Agile Agenda, SearchCoders, Digimix. Winner was Agile Agenda, which is a project management app. ebay, AOL top 100 videos, SAP, PayPal, Philips, Disney Parks, QVC are all developing Air apps. Disney in partnership with Frog Design created an app that gives travel agents easy access to Disney's travel information. Synchs content from Disney servers. Customer management list for agents, Can embed video and rich media in trip quote. Can drag in custom content to be sent to the customer. Follow-up built in as well. <br />
Other examples:<br />
Tweeter, Snippage (make yoiur own widgets), Pronto (email/calendar app), Analytics Reporting Suite for Google Analytics. PayPal app, can drag and drop content between Air applications. SAP Briefing Book - most recent data, can do data modelling, Digimix (sound editing app) - can add tracks much like Garage Band<br />
WaveIM, Pounce, Nickelodeon app - can interact with web. <br />
Word Processing - Refrigerator magnets for desktop<br />
Buzzword - like GoogleDocs, but nicer looking. XML rendered real time, wraps text around pictures, tables, sharable. Adobe has acquired Buzzword.</p>

<p>Anthropologie - catalog app - amazing sorting capabilities, updates automatically. This could be the way catalogs are distributed in the future. They will update with new content via RSS automatically.</p>

<p>90% worldwide adoption of Flash 9.</p>

<p>Astro - codename for next Flash. Advanced text layout support. New layout engine supports bi-directional languages, text is now an extensible part of the platform. Native support for simple API for transofroming display objects in 3D space, full interactivity, high performance. Custom filters, blend modes and fills. Build your own effects. Hydra - new programming language Adobe is working on that allows you to create your own filters. Very close to Actionscript. </p>

<p><strong>Design Shootout </strong></p>

<p>3 designers showed some of their best techniques. One mapped a logo on a photo of a large builiding in Adobe After Effects, then created a 3D animated movie of the building turning slightly with moving video of sky behind. Another was in Photoshop where the designer added a surfboard to a photo and rotated it in 3D before pasting it. Another was filtering out a cell phone ring using Sound Booth CS3, which is aimed at audio editing for novice sound editors. Removes unwanted sounds like coughing, sneezing, HVAC, etc. Shows a color visualization of the sound wave. You can actually see the cell phone wave image in color. Uses Photoshop-like tools to select and edit out the offending sound. Can select and play only that sound. Can use Auto Heal (like healing brush in Photoshop) to resample the sound around the edited sound to fix it. CS3 includes new video components for Flash video (using Actionscript 3). Explained trigger points for captioning video. Can allow importing cuepoints (xml from Sound Booth). Showed a different way of displaying captions. Made text appear on a piece of cardboard that a guy in the video was holding. Another demo showed animating a 2d picture of a bird on a bicycle wheel. Selected bird and cut it and pasted it to a new layer. Fixed area where the bird was with clone tool. Puppet pin tool was used to choose where you want the object to pivot. He was able to animate the 2d image of the bird and make him start pecking the bike tire. It was very realistic and pretty amazing. </p>

<p><strong>Adobe CS3 Tools Overview</strong></p>

<p>Showed some of the highlights of each of the tools and some very amazing things that are now possible, like mapping a label on a soda can and manipulating the can in 3D. Dreamweaver is able to take a Photoshop design and easily create a web page out of it, incorporating elements of the design and preserving editability. Photoshop - showed how you can take two similar photos of a group of people and keeping the best parts of each photo into a combined photo by creating a mask and painting out the parts your don't want. Also showed creating a seamless panoramic photo created from a series of overlapping photos. You could not tell where the photos were joined. Very impressive. Showed new auto-selection tool and how Photoshop can now treat the original photo as a symbol, which will preserve it even though filters are applied. Makes it easy to undo or adjust filters later.</p>

<p><strong>Flash and After Effects</strong></p>

<p>Talked about 3D text, modifying animation presets, motion tracking, parenting, track mattes, markers, and FLV encoding via the render que. Also covered importing PSD files, importing video, basic actionscript, event cue points. Showed a bike race video with 3d text revolving around a rider. Showed interactive data of each rider. <br />
Started by importing video into After Effects and creating a new composition. Used animation presets to add 3d text effects. You can view previews of each preset in the Adobe Bridge. Selected text revolving in a circle. Adjusted the angle of rotation and entered the desired text. Then adjusted the circumference of the orbit. Used the motion tracker to attach a tracking point to the biker's helmet and linked the revolving text to that tracking point. Text now rotates around biker's helmet no matter where they go in the video. He then created a mask so that the text would appear to disappear behind the biker. Used parenting to link the mask to the revolving text. After Effects can do Flash cue points and FLV compression. Can batch render and render to different formats at the same time.</p>]]></description>
         <link>http://www.personal.psu.edu/pzb4/blogs/all_your_base/2007/10/adobe_max_conference_opening_s.html</link>
         <guid>http://www.personal.psu.edu/pzb4/blogs/all_your_base/2007/10/adobe_max_conference_opening_s.html</guid>
        
                  <category domain="http://www.sixapart.com/ns/types#tag">max07</category>
        
         <pubDate>Mon, 01 Oct 2007 10:29:26 -0500</pubDate>
		 
      </item>
            <item>
         <title>New Touch-screen Kiosk for PSU All-Sports Museum</title>
         <description><![CDATA[<p><img alt="museum.jpg" src="http://www.personal.psu.edu/pzb4/blogs/all_your_base/2007/08/30/museum.jpg" width="327" height="288" /><p><br />
I mentioned it in a previous blog post that I was working on a touch-screen kiosk that the PSU All-Sports Museum needed. Today the museum installed the kiosk for the public to view. It is located prominently just inside the main entrance to the right of the reception desk.</p>

<p>The museum directors wanted a new kiosk to honor all the media (print, TV, and radio) personnel who have covered PSU sports over the years. Originally, WinMill Software created their other kiosks for each sport. They were done really well, and they wanted to keep this look consistent with their new kiosk. This one, however, would be a bit different. They had ordered a large LCD monitor (much like what we have in the hallway in Rider II) that they wanted to display videos on. </p>

<p>The problem with what WinMill did for them was that they never gave the museum the original Flash (FLA) files if they wanted to make changes or create a new one. So I had to reverse engineer the same functionality into the new one. They had also used many text files that would load the info for each person dynamically. I got to looking at all the files and thought "oh, man, this is a nightmare!" I think he said they had something like 2700 text files they were using for the existing kiosks. No way was I going to deal with a bunch of separate text files.</p>

<p>This was about the time I learned how to use XML and FileMaker Pro to work with Flash. I was able to create a database in FileMaker that could combine all the records for this kiosk into one file. Currently there are over 300 records in the FileMaker DB and each record has 30 entries (first name, last name, whether they were print, radio, TV, or a combination these, their bio, photograph, any videos associated with them, etc.). My experience with this project really helped me figure out what to do with Leonard Pott's simulation. </p>

<p>Some of the challenges I had were to get good quality Flash video for the samples. I used what I typically use, but it just didn't look very good on the large LCD monitor. I ended up bumping up the data rate to 2400 kbits/sec and putting a keyframe every 6 frames. Typically for streaming we recommend a key frame every 5 seconds. At 30 frames per second I was putting one every 1/5 of a second. But the quality looks really nice now and their computer handles it well. </p>

<p><img alt="museum2.jpg" src="http://www.personal.psu.edu/pzb4/blogs/all_your_base/2007/08/30/museum2.jpg" width="357" height="238" /></p>

<p>Another challenge was that not everyone has a video associated with them and the ones that did might have anywhere from 1 to 10 videos. Nothing was really standard, so my scripting had to be flexible enough to allow for it. Also, the people's photos varied in width and I had to put the buttons 15 pixels to the right of them. So I had to dynamically place the right number of buttons and also place them to the right of the image depending on how wide it was. </p>

<p><img alt="museum4.jpg" src="http://www.personal.psu.edu/pzb4/blogs/all_your_base/2007/08/30/museum4.jpg" width="400" height="300" /></p>

<p><br />
Still another problem was that the computer had 2 monitors and I had some code that makes the Flash module go full screen, but it only works properly for one monitor. So although my Flash animation was 1600 pixels wide, when it went into full screen mode it was getting squashed into 800 pixels. So it meant that I had to manually adjust the Flash player to fill the screen. Not a good idea to have to do every time you restart the computer. </p>

<p>The answer to the monitor problem was to only use a one monitor setup and set the resolution to 1600 wide by 600 high. Then I was able to use the code: </p>

<p>getURL("FSCommand:fullscreen","true");<br />
getURL("FSCommand:showmenu","false");</p>

<p>to make the Flash fill the screens. We were looking into a h/w device called DualHead2Go by Matrox. They make something that takes input to one monitor and stretches is across 2 or 3 monitors. Really a great way to play Halo, to be sure. But, it ended up that we didn't need it after all after changing the monitor settings.</p>

<p>Well, at any rate, I got the kiosk done just in time for the first football game, which was the goal. It looks really good and the Sports Museum folks are happy. So, if you get time, check it out. The museum is on the Jordan Center side of Beaver Stadium at ground level. It's free to go in and look around. It's really an outstanding display of PSU sports memorabilia, information, and videos.</p>]]></description>
         <link>http://www.personal.psu.edu/pzb4/blogs/all_your_base/2007/08/new_touchscreen_kiosk_for_psu.html</link>
         <guid>http://www.personal.psu.edu/pzb4/blogs/all_your_base/2007/08/new_touchscreen_kiosk_for_psu.html</guid>
        
        
         <pubDate>Thu, 30 Aug 2007 19:33:17 -0500</pubDate>
		 <enclosure url="http://www.personal.psu.edu/pzb4/blogs/all_your_base/2007/08/30/museum.jpg" length="104128" type="image/jpeg" /><enclosure url="http://www.personal.psu.edu/pzb4/blogs/all_your_base/2007/08/30/museum2.jpg" length="76321" type="image/jpeg" /><enclosure url="http://www.personal.psu.edu/pzb4/blogs/all_your_base/2007/08/30/museum4.jpg" length="160516" type="image/jpeg" />
      </item>
            <item>
         <title>XML - I finally get it!</title>
         <description><![CDATA[<p>Work on my museum kiosk project sort of ground to a halt for a while. I was about half done with it, and didn't want to go any further till they got me some content. I know how an interface can change once the content starts rolling in. I recently visited the guys in charge and they were pretty happy with my progress so far. I switched the kiosk interface from being text file based to XML. This should allow them to eventually go to a server-based Filemaker Pro database to serve up the content for the kiosk. </p>

<p>Just to quickly get something to show them, I made separate Filemaker files for each of the first few letters of the alphabet. This, I know, wasn't the best approach in the longrun. Even though it was easier than flat text files it was still pretty unwieldy to have 26 separate files. I did a web tutorial last week on XML and integration into Flash and gained a much better understanding of what I could do with it. By adding a few more fields in the FileMaker database and exporting a different way, I figured that I should be able to slice and dice all the info any way I want using a single FileMaker database. This would be a great time saver for the museum in regards to upkeep. </p>

<p>The tricky part was that the info has to but sliced up in 3 different ways: Print media (writers and photographers), radio, and TV. Some people do more than one thing. It would be easy to make a separate FileMaker DB for each, but I found a good way to just combine them all. I put a field in the DB for Print, one for Radio, and one for TV. If the person is associated with any of these media, I put a "Y" (yes) in the field. In Flash when I load the frame for Radio personnel, for example, I'll just have it make an array of all the people who have a Y in the Radio field. From there, I can sort by last name. Pretty simple and I didn't need XPath to do it, either. What I learned about XML is that it will create an array of nodes automatically if you ask it for all the childNodes at a given level of the XML file. I was able to easily home in on the data I needed once I understood this concept. XML had always sort of escaped me before, but now I can really appreciate what you can do with it. I can be thick as a brick about a lot of coding concepts, but once I finally get it, it is always worth the extra effort.</p>]]></description>
         <link>http://www.personal.psu.edu/pzb4/blogs/all_your_base/2007/07/xml_i_finally_get_it.html</link>
         <guid>http://www.personal.psu.edu/pzb4/blogs/all_your_base/2007/07/xml_i_finally_get_it.html</guid>
        
        
         <pubDate>Tue, 24 Jul 2007 08:50:24 -0500</pubDate>
		 
      </item>
            <item>
         <title>My visit to Hershey</title>
         <description><![CDATA[<p>Took the shuttle between UP and HMC at 6:30 am on friday (which meant I had to be up at 5:00 am - ugh!). The shuttle is a very bouncy ride, whether it's the van or the small bus. The air conditioning on the bus was broken on the way home, so that part of the trip wasn't good.</p>

<p>Anyway, I got there around 8:30 and Dr. Pott met me where the shuttle dropped me off. After chatting a bit about what he wanted to do, he took me on a tour of their simulation room, where if you'd gone to his presentation at the TLT Symposium or watched his video, you saw the dummies that they had to practice on. Here are the pix:<br />
<a href="http://www.flickr.com/photos/besong/sets/72157600692216459/">http://www.flickr.com/photos/besong/sets/72157600692216459/</a></p>

<p>There were partials there that just consisted of a head and windpipe that the students practiced on. I tried it myself and it's not exactly easy at first. He showed me the scope they use that has a camera on the end of a long, maneuverable stem to help them find their way thru the body. There were different sized dummies including infant and toddler sized to give them practice on the varying shapes and sizes they would be dealing with. There were dummy arms there, too, for practicing IVs.</p>

<p>The big dummy (I keep thinking of Sanford and Son), which was a full body, cost about $250,000 and it cost them about $60,000 per year to run the room where it's housed. They can make the dummy do a lot of things from the control room. It can simulate breathing, eyes dilate, emit fluids, sounds, etc, making for a realistic experience for the students being evaluated. The person in the control room can make the dummy go into some sort of trauma to see how the students react as well. </p>

<p>The idea behind the simulation room is that students would practice on the partial dummies to get the physical skill down. The flat screen simulations (like the one I worked on) would teach the mental skills necessary. The big dummy would test not only their physical and mental ability, but also how they can react under pressure. </p>

<p>We then talked at length in his office and he showed me some other anesthesia simulations, some of which were quite complicated. His idea is to not make something quite so complicated, but create a simulation in such a way that other simulations for other areas in the medical center could benefit from as well. I furthered the idea that this could also be done with other disciplines that require decision-making such as engineering and business, for example. </p>

<p>I then showed him in detail what I had done and how it works. Once a decision tree is created, that is translated into a FileMaker Pro database, which is pretty simple to set up. He was able to grasp that right away. From there I would export the database as an XML file for Flash to read. If he had a live FileMaker database, I explained, he could read directly from the server the same way the XML file is read. This is the route he wants to go. Someone there has a FileMaker database on a server, so he will work with that person to develop a database for this project. He wants to do it from a FileMaker server so that he can control and update the content and be able to track usage. </p>

<p>Some new wrinkles he talked about were to have an input text box for each set of choices so that a student can suggest another possible alternative and thereby update the database quickly by capturing the input. </p>

<p>Another ideas was to have a timer on each scene so that if the student took too long, another scene might be triggered automatically ("Your patient is now dead.").</p>

<p>Another was playing on the probability of outcomes. That is, they can say that doing a certain thing would have an 80% chance of a positive result, so 20% of the time, he wants the negative result to occur to add to the realism. I thought we could do this using a random number method in Flash without too much trouble. </p>

<p>We then took a coffee break and chatted outside under the building where they had a breezeway and courtyard. Some guys were on ladders and ropes cleaning the windows of the building above us. A young woman was smoking on a bench there and Dr. Pott went over to admonish her for doing so, since it is a smoke-free campus. She apologised and put out her cigarette. After a minute she got up and walked from where she was. Just as she did we heard a shout and a large pail of soapy water came crashing down where she was sitting. I told her that stopping smoking was already starting to save her life.</p>

<p>We then went to see an operating room where they had an anesthesia cart, so I could take a couple pictures and see how they worked. We had to wait because they were administering shock therapy to a suicidal mental health patient. Would have been fun to watch. It was some older lady that they wheeled out in a few minutes. I mentioned that I didn't think they did shock therapy anymore, and Dr. Pott stated that it is still a quite effective means of preventing suicidal patients from taking their lives when they reach a critical point. They can then get them more therapy. He says it is especially effective on older patients. </p>

<p>After lunch, we talked again in his office and he raised the idea of possibly teaching a workshop at an international conference in San Diego the first week of January. He wanted me to help with the technical end of it. It would be a workshop on creating quick, simple simulations for teaching anesthesia and other medical disciplines. I was willing to help out, but said that it would have to be worked out at a higher level before he would submit an abstract. He would like to come up to UP at some point and talk with Cole and John about his project plans.</p>

<p>Going forward, he is going to work with his colleague to set up a FileMaker database for his project. I'll look into it a little more after that and see if I can interface with it and possibly get some of the other suggestions incorporated into the sim. <br />
</p>]]></description>
         <link>http://www.personal.psu.edu/pzb4/blogs/all_your_base/2007/07/my_visit_to_hershey.html</link>
         <guid>http://www.personal.psu.edu/pzb4/blogs/all_your_base/2007/07/my_visit_to_hershey.html</guid>
        
        
         <pubDate>Sat, 07 Jul 2007 16:07:59 -0500</pubDate>
		 
      </item>
            <item>
         <title>The Power of Backwards Engineering</title>
         <description><![CDATA[<p>As I stated in my previous post, I'm looking at recreating the Flash game 'Tonti' just to get an idea what it takes to develop such a game. Here is what I've got so far:</p>

<p><a href="http://www.personal.psu.edu/pzb4/tonti_ripoff.html">Tonti Game</a><br />
Click on the start button (instead of typing "0").</p>

<p>If you want to play the original game, go <a href="http://www.eyezmaze.com/tontie/v1/index.html">here</a>.</p>

<p>This is not supposed to be an exact copy. I'm just trying to emulate the same functionality. So far I was able to create the interface, make the individual movies of the character popping up, getting the keystrokes for 'whacking' the Tonti, and keeping a basic score. I was also able to make a pause button work, which was not as easy as it seems.</p>

<p>First off, to save time I just took a few screenshots of the original game. I roughly made duplicates of a few parts to use for each row of characters. </p>

<p>After doing some web research on determining how to read a keydown event in Flash, I was able to get some interactivity into it. Instead of the little mallet, I used an explosion, which I thought was a little more exciting when whacking the Tonti. The explosion consists of about 13 individual images of an explosion. I had to code it in such a way that you could only blow it up if it were showing. So when the Tonti character gets so far up, I set a variable that it is available to be hit. When it goes back down, it's not able to be hit. </p>

<p>I used a timer mechanism to randomly trigger each of the 9 Tontis to come up. It's not going nearly as fast as the original game, but I can change that by adjusting the timer. I did run into a problem with this. What was happening at first was that if a Tonti was coming up and its number got randomly called again, it would disappear and start over again. So I had to add a variable to tell it to skip a number if its animation was already active. Not sure how the original game pulls this off, but that's how I did it.</p>

<p>The pause button on the lower left works, although you have to click on it instead of typing a "0" key. It was easy enough to stop each of the 9 animations, but when you click it again to resume, that's when it got a bit tricky. I checked to see if an animation is active before telling it to play or I'd be telling them all to play. </p>

<p>Scoring was pretty simple. At the end of the animation sequence where the Tonti blows up, I just increment the score variable by 200 and it's displayed on the lower right.</p>

<p>I decided that 20 Tonti was good enough to be considered a level, so I put a counter in the timer mechanism that counts every time it fires. After 20, it kills the timer.</p>

<p>Not sure how much further I'll take this, but it's helped me think about how to set up a game. I'm a big fan of backwards engineering things to see how they work (or might work). </p>]]></description>
         <link>http://www.personal.psu.edu/pzb4/blogs/all_your_base/2007/06/the_power_of_backwards_enginee_1.html</link>
         <guid>http://www.personal.psu.edu/pzb4/blogs/all_your_base/2007/06/the_power_of_backwards_enginee_1.html</guid>
        
        
         <pubDate>Sun, 24 Jun 2007 16:02:56 -0500</pubDate>
		 
      </item>
            <item>
         <title>A visit to Hershey / Flash games</title>
         <description><![CDATA[<p>On July 6 I'm planning on heading down to the Hershey Medical Center to meet the assistant professor, whom I'm setting up the demo Flash simulation for. I had a long chat with him on the phone and got a clearer idea of what he was trying to accomplish. He's looking to be able to have people who are not Flash developers be able to create simulations without too much trouble. I explained to him that the work would be all up front in getting the Flash file created that would run the sim, and that after that was created, it was basically a matter of creating graphics (backgrounds, photos, images) and inputting data into a FileMaker DB. Once a flow diagram was set up, this could easily be done by almost anyone with a little knowledge.</p>

<p>I also began to look at how to make games in Flash. I thought by doing a knock-off of a popular Flash game, I might gain some valuable experience in game creation. I am taking the game <a href="http://www.eyezmaze.com/tontie/v1/index.html">Tonti</a> and sort of backwards engineering it. This is what I had to do for the All-Sports Museum Kiosk I've been working on. Tonti is sort of like "Whack-A-Mole", only you use your number keys to "whack" the Tonti character that emerges from one of the 9 holes. Just to save time, I took a few screenshots of different elements of the game and dropped them into Flash. I was able to get this to the point where the Tonti characters would emerge from their holes at random. It was actually a bit easier than I thought once I started poking around in Flash. Maybe I can eventually make a game that teaches you how to type with this concept.</p>]]></description>
         <link>http://www.personal.psu.edu/pzb4/blogs/all_your_base/2007/06/a_visit_to_hershey.html</link>
         <guid>http://www.personal.psu.edu/pzb4/blogs/all_your_base/2007/06/a_visit_to_hershey.html</guid>
        
        
         <pubDate>Fri, 22 Jun 2007 14:27:48 -0500</pubDate>
		 
      </item>
      
   </channel>
</rss>
