<?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>DallinJones.com &#187; Technology</title>
	<atom:link href="http://www.dallinjones.com/category/technology/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.dallinjones.com</link>
	<description>One more geek in the world.</description>
	<lastBuildDate>Fri, 09 Apr 2010 17:02:07 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Credit Card Processing for the iPhone</title>
		<link>http://www.dallinjones.com/2010/03/credit-card-processing-for-the-iphone/</link>
		<comments>http://www.dallinjones.com/2010/03/credit-card-processing-for-the-iphone/#comments</comments>
		<pubDate>Mon, 08 Mar 2010 20:40:14 +0000</pubDate>
		<dc:creator>SlipStream</dc:creator>
				<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://www.dallinjones.com/?p=181</guid>
		<description><![CDATA[A brilliant idea! Now you can quickly and easily accept credit cards from your iPhone. All you need is the card reader, and you are ready to go. Squareup.com provides these reader free of charge (at least for now) and simply charge $.50 and 3% per swipe. Not the cheapest in the world, but about [...]]]></description>
			<content:encoded><![CDATA[<p>A brilliant idea! Now you can quickly and easily accept credit cards from your iPhone. All you need is the card reader, and you are ready to go. Squareup.com provides these reader free of charge (at least for now) and simply charge $.50 and 3% per swipe. Not the cheapest in the world, but about the same price as PayPal. I hope I get into the beta test soon. I can&#8217;t wait to try it out.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dallinjones.com/2010/03/credit-card-processing-for-the-iphone/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>New Blogging Software</title>
		<link>http://www.dallinjones.com/2009/11/new-blogging-software/</link>
		<comments>http://www.dallinjones.com/2009/11/new-blogging-software/#comments</comments>
		<pubDate>Fri, 20 Nov 2009 23:33:30 +0000</pubDate>
		<dc:creator>SlipStream</dc:creator>
				<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://www.dallinjones.com/2009/11/20/new-blogging-software/</guid>
		<description><![CDATA[So I have found that Wordpress has a special app that allows me to update my posts directly from my phone. As a result, I hope that the updates come a little more frequently than they have in the past.
]]></description>
			<content:encoded><![CDATA[<p>So I have found that Wordpress has a special app that allows me to update my posts directly from my phone. As a result, I hope that the updates come a little more frequently than they have in the past.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dallinjones.com/2009/11/new-blogging-software/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Voice</title>
		<link>http://www.dallinjones.com/2009/07/google-voice/</link>
		<comments>http://www.dallinjones.com/2009/07/google-voice/#comments</comments>
		<pubDate>Thu, 16 Jul 2009 20:43:47 +0000</pubDate>
		<dc:creator>SlipStream</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://www.dallinjones.com/2009/07/16/google-voice/</guid>
		<description><![CDATA[After several months of waiting I finally got my Google Voice account! It is a very similar product to what I am working on and allows me to see more of what our competitors are doing. Very cool stuff! And lots of fun building these kinds of apps. Try it out if you would like [...]]]></description>
			<content:encoded><![CDATA[<p>After several months of waiting I finally got my Google Voice account! It is a very similar product to what I am working on and allows me to see more of what our competitors are doing. Very cool stuff! And lots of fun building these kinds of apps. Try it out if you would like there is a widget on the right hand side of my blog that will connect us through Google Voice (It even transcribes everything so I can search it later&#8230; Very COOL!)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dallinjones.com/2009/07/google-voice/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>A Shiney New Toy</title>
		<link>http://www.dallinjones.com/2009/05/a-shiney-new-toy/</link>
		<comments>http://www.dallinjones.com/2009/05/a-shiney-new-toy/#comments</comments>
		<pubDate>Wed, 27 May 2009 23:06:31 +0000</pubDate>
		<dc:creator>SlipStream</dc:creator>
				<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://www.dallinjones.com/?p=116</guid>
		<description><![CDATA[Well, I got a new call in church a few weeks back. I got put into the teachers quorum. As a result it has been very difficult to get myself organized properly. After much discussing, Jen and I decided to get a new phone. We figured that our contract with T-Mobile was over and that [...]]]></description>
			<content:encoded><![CDATA[<p>Well, I got a new call in church a few weeks back. I got put into the teachers quorum. As a result it has been very difficult to get myself organized properly. After much discussing, Jen and I decided to get a new phone. We figured that our contract with T-Mobile was over and that I needed something that I could use as a phone in addition to all of the planning capabilities of the new smart phones. So it came down to a choice. Did I want to get a new T-Mobile 1G (The Google Android phone) or an iPhone 3G, well after much discussion and hemming and hawing, I decided to go with an iPhone. My shiney new toy has lots of fun apps that can be downloaded and run on it. More about those to come, but for right now here is a picture of what they look like:</p>
<p><img class="aligncenter size-full wp-image-117" title="iphone_hardware4_20081217" src="http://www.dallinjones.com/wp-content/uploads/2009/05/iphone_hardware4_20081217.jpg" alt="iphone_hardware4_20081217" width="191" height="501" /></p>
<p>Oh yeah, I almost forgot, because all of my boys refuse to answer their cellphones, I got the unlimited texting plan, so that I can text the boys.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dallinjones.com/2009/05/a-shiney-new-toy/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>The trouble with other peoples hardware</title>
		<link>http://www.dallinjones.com/2009/04/the-trouble-with-other-peoples-hardware/</link>
		<comments>http://www.dallinjones.com/2009/04/the-trouble-with-other-peoples-hardware/#comments</comments>
		<pubDate>Sun, 26 Apr 2009 22:03:32 +0000</pubDate>
		<dc:creator>SlipStream</dc:creator>
				<category><![CDATA[Server Maintenance]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://www.dallinjones.com/2009/04/26/the-trouble-with-other-peoples-hardware/</guid>
		<description><![CDATA[Last night while I was sleeping (or rather, trying to sleep, my allergies have been getting to me the last few days) I received a phone call. It was one of my clients. He said that he had been unable to access his computer for the last 40 minutes and wanted me to check it [...]]]></description>
			<content:encoded><![CDATA[<p>Last night while I was sleeping (or rather, trying to sleep, my allergies have been getting to me the last few days) I received a phone call. It was one of my clients. He said that he had been unable to access his computer for the last 40 minutes and wanted me to check it out. It never seems to fail, I leave for the weekend, and that is when the disasters happen. Fortunately, last week I replaced my border switch with a Cisco 2924, this made it possible to troubleshoot a lot more without actually being on site in the data center. I found that all my hosting equipment was working right and that my clients computer had a link. So I called the on call technician and had him restart the computer. That still didn&#8217;t fix the problem, so I had the technician log in. We found that the default network route was configured wrong (don&#8217;t ask me how that happens in the middle of the night) so I fixed the default route (which meant sending the information to the default router rather than the network address.) which fixed the problem and everyone is happy now.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dallinjones.com/2009/04/the-trouble-with-other-peoples-hardware/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>New Urinal Video Games Launched in Belgium</title>
		<link>http://www.dallinjones.com/2008/05/new-urinal-video-games-launched-in-belgium/</link>
		<comments>http://www.dallinjones.com/2008/05/new-urinal-video-games-launched-in-belgium/#comments</comments>
		<pubDate>Wed, 21 May 2008 20:31:05 +0000</pubDate>
		<dc:creator>SlipStream</dc:creator>
				<category><![CDATA[Games]]></category>
		<category><![CDATA[Random Stories]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://www.dallinjones.com/2008/05/21/new-urinal-video-games-launched-in-belgium/</guid>
		<description><![CDATA[Interesting article on the advances of modern technology. I never thought that I would be able to play video games at the same time as going to the bathroom. But some genius in Belgium has developed a game designed to be played by patrons of the a local bar. All I can say is &#8220;WOW&#8221;. [...]]]></description>
			<content:encoded><![CDATA[<p>Interesting article on the advances of modern technology. I never thought that I would be able to play video games at the same time as going to the bathroom. But some genius in Belgium has developed a game designed to be played by patrons of the a local bar. All I can say is &#8220;WOW&#8221;. Someone has way to much time on their hands. <a href="http://arstechnica.com/journals/thumbs.ars/2008/05/20/new-urinal-video-games-launched-in-belgium-by-beer-fans" title="New Urinal Video Games Launched in Belgium" target="_blank">Here is a link to the article.</a> Enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dallinjones.com/2008/05/new-urinal-video-games-launched-in-belgium/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Multicast Network Chat in C#</title>
		<link>http://www.dallinjones.com/2008/05/multicast-network-chat/</link>
		<comments>http://www.dallinjones.com/2008/05/multicast-network-chat/#comments</comments>
		<pubDate>Wed, 21 May 2008 19:55:33 +0000</pubDate>
		<dc:creator>SlipStream</dc:creator>
				<category><![CDATA[Networking]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://www.dallinjones.com/2008/05/21/multicast-network-chat/</guid>
		<description><![CDATA[In my network programming class CS3670 at UVU (UVSC) we had an assignment to write a multicast chat program that would allow everyone in the class talk in the same chat window. This was used to show that we were able to use the multicast addresses and to also demonstrate our use of the UDP [...]]]></description>
			<content:encoded><![CDATA[<p>In my network programming class CS3670 at UVU (UVSC) we had an assignment to write a multicast chat program that would allow everyone in the class talk in the same chat window. This was used to show that we were able to use the multicast addresses and to also demonstrate our use of the UDP client libraries. Here is my solution:<span id="more-55"></span></p>
<pre>
<font color="#a52a2a">  1 </font><font color="#a52a2a"><strong>using</strong></font> System;

<font color="#a52a2a">  2 </font><font color="#a52a2a"><strong>using</strong></font> System.Collections.Generic;

<font color="#a52a2a">  3 </font><font color="#a52a2a"><strong>using</strong></font> System.ComponentModel;

<font color="#a52a2a">  4 </font><font color="#a52a2a"><strong>using</strong></font> System.Data;

<font color="#a52a2a">  5 </font><font color="#a52a2a"><strong>using</strong></font> System.Drawing;

<font color="#a52a2a">  6 </font><font color="#a52a2a"><strong>using</strong></font> System.Text;

<font color="#a52a2a">  7 </font><font color="#a52a2a"><strong>using</strong></font> System.Windows.Forms;

<font color="#a52a2a">  8 </font><font color="#a52a2a"><strong>using</strong></font> System.Net;

<font color="#a52a2a">  9 </font><font color="#a52a2a"><strong>using</strong></font> System.Net.Sockets;

<font color="#a52a2a"> 10 </font><font color="#a52a2a"><strong>using</strong></font> System.Threading;

<font color="#a52a2a"> 11 </font>

<font color="#a52a2a"> 12 </font><font color="#2e8b57"><strong>namespace</strong></font> MultiCastChat

<font color="#a52a2a"> 13 </font>{

<font color="#a52a2a"> 14 </font>    <font color="#2e8b57"><strong>public</strong></font> <font color="#a52a2a"><strong>partial</strong></font> <font color="#2e8b57"><strong>class</strong></font> formMain : Form

<font color="#a52a2a"> 15 </font>    {

<font color="#a52a2a"> 16 </font>        <font color="#2e8b57"><strong>private</strong></font> <font color="#2e8b57"><strong>const</strong></font> <font color="#2e8b57"><strong>int</strong></font> TIME_TO_LIVE = <font color="#ff00ff">50</font>;

<font color="#a52a2a"> 17 </font>        <font color="#2e8b57"><strong>private</strong></font> UdpClient client = <font color="#ff00ff">null</font>;

<font color="#a52a2a"> 18 </font>        <font color="#2e8b57"><strong>private</strong></font> IPAddress group = <font color="#ff00ff">null</font>;

<font color="#a52a2a"> 19 </font>        <font color="#2e8b57"><strong>private</strong></font> <font color="#2e8b57"><strong>int</strong></font> port = <font color="#ff00ff">0</font>;

<font color="#a52a2a"> 20 </font>        <font color="#2e8b57"><strong>private</strong></font> IPEndPoint multiCastEP = <font color="#ff00ff">null</font>;

<font color="#a52a2a"> 21 </font>

<font color="#a52a2a"> 22 </font>        <font color="#2e8b57"><strong>private</strong></font> <font color="#2e8b57"><strong>bool</strong></font> stayAlive = <font color="#ff00ff">true</font>;

<font color="#a52a2a"> 23 </font>        <font color="#2e8b57"><strong>private</strong></font> Thread receiveThread = <font color="#ff00ff">null</font>;

<font color="#a52a2a"> 24 </font>        <font color="#2e8b57"><strong>private</strong></font> <font color="#2e8b57"><strong>string</strong></font> defaultNameText = <font color="#ff00ff">""</font>;

<font color="#a52a2a"> 25 </font>

<font color="#a52a2a"> 26 </font>        <font color="#2e8b57"><strong>public</strong></font> <font color="#2e8b57"><strong>delegate</strong></font> <font color="#2e8b57"><strong>void</strong></font> dListOngoing(<font color="#2e8b57"><strong>string</strong></font> message);

<font color="#a52a2a"> 27 </font>        <font color="#2e8b57"><strong>public</strong></font> dListOngoing listOngoing;

<font color="#a52a2a"> 28 </font>

<font color="#a52a2a"> 29 </font>        <font color="#2e8b57"><strong>public</strong></font> formMain()

<font color="#a52a2a"> 30 </font>        {

<font color="#a52a2a"> 31 </font>            InitializeComponent();

<font color="#a52a2a"> 32 </font>        }

<font color="#a52a2a"> 33 </font>

<font color="#a52a2a"> 34 </font>        <font color="#2e8b57"><strong>private</strong></font> <font color="#2e8b57"><strong>void</strong></font> formMain_Load(<font color="#2e8b57"><strong>object</strong></font> sender, EventArgs e)

<font color="#a52a2a"> 35 </font>        {

<font color="#a52a2a"> 36 </font>            comboAddress.SelectedIndex = <font color="#ff00ff">0</font>;

<font color="#a52a2a"> 37 </font>            defaultNameText = textboxName.Text;

<font color="#a52a2a"> 38 </font>            <font color="#a52a2a"><strong>this</strong></font>.AcceptButton = buttonJoin;

<font color="#a52a2a"> 39 </font>            <font color="#a52a2a"><strong>this</strong></font>.CancelButton = buttonExit;

<font color="#a52a2a"> 40 </font>            <font color="#a52a2a"><strong>this</strong></font>.buttonJoin.Enabled = <font color="#ff00ff">true</font>;

<font color="#a52a2a"> 41 </font>            <font color="#a52a2a"><strong>this</strong></font>.buttonExit.Enabled = <font color="#ff00ff">true</font>;

<font color="#a52a2a"> 42 </font>            <font color="#a52a2a"><strong>this</strong></font>.buttonSend.Enabled = <font color="#ff00ff">true</font>;

<font color="#a52a2a"> 43 </font>            <font color="#a52a2a"><strong>this</strong></font>.textboxPort.Text = <font color="#ff00ff">""</font> + <font color="#ff00ff">10002</font>;

<font color="#a52a2a"> 44 </font>            textboxInput.Focus();

<font color="#a52a2a"> 45 </font>            listOngoing = <font color="#a52a2a"><strong>new</strong></font> dListOngoing(displayMessage);

<font color="#a52a2a"> 46 </font>        }

<font color="#a52a2a"> 47 </font>

<font color="#a52a2a"> 48 </font>        <font color="#2e8b57"><strong>private</strong></font> <font color="#2e8b57"><strong>void</strong></font> buttonSend_Click(<font color="#2e8b57"><strong>object</strong></font> sender, EventArgs e)

<font color="#a52a2a"> 49 </font>        {

<font color="#a52a2a"> 50 </font>            <font color="#a52a2a"><strong>this</strong></font>.SendMessage(textboxInput.Text);

<font color="#a52a2a"> 51 </font>        }

<font color="#a52a2a"> 52 </font>

<font color="#a52a2a"> 53 </font>        <font color="#2e8b57"><strong>private</strong></font> <font color="#2e8b57"><strong>void</strong></font> buttonEnd_Click(<font color="#2e8b57"><strong>object</strong></font> sender, EventArgs e)

<font color="#a52a2a"> 54 </font>        {

<font color="#a52a2a"> 55 </font>            <font color="#a52a2a"><strong>this</strong></font>.LeaveGroup();

<font color="#a52a2a"> 56 </font>

<font color="#a52a2a"> 57 </font>            buttonJoin.Enabled = <font color="#ff00ff">true</font>;

<font color="#a52a2a"> 58 </font>            buttonEnd.Enabled = <font color="#ff00ff">false</font>;

<font color="#a52a2a"> 59 </font>            buttonSend.Enabled = <font color="#ff00ff">false</font>;

<font color="#a52a2a"> 60 </font>            <font color="#a52a2a"><strong>this</strong></font>.AcceptButton = buttonJoin;

<font color="#a52a2a"> 61 </font>            <font color="#a52a2a"><strong>this</strong></font>.CancelButton = buttonExit;

<font color="#a52a2a"> 62 </font>        }

<font color="#a52a2a"> 63 </font>

<font color="#a52a2a"> 64 </font>        <font color="#2e8b57"><strong>private</strong></font> <font color="#2e8b57"><strong>void</strong></font> SendMessage(String message)

<font color="#a52a2a"> 65 </font>        {

<font color="#a52a2a"> 66 </font>            Byte[] buff;

<font color="#a52a2a"> 67 </font>

<font color="#a52a2a"> 68 </font>            buff = Encoding.ASCII.GetBytes(textboxName.Text + <font color="#ff00ff">": "</font> + message);

<font color="#a52a2a"> 69 </font>            client.Send(buff, buff.Length, multiCastEP);

<font color="#a52a2a"> 70 </font>            textboxInput.Text = <font color="#ff00ff">""</font>;

<font color="#a52a2a"> 71 </font>        }

<font color="#a52a2a"> 72 </font>

<font color="#a52a2a"> 73 </font>        <font color="#2e8b57"><strong>private</strong></font> <font color="#2e8b57"><strong>void</strong></font> LeaveGroup()

<font color="#a52a2a"> 74 </font>        {

<font color="#a52a2a"> 75 </font>            <font color="#a52a2a"><strong>if</strong></font> (group != <font color="#ff00ff">null</font>)

<font color="#a52a2a"> 76 </font>            {

<font color="#a52a2a"> 77 </font>                SendMessage(<font color="#ff00ff">"Leaving Chat"</font>);

<font color="#a52a2a"> 78 </font>                Application.DoEvents();

<font color="#a52a2a"> 79 </font>                Thread.Sleep(<font color="#ff00ff">500</font>);

<font color="#a52a2a"> 80 </font>                stayAlive = <font color="#ff00ff">false</font>;

<font color="#a52a2a"> 81 </font>                <font color="#a52a2a"><strong>while</strong></font> (receiveThread.IsAlive) Application.DoEvents();

<font color="#a52a2a"> 82 </font>                receiveThread.Join();

<font color="#a52a2a"> 83 </font>                client.DropMulticastGroup(group);

<font color="#a52a2a"> 84 </font>                client.Close();

<font color="#a52a2a"> 85 </font>                client = <font color="#ff00ff">null</font>;

<font color="#a52a2a"> 86 </font>                group = <font color="#ff00ff">null</font>;

<font color="#a52a2a"> 87 </font>                multiCastEP = <font color="#ff00ff">null</font>;

<font color="#a52a2a"> 88 </font>            }

<font color="#a52a2a"> 89 </font>        }

<font color="#a52a2a"> 90 </font>

<font color="#a52a2a"> 91 </font>        <font color="#2e8b57"><strong>private</strong></font> <font color="#2e8b57"><strong>void</strong></font> JoinGroup()

<font color="#a52a2a"> 92 </font>        {

<font color="#a52a2a"> 93 </font>            <font color="#a52a2a"><strong>if</strong></font> (!<font color="#2e8b57"><strong>int</strong></font>.TryParse(textboxPort.Text, <font color="#a52a2a"><strong>out</strong></font> port))

<font color="#a52a2a"> 94 </font>                <font color="#a52a2a"><strong>throw</strong></font> <font color="#a52a2a"><strong>new</strong></font> ApplicationException(<font color="#ff00ff">"Invalid Port Number"</font>);

<font color="#a52a2a"> 95 </font>            <font color="#a52a2a"><strong>if</strong></font> (!IPAddress.TryParse(comboAddress.Text, <font color="#a52a2a"><strong>out</strong></font> group))

<font color="#a52a2a"> 96 </font>                <font color="#a52a2a"><strong>throw</strong></font> <font color="#a52a2a"><strong>new</strong></font> ApplicationException(<font color="#ff00ff">"Invalid Multicast Group Address"</font>);

<font color="#a52a2a"> 97 </font>

<font color="#a52a2a"> 98 </font>            client = <font color="#a52a2a"><strong>new</strong></font> UdpClient(port);

<font color="#a52a2a"> 99 </font>            client.JoinMulticastGroup(group, TIME_TO_LIVE);

<font color="#a52a2a">100 </font>            multiCastEP = <font color="#a52a2a"><strong>new</strong></font> IPEndPoint(group, port);

<font color="#a52a2a">101 </font>

<font color="#a52a2a">102 </font>            <font color="#a52a2a"><strong>this</strong></font>.stayAlive = <font color="#ff00ff">true</font>;

<font color="#a52a2a">103 </font>            receiveThread = <font color="#a52a2a"><strong>new</strong></font> Thread(<font color="#a52a2a"><strong>this</strong></font>.runThread);

<font color="#a52a2a">104 </font>            receiveThread.Start();

<font color="#a52a2a">105 </font>

<font color="#a52a2a">106 </font>            <font color="#a52a2a"><strong>this</strong></font>.SendMessage(<font color="#ff00ff">"has joined the chat!"</font>);

<font color="#a52a2a">107 </font>            <font color="#a52a2a"><strong>this</strong></font>.AcceptButton = buttonSend;

<font color="#a52a2a">108 </font>            <font color="#a52a2a"><strong>this</strong></font>.CancelButton = buttonEnd;

<font color="#a52a2a">109 </font>            <font color="#a52a2a"><strong>this</strong></font>.buttonJoin.Enabled = <font color="#ff00ff">false</font>;

<font color="#a52a2a">110 </font>            <font color="#a52a2a"><strong>this</strong></font>.buttonEnd.Enabled = <font color="#ff00ff">true</font>;

<font color="#a52a2a">111 </font>            <font color="#a52a2a"><strong>this</strong></font>.buttonSend.Enabled = <font color="#ff00ff">true</font>;

<font color="#a52a2a">112 </font>            textboxInput.Focus();

<font color="#a52a2a">113 </font>        }

<font color="#a52a2a">114 </font>

<font color="#a52a2a">115 </font>        <font color="#2e8b57"><strong>private</strong></font> <font color="#2e8b57"><strong>void</strong></font> runThread()

<font color="#a52a2a">116 </font>        {

<font color="#a52a2a">117 </font>            Byte[] buff;

<font color="#a52a2a">118 </font>            String message;

<font color="#a52a2a">119 </font>            <font color="#a52a2a"><strong>while</strong></font> (stayAlive)

<font color="#a52a2a">120 </font>            {

<font color="#a52a2a">121 </font>                IPEndPoint ep = <font color="#ff00ff">null</font>;

<font color="#a52a2a">122 </font>                <font color="#a52a2a"><strong>if</strong></font> (client.Available &gt; <font color="#ff00ff">0</font>)

<font color="#a52a2a">123 </font>                {

<font color="#a52a2a">124 </font>                    buff = client.Receive(<font color="#a52a2a"><strong>ref</strong></font> ep);

<font color="#a52a2a">125 </font>                    message = Encoding.ASCII.GetString(buff);

<font color="#a52a2a">126 </font>                    <font color="#a52a2a"><strong>this</strong></font>.Invoke(<font color="#a52a2a"><strong>this</strong></font>.listOngoing, message);

<font color="#a52a2a">127 </font>                }

<font color="#a52a2a">128 </font>                <font color="#a52a2a"><strong>else</strong></font>

<font color="#a52a2a">129 </font>                {

<font color="#a52a2a">130 </font>                    Thread.Sleep(<font color="#ff00ff">10</font>);

<font color="#a52a2a">131 </font>                }

<font color="#a52a2a">132 </font>            }

<font color="#a52a2a">133 </font>        }

<font color="#a52a2a">134 </font>

<font color="#a52a2a">135 </font>        <font color="#2e8b57"><strong>private</strong></font> <font color="#2e8b57"><strong>void</strong></font> buttonExit_Click(<font color="#2e8b57"><strong>object</strong></font> sender, EventArgs e)

<font color="#a52a2a">136 </font>        {

<font color="#a52a2a">137 </font>            <font color="#a52a2a"><strong>this</strong></font>.LeaveGroup();

<font color="#a52a2a">138 </font>            buttonJoin.Enabled = <font color="#ff00ff">true</font>;

<font color="#a52a2a">139 </font>            buttonEnd.Enabled = <font color="#ff00ff">false</font>;

<font color="#a52a2a">140 </font>            buttonSend.Enabled = <font color="#ff00ff">false</font>;

<font color="#a52a2a">141 </font>            <font color="#a52a2a"><strong>this</strong></font>.AcceptButton = buttonJoin;

<font color="#a52a2a">142 </font>            <font color="#a52a2a"><strong>this</strong></font>.CancelButton = buttonExit;

<font color="#a52a2a">143 </font>            <font color="#a52a2a"><strong>this</strong></font>.Close();

<font color="#a52a2a">144 </font>        }

<font color="#a52a2a">145 </font>

<font color="#a52a2a">146 </font>        <font color="#2e8b57"><strong>public</strong></font> <font color="#2e8b57"><strong>void</strong></font> displayMessage(<font color="#2e8b57"><strong>string</strong></font> message)

<font color="#a52a2a">147 </font>        {

<font color="#a52a2a">148 </font>            lstOngoing.Items.Add(message);

<font color="#a52a2a">149 </font>            lstOngoing.Refresh();

<font color="#a52a2a">150 </font>        }

<font color="#a52a2a">151 </font>

<font color="#a52a2a">152 </font>        <font color="#2e8b57"><strong>private</strong></font> <font color="#2e8b57"><strong>void</strong></font> buttonJoin_Click(<font color="#2e8b57"><strong>object</strong></font> sender, EventArgs e)

<font color="#a52a2a">153 </font>        {

<font color="#a52a2a">154 </font>            <font color="#a52a2a"><strong>this</strong></font>.JoinGroup();

<font color="#a52a2a">155 </font>        }

<font color="#a52a2a">156 </font>    }

<font color="#a52a2a">157 </font>}</pre>
<p>Here is a screen shot of my application connected to another member of the class.</p>
<p><a href="http://www.dallinjones.com/2008/05/21/multicast-network-chat/multicast-network-chat-screenshot/" rel="attachment wp-att-56" title="Multicast Network Chat Screenshot"><img src="http://www.dallinjones.com/wp-content/uploads/2008/05/screenshot.JPG" alt="Multicast Network Chat Screenshot" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.dallinjones.com/2008/05/multicast-network-chat/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Microsoft AlphaImageLoader crashing IE 6</title>
		<link>http://www.dallinjones.com/2008/05/microsoft-alphaimageloader-crashing-ie-6/</link>
		<comments>http://www.dallinjones.com/2008/05/microsoft-alphaimageloader-crashing-ie-6/#comments</comments>
		<pubDate>Tue, 20 May 2008 20:37:52 +0000</pubDate>
		<dc:creator>SlipStream</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Web Programming]]></category>

		<guid isPermaLink="false">http://www.dallinjones.com/2008/05/20/microsoft-alphaimageloader-crashing-ie-6/</guid>
		<description><![CDATA[I&#8217;ve been developing a website for a local group that supports the arts (www.scera.org). The client called my place of work and mentioned that some of their users were having difficulties with IE 6 locking up. After spending several hours on the issue, I discovered that Microsoft has a bug, that causes the filter to [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been developing a website for a local group that supports the arts (<a href="http://www.scera.org" title="Scera Center for the Arts">www.scera.org</a>). The client called my place of work and mentioned that some of their users were having difficulties with IE 6 locking up. After spending several hours on the issue, I discovered that Microsoft has a bug, that causes the filter to no work properly when the images are preloaded. So to fix this issue I had to do the following:<span id="more-53"></span></p>
<p>First of I commented out all of the normal filter lines and replaced them with this</p>
<p>&lt;!&#8211;[if IE]&gt;<br />
&lt;style&gt;<br />
.top-content {<br />
background-image: none;<br />
/*filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=&#8221;/img/content-top.png&#8221;, sizingMethod=&#8221;scale&#8221;);*/<br />
}<br />
.logo {<br />
background-image: none;<br />
/*filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=&#8221;/img/scera-logo.png&#8221;, sizingMethod=&#8221;scale&#8221;);*/<br />
}<br />
.mdle-content {<br />
background-image: none;<br />
/*filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=&#8221;/img/content-bg.png&#8221;, sizingMethod=&#8221;scale&#8221;);*/<br />
}<br />
.btm-content {<br />
background-image: none;<br />
/*filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=&#8221;/img/content-btm.png&#8221;, sizingMethod=&#8221;scale&#8221;);*/<br />
}<br />
.side-nav-bg {<br />
background-image: none;<br />
/*filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=&#8221;/img/side-nav-bg.png&#8221;, sizingMethod=&#8221;scale&#8221;);*/<br />
}<br />
.tickets {<br />
background-image: none;<br />
/*filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=&#8221;/img/tickets.png&#8221;, sizingMethod=&#8221;scale&#8221;);*/<br />
}</p>
<p>&lt;/style&gt;<br />
&lt;![endif]&#8211;&gt;</p>
<p>Once I had done that, I wrote a pre-loader and called it in the &lt;body onload=&#8221;genesis()&#8221;&gt; of the website. The following is the code from the pre-loader:</p>
<p>&lt;script type=&#8221;text/javascript&#8221;&gt;<br />
function vIE(){return (navigator.appName==&#8217;Microsoft Internet Explorer&#8217;)?parseFloat((new RegExp(&#8220;MSIE ([0-9]{1,}[.0-9]{0,})&#8221;)).exec(navigator.userAgent)[1]):-1;}</p>
<p>function genesis() {<br />
if (vIE() &lt; 7 &amp;&amp; vIE() &gt; 0) {<br />
var divs = document.getElementsByTagName(&#8216;img&#8217;);<br />
for (i = 0; i &lt; divs.length; i++) {<br />
var im = new Image;<br />
im.src = divs[i].src;<br />
}<br />
document.getElementById(&#8216;top-content&#8217;).style.filter =  &#8220;progid:DXImageTransform.Microsoft.AlphaImageLoader(src=&#8217;/img/content-top.png&#8217;, sizingMethod=&#8217;scale&#8217;<br />
)&#8221;;<br />
document.getElementById(&#8216;logo&#8217;).style.filter =         &#8220;progid:DXImageTransform.Microsoft.AlphaImageLoader(src=&#8217;/img/scera-logo.png&#8217;, sizingMethod=&#8217;scale&#8217;)<br />
&#8220;;<br />
document.getElementById(&#8216;mdle-content&#8217;).style.filter = &#8220;progid:DXImageTransform.Microsoft.AlphaImageLoader(src=&#8217;/img/content-bg.png&#8217;, sizingMethod=&#8217;scale&#8217;<br />
)&#8221;;<br />
document.getElementById(&#8216;btm-content&#8217;).style.filter =  &#8220;progid:DXImageTransform.Microsoft.AlphaImageLoader(src=&#8217;/img/content-btm.png&#8217;, sizingMethod=&#8217;scale&#8217;<br />
)&#8221;;<br />
document.getElementById(&#8217;side-nav-bg&#8217;).style.filter =  &#8220;progid:DXImageTransform.Microsoft.AlphaImageLoader(src=&#8217;/img/side-nav-bg.png&#8217;, sizingMethod=&#8217;scale&#8217;<br />
)&#8221;;<br />
document.getElementById(&#8216;tickets&#8217;).style.filter =      &#8220;progid:DXImageTransform.Microsoft.AlphaImageLoader(src=&#8217;/img/tickets.png&#8217;, sizingMethod=&#8217;scale&#8217;)&#8221;;<br />
}<br />
}</p>
<p>&lt;/script&gt;</p>
<p>It isn&#8217;t the cleanest solution in the world, but it works (even if it is a little slow) granted, we ended up deciding that this solution was not the right one (needed to be faster when loading) so we changed it around a little, and now IE 6 uses get gifs rather than pngs.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dallinjones.com/2008/05/microsoft-alphaimageloader-crashing-ie-6/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Server Migration</title>
		<link>http://www.dallinjones.com/2008/04/server-migration/</link>
		<comments>http://www.dallinjones.com/2008/04/server-migration/#comments</comments>
		<pubDate>Thu, 10 Apr 2008 23:24:40 +0000</pubDate>
		<dc:creator>SlipStream</dc:creator>
				<category><![CDATA[Hardware]]></category>
		<category><![CDATA[How to's]]></category>
		<category><![CDATA[Server Maintenance]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://www.dallinjones.com/2008/04/10/server-migration/</guid>
		<description><![CDATA[I own a Utah web hosting business called Preciant Hosting. Recently I have started experiencing several problems with one of my servers. It would constantly go up and down. My monitoring software (Nagios for those that are interested) was showing that the server would be up for an hour or so, and then go down [...]]]></description>
			<content:encoded><![CDATA[<p>I own a Utah web hosting business called <a href="http://www.preciant.com" title="Utah web hosting and dedicated servers" target="_blank">Preciant Hosting</a>. Recently I have started experiencing several problems with one of my servers. It would constantly go up and down. My monitoring software (<a href="http://www.nagios.org" title="Nagios official website" target="_blank">Nagios</a> for those that are interested) was showing that the server would be up for an hour or so, and then go down for three-four hours while I tried to get the data center technicians to reboot the machine. Being as how I provide services for several customers from that machine, this up and down time is NOT acceptable.</p>
<p>I had previously decided to purchase some servers (rather than use dedicated servers spread around the nation) and move into a local data center. Since I work for a company that provides web hosting and other data center services, (such as colocation, which is what I needed) I got some rack space in the <a href="http://www.fiber.net" title="Utah colocation" target="_blank">Fibernet</a> &amp; <a href="http://www.nethosting.com" target="_blank" title="Utah colocation">Nethosting</a> data center and ordered my servers.</p>
<p>The servers have finally started to come in and I am slowly setting them up and moving them into the data center. I am planning on sharing all of my wo&#8217;s involved in migrating all of my servers and I am also planning on sharing my solutions to the problems</p>
<p>Return often to find out about my trials and solutions.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dallinjones.com/2008/04/server-migration/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>CakePHP: Gift from Heaven, or from Hell?</title>
		<link>http://www.dallinjones.com/2008/01/cakephp-gift-for-heaven-or-from-hell/</link>
		<comments>http://www.dallinjones.com/2008/01/cakephp-gift-for-heaven-or-from-hell/#comments</comments>
		<pubDate>Tue, 15 Jan 2008 23:55:06 +0000</pubDate>
		<dc:creator>SlipStream</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://www.dallinjones.com/2008/01/15/cakephp-gift-for-heaven-or-from-hell/</guid>
		<description><![CDATA[My development activies have called on my skill and talent to quickly and efficiently learn new things. So it is with CakePHP, at work we have several projects that need to be completed quickly with out much hassle, after looking at several different options, we decided to use the CakePHP libraries. I quickly discovered that [...]]]></description>
			<content:encoded><![CDATA[<p>My development activies have called on my skill and talent to quickly and efficiently learn new things. So it is with CakePHP, at work we have several projects that need to be completed quickly with out much hassle, after looking at several different options, we decided to use the CakePHP libraries. I quickly discovered that CakePHP has some awesome features that allow me to quickly and easily built website from scratch.</p>
<p><span id="more-37"></span></p>
<p>Although this frame work provides a ton of flexibility and power over the database associations and the layout of the site, I quickly discovered a large number of things that are either incredibly difficult to do, or that are impossible to do. The sad thing about this, is that these are basic database types of things that I ran into. I could understand if it were something very complex that no one does, but it is stuff that is an everyday kind of thing to do. Let me put forth an example:</p>
<p>Here is a very basic database to use with our example.</p>
<pre>
Videos
--------
id as int(11)
name as varchar(255)
icon as varchar(255)
path as varchar(255)
user_id as int(11)

Users
-------
id as int(11)
first_name as varchar(255)
last_name as varchar(255)
username as varchar(32)
password as varchar(32)
company_id as int(11)

Companies
--------------
id as int(11)
name as varchar(255)
description as text</pre>
<p>As you can see, we have a very basic example that consists of Videos that are attached to users. Users are then attached to a company. I simply wanted to use cake to read in each video and use the model association of belongsTo to attach both a company and a user. (This is because each video only has one user, and each user only has one company.) This should be easy in CakePHP right? Wrong!</p>
<p>After beating myself in the head for hours trying to figure out how to get the company to attach properly, I decided to dig into the code of CakePHP itself. I quickly discovered that the framework is there to allow for this type of thing, is simply doesn&#8217;t work. After a few minutes of hacking on the core CakePHP sources, I was able to devise a solution. My solution even though it is not graceful, works.</p>
<p>The worst part of my experience was not running into this issue though. The thing that drove me nuts was that I tried to talk to the developers in the IRC channel for CakePHP and was quickly snubbed by the developers after trying to get them to give me an answer on how to get this to work properly I was banned from the channel. WOW. Way to go open source community. Want to know why the corporate world will never take you serious? It is because you can&#8217;t handle constructive criticism.</p>
<p>Anyway, overall I really do like CakePHP, but there is an issue here that simply drives me nuts. HELP OUT YOUR USERS!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dallinjones.com/2008/01/cakephp-gift-for-heaven-or-from-hell/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
