<?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>Tim Dupree - tdupree.com</title>
	<atom:link href="http://tdupree.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://tdupree.com</link>
	<description>Posts about New Tech, Web Tech, Green Tech, and whatever else Tim Dupree has floating around in his head.</description>
	<lastBuildDate>Mon, 07 Mar 2011 23:16:19 +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>Javascript Clouds Animation with Mootools</title>
		<link>http://tdupree.com/2011/03/03/javascript-clouds-animation-with-mootools/</link>
		<comments>http://tdupree.com/2011/03/03/javascript-clouds-animation-with-mootools/#comments</comments>
		<pubDate>Fri, 04 Mar 2011 00:14:48 +0000</pubDate>
		<dc:creator>Tim Dupree</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://tdupree.com/?p=256</guid>
		<description><![CDATA[After creating a basic placeholder page for fromthecloudup.com, I decided it would be fun to make some clouds randomly float across the page since there isn&#8217;t anything else really exciting going on there. So I wrote some Javascript classes using Mootools and made myself a cloud generator :). It consists of two clases, a main class called CloudGenerator that orchistrates everything and a Clouds class that governs individual clouds. It requires Mootools 1.3.1 Core &#038; More. It&#8217;s pretty simple to get up and running. You can download all of the source, plus a demo page complete with cloud graphic here:...]]></description>
			<content:encoded><![CDATA[<p>After creating a basic placeholder page for <a href="http://fromthecloudup.com" target="_blank">fromthecloudup.com</a>, I decided it would be fun to make some clouds randomly float across the page since there isn&#8217;t anything else really exciting going on there. So I wrote some Javascript classes using Mootools and made myself a cloud generator :).</p>
<p>It consists of two clases, a main class called CloudGenerator that orchistrates everything and a Clouds class that governs individual clouds. It requires Mootools 1.3.1 Core &#038; More. It&#8217;s pretty simple to get up and running.</p>
<p>You can download all of the source, plus a demo page complete with cloud graphic here: <a href="http://tdupree.com/cloudgenerator/CloudGenerator-1.0.zip" target="_blank" title="Download Cloud Generator Source Code">CloudGenerator-1.0.zip</a></p>
<p>You may view a demo here: <a href="http://tdupree.com/cloudgenerator/demo.html" target="_blank" title="Cloud Generator Demo">Cloud Generator Demo</a></p>
<p>To get started, first you need to specify some CSS within the <b style="font-size:12px;">&lt;head&gt;</b> tag of your page. Really the only necessary thing here is to specify the #sky element styles.</p>
<p></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
</pre></td><td class="code"><pre class="css" style="font-family:monospace;">&lt;style type<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;text/css&quot;</span><span style="color: #00AA00;">&gt;</span>
html<span style="color: #00AA00;">,</span> body <span style="color: #00AA00;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">padding</span><span style="color: #00AA00;">:</span> <span style="color: #933;">0px</span><span style="color: #00AA00;">;</span>
    <span style="color: #000000; font-weight: bold;">margin</span><span style="color: #00AA00;">:</span> <span style="color: #933;">0px</span><span style="color: #00AA00;">;</span>    
<span style="color: #00AA00;">&#125;</span>
body <span style="color: #00AA00;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">background-color</span><span style="color: #00AA00;">:</span> <span style="color: #cc00cc;">#CBEFFA</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
<span style="color: #cc00cc;">#sky</span> <span style="color: #00AA00;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">position</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">absolute</span><span style="color: #00AA00;">;</span>
    <span style="color: #000000; font-weight: bold;">top</span><span style="color: #00AA00;">:</span> <span style="color: #933;">0px</span><span style="color: #00AA00;">;</span>
    <span style="color: #000000; font-weight: bold;">left</span><span style="color: #00AA00;">:</span> <span style="color: #933;">0px</span><span style="color: #00AA00;">;</span>
    <span style="color: #000000; font-weight: bold;">width</span><span style="color: #00AA00;">:</span> <span style="color: #933;">100%</span><span style="color: #00AA00;">;</span>
    <span style="color: #000000; font-weight: bold;">height</span><span style="color: #00AA00;">:</span> <span style="color: #933;">600px</span><span style="color: #00AA00;">;</span>
    <span style="color: #000000; font-weight: bold;">overflow</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">hidden</span><span style="color: #00AA00;">;</span>   
<span style="color: #00AA00;">&#125;</span>
&lt;/style<span style="color: #00AA00;">&gt;</span></pre></td></tr></table></div>

<p></p>
<p>Next, you will need to include a div named &#8220;sky&#8221; after your body tag in the HTML of your page.</p>
<p></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;sky&quot;</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span></pre></td></tr></table></div>

<p></p>
<p>At the bottom of your page, just before the closing <b style="font-size:12px;">&lt;/body&gt;</b> tag, you will need to include the required Javascript files. Here you can see I include Mootools 1.3.1 Core and More in one file which I then compressed with the Google Closure Compiler. Next, I included an uncompressed and commented version of the Cloud Generator classes.</p>
<p></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #339933;">&lt;</span>script type<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;text/javascript&quot;</span> src<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;/js/mootools-1.3.1-complete-gc.js&quot;</span><span style="color: #339933;">&gt;&lt;/</span>script<span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;</span>script type<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;text/javascript&quot;</span> src<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;/js/cloudGenerator-1.0.js&quot;</span><span style="color: #339933;">&gt;&lt;/</span>script<span style="color: #339933;">&gt;</span></pre></td></tr></table></div>

<p></p>
<p>After those files are included, you will need to write a snippet of Javascript to create your CloudGenerator and pass in any options you wish to define.</p>
<p></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #339933;">&lt;</span>script type<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;text/javascript&quot;</span><span style="color: #339933;">&gt;</span>
<span style="color: #003366; font-weight: bold;">var</span> weatherMachine<span style="color: #339933;">;</span>
window.<span style="color: #660066;">addEvent</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'domready'</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    weatherMachine <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> CloudGenerator<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
        totalClouds<span style="color: #339933;">:</span> <span style="color: #CC0000;">8</span><span style="color: #339933;">,</span>
        cloudScales<span style="color: #339933;">:</span> <span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0.8</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">0.6</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">0.4</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">0.2</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span>
        cloudImg<span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;/images/png/cloud.png&quot;</span>
    <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #339933;">&lt;/</span>script<span style="color: #339933;">&gt;</span></pre></td></tr></table></div>

<p></p>
<p>The options for the CloudGenerator class are listed below (note that below are the defaults for each option).</p>
<p></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #006600; font-style: italic;">// These are default options for the CloudGenerator class that can be modified</span>
<span style="color: #006600; font-style: italic;">// when creating a new CloudGenerator instance</span>
options<span style="color: #339933;">:</span> <span style="color: #009900;">&#123;</span>
    totalClouds<span style="color: #339933;">:</span>  <span style="color: #CC0000;">4</span><span style="color: #339933;">,</span>        <span style="color: #006600; font-style: italic;">// Total number of clouds on screen at a given time (int)</span>
    minDuration<span style="color: #339933;">:</span> <span style="color: #CC0000;">10000</span><span style="color: #339933;">,</span>     <span style="color: #006600; font-style: italic;">// Minimum travel time for a cloud across the screen (milliseconds)</span>
    maxDuration<span style="color: #339933;">:</span> <span style="color: #CC0000;">120000</span><span style="color: #339933;">,</span>    <span style="color: #006600; font-style: italic;">// Maximum tracel time for a cloud across the screen (milliseconds)</span>
    checkInterval<span style="color: #339933;">:</span> <span style="color: #CC0000;">10000</span><span style="color: #339933;">,</span>   <span style="color: #006600; font-style: italic;">// The interval used to check if new clouds are needed (milliseconds)</span>
    autoStart<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">,</span>        <span style="color: #006600; font-style: italic;">// Automatically starts the cloud generator by default (bool)</span>
    sky<span style="color: #339933;">:</span> $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;sky&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>          <span style="color: #006600; font-style: italic;">// Default sky target resides in an element named &quot;sky&quot; (element)</span>
    cloudImg<span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;cloud.png&quot;</span><span style="color: #339933;">,</span>  <span style="color: #006600; font-style: italic;">// Define default cloud image (path/url)</span>
    cloudDirection<span style="color: #339933;">:</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">,</span>      <span style="color: #006600; font-style: italic;">// 0 = left to right, 1 = right to left (int)</span>
    cloudWidth<span style="color: #339933;">:</span> <span style="color: #CC0000;">573</span><span style="color: #339933;">,</span>        <span style="color: #006600; font-style: italic;">// Cloud width (px)</span>
    cloudHeight<span style="color: #339933;">:</span> <span style="color: #CC0000;">262</span><span style="color: #339933;">,</span>       <span style="color: #006600; font-style: italic;">// Cloud height (px)</span>
    cloudScales<span style="color: #339933;">:</span> <span style="color: #009900;">&#91;</span><span style="color: #CC0000;">1</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">0.8</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">0.6</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">0.4</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">0.2</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span>   <span style="color: #006600; font-style: italic;">// Define an array containing the sizes the cloud will be scaled to (%)</span>
    maxAltitude<span style="color: #339933;">:</span> <span style="color: #CC0000;">600</span><span style="color: #339933;">,</span>       <span style="color: #006600; font-style: italic;">// This defines the vertical space you allow clouds to appear within the sky (px)</span>
    cloudTransition<span style="color: #339933;">:</span> Fx.<span style="color: #660066;">Transitions</span>.<span style="color: #660066;">linear</span>  <span style="color: #006600; font-style: italic;">//Define the transition algorithm for the cloud movement</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p></p>
<p>When you are all said and done, a basic page with the Cloud Generator installed should look like this:</p>
<p></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
</pre></td><td class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;!doctype html&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">html</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">head</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">meta</span> <span style="color: #000066;">http-equiv</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;Content-Type&quot;</span> <span style="color: #000066;">content</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text/html; charset=utf-8&quot;</span> <span style="color: #66cc66;">/</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">title</span>&gt;</span>My Sweet Animated Clouds Page<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">title</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">style</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text/css&quot;</span>&gt;</span>
html, body {
    padding: 0px;
    margin: 0px;    
}
body {
    background-color: #CBEFFA;
}
#sky {
    position: absolute;
    top: 0px;
    left: 0px;
    width: 100%;
    height: 600px;
    overflow: hidden;   
}
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">style</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">head</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">body</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;sky&quot;</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">&lt;!-- Cue the Javascript --&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">script</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text/javascript&quot;</span> <span style="color: #000066;">src</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;/js/mootools-1.3.1-complete-gc.js&quot;</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">script</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">script</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text/javascript&quot;</span> <span style="color: #000066;">src</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;/js/cloudGenerator-1.0.js&quot;</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">script</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">script</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text/javascript&quot;</span>&gt;</span>
var weatherMachine;
window.addEvent('domready', function(){
    weatherMachine = new CloudGenerator({
        totalClouds: 8,
        cloudScales: [0.8, 0.6, 0.4, 0.2],
        cloudImg: &quot;/images/png/cloud.png&quot;
    });
});
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">script</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">body</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">html</span>&gt;</span></pre></td></tr></table></div>

<p></p>
<p style="padding-top: 5px;">Have a look at the CloudGenerator and Cloud classes below to get a better understanding of how they work and how to use them.</p>
<p></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> CloudGenerator <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> <span style="color: #003366; font-weight: bold;">Class</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
    <span style="color: #006600; font-style: italic;">// Implement the Events and Options utility classes</span>
    Implements<span style="color: #339933;">:</span> <span style="color: #009900;">&#91;</span>Events<span style="color: #339933;">,</span> Options<span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span>
&nbsp;
    <span style="color: #006600; font-style: italic;">// Initialize our defualt values for the class options passed in</span>
    options<span style="color: #339933;">:</span> <span style="color: #009900;">&#123;</span>
        totalClouds<span style="color: #339933;">:</span>  <span style="color: #CC0000;">4</span><span style="color: #339933;">,</span>        <span style="color: #006600; font-style: italic;">// Total number of clouds on screen at a given time (int)</span>
        minDuration<span style="color: #339933;">:</span> <span style="color: #CC0000;">10000</span><span style="color: #339933;">,</span>     <span style="color: #006600; font-style: italic;">// Minimum travel time for a cloud across the screen (milliseconds)</span>
        maxDuration<span style="color: #339933;">:</span> <span style="color: #CC0000;">120000</span><span style="color: #339933;">,</span>    <span style="color: #006600; font-style: italic;">// Maximum tracel time for a cloud across the screen (milliseconds)</span>
        checkInterval<span style="color: #339933;">:</span> <span style="color: #CC0000;">10000</span><span style="color: #339933;">,</span>   <span style="color: #006600; font-style: italic;">// The interval used to check if new clouds are needed (milliseconds)</span>
        autoStart<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">,</span>        <span style="color: #006600; font-style: italic;">// Automatically starts the cloud generator by default (bool)</span>
        sky<span style="color: #339933;">:</span> $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;sky&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>          <span style="color: #006600; font-style: italic;">// Default sky target resides in an element named &quot;sky&quot; (element)</span>
        cloudImg<span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;cloud.png&quot;</span><span style="color: #339933;">,</span>  <span style="color: #006600; font-style: italic;">// Define default cloud image (path/url)</span>
        cloudDirection<span style="color: #339933;">:</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">,</span>      <span style="color: #006600; font-style: italic;">// 0 = left to right, 1 = right to left (int)</span>
        cloudWidth<span style="color: #339933;">:</span> <span style="color: #CC0000;">573</span><span style="color: #339933;">,</span>        <span style="color: #006600; font-style: italic;">// Cloud width (px)</span>
        cloudHeight<span style="color: #339933;">:</span> <span style="color: #CC0000;">262</span><span style="color: #339933;">,</span>       <span style="color: #006600; font-style: italic;">// Cloud height (px)</span>
        cloudScales<span style="color: #339933;">:</span> <span style="color: #009900;">&#91;</span><span style="color: #CC0000;">1</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">0.8</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">0.6</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">0.4</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">0.2</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span>   <span style="color: #006600; font-style: italic;">// Define an array containing the sizes the cloud will be scaled to (%)</span>
        maxAltitude<span style="color: #339933;">:</span> <span style="color: #CC0000;">600</span><span style="color: #339933;">,</span>       <span style="color: #006600; font-style: italic;">// This defines the vertical space you allow clouds to appear within the sky (px)</span>
        cloudTransition<span style="color: #339933;">:</span> Fx.<span style="color: #660066;">Transitions</span>.<span style="color: #660066;">linear</span>  <span style="color: #006600; font-style: italic;">//Define the transition algorithm for the cloud movement</span>
    <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
&nbsp;
    cloudCheck<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">null</span><span style="color: #339933;">,</span>           <span style="color: #006600; font-style: italic;">// Initialize the vairable to hold the setInterval declaration</span>
    cloudsInSky<span style="color: #339933;">:</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">,</span>             <span style="color: #006600; font-style: italic;">// Keep track of number of clouds in sky</span>
    cloudSky<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">null</span><span style="color: #339933;">,</span>             <span style="color: #006600; font-style: italic;">// A reference to the cloudSky generated and injected into the sky element</span>
&nbsp;
&nbsp;
    <span style="color: #006600; font-style: italic;">// Our constructor for the CloudGenerator class</span>
    <span style="color: #006600; font-style: italic;">// It takes in the options passed to it and uses the implemented Options</span>
    <span style="color: #006600; font-style: italic;">// utility class to modify any defualt options in our options object</span>
    initialize<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>options<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #006600; font-style: italic;">// Modify any defaults with the passed in options</span>
        <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">setOptions</span><span style="color: #009900;">&#40;</span>options<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #006600; font-style: italic;">// Create Cloud Sky</span>
        <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">cloudSky</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Element<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'div'</span><span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span>
            id<span style="color: #339933;">:</span> <span style="color: #3366CC;">'cloudSky'</span><span style="color: #339933;">,</span>
            src<span style="color: #339933;">:</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">options</span>.<span style="color: #660066;">cloudImg</span><span style="color: #339933;">,</span>
            styles<span style="color: #339933;">:</span> <span style="color: #009900;">&#123;</span>
                position<span style="color: #339933;">:</span> <span style="color: #3366CC;">'absolute'</span><span style="color: #339933;">,</span>
                width<span style="color: #339933;">:</span> <span style="color: #009900;">&#40;</span>sky.<span style="color: #660066;">getDimensions</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">x</span> <span style="color: #339933;">+</span> <span style="color: #009900;">&#40;</span><span style="color: #CC0000;">2</span><span style="color: #339933;">*</span><span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">options</span>.<span style="color: #660066;">cloudWidth</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
                left<span style="color: #339933;">:</span> <span style="color: #339933;">-</span><span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">options</span>.<span style="color: #660066;">cloudWidth</span>  
            <span style="color: #009900;">&#125;</span>
        <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #006600; font-style: italic;">// Place the cloud container within the sky</span>
        <span style="color: #006600; font-style: italic;">// This lets us ensure that the clouds can smoothly enter and exit the </span>
        <span style="color: #006600; font-style: italic;">// boundaries of the sky element</span>
        sky.<span style="color: #660066;">grab</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">cloudSky</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #006600; font-style: italic;">// autostat the cloud generator by default</span>
        <span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">options</span>.<span style="color: #660066;">autoStart</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
            <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">startGenerator</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
&nbsp;
    <span style="color: #006600; font-style: italic;">// Check if there are less than the max number of clouds in the sky</span>
    <span style="color: #006600; font-style: italic;">// If there is room, deploy another cloud, if not, do nothing</span>
    deploy<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #003366; font-weight: bold;">var</span> cloudScale <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>Math.<span style="color: #660066;">floor</span><span style="color: #009900;">&#40;</span>Math.<span style="color: #660066;">random</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">*</span><span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">options</span>.<span style="color: #660066;">cloudScales</span>.<span style="color: #660066;">length</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        cloudScale <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">options</span>.<span style="color: #660066;">cloudScales</span><span style="color: #009900;">&#91;</span>cloudScale<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #003366; font-weight: bold;">var</span> cloudDuration <span style="color: #339933;">=</span> Math.<span style="color: #660066;">floor</span><span style="color: #009900;">&#40;</span>Math.<span style="color: #660066;">random</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">*</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">options</span>.<span style="color: #660066;">maxDuration</span> <span style="color: #339933;">+</span> <span style="color: #CC0000;">1</span> <span style="color: #339933;">-</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">options</span>.<span style="color: #660066;">minDuration</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> 
                            <span style="color: #339933;">+</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">options</span>.<span style="color: #660066;">minDuration</span><span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #003366; font-weight: bold;">var</span> cloudAltitude <span style="color: #339933;">=</span> Math.<span style="color: #660066;">floor</span><span style="color: #009900;">&#40;</span>Math.<span style="color: #660066;">random</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">*</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">options</span>.<span style="color: #660066;">maxAltitude</span> <span style="color: #339933;">-</span> <span style="color: #009900;">&#40;</span>cloudScale <span style="color: #339933;">*</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">options</span>.<span style="color: #660066;">cloudHeight</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">cloudsInSky</span> <span style="color: #339933;">&lt;</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">options</span>.<span style="color: #660066;">totalClouds</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #339933;">!</span><span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">cloudsFull</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
            <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">cloudsInSky</span><span style="color: #339933;">++;</span>
            <span style="color: #003366; font-weight: bold;">new</span> Cloud<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
                width<span style="color: #339933;">:</span> Math.<span style="color: #660066;">floor</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">options</span>.<span style="color: #660066;">cloudWidth</span> <span style="color: #339933;">*</span> cloudScale<span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
                height<span style="color: #339933;">:</span> Math.<span style="color: #660066;">floor</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">options</span>.<span style="color: #660066;">cloudHeight</span> <span style="color: #339933;">*</span> cloudScale<span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
                altitude<span style="color: #339933;">:</span> cloudAltitude<span style="color: #339933;">,</span>
                duration<span style="color: #339933;">:</span> cloudDuration<span style="color: #339933;">,</span>
                direction<span style="color: #339933;">:</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">options</span>.<span style="color: #660066;">cloudDirection</span><span style="color: #339933;">,</span>
                cloudImg<span style="color: #339933;">:</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">options</span>.<span style="color: #660066;">cloudImg</span><span style="color: #339933;">,</span>
                cloudTransition<span style="color: #339933;">:</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">options</span>.<span style="color: #660066;">cloudTransition</span><span style="color: #339933;">,</span>
                onComplete<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
                    <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">removeCloud</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                <span style="color: #009900;">&#125;</span>.<span style="color: #660066;">bind</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span>
            <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
&nbsp;
    <span style="color: #006600; font-style: italic;">// Decrement cloudsInSky variable</span>
    removeCloud<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">cloudsInSky</span> <span style="color: #339933;">&gt;</span> <span style="color: #CC0000;">0</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
            <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">cloudsInSky</span><span style="color: #339933;">--;</span>
            console.<span style="color: #660066;">log</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;cloud removed&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
&nbsp;
    <span style="color: #006600; font-style: italic;">// Stop the cloudGenerator</span>
    stopGenerator<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        clearInterval<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">cloudCheck</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000066; font-weight: bold;">return</span> <span style="color: #3366CC;">&quot;generator stopped&quot;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
&nbsp;
    <span style="color: #006600; font-style: italic;">// Start the cloudGenerator</span>
    startGenerator<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">deploy</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">cloudCheck</span> <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">deploy</span>.<span style="color: #660066;">periodical</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">options</span>.<span style="color: #660066;">checkInterval</span><span style="color: #339933;">,</span> <span style="color: #000066; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
&nbsp;
<span style="color: #003366; font-weight: bold;">var</span> Cloud <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> <span style="color: #003366; font-weight: bold;">Class</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
    <span style="color: #006600; font-style: italic;">// Implement the Events and Options utility classes</span>
    Implements<span style="color: #339933;">:</span> <span style="color: #009900;">&#91;</span>Events<span style="color: #339933;">,</span> Options<span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span>
&nbsp;
    cloudId<span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;&quot;</span><span style="color: #339933;">,</span>    <span style="color: #006600; font-style: italic;">// hold a reference to this cloud's DOM id property</span>
&nbsp;
    options<span style="color: #339933;">:</span> <span style="color: #009900;">&#123;</span>
        duration<span style="color: #339933;">:</span> <span style="color: #CC0000;">4000</span><span style="color: #339933;">,</span>         <span style="color: #006600; font-style: italic;">// Duration of the clouds movement across the sky (milliseconds)</span>
        direction<span style="color: #339933;">:</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">,</span>           <span style="color: #006600; font-style: italic;">// Direction of the clouds movement, 0 = left to right and vice versa (int)</span>
        altitude<span style="color: #339933;">:</span> <span style="color: #CC0000;">200</span><span style="color: #339933;">,</span>          <span style="color: #006600; font-style: italic;">// Altitude of the cloud in the sky</span>
        width<span style="color: #339933;">:</span> <span style="color: #CC0000;">573</span><span style="color: #339933;">,</span>             <span style="color: #006600; font-style: italic;">// Width of the cloud (px)</span>
        height<span style="color: #339933;">:</span> <span style="color: #CC0000;">262</span><span style="color: #339933;">,</span>            <span style="color: #006600; font-style: italic;">// Height of the cloud (px)</span>
        cloudImg<span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;cloud.png&quot;</span><span style="color: #339933;">,</span>  <span style="color: #006600; font-style: italic;">// Cloud image (path/url)</span>
        sky<span style="color: #339933;">:</span> $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;cloudSky&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>     <span style="color: #006600; font-style: italic;">// CloudSky element that the cloud will be injected into (element)</span>
        cloudTransition<span style="color: #339933;">:</span> Fx.<span style="color: #660066;">Transitions</span>.<span style="color: #660066;">linear</span>  <span style="color: #006600; font-style: italic;">//Define the transition algorithm for the cloud movement</span>
    <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
&nbsp;
    initialize<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>options<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #006600; font-style: italic;">// modify any defaults with the passed in options</span>
        <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">setOptions</span><span style="color: #009900;">&#40;</span>options<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #006600; font-style: italic;">// create and animate the cloud element</span>
        <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">createCloud</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
&nbsp;
    createCloud<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">cloudId</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">'cloud-'</span> <span style="color: #339933;">+</span> <span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">new</span> Date<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">getTime</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #006600; font-style: italic;">// determine if cloud will be moving left to right or right to left</span>
        <span style="color: #006600; font-style: italic;">// the position cloud offscreen to begin movement</span>
        <span style="color: #003366; font-weight: bold;">var</span> cloudStyle <span style="color: #339933;">=</span> <span style="color: #009900;">&#123;</span> 
            position<span style="color: #339933;">:</span> <span style="color: #3366CC;">'absolute'</span><span style="color: #339933;">,</span>
            top<span style="color: #339933;">:</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">options</span>.<span style="color: #660066;">altitude</span><span style="color: #339933;">,</span>
            width<span style="color: #339933;">:</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">options</span>.<span style="color: #660066;">width</span><span style="color: #339933;">,</span>
            height<span style="color: #339933;">:</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">options</span>.<span style="color: #660066;">height</span> 
        <span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #003366; font-weight: bold;">var</span> skyPosition <span style="color: #339933;">=</span> <span style="color: #3366CC;">'upperRight'</span><span style="color: #339933;">;</span> <span style="color: #006600; font-style: italic;">// Move the cloud to the right, ignore the 'upper'</span>
        <span style="color: #003366; font-weight: bold;">var</span> cloudEdge <span style="color: #339933;">=</span> <span style="color: #3366CC;">'upperLeft'</span><span style="color: #339933;">;</span>    <span style="color: #006600; font-style: italic;">// Align the edge of the cloud to the edg edge of the sky</span>
&nbsp;
        <span style="color: #006600; font-style: italic;">// Determine the direction of the cloud and set styles and positions</span>
        <span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">options</span>.<span style="color: #660066;">direction</span> <span style="color: #339933;">===</span> <span style="color: #CC0000;">0</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
            cloudStyle.<span style="color: #660066;">left</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #CC0000;">0</span> <span style="color: #339933;">-</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">options</span>.<span style="color: #660066;">width</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
        <span style="color: #000066; font-weight: bold;">else</span> <span style="color: #009900;">&#123;</span>
            cloudStyle.<span style="color: #660066;">right</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #CC0000;">0</span> <span style="color: #339933;">-</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">options</span>.<span style="color: #660066;">width</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            skyPosition <span style="color: #339933;">=</span> <span style="color: #3366CC;">'upperLeft'</span><span style="color: #339933;">;</span>
            cloudEdge <span style="color: #339933;">=</span> <span style="color: #3366CC;">'upperRight'</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
&nbsp;
        <span style="color: #006600; font-style: italic;">// Create the image element for the cloud</span>
        <span style="color: #003366; font-weight: bold;">var</span> cloud <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Element<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'img'</span><span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span>
            id<span style="color: #339933;">:</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">cloudId</span><span style="color: #339933;">,</span>
            src<span style="color: #339933;">:</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">options</span>.<span style="color: #660066;">cloudImg</span><span style="color: #339933;">,</span>
            styles<span style="color: #339933;">:</span> cloudStyle
        <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #006600; font-style: italic;">// Add the cloud image element to the cloudSky div</span>
        sky.<span style="color: #660066;">grab</span><span style="color: #009900;">&#40;</span>cloud<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #006600; font-style: italic;">// Move the cloud across the sky</span>
        <span style="color: #003366; font-weight: bold;">new</span> Fx.<span style="color: #660066;">Move</span><span style="color: #009900;">&#40;</span>cloud<span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span>
            relativeTo<span style="color: #339933;">:</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">options</span>.<span style="color: #660066;">sky</span><span style="color: #339933;">,</span>
            position<span style="color: #339933;">:</span> skyPosition<span style="color: #339933;">,</span>
            edge<span style="color: #339933;">:</span> cloudEdge<span style="color: #339933;">,</span>
            offset<span style="color: #339933;">:</span> <span style="color: #009900;">&#123;</span>x<span style="color: #339933;">:</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">,</span> y<span style="color: #339933;">:</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">options</span>.<span style="color: #660066;">altitude</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span> 
            duration<span style="color: #339933;">:</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">options</span>.<span style="color: #660066;">duration</span><span style="color: #339933;">,</span>
            transition<span style="color: #339933;">:</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">options</span>.<span style="color: #660066;">cloudTransition</span><span style="color: #339933;">,</span>
            onComplete<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
                <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">complete</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #009900;">&#125;</span>.<span style="color: #660066;">bind</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span>
        <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">start</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
&nbsp;
    complete<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        $<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">cloudId</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">destroy</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>  <span style="color: #006600; font-style: italic;">// Remove the cloud element from the DOM</span>
        <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">fireEvent</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'complete'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #006600; font-style: italic;">// fire the onComplete event, this is picked up</span>
                                    <span style="color: #006600; font-style: italic;">// by the CloudGenerator class</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://tdupree.com/2011/03/03/javascript-clouds-animation-with-mootools/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>From The Cloud Up</title>
		<link>http://tdupree.com/2011/02/27/from-the-cloud-up/</link>
		<comments>http://tdupree.com/2011/02/27/from-the-cloud-up/#comments</comments>
		<pubDate>Mon, 28 Feb 2011 00:47:33 +0000</pubDate>
		<dc:creator>Tim Dupree</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://tdupree.com/?p=143</guid>
		<description><![CDATA[I have been wanting, for some time now, to create a website that will teach visitors how to create a web application completely from start to finish. From no server and no domain name, to a complete site running on a vps/cloud based hosting provider complete with CDN, DNS management, S3 file hosting, etc. In addition to the administrative tasks of getting a site up and running (domains, server, cdn, dns, etc.), I would like the teach visitors how to create a database driven site complete from server-side to client-side (including front-end high performance best practices and SEO). I plan...]]></description>
			<content:encoded><![CDATA[<p>I have been wanting, for some time now, to create a website that will teach visitors how to create a web application completely from start to finish. From no server and no domain name, to a complete site running on a vps/cloud based hosting provider complete with CDN, DNS management, S3 file hosting, etc.  In addition to the administrative tasks of getting a site up and running (domains, server, cdn, dns, etc.), I would like the teach visitors how to create a database driven site complete from server-side to client-side (including front-end high performance best practices and SEO).</p>
<p>I plan on teaching visitors to implement their web apps using an open source stack consisting of Linux (Ubuntu Server Edition), Nginx (webserver), MySQL (database), and PHP (server side programming/scripting language).  I may add tutorials for additional languages and web servers after completing the first run through the aforementioned stack.</p>
<p>I think it is important for a web developer, regardless of being server-side or front-end centric, to understand the entire process of creating and launching a site.  This knowledge gives one a better understanding of how various decisions can impact performance, maintainability, and scalability of a site.</p>
<p>I have never come across a site or set of tutorials that really encompasses the entire lifecycle of creating a web app from start to finish, so this will be my contribution for those who want to gain an understanding of complete web application development (rather than seeing a web app from a single viewpoint of sys-admin/server-side programmer/front-end programmer/designer).</p>
<p>A couple weeks ago I settled on a domain name I was happy with, fromthecloudup.com. A little play on words, since we will be starting our foundation in the cloud :) I decided to throw a little splash page together for fun until I have time to design and launch something more substantial. I used Adobe Fireworks to create the cloud and title text.</p>
<p>Check it out: <a title="From The Cloud Up" href="http://fromthecloudup.com" target="_blank">fromthecloudup.com</a></p>
]]></content:encoded>
			<wfw:commentRss>http://tdupree.com/2011/02/27/from-the-cloud-up/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Got my Chrome OS powered Cr-48 Today</title>
		<link>http://tdupree.com/2010/12/09/got-my-chrome-os-powered-cr-48-today/</link>
		<comments>http://tdupree.com/2010/12/09/got-my-chrome-os-powered-cr-48-today/#comments</comments>
		<pubDate>Thu, 09 Dec 2010 16:39:10 +0000</pubDate>
		<dc:creator>Tim Dupree</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://tdupree.com/?p=123</guid>
		<description><![CDATA[I applied for the pilot program to test out the new Google Chrome OS and got my prototype laptop this morning, less than 48 hours later! It came in an awesome box with a guinea pig about to get on an exercise wheel connected to a jet engine :) The instructions card that came with it had some fun copy too, even the FCC Notice. Check it out!]]></description>
			<content:encoded><![CDATA[<p>I applied for the <a href="http://www.google.com/chromeos/pilot-program-cr48.html" target="_blank">pilot program</a> to test out the new <a href="http://www.google.com/chromeos/index.html" target="_blank">Google Chrome OS</a> and got my prototype laptop this morning, less than 48 hours later! It came in an awesome box with a guinea pig about to get on an exercise wheel connected to a jet engine :) The instructions card that came with it had some fun copy too, even the FCC Notice. Check it out!</p>
<p style="text-align: center;"><img class="aligncenter" title="Cr-48 Packaging" src="http://img2.cdn-tdupree.com/images/jpg/cr-48_box.jpg" alt="Cr-48 Packaging" width="480" height="320" /></p>
<p style="text-align: center;"><img class="aligncenter" title="Cr-48 Side View" src="http://img2.cdn-tdupree.com/images/jpg/cr-48_side_view.jpg" alt="Cr-48 Side View" width="480" height="320" /></p>
<div style="width: 575px; height: 700px;">
<a href="http://img2.cdn-tdupree.com/images/jpg/cr-48_instructions_01.jpg"  target="_blank" title="click for larger view"><img style="float: left; margin-right: 10px;" src="http://img2.cdn-tdupree.com/images/jpg/cr-48_instructions_01_thumb.jpg" alt="Cr-48 Instructions 01" width="275" height="685" /></a><a href="http://img2.cdn-tdupree.com/images/jpg/cr-48_instructions_02.jpg"  target="_blank" title="click for larger view"><img style="float: left;"  src="http://img2.cdn-tdupree.com/images/jpg/cr-48_instructions_02_thumb.jpg" alt="Cr-48 Instructions 02" width="275" height="685" /><br />
</a>
</div>
<p style="text-align: center;">
<img alt="Cr-48 Controls" src="http://img2.cdn-tdupree.com/images/jpg/cr-48_controls.jpg" title="Cr-48 Controls" class="alignnone" width="575" height="699" />
</p>
<p style="text-align: center;">
<img alt="Cr-48 Get on the web" src="http://img2.cdn-tdupree.com/images/jpg/cr-48_get_online.jpg" title="Cr-48 Get on the web" class="alignnone" width="575" height="700" /></p>
]]></content:encoded>
			<wfw:commentRss>http://tdupree.com/2010/12/09/got-my-chrome-os-powered-cr-48-today/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Amazon CloudFront Just Got Cooler</title>
		<link>http://tdupree.com/2010/11/08/amazon-cloudfront-just-got-cooler/</link>
		<comments>http://tdupree.com/2010/11/08/amazon-cloudfront-just-got-cooler/#comments</comments>
		<pubDate>Tue, 09 Nov 2010 03:54:45 +0000</pubDate>
		<dc:creator>Tim Dupree</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://tdupree.com/?p=119</guid>
		<description><![CDATA[Today Amazon rolled out support for custom origins with their CloudFront CDN. Before this, you could only serve content through CloudFront that was stored on S3. Now, you can specify a custom origin server (the source that CloudFront initially goes to for a requested asset) to serve out files through CloudFront. This is awesome news because it means that you can provide dynamic resources that have a long cache time and do not change often. Additionally, it looks like this may open up some new ways to more intelligently serve gzipped files to users (currently a pain to do with...]]></description>
			<content:encoded><![CDATA[<p>Today Amazon rolled out support for custom origins with their CloudFront CDN.  Before this, you could only serve content through CloudFront that was stored on S3.  Now, you can specify a custom origin server (the source that CloudFront initially goes to for a requested asset) to serve out files through CloudFront.  </p>
<p>This is awesome news because it means that you can provide dynamic resources that have a long cache time and do not change often.  Additionally, it looks like this may open up some new ways to more intelligently serve gzipped files to users (currently a pain to do with the S3 implementation). I look forward to playing around with this to see how I can make better use of my CloudFront CDN.</p>
<p>Check out the official post by Amazon <a href="http://aws.typepad.com/aws/2010/11/amazon-cloudfront-support-for-custom-origins.html" target="_blank">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://tdupree.com/2010/11/08/amazon-cloudfront-just-got-cooler/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A Simple MooTools Menu</title>
		<link>http://tdupree.com/2010/08/13/a-simple-mootools-menu/</link>
		<comments>http://tdupree.com/2010/08/13/a-simple-mootools-menu/#comments</comments>
		<pubDate>Fri, 13 Aug 2010 21:17:31 +0000</pubDate>
		<dc:creator>Tim Dupree</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://tdupree.com/?p=83</guid>
		<description><![CDATA[Using the handy MooTools JavaScript framework (and its terrific Fx classes) I made the simple expanding menu you see to the left of this post. It worked great until I tested it in IE and found that the JS engine is so slow that it was doing some wacky things in the animation. I wanted to keep the markup as clean as I could but I ended up fixing the IE problem by wrapping the menu text in &#60;span&#62; tags and then doing a little extra styling of those spans with css. The menu works in IE7&#38;8, as well as...]]></description>
			<content:encoded><![CDATA[<p>Using the handy MooTools JavaScript framework (and its terrific Fx classes) I made the simple expanding menu you see to the left of this post. It worked great until I tested it in IE and found that the JS engine is so slow that it was doing some wacky things in the animation.</p>
<p>I wanted to keep the markup as clean as I could but I ended up fixing the IE problem by wrapping the menu text in &lt;span&gt; tags and then doing a little extra styling of those spans with css. </p>
<p>The menu works in IE7&amp;8, as well as Safari, Chrome, Firefox, and Opera.</p>
<p>If you are interested in the JS, HTML and CSS behind the menu, check out the code below.  It&#8217;s in a shell from <a href="http://jsfiddle.net" target="_blank" rel="nofollow" title="jsFiddle">jsFiddle.net</a>, a great site for messing around with JS frameworks.</p>
<div style="width: 560px;">
<iframe style="width: 100%; height: 490px; border: 1px solid #999; border-top: none;" src="http://jsfiddle.net/AuzZd/15/embedded/"></iframe>
</div>
]]></content:encoded>
			<wfw:commentRss>http://tdupree.com/2010/08/13/a-simple-mootools-menu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Getting Started with HTML Emails</title>
		<link>http://tdupree.com/2010/08/10/getting-started-with-html-emails/</link>
		<comments>http://tdupree.com/2010/08/10/getting-started-with-html-emails/#comments</comments>
		<pubDate>Tue, 10 Aug 2010 16:36:51 +0000</pubDate>
		<dc:creator>Tim Dupree</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://tdupree.com/?p=66</guid>
		<description><![CDATA[I recently needed to create some HTML emails.  I knew that email clients were pretty restrictive when it comes to the html and css they allow, but I was a bit surprised at how bad the landscape really is. Pretty much throw out any best practice for coding html and pretend you are back in the 90&#8242;s.  Here are some general tips and tricks I learned this week about HTML emails. Inline your CSS. Forget about embedding your css styles at the top (or as separate resources).  Most email clients strip out the HTML and BODY tags so you have to embed...]]></description>
			<content:encoded><![CDATA[<p>I recently needed to create some HTML emails.  I knew that email clients were pretty restrictive when it comes to the html and css they allow, but I was a bit surprised at how bad the landscape really is.</p>
<p>Pretty much throw out any best practice for coding html and pretend you are back in the 90&#8242;s.  Here are some general tips and tricks I learned this week about HTML emails.</p>
<ol>
<li><strong>Inline your CSS</strong>. Forget about embedding your css styles at the top (or as separate resources).  Most email clients strip out the HTML and BODY tags so you have to embed your styles below the body tag, and even then most clients ignore that.  You are better off just inlining your CSS.</li>
<li><strong>Fancy CSS won&#8217;t work</strong>.  Time to go old school.  Check out this <a rel="nofollow" href="http://www.campaignmonitor.com/css/" target="_blank">guide to css support</a> for some insights on what CSS is supported in the various email clients.</li>
<li><strong>No DIVs, Tables all the way baby</strong>.  This is painful.  It feels dirty and wrong, but you are going to need to use tables to structure your emails.</li>
<li><strong>No background images</strong>.  Support for background images is pretty spotty, so you are better off not using it. This means either make your design less fancy or slice up your design and piece it all back together using tables.</li>
<li><strong>Static file references</strong>. Make sure any image references are static and pointing to the proper files on your server. Common sense.</li>
<li><strong>img {display: block;}</strong>.  Seeing weird gaps in your beautiful html email where images should be fitting tightly together? Make sure you add style=&#8221;display: block;&#8221; to your images.</li>
</ol>
<p>Some additional reading:</p>
<ul>
<li><a rel="nofollow" href="http://www.mailchimp.com/articles/how_to_code_html_emails/" target="_blank">How To Code HTML Emails</a></li>
<li><a rel="nofollow" href="http://www.reachcustomersonline.com/2010/01/23/09.27.00/" target="_blank">How To Code HTML Email Newsletters</a></li>
<li><a rel="nofollow" href="http://www.mailchimp.com/articles/top-html-email-coding-mistakes/" target="_blank">Top HTML Email Coding Mistakes</a></li>
<li><a rel="nofollow" href="http://www.mailchimp.com/articles/stupid-html-email-design-mistakes/" target="_blank">Stupid HTML Email Design Mistakes</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://tdupree.com/2010/08/10/getting-started-with-html-emails/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DD-WRT on A0 A3 Buffalo WZR-HP-G300NH</title>
		<link>http://tdupree.com/2010/07/16/dd-wrt-on-a0-a3-buffalo-wzr-hp-g300nh/</link>
		<comments>http://tdupree.com/2010/07/16/dd-wrt-on-a0-a3-buffalo-wzr-hp-g300nh/#comments</comments>
		<pubDate>Fri, 16 Jul 2010 18:04:54 +0000</pubDate>
		<dc:creator>Tim Dupree</dc:creator>
				<category><![CDATA[DD-WRT]]></category>
		<category><![CDATA[Wi-Fi]]></category>

		<guid isPermaLink="false">http://tdupree.com/?p=49</guid>
		<description><![CDATA[I ordered the Buffalo WZR-HP-G300NH wireless router on Newegg last weekend.  It has some really nice specs and my old router was getting a bit wonky.  The new Buffalo router is replacing a Lynksys WRT54G2 v1 which seemed to have some incompatibility with the Intel wireless cards in 3 out of the 4 laptops that are usually in my home. For the past couple years I have only bought routers whose firmware can be changed to run DD-WRT (a Linux based open source firmware for routers).  The Buffalo WZR-HP-G300NH is a great router for DD-WRT, but there are/were some problems surrounding...]]></description>
			<content:encoded><![CDATA[<p>I ordered the Buffalo WZR-HP-G300NH wireless router on Newegg last weekend.  It has some really nice specs and my old router was getting a bit wonky.  The new Buffalo router is replacing a Lynksys WRT54G2 v1 which seemed to have some incompatibility with the Intel wireless cards in 3 out of the 4 laptops that are usually in my home.</p>
<p>For the past couple years I have only bought routers whose firmware can be changed to run DD-WRT (a Linux based open source firmware for routers).  The Buffalo WZR-HP-G300NH is a great router for DD-WRT, but there are/were some problems surrounding a particular version that was manufactured in Japan.  These can be spotted by looking for the letters &#8220;A0 A3&#8243; on the router near the serial number.  It seems that for a while that particular version was not playing nice with DD-WRT.</p>
<p>After some research it seemed that I would still be able to get DD-WRT on the Japanese version (if thats what i received) so I decided to take my chances and order it (since you don&#8217;t know what version you will get until you have it in your hands).</p>
<p>I ended up receiving the &#8220;A0 A3&#8243; Japanese version of the  Buffalo WZR-HP-G300NH.  But no worries.  It seems that they have fixed what ever problems were plaguing the firmware update and now its possible to put DD-WRT on the Japanese models.</p>
<h3>To install DD-WRT on a Buffalo WZR-HP-G300NH with the &#8220;A0 A3&#8243; Japanese version number on it, just follow these easy steps:</h3>
<ol>
<li>Go to the DD-WRT router database and lookup &#8220;WZR-HP-G300NH&#8221;.  Then download the firmware labeled &#8220;Buffalo WZR-HP-G300NH: Special File for initial flashing&#8221;.  The filename is &#8220;buffalo_to_ddwrt_webflash-MULTI.bin&#8221;.  <a title="DD-WRT Router Database" rel="nofollow" href="http://dd-wrt.com/site/support/router-database" target="_blank">http://dd-wrt.com/site/support/router-database</a></li>
<li>Log into your stock WZR-HP-G300NH router at http://192.168.11.1 and go to the page where you can update the firmware online &#8220;Admin Config-&gt;Update&#8221;.  Click the button to browse for a firmware file and upload your DD-WRT image &#8220;buffalo_to_ddwrt_webflash-MULTI.bin&#8221;.  Then click the button to upgrade the firmware.  Your DD-WRT firmware will upload and then you  will see a progress bar going for a while while the new firmware is installed.</li>
<li>After the installation completes, go to 192.168.1.1 to log into your new DD-WRT firmware (It will ask you to put in a new username and password).  If everything checks out fine and your new DD-WRT firmware is running, then head over to the router and perform a Hard Reset (30/30/30 reset) on it.  This is important to do after installing or upgrading the firmware to reset the NVRAM and make sure its all clean and ready to go.  <a title="Hard Reset 30-30-30" rel="nofollow" href="http://www.dd-wrt.com/wiki/index.php/Hard_reset_or_30/30/30" target="_blank">http://www.dd-wrt.com/wiki/index.php/Hard_reset_or_30/30/30</a></li>
<li>After the Hard reset, log back into the router at 192.168.1.1.  It will ask you to put in a new username and password again, as a Hard Reset erases any settings you previously had.</li>
<li>You should now be up and running with DD-WRT on a Japanese A0 A3 Buffalo WZR-HP-G300NH wireless router!</li>
</ol>
<h3>Extras:</h3>
<p>The reset button for the router (needed when doing the Hard Reset) is found on the bottom of the router.</p>
<p style="text-align: center;"><a rel="lightbox-thumbs" href="http://img2.cdn-tdupree.com/images/jpg/buffalo_wzr-hp-g300nh_reset_button.jpg"><img class="aligncenter" title="Reset Button on Buffalo WZR-HP-G300NH" src="http://img2.cdn-tdupree.com/images/jpg/buffalo_wzr-hp-g300nh_reset_button.jpg" alt="Reset Button on Buffalo WZR-HP-G300NH" width="204" height="310" /></a></p>
<p style="text-align: left;">If you need the manual for the Buffalo WZR-HP-G300NH, you can grab it here: <a title="Buffalo WZR-HP-G300NH Manual" rel="nofollow" href="http://img1.cdn-tdupree.com/Buffalo_WZR-HP-G300NH_Manual.pdf" target="_blank">Buffalo WZR-HP-G300NH Manual</a></p>
]]></content:encoded>
			<wfw:commentRss>http://tdupree.com/2010/07/16/dd-wrt-on-a0-a3-buffalo-wzr-hp-g300nh/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Google Chrome Developer Tools</title>
		<link>http://tdupree.com/2010/04/15/google-chrome-developer-tools/</link>
		<comments>http://tdupree.com/2010/04/15/google-chrome-developer-tools/#comments</comments>
		<pubDate>Thu, 15 Apr 2010 15:41:34 +0000</pubDate>
		<dc:creator>Tim Dupree</dc:creator>
				<category><![CDATA[Chrome]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[Daily Life]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Developer Tools]]></category>

		<guid isPermaLink="false">http://www.tdupree.com/?p=44</guid>
		<description><![CDATA[The Google Chrome web browser is extremely fast and has pretty much become my primary browser. It has some developer tools baked into the browser similar to the Firebug addon for Firefox.  I still tend to gravitate to using Firebug for heavy duty stuff, but the tools in Chrome are good enough that I find myself breaking out Firefox less and less for Firebug. If you are feeling geeky, or want access to some of the newest developer tools for Chrome/Webkit, you can run with the Dev Channel build. It is the most cutting edge build of Chrome, so you always...]]></description>
			<content:encoded><![CDATA[<div>The <a title="Google Chrome" href="http://www.google.com/chrome/" target="_blank">Google Chrome</a> web browser is extremely fast and has pretty much become my primary browser. It has some developer tools baked into the browser similar to the Firebug addon for Firefox.  I still tend to gravitate to using Firebug for heavy duty stuff, but the tools in Chrome are good enough that I find myself breaking out Firefox less and less for Firebug. If you are feeling geeky, or want access to some of <a title="New Chrome/Webkit Developer Tools" href="http://webkit.org/blog/1091/more-web-inspector-updates/" target="_blank">the newest developer tools for Chrome/Webkit</a>, you can run with the<a title="Chrome Dev Channel" href="http://www.chromium.org/getting-involved/dev-channel" target="_blank"> Dev Channel build</a>.  It is the most cutting edge build of Chrome, so you always get the new stuff before everyone else (but it can be unstable every now and then).</div>
<div>Here are some handy web dev extensions for Chrome:</div>
<div><strong>Google Speed Tracer:</strong> <a href="https://chrome.google.com/extensions/detail/ognampngfcbddbfemdapefohjiobgbdl" target="_blank"></a></div>
<div><a href="https://chrome.google.com/extensions/detail/ognampngfcbddbfemdapefohjiobgbdl" target="_blank">https://chrome.google.com/extensions/detail/ognampngfcbddbfemdapefohjiobgbdl</a></div>
<div><strong>Web Developer Toolbar (a port of the popular toolbar for Firefox): </strong></div>
<div><a href="https://chrome.google.com/extensions/detail/bfbameneiokkgbdmiekhjnmfkcnldhhm" target="_blank">https://chrome.google.com/extensions/detail/bfbameneiokkgbdmiekhjnmfkcnldhhm</a></div>
<div><strong>Pendule (similar to Web Developer Toolbar): </strong></div>
<div><a href="https://chrome.google.com/extensions/detail/gbkffbkamcejhkcaocmkdeiiccpmjfdi" target="_blank">https://chrome.google.com/extensions/detail/gbkffbkamcejhkcaocmkdeiiccpmjfdi</a></div>
<div><strong>Chrome SEO:</strong> <a href="https://chrome.google.com/extensions/detail/oangcciaeihlfmhppegpdceadpfaoclj" target="_blank"></a></div>
<div><a href="https://chrome.google.com/extensions/detail/oangcciaeihlfmhppegpdceadpfaoclj" target="_blank">https://chrome.google.com/extensions/detail/oangcciaeihlfmhppegpdceadpfaoclj</a></div>
<div><strong>Click the image below to see some examples of using the Chrome Developer Tools:</strong></div>
<div style="text-align: center;"><a title="Chrome Developer Tools" rel="lightbox-thumbs" href="http://tdupree.com/images/chrome_developer_tools_web.png" target="_blank"><img src="http://tdupree.com/images/chrome_developer_tools_web.png" alt="Chrome Developer Tools" width="170" height="355" /></a></div>
]]></content:encoded>
			<wfw:commentRss>http://tdupree.com/2010/04/15/google-chrome-developer-tools/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Remove GRUB from an external USB drive</title>
		<link>http://tdupree.com/2010/04/04/remove-grub-from-an-external-usb-drive/</link>
		<comments>http://tdupree.com/2010/04/04/remove-grub-from-an-external-usb-drive/#comments</comments>
		<pubDate>Mon, 05 Apr 2010 04:31:56 +0000</pubDate>
		<dc:creator>Tim Dupree</dc:creator>
				<category><![CDATA[Daily Life]]></category>
		<category><![CDATA[Useful Stuff]]></category>
		<category><![CDATA[external drive]]></category>
		<category><![CDATA[GRUB]]></category>
		<category><![CDATA[Master Boot Record]]></category>
		<category><![CDATA[MBR]]></category>

		<guid isPermaLink="false">http://www.tdupree.com/?p=43</guid>
		<description><![CDATA[Need to remove the GRUB boot loader from an external usb drive connected to a Windows machine? This is how I did it. I had a hard drive that was set up to dual boot Linux and Windows XP. The windows XP install had ceased working for some reason so I decided to wipe the drive and do a clean install.  Since this was an old laptop of mine that my father-in-law was using, I figured I would also wipe the linux partition, that I had played with long ago, and get rid of the dual boot option. I removed...]]></description>
			<content:encoded><![CDATA[<p>Need to remove the GRUB boot loader from an external usb drive connected to a Windows machine? This is how I did it.</p>
<p>I had a hard drive that was set up to dual boot Linux and Windows XP. The windows XP install had ceased working for some reason so I decided to wipe the drive and do a clean install.  Since this was an old laptop of mine that my father-in-law was using, I figured I would also wipe the linux partition, that I had played with long ago, and get rid of the dual boot option.</p>
<p>I removed the drive from the laptop, and hooked it up using a <a title="IDE/SATA to USB Cable" href="http://www.newegg.com/Product/Product.aspx?Item=N82E16812232002&amp;cm_re=SATA/IDE_to_USB-_-12-232-002-_-Product" target="_blank">simple SATA/IDE to USB cable</a>.  My main desktop is running windows 7 and I just used the built in &#8220;Disk Management&#8221; app to delete all of the partitions on the laptop hard drive and reformat the drive.  Unfortunately this did not remove the GRUB boot loader or fix the Master Boot Record. When I put the newly formatted drive in the laptop and booted, GRUB would appear and give me ERROR 21.</p>
<p>Finally to remove the GRUB boot loader from the drive and fix the MBR (Master Boot Record), I had to install a program called <a title="Partition Wizard" href="http://www.partitionwizard.com/free-partition-manager.html" target="_blank">Partition Wizard</a>.  It turns out the Home Edition is free and it works great for partitioning, formatting, and wiping hard drives. The best part, it can rewrite and fix the MBR on hard drives, even external hard drives connected via usb. Problem solved, and now I have a clean and tidy hard drive to install a fresh OS on.</p>
]]></content:encoded>
			<wfw:commentRss>http://tdupree.com/2010/04/04/remove-grub-from-an-external-usb-drive/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>digg AdBlocker now in Google Chrome Extensions Gallery</title>
		<link>http://tdupree.com/2010/02/03/digg-adblocker-now-in-google-chrome-extensions-gallery/</link>
		<comments>http://tdupree.com/2010/02/03/digg-adblocker-now-in-google-chrome-extensions-gallery/#comments</comments>
		<pubDate>Wed, 03 Feb 2010 16:14:27 +0000</pubDate>
		<dc:creator>Tim Dupree</dc:creator>
				<category><![CDATA[Chrome]]></category>
		<category><![CDATA[Google]]></category>

		<guid isPermaLink="false">http://www.tdupree.com/?p=42</guid>
		<description><![CDATA[I have taken my digg AdBlocker script I originally made for greasemonkey and have made it available for Google Chrome users. Install the digg AdBlocker extension for Google Chrome here: https://chrome.google.com/extensions/detail/gclmekogkkggoehdimnceffmboanpibn Check out the source here: http://tdupree.com/chrome/digg_adblocker/chrome_digg_adblocker_source.zip]]></description>
			<content:encoded><![CDATA[<p>I have taken my digg AdBlocker script I originally made for greasemonkey and have made it available for Google Chrome users.</p>
<p>Install the digg AdBlocker extension for Google Chrome here:</p>
<p><a href="https://chrome.google.com/extensions/detail/gclmekogkkggoehdimnceffmboanpibn">https://chrome.google.com/extensions/detail/gclmekogkkggoehdimnceffmboanpibn</a></p>
<p>Check out the source here:</p>
<p><a href="http://tdupree.com/chrome/digg_adblocker/chrome_digg_adblocker_source.zip">http://tdupree.com/chrome/digg_adblocker/chrome_digg_adblocker_source.zip</a></p>
]]></content:encoded>
			<wfw:commentRss>http://tdupree.com/2010/02/03/digg-adblocker-now-in-google-chrome-extensions-gallery/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

