<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>3byte world</title>
	<atom:link href="http://3-byte.com/blog/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://3-byte.com/blog</link>
	<description>For video and software enthusiasts</description>
	<lastBuildDate>Mon, 24 Oct 2011 18:07:01 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.2</generator>
		<item>
		<title>Low Latency Syncronization over the internet</title>
		<link>http://3-byte.com/blog/?p=418</link>
		<comments>http://3-byte.com/blog/?p=418#comments</comments>
		<pubDate>Mon, 24 Oct 2011 18:07:01 +0000</pubDate>
		<dc:creator>Olaaf</dc:creator>
				<category><![CDATA[Applications]]></category>
		<category><![CDATA[Observations]]></category>
		<category><![CDATA[ipads]]></category>
		<category><![CDATA[Latency]]></category>
		<category><![CDATA[PowerPoint]]></category>

		<guid isPermaLink="false">http://3-byte.com/blog/?p=418</guid>
		<description><![CDATA[Previously, ActiveDeck was able to stay in sync within about 4 seconds between the PowerPoint computer and it’s neighboring iPads. However, this wasn’t good enough for us- our background is in show control systems and frame accurate video playback systems. We have a curse of over-analyzing every video playback system we see for raster tear, [...]]]></description>
			<content:encoded><![CDATA[<p>Previously, ActiveDeck was able to stay in sync within about 4 seconds between the PowerPoint computer and it’s neighboring iPads. However, this wasn’t good enough for us- our background is in show control systems and frame accurate video playback systems. We have a curse of over-analyzing every video playback system we see for raster tear, frame skips and sync problems. Given that ActiveDeck solely relies on the internet, we thought 4 seconds was pretty good, considering. But we wanted to make it much, much better.</p>
<p>We thought about the best way to improve the latency, and our initial thinking leaned towards a local network broadcast originating from the computer running PowerPoint, but that introduces issues on WiFi networks, especially those you would find in hotel ballrooms. VPN to the cloud service would be another option, but adds lots of complexity.</p>
<p>We ended up using pure HTTPS communications (no sockets, no VPN, no broadcasts) to and from the cloud servers with the use of some clever coding. If the iPad has internet connectivity, it will be in sync.</p>
<p>Check the video out, this is over a cable modem internet connection and a plan Linksys WRT54G access point. Our Windows Azure servers are at least 13 router hops from our office. The beautiful part is that the sync messages are tiny and this will scale to hundreds of iPads.</p>
<p>-olaaf</p>
<p><a title="ActiveDeck Website" href="http://activedeck.com">www.activedeck.com</a></p>
<p><object width="500" height="281"><param name="movie" value="http://www.youtube.com/v/36CmrpbTa_Y?version=3&#038;feature=oembed"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/36CmrpbTa_Y?version=3&#038;feature=oembed" type="application/x-shockwave-flash" width="500" height="281" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://3-byte.com/blog/?feed=rss2&#038;p=418</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>100 iPads, part 2</title>
		<link>http://3-byte.com/blog/?p=411</link>
		<comments>http://3-byte.com/blog/?p=411#comments</comments>
		<pubDate>Thu, 19 May 2011 20:59:22 +0000</pubDate>
		<dc:creator>Olaaf</dc:creator>
				<category><![CDATA[Observations]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://3-byte.com/blog/?p=411</guid>
		<description><![CDATA[Following up on the project involving a 100 iPads, a couple of magazines/blogs picked up an article written by David Steinberg about the project. It can be found here: http://www.infocomm.org/cps/rde/xchg/infocomm/hs.xsl/17049.htm The project was pretty cool (though under enormous time pressure) and the concept of using iPads as audience participation devices has been getting some traction [...]]]></description>
			<content:encoded><![CDATA[<p><span style="font-family: Times New Roman; font-size: small;"> </span></p>
<p><span style="font-family: Times New Roman; font-size: small;"> </span></p>
<p><span style="font-family: Times New Roman; font-size: small;"> </span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-size: small;"><span style="font-family: Calibri;">Following up on the project involving a 100 iPads, a couple<br />
of magazines/blogs picked up an article written by David Steinberg about the<br />
project. It can be found here:<!--?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /--></span></span></p>
<p><span style="font-family: Times New Roman; font-size: small;"> </span></p>
<p><span style="font-family: Times New Roman; font-size: small;"> </span></p>
<p><span style="font-family: Times New Roman; font-size: small;"> </span></p>
<p><span style="font-family: Times New Roman; font-size: small;"> </span></p>
<p><span style="font-family: Times New Roman; font-size: small;"> </span></p>
<p><span style="font-family: Times New Roman; font-size: small;"> </span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;;"><a href="http://www.infocomm.org/cps/rde/xchg/infocomm/hs.xsl/17049.htm"><span style="font-family: Calibri; color: #0000ff; font-size: small;">http://www.infocomm.org/cps/rde/xchg/infocomm/hs.xsl/17049.htm</span></a></span></p>
<p><span style="font-family: Times New Roman; font-size: small;"> </span></p>
<p><span style="font-family: Times New Roman; font-size: small;"> </span></p>
<p><span style="font-family: Times New Roman; font-size: small;"> </span></p>
<p><span style="font-family: Times New Roman; font-size: small;"> </span></p>
<p><span style="font-family: Times New Roman; font-size: small;"> </span></p>
<p><span style="font-family: Times New Roman; font-size: small;"> </span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-size: small;"><span style="font-family: Calibri;">The project was pretty cool (though under enormous time<br />
pressure) and the concept of using iPads as audience participation devices has been<br />
getting some traction recently..</span></span></p>
<p><span style="font-family: Times New Roman; font-size: small;"> </span></p>
<p><span style="font-family: Times New Roman; font-size: small;"> </span></p>
<p><span style="font-family: Times New Roman; font-size: small;"> </span></p>
]]></content:encoded>
			<wfw:commentRss>http://3-byte.com/blog/?feed=rss2&#038;p=411</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Kinect: Cheap Key</title>
		<link>http://3-byte.com/blog/?p=390</link>
		<comments>http://3-byte.com/blog/?p=390#comments</comments>
		<pubDate>Mon, 07 Mar 2011 22:29:01 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Applications]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://3-byte.com/blog/?p=390</guid>
		<description><![CDATA[The 3Byte R&#38;D lab recently purchased a Microsoft Kinect to play with. We didn&#8217;t mind the fact that we don&#8217;t have an XBox to plug it into because Code Laboratories has published an SDK which allows you to use C# (and several other high-level languages) to access the camera feed. In fact, the test app [...]]]></description>
			<content:encoded><![CDATA[<p>The 3Byte R&amp;D lab recently purchased a <a href="http://www.xbox.com/en-US/kinect">Microsoft Kinect</a> to play with.  We didn&#8217;t mind the fact that we don&#8217;t have an XBox to plug it into because <a href="http://codelaboratories.com/nui">Code Laboratories</a> has published an SDK which allows you to use C# (and several other high-level languages) to access the camera feed.  In fact, the test app that they distribute is very cool for immediately figuring out why this device is different than a normal web cam:<br />
<a href="http://3-byte.com/blog/wp-content/uploads/2011/03/kinect_depth_image.png"><img class="aligncenter size-medium wp-image-395" title="kinect_depth_image" src="http://3-byte.com/blog/wp-content/uploads/2011/03/kinect_depth_image-300x228.png" alt="" width="300" height="228" /></a><br />
In addition to providing a normal color camera video stream (with red, green, and blue pixels), it also provides another dimension (literally) of depth information in a separate parallel stream.  The picture above is me sitting at my desk, and the depth feed has been colorized to give a rough indication of where different objects are in the frame.</p>
<p>So, how do we do something useful with our new toy?<br />
<span id="more-390"></span><br />
One thing that we immediately decided to try is <strong><em>Kinect Keying</em></strong>.  The concept is similar to <a href="http://en.wikipedia.org/wiki/Chroma_key">chroma keying</a> but instead of requiring a solid blue or green colored background, we use the depth information from the Kinect to extract only the elements at a certain physical depth.  I tackled this problem in a proof-of-concept project using WPF.</p>
<p>The important transformations happen in two steps:</p>
<ol> First I create a mask by capturing the depth frame from the camera and choose a specific depth value to isolate (plus or minus a margin of error).  For every pixel in the depth frame, if it is within the desired depth slice, I keep it; if it is closer or farther away, then I set that pixel to 0 so that we ignore it.</ol>
<ol> Second, I combine the new <strong><em>depth mask</em></strong> with the normal incoming video signal, and if the pixel from the depth mask is greater than 0, keep the video pixel; otherwise, set the video pixel alpha to 0.0 so that it is totally transparent.</ol>
<p>Combine this with a background image, and we can send Mr. Gingerbread man on a trip to the desert:<br />
<a href="http://3-byte.com/blog/wp-content/uploads/2011/03/Kinect_ImageMask1.png"></a><a href="http://3-byte.com/blog/wp-content/uploads/2011/03/Kinect_ImageMask1.png"><img class="aligncenter size-medium wp-image-396" title="Kinect_ImageMask1" src="http://3-byte.com/blog/wp-content/uploads/2011/03/Kinect_ImageMask1-300x208.png" alt="" width="300" height="208" /></a><br />
The upper left-hand corner is the normal video feed of G-Bread standing on his desk.  To the right is the grayscale version of the simultaneous depth feed from the camera.  Anything in black is either too close or too far away for the camera to perceive it, but that is ok, because we care about a particular section of the mid-field here.</p>
<p>On the bottom left is the depth mask I created by specifying a specific depth slice.  The sliders at the bottom of the screen allow you to easily adjust the desired depth and the tolerance (how much depth) to slice.</p>
<p>Finally, on the lower right is the composited image with a static background.  As you can see, this a bit primitive because the incoming depth signal is somewhat noisy and it isn&#8217;t perfectly registered with the video image (there are two cameras in slightly different positions).  But this demonstrates that a cheap keying effect is possible without specialized hardware or sets.</p>
<p>The source code as a Visual Studio project is available here: <a onclick="GetOver('http://3-byte.com/blog/wp-content/uploads/2011/03/KinectDepthSample.zip');return<br />
false;" target="_blank">KinectDepthSample</a></p>
<p>With thanks to Code Laboratories for their great <a href="http://codelaboratories.com/downloads/">SDK and managed libraries</a>, and to Greg Schechter for his series of articles on leveraging GPU acceleration through <a href="http://blogs.msdn.com/b/greg_schechter/archive/2008/05/09/a-series-on-gpu-based-effects-for-wpf.aspx">pixel shaders in a managed environment</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://3-byte.com/blog/?feed=rss2&#038;p=390</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>100 iPads</title>
		<link>http://3-byte.com/blog/?p=342</link>
		<comments>http://3-byte.com/blog/?p=342#comments</comments>
		<pubDate>Tue, 30 Nov 2010 18:43:04 +0000</pubDate>
		<dc:creator>Olaaf</dc:creator>
				<category><![CDATA[Applications]]></category>
		<category><![CDATA[Observations]]></category>
		<category><![CDATA[ipads]]></category>
		<category><![CDATA[sync]]></category>

		<guid isPermaLink="false">http://3-byte.com/blog/?p=342</guid>
		<description><![CDATA[Have you ever wondered what 106 iPads look like when packed as densely as possible? Here is a picture: For a recent project, we developed a synchronized iPad display app. The project was to support a presentation with some new method of interacting with the participants. The designers liked the idea of handing out ipads [...]]]></description>
			<content:encoded><![CDATA[<p>Have you ever wondered what 106 iPads look like when packed as densely as possible? Here is a picture:</p>
<p><a href="http://3-byte.com/blog/wp-content/uploads/2010/11/iPads.jpg"><img class="aligncenter size-medium wp-image-356" title="iPads" src="http://3-byte.com/blog/wp-content/uploads/2010/11/iPads-300x225.jpg" alt="4 stacks of ipads" width="300" height="225" /></a></p>
<p>For a recent project, we developed a synchronized iPad display app. The project was to support a presentation with some new method of interacting with the participants. The designers liked the idea of handing out ipads to which they could “push” content they wanted, when they wanted.</p>
<p>So, we fired up xCode and built the iPad app. The application is made up of several modes of operation while the main mode is to display content driven by the presenter, so that on cue all of the iPads display new screens without any interaction by the person holding the iPad. This looks pretty awesome when it gets triggered and you can see all of the iPads change their screens at once.</p>
<p>Other modes are sort of like tests or drills, where the users complete a quiz and then submit that data to the presenter. We have another application there that creates graphs based on the statistics from all of the iPad users to which the presenter can speak to when projected on a large screen in the center of the room.</p>
<p>When we set out to design the system, we had to think through the potential bottlenecks. Our main concern was network latency, so after some research we specified the best wireless access points we could find- Ruckus Networks. See these links:</p>
<p><a href="http://www.ruckuswireless.com/">http://www.ruckuswireless.com/</a></p>
<p><a href="http://www.tomshardware.com/reviews/beamforming-wifi-ruckus,2390.html">http://www.tomshardware.com/reviews/beamforming-wifi-ruckus,2390.html</a>.</p>
<p>We ended up with 5 access points and a network controller on a gigabit network. Worked great (a little bumpy the first day of the presentation to due to a faulty access point).</p>
<p>Next, we created a back end system where the content would be stored locally, yet able to be updated during the presentation. Using IIS, we posted the images and XML files on a local (to the event network) webservice. We then wrote a multi-threaded socket server on another computer that was dedicated to triggering page turns, mode changes, and initiating fresh content downloads to the iPad.</p>
<p>Here is a video during some initial sync testing, this is all running from one access point, and triggered by Chris and his PC.</p>
<p><div id="saiweb_910bdd52e853408383f94d60bc034051" style="width:618px; height:347px;" class="flowplayer"></div><script language="Javascript" type="text/javascript">
	WPFP(document).ready(function() {
		//load player
		$f("saiweb_910bdd52e853408383f94d60bc034051", "http://www.3-byte.com/client/VideoPlayer/flowplayer/flowplayer-3.2.5.swf", {
				plugins: {
  					 controls: {    					
      					buttonOverColor: '#ffffff',
      					sliderColor: '#ffffff',
      					bufferColor: '#ffffff',
      					sliderGradient: 'none',
      					progressGradient: 'medium',
      					durationColor: '#ffffff',
      					progressColor: '#ffffff',
      					backgroundColor: '#000000',
      					timeColor: '#ffffff',
      					buttonColor: '#eaa81a',
      					backgroundGradient: 'none',
      					bufferGradient: 'none',
   						opacity:1.0
   						}
				},
			clip: {
					url:'http://www.3-byte.com/player/vids/iPadstrimed.MOV',
					autoPlay: false,
       				autoBuffering: true
				},
				canvas: {
					backgroundColor:'#000000'
				}})
			});</script>
				</p>
]]></content:encoded>
			<wfw:commentRss>http://3-byte.com/blog/?feed=rss2&#038;p=342</wfw:commentRss>
		<slash:comments>1</slash:comments>
<enclosure url="http://www.3-byte.com/player/vids/iPadstrimed.MOV" length="1530174" type="video/quicktime" />
		</item>
		<item>
		<title>Network Shutdown</title>
		<link>http://3-byte.com/blog/?p=292</link>
		<comments>http://3-byte.com/blog/?p=292#comments</comments>
		<pubDate>Thu, 18 Nov 2010 21:54:45 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Applications]]></category>

		<guid isPermaLink="false">http://3-byte.com/blog/?p=292</guid>
		<description><![CDATA[...one thing computers don't do well, is listen to control systems (at least out of the box).
The most essential function of an AV control system is to turn everything on at the start of the day, and turn everything off at the end of the day...]]></description>
			<content:encoded><![CDATA[<h2>Computers in AV Systems</h2>
<p>All of the AV systems I&#8217;ve worked on recently include at least one computer.  Because Windows computers are so general-purpose and typically inexpensive, they can be used for interactive touchscreen kiosks, video playback, audio playback, or many other useful functions.</p>
<p>However, one thing computers don&#8217;t do well, is listen to control systems (at least out of the box).<br />
<span id="more-292"></span>The most essential function of an AV control system is to turn everything on at the start of the day, and turn everything off at the end of the day.  Not only does this protect the equipment (especially monitors and projectors), but it is also the green thing to do.  Everyone is paying more attention to reducing power consumption, particularly when the system is not even being used.  So we want to be able to turn non-essential computers on and off, too.  And, it turns out this is not as easy as it should be.  This post describes the ways that I have developed to handle this problem gracefully.</p>
<h2>Startup</h2>
<p>This is the easier of the two problems.  Most modern computers include include a BIOS setting that allows you to prevent completely turning the off the power to the ethernet adapter, and the network adapter will respond to a Wake-On-LAN <a href="http://en.wikipedia.org/wiki/Magic_packet">magic packet</a> over the network.  Even when the computer is turned off, you can power it up, by sending out a special command that includes the MAC address of the computer.  I have written a <a href="http://3-byte.com/blog/wp-content/uploads/2010/11/Crestron-WakeOnLan.zip">Crestron module</a>, and a <a href="http://3-byte.com/blog/wp-content/uploads/2010/11/CSharp-WakeOnLan.zip">C# library</a> to perform this function, and you are free to use them and see how it works.</p>
<p>Some older computers do not have network adapters or power supplies that support Wake-On-LAN.   In this case, you can punt and set the BIOS to turn the computer on a specific time of day.  Even if you don&#8217;t know exactly when it needs to be on, you can still reduce the computer&#8217;s duty cycle by judiciously setting a daily startup time.</p>
<h2>Shutdown</h2>
<p>This is actually the difficult part.  I couldn&#8217;t find any way to tell a Windows computer to shutdown on command.  You would think this should be easy, but computers are designed to protect the user form the outside world by default, so they don&#8217;t let anybody tell them what to do.</p>
<p>So, I wrote a small C# console application that runs in the background and listens on a well-defined network port to incoming messages.  When it gets a &#8220;SHUTDOWN\x0D\x0A&#8221; message (with CR and LF appended), it issues the shutdown command to the operating system.  This could work on any operating system, but I&#8217;ve implemented it for Windows and the critical line of code looks like this:</p>
<p><code>System.Diagnostics.Process.Start("shutdown", "/s /f /t 3 /c \"Control System Triggered Shutdown\" /d p:0:0");</code></p>
<p>The compiled application is called <a href='http://3-byte.com/blog/wp-content/uploads/2010/11/NetworkShutdown.zip'>NetworkShutdown</a>.  Unzip it and put a copy on the computer you want to control, and add a shortcut to it to the Startup folder.  You also need to make sure that UDP port 16009 is open in the Windows Firewall.</p>
<p>Then, any control system that can send UDP packets can be used to control this computer.  For example, using Crestron just send an ASCII string like this:<br />
<a href="http://3-byte.com/blog/wp-content/uploads/2010/11/Crestron-Shutdown.png"><img src="http://3-byte.com/blog/wp-content/uploads/2010/11/Crestron-Shutdown-300x92.png" alt="" title="Crestron Shutdown" width="300" height="92" class="aligncenter size-medium wp-image-303" /></a></p>
<h2>Conclusion</h2>
<p>At the end of the day, it doesn&#8217;t take that much more programming work to ensure that computers can be turned on and off with your media system, and you can save a lot of energy in the process.  When being green is easy, why not?</p>
]]></content:encoded>
			<wfw:commentRss>http://3-byte.com/blog/?feed=rss2&#038;p=292</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Passwords in an Enterprise (or small business)</title>
		<link>http://3-byte.com/blog/?p=279</link>
		<comments>http://3-byte.com/blog/?p=279#comments</comments>
		<pubDate>Tue, 27 Jul 2010 01:41:23 +0000</pubDate>
		<dc:creator>Olaaf</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://3-byte.com/blog/?p=279</guid>
		<description><![CDATA[As the IT admin and part owner of a software startup, I’ve had to manage multiple servers and services. The domain controller is SBS2008, a WatchGuard firewall setup to use RADIUS to authenticate VPN against active directory, a subversion repository, a MySQL DB backing a redmine installation, multiple MS SQL Server DB’s to back various [...]]]></description>
			<content:encoded><![CDATA[<p>As the IT admin and part owner of a <a title="Three Byte" href="http://www.3-byte.com" target="_blank">software startup</a>, I’ve had to manage multiple servers and services. The domain controller is SBS2008, a WatchGuard firewall setup to use RADIUS to authenticate VPN against active directory, a subversion repository, a MySQL DB backing a redmine installation, multiple MS SQL Server DB’s to back various development projects with SA accounts, an internal FTP, a slew of other local services, all in addition to the default local admin logons, bank account logon’s, QuickBooks, Amazon, go daddy, insurance websites, etc. The list goes on for about 40 discreet user accounts and passwords. Then, I have my personal passwords to deal with, like my iTunes account, Gmail, etrade, quicken, bank account, facebook, linked in, home computer, etc.</p>
<p>In addition, for each of our consulting project installations, we have a slew of new passwords and user names for various computers and systems.</p>
<p>I had a simple system in 2000 or 2001- use the same password! Of course, this isn’t very secure, and it never quite worked- each system or service had a slightly different password policy.</p>
<p>So, I started using a password management system. Meaning of course, an excel doc with all of my passwords.</p>
<p>Then in 2009 I took classes for an MCITP program (the windows server admin certification program, they changed the name from MCSE for some reason), and one of the lecturers was a security expert who spoke about how nearly everyone uses “1” or “!” as their number or special character in a “complex” password. I was taken aback, because sure as hell I was doing that. He spoke about the need to use a password management system and to use passphrases. Also, he said it’s also okay to write down your passphrase on a post-it note and put it in your wallet.</p>
<p>So, about passphrases and the wallet thing first. The reason passphrases were better than a simple password is that they are long, yet simple to remember. The lecturer spoke about how windows XP and server 2003 used an <a title="Wikipedia" href="http://en.wikipedia.org/wiki/LM_hash" target="_self">LMhash</a>, which broke your password into two uppercase zero-padded 7 character halves. So, it was super easy to crack with a brute force or time memory trade off algorithm- for example, this free application can crack LMhash passwords in a snap <a href="http://ophcrack.sourceforge.net/">http://ophcrack.sourceforge.net/</a> . I cracked my home computer logon account with this software and freaked out about how easy it was. There is even a paid CUDA accelerated version, for those with big nVidia cards.</p>
<p>The deal with a passphrase was that it is typically longer than 14 characters and really hard to brute force unless you are the NSA. Imagine your password is “don’t forget the Ajax”. That is 22 characters, really fast to type, and really hard to crack. In addition, if you wrote it down on a post-it note and kept it in your wallet, there is a good chance the guy who stole it thinks it’s a shopping reminder, not a password.</p>
<p>However, you can’t remember so many different passphrases for so many different sites (I won’t even talk about how bad it is to use the same password for every account). Here is where a password management system comes into play.</p>
<p>For Three Byte, I set up Password State <a href="http://www.clickstudios.com.au/">http://www.clickstudios.com.au/</a> it’s free for 10 users or less, and totally awesome. It allows you to authenticate against Active Directory to access the password site, and from there you can access passwords and user names for your other services. It requires SQL Server and IIS. This system used 256 bit AES encryption in the database, and some local .NET methods to further obscure the password. It allows you to share your passwords with other users, and it logs each time the password was copy-clipped or viewed. It allows you to set time limits on the passwords, so you can keep them fresh. Just what the CIA needs, I think. I’ll use it for all my major AV installations and recommend its use to anyone who needs this kind of system.</p>
<p><a href="http://3-byte.com/blog/wp-content/uploads/2010/07/ps_homepage_large1.jpg"><img class="alignnone size-medium wp-image-280" title="ps_homepage_large" src="http://3-byte.com/blog/wp-content/uploads/2010/07/ps_homepage_large1-300x166.jpg" alt="" width="300" height="166" /></a></p>
<p>FYI, this screenshot is copied from the clickstudios.com site, so no hacker can see the user accounts we actually use!</p>
<p>My buddy Geoff who is a pilot in the Air Force tells me about super stringent password requirements, such that many people create a new password by simply hitting the characters on the keyboard from left to right (starting at 1), up to down (ending at z),  alternating with the shift key to generate the password. If only they were taught why and how to secure passwords.</p>
<p>For more resources on secure passwords, just google it.</p>
]]></content:encoded>
			<wfw:commentRss>http://3-byte.com/blog/?feed=rss2&#038;p=279</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Optimal Video Playback in Managed Desktop Application</title>
		<link>http://3-byte.com/blog/?p=248</link>
		<comments>http://3-byte.com/blog/?p=248#comments</comments>
		<pubDate>Wed, 14 Jul 2010 16:08:53 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://3-byte.com/blog/?p=248</guid>
		<description><![CDATA[...found that the media player was dropping frames.  The video files would playback perfectly in Windows Media Player, but when run through this WPF app, it just didn't work as well.  In many applications, maybe this is not a big deal, but we always want to achieve the best possible playback quality...]]></description>
			<content:encoded><![CDATA[<p>Recently I had to build a desktop application that allows users to watch video files. After becoming familiar with Microsoft&#8217;s Windows Presentation Foundation, this seemed to be really easy: .NET Framework 3.5 provides a <a href="http://msdn.microsoft.com/en-us/library/system.windows.controls.mediaelement.aspx">MediaElement</a> control which you place in your UI and then assign a source file to play. It is simple to build your own transport controls right into the UI that match your design and there are lots of examples of how to do this on MSDN.</p>
<p>As I guessed, this was easy to wire up and my first pass looked like this:</p>
<div id="attachment_256" class="wp-caption aligncenter" style="width: 310px"><a href="http://3-byte.com/blog/wp-content/uploads/2010/07/MediaElement-Screenshot.png"><img class="size-medium wp-image-256" title="MediaElementPlayer Screenshot" src="http://3-byte.com/blog/wp-content/uploads/2010/07/MediaElement-Screenshot-300x234.png" alt="WPF Example Using MediaElement" width="300" height="234" /></a><p class="wp-caption-text">WPF Example Using MediaElement</p></div>
<p>Here is a complete <a href="http://3-byte.com/blog/wp-content/uploads/2010/07/MediaElementPlayer.zip">Visual Studio 2008 project (MediaElementPlayer)</a> that you can build to see how it works.</p>
<p><strong>Great.</strong>  Game Over, right?<br />
<span id="more-248"></span><br />
Well, we watched it for a while, and found that the media player was <em>dropping frames</em>.  The video files would playback perfectly in Windows Media Player, but when run through this WPF app, it just didn&#8217;t work as well.  In many applications, maybe this is not a big deal, but we always want to achieve the best possible playback quality.  I tried several different attempts to optimize the application: attempting to force a specific rendering framerate, stripping down the application to just the MediaElement so that no other compositing layers or animations would tax the processor.  I tried playing lower bitrate media files, but nothing worked.  The playback still consistently dropped frames and stuttered.</p>
<p><a href="http://3-byte.com/blog/wp-content/uploads/2010/07/MotionTest.wmv"><img class="alignleft size-full wp-image-263" title="MotionTest icon" src="http://3-byte.com/blog/wp-content/uploads/2010/07/MotionTest-icon.png" alt="" width="115" height="105" /></a>  I commissioned a special video file that is designed to make dropped frames and stuttering really noticeable.  It features a vertical line which scrolls back and forth slowly &#8211; motion should always be perfectly smooth.  You can download this <a href="http://3-byte.com/blog/wp-content/uploads/2010/07/MotionTest.wmv">video</a> and try it with the project above.</p>
<p>Perhaps you can see the same behavior on your system if you build the project above.  Despite its ease of use, the MediaElement control does not allow a lot of flexibility in terms of tweaking its performance or finding out metrics on how well it is actually playing.</p>
<p><strong>So I tried a different approach.</strong>  Based on some research from <a href="http://jmorrill.hjtcentral.com/Home/tabid/428/Default.aspx">Jeremiah Morrill</a> it seemed like we could use the older ActiveX Windows Media Player component to programmatically playback video inside our application.  I found a <a href="http://www.dotnetspark.com/kb/2056-add-windows-media-player-to-wpf-application.aspx">tutorial</a> and fairly quickly added the ActiveX control to playback the video files.  This required building a separate forms library in order to automatically expose the necessary components as references, but it worked. This implementation seemed to harness the native Windows Media rendering pipeline and the playback performance was exactly the same as playing the video in Windows Media Player.  The video was perfectly smooth again.  But that wasn&#8217;t the complete solution.</p>
<p>The catch is that the older Windows Media wrapper was designed for Windows Forms and is only supported inside a Windows Forms Host control.  This is a major problem because Windows Forms hosts can not be layered in a WPF UI layout the same way other controls can.  They <strong>always</strong> show up on top, and everything else is obscured behind it.  This is ultimately because of a fundamental difference between how WPF is rendered and the legacy windowing system.  In this case, it meant that there was no way to add custom transport controls on top of the video.  We could use the default Windows Media Player skin and transport controls, but then it gives away the secret and makes the app look thrown together.  It would be much better to have the play and stop buttons match the look and feel of the rest of the application.</p>
<p>The final solution involved creating the transport controls in a separate transparent window and layering that on top of the video player, programmatically repositioning it automatically to create the illusion that they are part of the video player.<br />
<code>&lt;Window x:Class="ActiveXMediaPlayer.TransportControlWindow"<br />
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"<br />
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"<br />
    Background="Transparent" WindowStyle="None" AllowsTransparency="True"<br />
    ShowInTaskbar="False" ResizeMode="NoResize" SnapsToDevicePixels="True" Topmost="True"><br />
...</code></p>
<p><a href="http://3-byte.com/blog/wp-content/uploads/2010/07/Transport-Control-Overlay.png"><img src="http://3-byte.com/blog/wp-content/uploads/2010/07/Transport-Control-Overlay-300x203.png" alt="" title="Transport Control Overlay" width="300" height="203" class="alignright size-medium wp-image-266" /></a>This ends up requiring listening to all of the re-size and layout events from the main window and responding appropriately.  It took a lot of attention to corner cases when the video player goes full screen and when the primary window loses focus, but ultimately this solution achieves the necessary effect.</p>
<p>You can download the improved <a href="http://3-byte.com/blog/wp-content/uploads/2010/07/ActiveXMediaPlayer.zip">Visual Studio project (ActiveXMediaPlayer)</a>, and compare the quality for yourself.</p>
<p>Many thanks to Jeremiah Morrill for his very in-depth blog that covers all aspects of video and rendering in Windows.</p>
]]></content:encoded>
			<wfw:commentRss>http://3-byte.com/blog/?feed=rss2&#038;p=248</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://3-byte.com/blog/wp-content/uploads/2010/07/MotionTest.wmv" length="7638050" type="video/x-ms-wmv" />
		</item>
		<item>
		<title>Stack Exchange</title>
		<link>http://3-byte.com/blog/?p=244</link>
		<comments>http://3-byte.com/blog/?p=244#comments</comments>
		<pubDate>Tue, 22 Jun 2010 16:49:44 +0000</pubDate>
		<dc:creator>Olaaf</dc:creator>
				<category><![CDATA[Observations]]></category>

		<guid isPermaLink="false">http://3-byte.com/blog/?p=244</guid>
		<description><![CDATA[About a year ago or so, I discovered this site for helping with software development problems: www.stackoverflow.com It’s a completely free, community powered site for asking and answering questions related to software development. It was made for experts, by experts. It turned out to be an amazing problem solving resource, and shortly thereafter www.serverfault.com and [...]]]></description>
			<content:encoded><![CDATA[<p>About a year ago or so, I discovered this site for helping with software development problems:</p>
<p><a href="http://www.stackoverflow.com/">www.stackoverflow.com</a></p>
<p>It’s a completely free, community powered site for asking and answering questions related to software development. It was made for experts, by experts. It turned out to be an amazing problem solving resource, and shortly thereafter <a href="http://www.serverfault.com/">www.serverfault.com</a> and <a href="http://www.superuser.com/">www.superuser.com</a> were opened up, and now have a huge user base. I encourage you all to take a look at the quality of questions and answers.</p>
<p>The founders have decided to open up to the internet community and ask for ideas to start up new sites. There are ideas for sites from mythology to raw food to industrial control systems.</p>
<p>I’ve put a proposal out there for a site to cater to the community of AV professionals. The concept being this is where you ask the tough questions, and help out people with tough problems. I need people to sign up and back the proposal, as well as to ask sample questions to see if the quality meets the par. This thing needs a critical mass to make it to the next stage..</p>
<p>A sample question could be:</p>
<p>When installing a BSS Soundweb in a rack, can they be stacked with no spacing? Has anyone every had heat related problems?</p>
<p>Or, another sample question could be:</p>
<p>What is a good resource for figuring out how to send wake-on-lan to various computers from an AMX controller?</p>
<p>A BAD question could be:</p>
<p>What does the blinking red light on an AMX frame mean?</p>
<p>So, please go to:</p>
<p><a href="http://area51.stackexchange.com/proposals/8341/audio-video-control-systems">http://area51.stackexchange.com/proposals/8341/audio-video-control-systems</a></p>
<p>log in and post sample questions..</p>
<p>thanks</p>
]]></content:encoded>
			<wfw:commentRss>http://3-byte.com/blog/?feed=rss2&#038;p=244</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Green AV?</title>
		<link>http://3-byte.com/blog/?p=236</link>
		<comments>http://3-byte.com/blog/?p=236#comments</comments>
		<pubDate>Thu, 17 Jun 2010 20:33:05 +0000</pubDate>
		<dc:creator>Olaaf</dc:creator>
				<category><![CDATA[Observations]]></category>
		<category><![CDATA[green av]]></category>

		<guid isPermaLink="false">http://3-byte.com/blog/?p=236</guid>
		<description><![CDATA[I recently attended infocomm 2010. One topic of discussion was “Green AV”. It was pretty prevalent. Some manufacturers had amp meters attached to their gear with digital readouts so you could see in real time the amount of power consumption. I’ve even been noticing LEED accreditations on the email signatures of AV professionals. Really? Green [...]]]></description>
			<content:encoded><![CDATA[<p>I recently attended infocomm 2010. One topic of discussion was “Green AV”. It was pretty prevalent. Some manufacturers had amp meters attached to their gear with digital readouts so you could see in real time the amount of power consumption. I’ve even been noticing LEED accreditations on the email signatures of AV professionals.</p>
<p>Really? Green AV?</p>
<p>For years we’ve been integrating wake-on-lan, and sleep-on-lan procedures in our AV systems to minimize power consumption. I wonder if that qualifies us…</p>
<p>Green AV is a tough concept for me to get because i feel the best thing to do often is “turn the damn thing off”. Though I suppose that would be against my interest as one who makes his living from designing AV systems.</p>
<p>On nearly every project, I work up heat/power loads to determine how much electricity we’ll need as well as how much air conditioning required to cool the system. A few years ago out of curiosity I started to convert the power loads to their equivalent in oil (it was easy to find the conversion, though in the US I suppose most system are ultimately powered by coal).</p>
<p>There are about 5,800,000 BTU’s in a single barrel of oil. A barrel of oil is 42 gallons. Assuming perfect efficiency in the generation process….. You can take a 50” plasma screen and estimates that it consumes about 500 watts and further assume in a typical system runs for 12 hours per day. Total consumption for the day is 6 kilowatt hours. Multiply that by 3.412 to get the BTU equivalent, and we find that running this screen for the day consumes .353 barrels/oil.</p>
<p>Say your digital signage network has 20 screens, and you run them 12 hours per day, 365 days a year. The consumption is about 26 barrels or 1092 gallons of oil, not counting the computers to run it and the air conditioning to cool it.</p>
<p>I wonder how often the message is worth it? What exactly is Green AV?</p>
<p>&#8211;olaaf</p>
]]></content:encoded>
			<wfw:commentRss>http://3-byte.com/blog/?feed=rss2&#038;p=236</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PrePix V0.3.3 Update</title>
		<link>http://3-byte.com/blog/?p=229</link>
		<comments>http://3-byte.com/blog/?p=229#comments</comments>
		<pubDate>Thu, 01 Apr 2010 13:38:12 +0000</pubDate>
		<dc:creator>Josh</dc:creator>
				<category><![CDATA[Applications]]></category>
		<category><![CDATA[LED Visualization]]></category>
		<category><![CDATA[PrePix]]></category>

		<guid isPermaLink="false">http://3-byte.com/blog/?p=229</guid>
		<description><![CDATA[An updated PrePix version 0.3.3 is available for download. This is a minor update that fixes a problem affecting Windows XP users who were unable to run version 0.3.2. The new version may be installed directly over any previous version. Please let us know if you have any trouble!]]></description>
			<content:encoded><![CDATA[<p>An updated <a href="http://3-byte.com/blog/?page_id=177">PrePix</a> version 0.3.3 is available for <a href="http://3-byte.com/blog/?page_id=181">download</a>. This is a minor update that fixes a problem affecting Windows XP users who were unable to run version 0.3.2.</p>
<p>The new version may be installed directly over any previous version. Please let us know if you have any trouble!</p>
]]></content:encoded>
			<wfw:commentRss>http://3-byte.com/blog/?feed=rss2&#038;p=229</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

