<?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>yProxy™ Blog &#187; Software Development</title>
	<atom:link href="http://www.yproxy.com/blog/category/software-development/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.yproxy.com/blog</link>
	<description>yEnc Decoder news and tidbits</description>
	<lastBuildDate>Tue, 20 Apr 2010 16:21:39 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Lack of stream support for yEnc encoding</title>
		<link>http://www.yproxy.com/blog/lack-of-stream-support-for-yenc-encoding/</link>
		<comments>http://www.yproxy.com/blog/lack-of-stream-support-for-yenc-encoding/#comments</comments>
		<pubDate>Tue, 29 Jul 2008 18:27:09 +0000</pubDate>
		<dc:creator>Marcus</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[yEnc]]></category>
		<category><![CDATA[yProxy]]></category>

		<guid isPermaLink="false">http://www.yproxy.com/blog/?p=20</guid>
		<description><![CDATA[Jurgen, the creator of yEnc, and I have had discussions regarding the lack of stream support for yEnc encoding.  I&#8217;ve even mentioned it on the Wikipedia page for yEnc and also in the yProxy FAQ.  I&#8217;m going to cover streaming and pipelining in detail here so that you can better understand the limitations of yEnc and yProxy.  This article will also help you [...]]]></description>
			<content:encoded><![CDATA[<p>Jurgen, the creator of yEnc, and I have had discussions regarding the lack of stream support for yEnc encoding.  I&#8217;ve even mentioned it on the <a title="yEnc on Wikipedia" href="http://en.wikipedia.org/wiki/Yenc" target="_blank">Wikipedia</a> page for yEnc and also in the yProxy <a title="My take on yEnc" href="http://www.yproxy.com/faq41.html" target="_blank">FAQ</a>.  I&#8217;m going to cover streaming and pipelining in detail here so that you can better understand the limitations of yEnc and yProxy.  This article will also help you understand some important concepts that are applied elsewhere.</p>
<p>Apparently, the lack of streaming support for yEnc encoding was an oversight, probably stemming from lack of knowledge regarding the general design pattern used for streaming data.</p>
<h3>Pipelines</h3>
<p><em>Pipelining </em>relates to streaming, especially with yEnc.  In computing, processes often take data as input, perhaps change the data in some way, and then output the resulting data.  A second process may then take the output of the first process as its input, and so on.  When the output of one process is used as input by another process, this is called <em>pipelining</em>.</p>
<p>This pipelining effect is how proxies work.  The output from your news server is piped through yProxy to your newsreader.  This allows the user to create a pipeline of tools that filter or modify the data in multiple steps.  Connecting pipes allows generation of a specific output, often converting one format or protocol to another.</p>
<p><img class="size-full wp-image-26 aligncenter" title="yproxy_diagram" src="http://www.yproxy.com/blog/wp-content/uploads/2008/07/yproxy_diagram.gif" alt="yProxy Diagram" width="424" height="89" /></p>
<p><a href="http://www.yproxy.com/blog/wp-content/uploads/2008/07/cable_box_hookup.gif"></a>The pipelining concept is also used when hooking up cable television.  You connect the output from the wall into the input of your cable converter and the output from the cable converter into the input on your television.  Your cable converter unscrambles the TV signals as the data travels from the wall, through the cable converter, and into your TV.  Your cable converter may even be converting coaxial cable input into composite cable, S-Video, or HDMI.</p>
<p><a href="http://www.yproxy.com/blog/wp-content/uploads/2008/07/cable_box_hookup.gif"></a></p>
<p style="text-align: center;"><img class="size-full wp-image-25 aligncenter" title="cable_box_hookup" src="http://www.yproxy.com/blog/wp-content/uploads/2008/07/cable_box_hookup.gif" alt="Cable box hookup" width="324" height="179" /></p>
<h3>Streams</h3>
<p><em>Streaming</em> means that you process data in real time as you receive it, rather than waiting to receive all of the data before you begin processing it.</p>
<p>Streaming movies on the Internet means that you can start watching the movie from the beginning, as soon as it arrives, while the rest of the movie downloads.  You don&#8217;t have to wait for the entire movie to download to begin watching it.</p>
<p>Streaming reduces the latency, or wait time, while data is going through the pipeline.  If your cable converter needed to download an entire show before you could begin watching it, you would definitely notice the wait.  However, the cable converter processes the data as it is received and immediately passes it along to the TV, removing the perception of any delay.</p>
<p>While yEnc supports pipelining in both directions (encoding and decoding), yEnc supports streaming only for decoding.</p>
<h3>Streaming yEnc</h3>
<p>yEnc includes the size of the file in the yEnc header, instead of in the footer.</p>
<p>Imagine if you were the type of person that hated surprises, so you absolutely had to see the ending of a movie before you could watch it.  If that were the case, you could never watch a streaming movie.  You&#8217;d have to download the whole movie, skip to the end, then go back to the beginning.  yEnc has a similar problem.  yEnc requires the encoder to describe the end of the data before sending the data.</p>
<p>If yEnc had simply made the &#8220;size&#8221; information a footer instead of a header, yEnc would support streaming in both directions.  The current process in the pipe doesn&#8217;t have the size of the attachment until all of the data has flown through, so the size should be included at the end, not the beginning.</p>
<p>If you piped an attachment from your newsreader to yProxy, in order for yProxy to encode the attachment, yProxy would first have to receive the whole attachment, buffering it in memory or on your hard disk, generate the yEnc header, and then begin uploading the encoded attachment to the news server.  Outlook Express, Windows Mail, Thunderbird, or whichever newsreader you were using would have to wait while yProxy sends the entire attachment to the news server.  The newsreader would very likely timeout while it waits for yProxy to respond with the success message from the news server.  Therefore, yProxy does not support yEnc encoding.</p>
<p>Streaming and pipelining are important paradigms in communications and information technology.  Developers should adhere to both standards when designing protocols or encoding methods.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yproxy.com/blog/lack-of-stream-support-for-yenc-encoding/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>No news isn&#8217;t always good news</title>
		<link>http://www.yproxy.com/blog/avira-antivirus/</link>
		<comments>http://www.yproxy.com/blog/avira-antivirus/#comments</comments>
		<pubDate>Tue, 15 Jul 2008 02:14:52 +0000</pubDate>
		<dc:creator>Marcus</dc:creator>
				<category><![CDATA[Security]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Avast]]></category>
		<category><![CDATA[Avira]]></category>
		<category><![CDATA[malware]]></category>
		<category><![CDATA[McAfee]]></category>
		<category><![CDATA[Trojan]]></category>
		<category><![CDATA[Virus]]></category>

		<guid isPermaLink="false">http://www.yproxy.com/blog/?p=9</guid>
		<description><![CDATA[I intentionally downloaded something questionable on the Internet because I thought it might be a useful program. First, let me say that I don&#8217;t encounter too many destructive viruses any more.  Not since infecting computers became profitable have I personally seen any viruses that simply delete your hard drive or corrupt your master boot record or anything [...]]]></description>
			<content:encoded><![CDATA[<p>I intentionally downloaded something questionable on the Internet because I thought it might be a useful program.</p>
<p>First, let me say that I don&#8217;t encounter too many destructive viruses any more.  Not since infecting computers became profitable have I personally seen any viruses that simply delete your hard drive or corrupt your master boot record or anything like that.</p>
<p>I planned to run the questionable application on my laptop.  I hadn&#8217;t yet installed any antivirus software on my laptop, so I installed McAfee&#8217;s antivirus and firewall.  After the shields were up, I scanned the EXE.  Nothing was detected by McAfee, so I ran it.  The program seemed to do nothing.  Yet, even more suspcious than the program not doing what was expected&#8211;the program actually deleted itself.</p>
<p>Just because your antivirus doesn&#8217;t detect a problem doesn&#8217;t mean there isn&#8217;t a problem.</p>
<p>It turned out to be a Trojan backdoor program, which also installed some Internet Explorer ActiveX add-ons.  Interestingly, when I disabled one of the add-ons through IE, it re-enabled itself before I shut down IE.  Make sure you manage IE&#8217;s add-ons through Internet Options in control panel rather than through the Tools menu in IE.</p>
<p>Also, I couldn&#8217;t delete the DLLs that were part of the malware because they were loaded by winlogon.exe.  I tried killing the threads and handles using Windows SysInternals Process Explorer.  That didn&#8217;t seem to let me delete the DLLs, even though they were killed.</p>
<p>I&#8217;ve had good experiences with Avast Antivirus in the past, so I installed that.  To anounce a virus, Avast uses an audio alert, like the ship&#8217;s computer on Star Trek, which appeals to me.  Avast also has a simple user interface and a no-hassle install and no-hassle updates.</p>
<p><a title="Avast" href="http://www.avast.com/" target="_blank" rel="nofollow"><img class="size-medium wp-image-11 alignright" title="avast_logo" src="http://www.yproxy.com/blog/wp-content/uploads/2008/07/avast_logo.gif" alt="Avast" width="100" height="52" /></a>Avast has a pre-boot scan which can delete viruses before they&#8217;re loaded by Windows.  Unfortunately, Avast didn&#8217;t even detect the malware DLLs, however it did detect the original EXE, which I tested by re-downloading it.</p>
<p>So, I did some research.  I found an article that actually compared the effectiveness of antivirus programs.  The program that was rated #1 for accuracy was a program called Avira.</p>
<p><a title="Avira" href="http://www.avira.com/" target="_blank" rel="nofollow"><img class="alignleft size-full wp-image-10" title="avira_logo_web" src="http://www.yproxy.com/blog/wp-content/uploads/2008/07/avira_logo_web.gif" alt="Avira" width="102" height="102" /></a>Avira has a painless install, an easy user interface, and it detected not only the original EXE, but also each individual malware program that was delivered as payload by the EXE.</p>
<p>When Avira detected the DLLs, it asked what I wanted to do.  I said, &#8220;Move to quarantine&#8221;, but the files remained, which made sense because they were in use.   But after a reboot, the malware was effectively moved to the quarantine.</p>
<p>My favorite part about Avira&#8217;s user interface is that an open umbrella icon in your system tray means you&#8217;re protected, and a closed umbrella means you&#8217;re not&#8211;simple.</p>
<p>So, now I have three anti-viruses installed on my laptop, but they seem to get along.  Avira is free for personal use, like Avast.  However, Avira does nag you to upgrade with a pop-up, which may seem almost as bad as those Internet Explorer add-ons.</p>
<p>Antiviruses should be more clear by always giving an answer.  They should report one of the following: &#8220;infected&#8221;, &#8220;possibly infected (heuristics)&#8221;, and &#8220;unknown&#8221;.</p>
<p>Unfortunately, there is no way for an antivirus to report a program as &#8220;safe&#8221; unless the program has been digitally signed by a trusted author.  A digital signature identifies where a program came from, and it&#8217;s up to you to trust or not trust the program based on that.  It would be nice if an antivirus actually reported &#8220;safe&#8221;, not just &#8220;nothing detected&#8221;.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yproxy.com/blog/avira-antivirus/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Draining transaxle fluid on a 2003 Chevrolet cavalier</title>
		<link>http://www.yproxy.com/blog/draining-transaxle-fluid-on-a-2003-chevrolet-cavalier/</link>
		<comments>http://www.yproxy.com/blog/draining-transaxle-fluid-on-a-2003-chevrolet-cavalier/#comments</comments>
		<pubDate>Wed, 02 Jul 2008 15:31:05 +0000</pubDate>
		<dc:creator>Marcus</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[automatic transmission fluid]]></category>
		<category><![CDATA[Impala]]></category>
		<category><![CDATA[refactor]]></category>

		<guid isPermaLink="false">http://www.yproxy.com/blog/?p=7</guid>
		<description><![CDATA[There is no drain plug for the automatic transmission on my 2003 Chevrolet Impala 3.4L V6. It&#8217;s crazy work to get the fluid out.  You have to actually remove the screws on one side of the pan and loosen the screws on the other to drain the eight quarts of automatic transmission fluid.  It&#8217;s a messy job. This photo [...]]]></description>
			<content:encoded><![CDATA[<p>There is <strong>no</strong> drain plug for the automatic transmission on my 2003 Chevrolet Impala 3.4L V6.</p>
<p><a href="http://www.yproxy.com/blog/wp-content/uploads/2008/07/transmission_pan_chevrolet_impala.jpg"><img class="alignleft size-full wp-image-8" title="transmission_pan_chevrolet_impala" src="http://www.yproxy.com/blog/wp-content/uploads/2008/07/transmission_pan_chevrolet_impala.jpg" alt="Transmission/Transaxle Pan for Chevrolet Impala" width="320" height="240" /></a>It&#8217;s crazy work to get the fluid out.  You have to actually remove the screws on one side of the pan and loosen the screws on the other to drain the eight quarts of automatic transmission fluid.  It&#8217;s a messy job.</p>
<p>This photo shows the drain pan, and I&#8217;ve marked the screws on one side, but these screws go all the way around the pan.</p>
<p>You have to take the pan cover off completely in order to replace the filter anyway, but it sure would be nice to drain the fluid in a controlled manner first.</p>
<p>I&#8217;m glad I only need to do this every 50,000 miles.</p>
<p>Developing software is a lot like driving a car.  Software has a maintenance mode, and cars have a maintenance mode. </p>
<p>There is a school of thought that dictates that if you know the direction that your software is headed, you try to incorporate some flexibility into your design in order to more easily accommodate those changes.</p>
<p>Yet, there is a school of thought that believes that you should only write what you need, and simply re-factor in the future if you hit a road block with your current design.  The idea behind this is that the number one risk factor for all development tasks is the time line.  Therefore, the number one goal should be to simply get it done.</p>
<p>Those that coded two digit years into their code used the secpmd concept.  Yes, we were still using a lot of that software when the year 2000 came, and a lot of changes had to be made while the software was in maintenance mode.</p>
<p>While it was certainly a lot of work to re-factor the software to handle four digit years, all of these software projects that had to be updated for Y2K had one thing in common&#8211;they were done.  They had made the move from development to production and maintenance.</p>
<p>It&#8217;s understandable why Chevrolet decided not to put a drain plug on the pan.    They would have to design it.  They would have to test the plug.  They would have to order the parts, and keep them in stock, all for something that would only be used every 50,000 miles.</p>
<p>When asked why there was no drain plug, the developers probably answered, &#8220;Well, just loosen the screws and drain it that way.  It&#8217;s not the ideal situation, but it&#8217;s done.&#8221;</p>
<p>&#8220;What about when we hit the year 2000?&#8221; they asked.  &#8220;We&#8217;ll fix it then.  At least it&#8217;s done.  Go make some money.&#8221;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yproxy.com/blog/draining-transaxle-fluid-on-a-2003-chevrolet-cavalier/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
