tag:blogger.com,1999:blog-71705609266446008622024-02-18T20:39:49.298-05:00Clayton's TechnobabbleHardware, Software, Gadgets and Technology How To'sClayton Longhttp://www.blogger.com/profile/00295047809317392242noreply@blogger.comBlogger42125tag:blogger.com,1999:blog-7170560926644600862.post-32151504858283018472014-10-21T16:59:00.000-04:002014-10-21T20:26:37.267-04:00RESTful Web Services Explained<div class="separator" style="clear: both; text-align: justify;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdtWG6idkJGeFJ4KNIYHylh0AtbGwTObsVojwzLFL34JyqGIV8Qwro6cKj_3Qw_CM4BraC99ts1irKQy0F0D_Zk6_lQXgnmW3Wdowk4aJC0lvTk6-Y-hpH36Xhp7h1LwWc_I7iq63S-AkS/s1600/web+services2.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdtWG6idkJGeFJ4KNIYHylh0AtbGwTObsVojwzLFL34JyqGIV8Qwro6cKj_3Qw_CM4BraC99ts1irKQy0F0D_Zk6_lQXgnmW3Wdowk4aJC0lvTk6-Y-hpH36Xhp7h1LwWc_I7iq63S-AkS/s1600/web+services2.jpg" height="200" width="175" /></a>RESTful Web Services are all the rage. And there's little wonder why. They can be a simple way to exchange data with applications without all of the baggage that typically accompanies SOAP or RPCs. Yes, RESTful Web services are a wonderful thing. But if implemented incorrectly, they can be a very painful thing for both your applications and your users. </div>
<a name='more'></a><h3 style="text-align: justify;">
What Are RESTful Web Services?</h3>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
RESTful Web Services were first described by Roy Fielding in his dissertation, "Architectural Styles and the Design of Network-based Software Architectures." In his dissertation, Fielding described a Representational State Transfer (REST) approach to Web services. He proposed using HTTP and it's methods to work with resources.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Unlike SOAP and earlier RPC (remote procedure call) methods, RESTful Web services really just describe resources. The actions requested are represented by the HTTP methods. For example, a GET method executed on a resource http://www.mywebsite.com/user/bob means <u><i>get</i></u> a representation of <i><u>user</u> <u>bob</u></i>. The resource is <u><i>user</i></u> <i><u>bob</u></i> and the method is <u><i>get</i></u>; it's as simple as that.</div>
<div style="text-align: justify;">
<br /></div>
<h3 style="text-align: justify;">
How It Gets Complicated</h3>
<div style="text-align: justify;">
<br />
Most developers have heard of a GET request. After all, GET is the default method specified by most browsers when a resource on a website is requested. But most developers I know couldn't tell you even three other HTTP methods, let alone how they should be used. As a result, a common problem is that some developers try to use GET methods for everything.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
So, what happens when you use a GET method to update the state of a resource? Well, for one thing, the GET method no longer functions as intended. The GET method is supposed to be idempotent. That means, subsequent calls using the GET method should not yield unexpected results. That makes sense when the GET method is used properly. Requesting a resource multiple times certainly won't change it's state or its representation. However, when you use GET to change something, that may no longer be the case.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
The other problem with using GET methods for more that just requesting resources is that it no longer retains its meaning. Remember that REST is Representational State Transfer. That means the methods you use should actually represent what you are doing. When GET does double or even triple duty then it no longer is representational of what it does.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Aside from you looking like an idiot and having anyone using your crippled RESTful services wanting to beat you with their keyboard, using GET methods for things like resource creation can have some serious technical problems. For example, say you wanted to create a large PDF resource or even just a resource with a large value. GET methods are severely constrained in terms of how much data they can pass in the request. Typically, anything over 255 characters is considered pushing it, since some web servers might not support it. It's really just better to use the right method for the right job.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
</div>
<h3 class="separator" style="clear: both; text-align: justify;">
Using the Right Method for the Right Job</h3>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Below are a list of the available HTTP methods and how they can and should be used in the context of RESTful Web services.</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
<b>GET</b></div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
As described above, GET methods are used to get resources. That's it!</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
<b>POST</b></div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
POST methods are used to create new resources where none existed before. POST is not idempotent, which means that executing the same POST method more than once can cause more than one change to occur. An example is calling POST http://www.mywebsite.com/user with the body of the message specifying the details of the <i><u>user</u></i> resource.</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
<b>PUT </b></div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
PUT methods are typically used to change something in a resource. You can think of them as an update of sorts. An example would be calling PUT http://www.mywebsite.com/user/bob with the body of the message specifying the details of the <i><u>user</u></i> <i><u>bob</u></i> resource, complete with any updated fields.</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
<b>PATCH </b></div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
PATCH methods are for partial updates. For example, let's say you only wanted to update the wearsGlasses attribute of <u><i>user</i></u> <u><i>bob</i></u> to true, but you either didn't know or didn't care to update any of user bob's other attributes. In that case you could do a PATCH with wearsGlasses set to true as the only data in the body of the request.</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
<b>DELETE</b></div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
DELETE methods remove resources. As an example, DELETE http://www.mywebsite.com/user/bob would remove the <u><i>user</i></u> <u><i>bob</i></u> resource.</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<h3 class="separator" style="clear: both; text-align: justify;">
What About When I Want to GET a Resource?</h3>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
One very common question (so, I might as well throw it in) is how should the application handle different GET request formats. Fortunately, there is a very simple answer: let the client determine the format. </div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
For those of you looking at the screen cross-eyed, this idea is nothing new. Consider this, if you typed http://www.mywebsite.com/something.html then you would probably expect to get an HTML document returned. Why? Because you specified .html. So, it stands to reason that if you want an HTML representation of a response with REST, you should be able to specify something like http://www.mywebsite.com/user/bob.html. That should give you an HTML representation of <u><i>user</i></u> <u><i>bob</i></u>.</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
If you want an object representation of a resource using REST, the client should specify that too. For example, if you want <u><i>user</i></u> <u><i>bob</i></u> in XML format, then you should make the request with the Accept HTTP header set to ''text/xml." If you want the response in JSON, then just set Accept to "application/json." The service should be smart enough to return the correct format; frameworks like Spring MVC do that kind of thing automagically.</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<br /></div>
Clayton Longhttp://www.blogger.com/profile/00295047809317392242noreply@blogger.com0tag:blogger.com,1999:blog-7170560926644600862.post-34949844081827542502011-11-25T14:52:00.001-05:002011-11-25T23:36:11.189-05:00Price Wars: Apple vs. Dell<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-SAuQ-yTrfi88barwAhs93wn7y9Z8CoDH7bssJe8kfx5RYkGS_I3Kp0T_es-fU3f33tpjyfsNnf0I-8zKMN6Ou8LrqFFkyv-vOW3VUlzntZCh1P-NEwEEujq7qAwSoctzjKjzZrcMY-rU/s1600/dell-logo.jpg" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-SAuQ-yTrfi88barwAhs93wn7y9Z8CoDH7bssJe8kfx5RYkGS_I3Kp0T_es-fU3f33tpjyfsNnf0I-8zKMN6Ou8LrqFFkyv-vOW3VUlzntZCh1P-NEwEEujq7qAwSoctzjKjzZrcMY-rU/s200/dell-logo.jpg" width="200" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Dell Logo</td></tr>
</tbody></table>
Prior to owning my MacBook Pro 13, I had always subscribed to the belief that Macs were significantly more expensive than other computer brands (Dell, HP, etc.). So, in 2009 when my Sony Vaio was no longer cutting the mustard, I started shopping for a new laptop and I found the (expensive) stigma that Macs had wasn't really true. At the time I took the MacBook Pro 13 feature for feature with a comparable Dell laptop. And it turned out that the Dell was actually $50.00 more expensive than the MacBook Pro 13 that I had chosen. So, now I am curious if the same holds true today.<br />
<br />
<a name='more'></a><br />
Looking online in the Apple store, I can see that the 2nd MacBook Pro 13 model is $1398.00. It comes with a 13.3" high-res LED monitor, a backlit keyboard, Bluetooth, wireless a/b/g/n, 720p webcam, 2.8Ghz dual core i7 processor, 4GB of RAM, an 8x slot loading superdrive, and a 750GB internal hard drive. Not bad for a 13.3" laptop.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjCUqYjF_-C5T23PIcC5zzcoQi9Fo1bOHTcvbe3GPc_K2N0bJQri_o1eGb0fnUVr1cQBIwQmyvhHvWXG-uVAS6B_-d3Yb3TkZOHmFxiVejF_DFHuRWjIxvO2PawdM5j-AvUmtotYQ0jb7o5/s1600/Screen+shot+2011-11-25+at+3.07.15+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjCUqYjF_-C5T23PIcC5zzcoQi9Fo1bOHTcvbe3GPc_K2N0bJQri_o1eGb0fnUVr1cQBIwQmyvhHvWXG-uVAS6B_-d3Yb3TkZOHmFxiVejF_DFHuRWjIxvO2PawdM5j-AvUmtotYQ0jb7o5/s320/Screen+shot+2011-11-25+at+3.07.15+PM.png" width="240" /></a></div>
<div class="" style="clear: both; text-align: left;">
At the Dell store online there are a plethora of options. So, I select the laptop link and begin entering my search requirements: 4GB RAM, i7 processor, 13.3" screen, and 64-bit OS. The Dell Latitude E6320 pops up and I select customize. I change the selected Windows 7 64-bit Home to Windows 64-bit Ultimate for an even comparison with the MacBook's included OS X Lion which is 64-bit. The difference between Home and Ultimate is that Ultimate comes with additional video editing & playback capabilities, Media Center, additional enterprise management controls, enhanced window features, and a few other things. Basically, Windows 7 64-bit Ultimate gives you a real enterprise Windows system, where Windows Home gives you what I would consider to be the bare minimum. In comparison with OS X Lion, there is only one version. And it gives you a real enterprise system with optional development tools (for free), not to mention photo management software, music editing software, video editing software, a calendar, email and an address book with Exchange support. </div>
<div class="separator" style="clear: both; text-align: left;">
Continuing with my customizations of the Dell, I noticed there was no 750GB drive option, so I decided to change both the MacBook Pro 13 and the Dell E6320 to have a 128GB SSD (Solid State Drive). I then selected the 8x DVD+/-RW drive, the 6-cell battery (to give it somewhat comparable battery life to the MacBook Pro), the Advanced-N a/b/g/n wireless card, Bluetooth, and the 2.7Ghz i7 processor. At this point, it seems like my MacBook Pro 13 and my Dell E6320 configurations are pretty comparable, minus some intangibles and personal preferences (weight, thickness, fans/heat dissipation, backlit keyboard, 0.1Ghz clock speed difference, trackpad prefs, etc.).</div>
<div class="separator" style="clear: both; text-align: left;">
And the verdict? The MacBook Pro 13 came out to be $1,498.00 and the Dell came out to be $1,707.00. If you are a bargain hunter then this won't matter because if price is your main driver then you will opt to have less features for a lower price. And in that case, there are Dell's out there that have less features for significantly lower prices. However, if you are like me and you want a well equipped machine that you expect to last for several years and if you are considering a MacBook Pro then it's hard (even for Dell) to beat it on price when you go feature for feature.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_hv7AqfU434LtLQOKvBKFXZiBO499Nk-duznzU6NhdOamiPAckZvf8v6cWLYDsTswdhkEbhN3A_7UdlwKMeG8sPcq7YVAQqOLsGc1zIpH0zsl6pJ6pagIoi0gjPWUbG23LyoMq4w4swiX/s1600/Screen+shot+2011-11-25+at+3.49.18+PM.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="361" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_hv7AqfU434LtLQOKvBKFXZiBO499Nk-duznzU6NhdOamiPAckZvf8v6cWLYDsTswdhkEbhN3A_7UdlwKMeG8sPcq7YVAQqOLsGc1zIpH0zsl6pJ6pagIoi0gjPWUbG23LyoMq4w4swiX/s640/Screen+shot+2011-11-25+at+3.49.18+PM.png" width="640" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">MacBook Pro 13</td></tr>
</tbody></table>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDQyIeSwYDCOFJptOZ_oVfLnktbq0mZmED2D9C3zoU57NSyuS4i86BrzZWMPFTs5OWyO7JnSTZDckJQRutoOtuHqAFVbJzBpxHw5aO2FNSIfRY-JsYdxfFSxMa_Bz_wdqdpKqQtT5pMzZR/s1600/Screen+shot+2011-11-25+at+3.51.00+PM.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="317" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDQyIeSwYDCOFJptOZ_oVfLnktbq0mZmED2D9C3zoU57NSyuS4i86BrzZWMPFTs5OWyO7JnSTZDckJQRutoOtuHqAFVbJzBpxHw5aO2FNSIfRY-JsYdxfFSxMa_Bz_wdqdpKqQtT5pMzZR/s400/Screen+shot+2011-11-25+at+3.51.00+PM.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Dell E6320</td></tr>
</tbody></table>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<br />
<br />
<br />Clayton Longhttp://www.blogger.com/profile/00295047809317392242noreply@blogger.com1tag:blogger.com,1999:blog-7170560926644600862.post-14561152131154446782011-09-08T23:52:00.000-04:002011-09-08T23:52:53.821-04:00Nike+ iPod vs. Nike+ GPS<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9kZa7O24h81aB2trN47kNoI77E3N2muANK9jWnIX7wUSNexlga3EX8IHt5ho3sRPwKskUFvEnauFmpnSq6DkeFjmqh95V-tU-LNLWU2u2ZP8mjY2u8WXklr2b3bu-tKMm31NVqhoc99YM/s1600/NikePlus.jpg" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9kZa7O24h81aB2trN47kNoI77E3N2muANK9jWnIX7wUSNexlga3EX8IHt5ho3sRPwKskUFvEnauFmpnSq6DkeFjmqh95V-tU-LNLWU2u2ZP8mjY2u8WXklr2b3bu-tKMm31NVqhoc99YM/s200/NikePlus.jpg" width="155" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><span style="font-size: xx-small;">Nike+ iPod Sensor</span></td></tr>
</tbody></table>
I recently took up running and like every new runner I needed some motivation to keep me going. Enter Nike+ iPod. Nike+ iPod can be used with just about any iPod, and if you happen to have an iPhone or an iPod Touch then all you need is the transmitter since the sensor is built-in.<br />
<br />
I had an iPhone, so all I needed was the Nike+ transmitter. And after I bought the Nike+ transmitter, I realized that there is a $1.99 Nike+ GPS app that works with the iPhone with no transmitter required. Did I just waste $20.00 on the Nike+ transmitter when I could have simply purchased a $1.99 app. Well, yes and no. Nike+ iPod and Nike+ GPS are two entirely different animals that serve similar purposes.<br />
<br />
<a name='more'></a><br /><br />
Nike+ iPod requires that a transmitter or sensor be purchased and attached to your shoe while you run. You can either use a special Nike+ shoe or somehow attach the transmitter to your shoe (see <a href="http://www.switcheasy.com/products/Runaway/Runaway.php">http://www.switcheasy.com/products/Runaway/Runaway.php</a>). It uses your stride to monitor your pace and distance. But the really cool thing about Nike+ iPod is that it is built into your iPhone or iPod. That means Nike+ iPod runs nicely in the background. And it also means that it can do some cool stuff like take over your phone's home button when you lock your phone.<br />
<br />
When I run with Nike+ iPod using my iPhone, I simply select my workout goal (distance, time, custom, etc.) and then I'm off. Nike+ iPod gives me the option to select the music I want to listen to during my run too. Although I must confess that music selection is limited to the ordering of a play list or shuffling all songs - you can't shuffle on a playlist (boo!). But you can get feedback on your workout progress at anytime when the screen is locked by simply pressing the home button (cool!).<br />
<br />
Nike+ GPS is not built into your iPod or iPhone; it's an app. And since the iPhone has GPS and iPods do not, it will currently only work on the iPhone. Because Nike+ GPS is an app, it really likes to run the foreground. I have heard people complain that in some cases their workout time stops if the app is put in the background (say, when answering a call or locking the screen). So, if you use Nike+ GPS then make sure your screen is set to NEVER auto-lock and make sure it's running the foreground - don't hit the home button during your run.<br />
<br />
Aside from the fact that Nike+ GPS is an app that has to be installed (and as a result, has all the restrictions that an app might have), it does have some nice features. One nice feature is that it leverages GPS, which means that your distance traveled is pretty darn accurate. The use of GPS also allows you to see your route on a map that is color coded to show your relative pace (where you ran fast and where you ran slow). Also, because it's not an easy task to get instant feedback on your progress during your run with Nike+ GPS, it gives you regular unsolicited stats.<br />
<br />
Both Nike+ iPod and Nike+ GPS keep track of your workout history and allow you to upload your stats to Nike+ online. And if you switch between the two then you can see an aggregate of your workouts online. Unfortunately, they don't download from Nike+ online, they only upload. So, you won't be able to import stats across programs.<br />
<br />
<table><tbody>
<tr><td style="text-align: left;"><table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhuOIUymzKqfOuiYCgPfIeobJQYCxMcQknkHbK8exijXGspRNix_8kmUwvxa-lhdWHOjlU4xEdJRWJOAf-GXyJEoG4G3dNovDF2rmRCGQXFAXbSV9vsX5OvA2JMrgrqYt2lDq8k_UE6AMs4/s1600/photo+1.PNG" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhuOIUymzKqfOuiYCgPfIeobJQYCxMcQknkHbK8exijXGspRNix_8kmUwvxa-lhdWHOjlU4xEdJRWJOAf-GXyJEoG4G3dNovDF2rmRCGQXFAXbSV9vsX5OvA2JMrgrqYt2lDq8k_UE6AMs4/s320/photo+1.PNG" width="213" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><span style="font-size: x-small;">Nike+ iPod</span></td></tr>
</tbody></table>
</td>
<td style="text-align: right;"><table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"><tbody>
<tr><td style="text-align: right;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRl8e5kxOxOlVDXy9mpj7-zQbJZGAgifpUfMmJloP9lakznC7JejsGdjYm62rZeppiPHjHUxzpMziKKeGjHBsFvEAxGNrlFtQsATRZAqRpgqo4dXOhkuAebGYbetHv-5RTU0jvOHo1ooUI/s1600/photo+2.PNG" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRl8e5kxOxOlVDXy9mpj7-zQbJZGAgifpUfMmJloP9lakznC7JejsGdjYm62rZeppiPHjHUxzpMziKKeGjHBsFvEAxGNrlFtQsATRZAqRpgqo4dXOhkuAebGYbetHv-5RTU0jvOHo1ooUI/s320/photo+2.PNG" width="213" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Nike+ GPS</td></tr>
</tbody></table>
</td></tr>
</tbody></table>
<br />
<span style="font-size: large;">Bottom Line</span><br />
<span style="font-size: small;">Both Nike+ iPod and Nike+ GPS are both decent apps. I have to admit though, Nike+ GPS is a little more polished looking and the GPS integration does give more accurate distance measurements. However, the ability to get instant progress reports from Nike+ iPod is a really nice feature that Nike+ GPS doesn't make easily available. Also, because Nike+ GPS is an app and likes to run in the foreground, it will chew up your battery. For short runs (45min or less), the additional battery drain might be something you can live with. But for longer runs, it is something to note.</span><br />
<br />
<span style="font-size: small;">Personally, I love the instant feedback that Nike+ iPod gives me. But now that I starting to run longer distances (45min or less, still), I am strongly considering making more use of Nike+ GPS for it's more accurate distance measurements and GPS maps.</span>Clayton Longhttp://www.blogger.com/profile/00295047809317392242noreply@blogger.com0tag:blogger.com,1999:blog-7170560926644600862.post-59394628063990790212011-09-06T23:03:00.000-04:002011-09-07T15:01:53.944-04:00Replacing Cable TV with Internet TV<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgo6b3cRkvOG8bea7V6hUy4jQw9zrXqxPi2DxhnObDDoKKt_nT6iLR0_ZolBiteliMF7AG3NrjgGHumdatVAMbb3BHWajS5DWo35IY5iTsG6l_59MhAdbjcBrGVsU8Zk04sylbR6LR54wx1/s1600/Modern+Hdtv+stand.jpg" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="139" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgo6b3cRkvOG8bea7V6hUy4jQw9zrXqxPi2DxhnObDDoKKt_nT6iLR0_ZolBiteliMF7AG3NrjgGHumdatVAMbb3BHWajS5DWo35IY5iTsG6l_59MhAdbjcBrGVsU8Zk04sylbR6LR54wx1/s200/Modern+Hdtv+stand.jpg" width="200" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Television</td></tr>
</tbody></table>
There have recently been a ton of stories about existing devices that can be used in place of cable: Apple TV, Roku, etc. But these devices lack extensibility and they come with relatively few features. Sure, you can get NetFlix on either Roku or Apple TV. But is NetFlix enough to give up cable TV? Not for me. I want NetFlix, but I also want Hulu-style TV and my existing videos, music and pictures. I want an HTPC and that's exactly what I got. You can have one too and this post will tell you how.<br />
<br />
<br />
<br />
<a name='more'></a>When I began my quest for the perfect HTPC, I first thought about just using an old Apple TV and putting Boxee on it. However, this proved to be problematic for a number of reasons. First of all, the original Apple TV was resource deprived in terms of both CPU and Memory. And since one of my requirements was NetFlix, that pretty much killed it. You see, NetFlix requires SilverLight and SilverLight is kind of a resource hog - something that the original Apple TV just could not feed.<br />
<br />
With the original Apple TV knocked out from HTPC contention, I started thinking about what else I could use. I considered using a desktop with Windows Media Center. But I didn't want some clunky desktop sitting in my entertainment center and Windows Media Center seemed far from a well integrated solution. I also considered Boxee Box. But Boxee Box was not nearly as powerful or extendible as I wanted. What I needed was a sleek form factor desktop that had nice software for navigation on my TV but could also leverage the power of a desktop computer.<br />
<br />
After some amount of contemplation, I decided that an original Mac Mini was going to be my HTPC. The original Mac Mini allowed me to have a couple Gig of RAM, a Core2 Duo processor (1.83Ghz), optical audio, digital video, integrated WiFi and a DVD player all wrapped up in a nice sleek form factor that looked at home in my entertainment center. So, I hooked my Mac Mini up to my TV using a DVI to HDMI cable, an optical audio adapter and a Bluetooth keyboard and mouse.<br />
<br />
I had the hardware all picked out and setup, but now I needed some software that would give me more of a home theater experience instead of a "computer on my TV" experience. At first I considered Front Row. Front Row is simple, navigates well with a remote control and it comes pre-installed. But aggregating online sources is not a trivial thing with Front Row. Next, I looked at Boxee. But I noticed that the Boxee application on my Mac Mini had video playback problems (apparently it's an issue with the integrated video). Finally, I decided on Plex.<br />
<br />
<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhU6KH9F6rYfJsLNOGcrPCJzo6t_MhYBwZ82W95nIRXkc_4PmrSlkzVJtGHBoHDMEs6hpQ7rFATahVI_7SnhvWLv65NELQyraZzoxtuj5v4aM_5B90m5EMJn5cyKn5iRDgQs1IofPoOZtUr/s1600/Screen+shot+2011-09-06+at+10.41.26+PM.png" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="158" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhU6KH9F6rYfJsLNOGcrPCJzo6t_MhYBwZ82W95nIRXkc_4PmrSlkzVJtGHBoHDMEs6hpQ7rFATahVI_7SnhvWLv65NELQyraZzoxtuj5v4aM_5B90m5EMJn5cyKn5iRDgQs1IofPoOZtUr/s200/Screen+shot+2011-09-06+at+10.41.26+PM.png" width="200" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Plex Logo</td></tr>
</tbody></table>
Plex is open source media software based on XBMC (Xbox Media Center). Plex works incredibly well on pretty much any modern Mac and it's interface is about as nice as you could ask for. But like all good things, there is a downside: Plex does not play DRMed content. That means all my iTunes downloaded movies and shows were out... unless I wanted to launch Front Row from Plex. Launching Front Row from Plex takes away from the seamless look and feel of Plex, but it is possible.<br />
<br />
Aside from the lack of DRM content support, Plex is a very powerful (and nice looking) media center. Plex offers a wide variety of online content, including NetFlix, USA, CBS and Hulu (Hulu is not 100% dependable due to Hulu's unyielding quest to make their online content unavailable outside of web browsers) to name some. Plex also has Flickr and Picasa plug-ins and it will hook into both iTunes and iPhoto. Not to mention, Plex also allows you to aggregate content on network stores (e.g. NAS servers).<br />
<br />
Movies imported into Plex automatically have their synopsis imported into Plex along with images and ratings from IMDB. And updates to any locations that Plex indexes are automatically reflected within Plex with no manual intervention. Indeed, Plex is a great multimedia solution to anyone wishing to cut the cable cord and go with 100% digital/online content. I did it. You can do it too.Clayton Longhttp://www.blogger.com/profile/00295047809317392242noreply@blogger.com1tag:blogger.com,1999:blog-7170560926644600862.post-57997592827075334262011-09-05T22:29:00.001-04:002011-09-05T22:35:43.485-04:00Moving to the Cloud: Amazon S3<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9kSspV0Ha5cH9whkt4IN_I-wyLsYRLx6piyMBx2LY2U80ITrzPKnjtcZK6hu2gNLW7AACzRrQqPvulL6wHCx1iDlSHMZd2gYOOkSUPbSM6ZQesZW16sUDIxgqvqZ7MOqvrN6VWlzH2y_Q/s1600/AWS_LOGO_RGB.png" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="100" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9kSspV0Ha5cH9whkt4IN_I-wyLsYRLx6piyMBx2LY2U80ITrzPKnjtcZK6hu2gNLW7AACzRrQqPvulL6wHCx1iDlSHMZd2gYOOkSUPbSM6ZQesZW16sUDIxgqvqZ7MOqvrN6VWlzH2y_Q/s200/AWS_LOGO_RGB.png" width="200" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Amazon Web Services</td></tr>
</tbody></table>
Amazon S3 is Amazon's cloud storage solution. It's is accessible over the Internet through a web browser via Amazon's Management Console or via a web page (if you enable it) or through some of the S3 clients out there. There is also an command line API for Amazon S3 that can be used on your local computer or it can be installed on an Amazon EC2 instance for easy transfer to and from S3. And the best part is, it's pretty inexpensive for 'unlimited' storage. This post is all about S3: what it does and how you can use it.<br />
<a name='more'></a>Once you log into Amazon Web Services Management Console, you default to the S3 tab. To start using S3, you have to create an S3 bucket; it's like a domain name only for S3. The name of your S3 bucket must be unique, so pick a name for your bucket that is not likely already taken.<br />
<br />
After you have created an S3 bucket, you can then create folders, upload files, etc. S3 is priced pretty reasonably for storage and data transfer. But you have to be aware that there are still costs. For a complete breakdown of the costs associated with S3 storage, see the following link. <a href="http://aws.amazon.com/s3/#pricing">http://aws.amazon.com/s3/#pricing</a><br />
<br />
One very cool feature of S3 is that you can expose an S3 bucket as a website. This feature can come in very handy if you want cheap, no frills web hosting or if you want to share files in an S3 bucket with a lot of people. To convert an S3 bucket into a website, first select the bucket you want to expose as a website and click the Properties button. Next, select the Website tab and check the enabled box. The URL for accessing your S3 storage bucket on the web will be listed as the Endpoint.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiE0lmtHOtIkLXh4qo-u0emZDLJqN8wJm02HxA_iXRJbOZLT1CzL5QKivIoJnhoipJ6fFOX5dQzUDJcxr7l1hdKDUvtp995v4C4CP3vXezUryhnlSjMUTK9g3A2W5OqnPLQs_2uRTaLjcqZ/s1600/Screen+shot+2011-09-05+at+10.10.55+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="128" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiE0lmtHOtIkLXh4qo-u0emZDLJqN8wJm02HxA_iXRJbOZLT1CzL5QKivIoJnhoipJ6fFOX5dQzUDJcxr7l1hdKDUvtp995v4C4CP3vXezUryhnlSjMUTK9g3A2W5OqnPLQs_2uRTaLjcqZ/s640/Screen+shot+2011-09-05+at+10.10.55+PM.png" width="640" /></a></div>
<br />
There is also an S3 toolkit for command line operations. It can be extremely handy when you want to transfer files to and from S3 and EC2 instances or if you are more comfortable with the command line. The name of the command line toolkit is s3cmd and it is available at <a href="http://s3tools.org/s3cmd">http://s3tools.org/s3cmd</a>. The link provides a ton of information on how to use s3cmd, so I won't go into that in this post. S3tools.org also has a tool called s3fuse which uses fuse to allow you to mount an S3 bucket as a filesystem in Linux - pretty cool stuff!<br />
<br />
Finally, there are a few S3 browser applications. One of the more popular S3 browsers is CloudBerry, available at <a href="http://cloudberrylab.com/">http://cloudberrylab.com/</a>. On my Mac, I am actually partial to Transmit <a href="http://www.panic.com/transmit/">http://www.panic.com/transmit/</a>. Transmit has a nice simple interface and when I am not using the command line, it is typically my S3/FTP/EC2 file transfer client of choice. Clayton Longhttp://www.blogger.com/profile/00295047809317392242noreply@blogger.com0tag:blogger.com,1999:blog-7170560926644600862.post-86844979687176535472011-08-30T00:02:00.002-04:002011-08-30T00:04:16.108-04:00The Power of Google App Engine?<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-E5FbmecSlrsI1zHNM8bS4tKC3Fv_3djrlmLhWZLokIOZVbJAyyhvbwwIqBXj3RBnhI9DHuRav3Bj2tBATwO1xeyFLTmo3mdj64_G1eY8VsqSpcx5VRp5KqSXBefj9Ckx1cz04OSL2n67/s1600/googleappengine.jpeg" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="196" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-E5FbmecSlrsI1zHNM8bS4tKC3Fv_3djrlmLhWZLokIOZVbJAyyhvbwwIqBXj3RBnhI9DHuRav3Bj2tBATwO1xeyFLTmo3mdj64_G1eY8VsqSpcx5VRp5KqSXBefj9Ckx1cz04OSL2n67/s200/googleappengine.jpeg" width="200" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><span style="font-size: xx-small;">Google App Engine Logo</span></td></tr>
</tbody></table>I first used Google App Engine a little over a year ago. Since then some things have changed: pricing, features, support. OK, a lot of things have changed. Google App Engine has grown up. But is it ready to take on the likes of Amazon?<br />
<br />
Google App Engine and Amazon Web Services (AWS) are entirely different animals. So, comparing the two is not 100% straight forward; and I think that's on purpose. Amazon gives you one or more virtual computers in their "cloud" on demand along with services to accompany your virtual environment. Google App Engine, on the other hand is all about<br />
just running applications; much of the details of how those applications are deployed and run is hidden from the end user/developer.<br />
<a name='more'></a><br />
<br />
<span style="font-size: x-small;"><i>For an overview of EC2 and how to setup an EC2 instance on AWS, see my <a href="http://www.claytonstechnobabble.com/2011/08/amazon-ec2-moving-to-cloud.html">Amazon EC2: Moving to the Cloud</a> post. </i></span><br />
<br />
Amazon allows you to run whatever kind of applications you want in AWS. Google restricts your applications to either Python or Java. The catch with Amazon is that you have to setup the environment (or find an EC2 instance that's pre-built with what you want) to host any applications that you want to run. For example, if you wanted to run a Java web application on AWS then you would have to install JBoss or some other Java application server on an EC2 instance. With Google App Engine, you are provided with the Java hosting environment without having (or being able) to dig into the details of how the application server is setup.<br />
<br />
Google App Engine is also priced quite a bit different from AWS. Amazon bills you based on the time you spend using it's services whereas Google App Engine bills you based on the number of applications you host and level of service that you need. They have a very simple tiered pricing structure. For more information on Google App Engine pricing and AWS pricing, see the following links.<br />
<br />
<a href="http://www.google.com/enterprise/cloud/appengine/pricing.html">Google App Engine Pricing</a><br />
<a href="http://aws.amazon.com/ec2/pricing/">AWS EC2 Pricing</a><br />
<br />
Setting up a Google App Engine account and deploying an application to Google App Engine is quite a bit easier than AWS, and anyone can setup a free account. I haven't used the Python runtime, but I have used the Java runtime on Google App Engine. And I found it to be very simple for low to medium complexity Java web applications. For a basic web application, you need only include the appengine-api-*.jar in the WEB-INF/lib directory of your WAR and your appengine-web.xml file in the WEB-INF directory of your WAR as detailed <a href="http://code.google.com/appengine/docs/java/gettingstarted/creating.html">HERE</a>.<br />
<br />
The nice part about Google App Engine is that in most cases, you can literally run a the exact same WAR on Tomcat or JBoss (or pick you Java servlet container) and in Google App Engine without any modification. The bad part about Google App Engine is that some key components are not supported. For instance, JAXB is not supported. So, you can forget about running Axis2 on Google App Engine. EJB's are also not supported. So, many existing Java EE applications will not be able to run on Google App Engine without modification.<br />
<br />
JDBC is also not supported. The reason behind the lack of JDBC is that Google App Engine does not provide an available relational database. Instead, JPA or JDO can be used to communicate with a backing store. For a complete list of what is supported and what is not supported in Java for Google App Engine, see <a href="http://groups.google.com/group/google-appengine-java/web/will-it-play-in-app-engine">http://groups.google.com/group/google-appengine-java/web/will-it-play-in-app-engine </a><br />
<br />
<span style="font-size: large;">Bottom Line</span><br />
Google App Engine looks like it can be a cool solution for small to medium web applications. However, if you are considering migrating existing applications to Google App Engine then some care should be taken to ensure that it is fully compatible. More complex applications will likely have difficulty migrating to Google App Engine.<br />
<br />
So, how does Google App Engine stack up against Amazon Web Services? I actually think it stacks up well. And it differentiates itself enough both with its offering and its pricing to make it a strong contender against AWS EC2 for some cases. Google is trying to carve itself an interesting niche in the cloud computing market. And if I were a Java or Python shop looking for lower cost cloud services for basic to moderately complex application hosting, I think I would definitely have to look at Google App Engine.<br />
<br />
<br />
Clayton Longhttp://www.blogger.com/profile/00295047809317392242noreply@blogger.com0tag:blogger.com,1999:blog-7170560926644600862.post-87114821628725325992011-08-24T23:21:00.003-04:002011-08-25T00:11:34.952-04:00Update: Virtualize Your Desktop<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNuFC63Zz-D4k9awFJsgQAj6g63xWlmuO0mzD4GAqopxslTW1kyIEm7r2_RcDHku53kWaCFpk676sY7h682cigoUVE7vgU21ucS42uonP4HrMo-x49vSrPvNvdcytB10tuKTeff6BwD82W/s1600/wind.jpg" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="199" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNuFC63Zz-D4k9awFJsgQAj6g63xWlmuO0mzD4GAqopxslTW1kyIEm7r2_RcDHku53kWaCFpk676sY7h682cigoUVE7vgU21ucS42uonP4HrMo-x49vSrPvNvdcytB10tuKTeff6BwD82W/s200/wind.jpg" width="200" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><span style="font-size: xx-small;">Microsoft Windows Logo</span></td></tr>
</tbody></table>An interesting thing happened to me about a month after I virtualized my Windows 7 desktop and began running it on Linux: I was somehow dropped from the domain. After doing a little online research, it turns out that I am not the first person to have this problem (surprise). But the good news is that there is a way to fix it.<br />
<br />
<i>If you missed the original post, read <a href="http://www.claytonstechnobabble.com/2011/07/virtualize-your-desktop.html">Virtualize your Desktop</a>.</i><br />
<br />
Apparently, after 30 days my computer's domain password is set to update and that's where the problem happens. When my computer updates it's password on the domain, it breaks the trust relationship with the domain. I would think that a virtualized version of <br />
<a name='more'></a>Windows could exist inside a host on the domain the same as a physical or paravirtual version of Windows, but this does not seem <br />
to be the case.<br />
So, it would that the solution is to stop my virtual Windows' machine from having its password updated. And that's exactly what I did. You see, when your Windows computer updates its password on the domain is determined by the client and not the domain controller. So, without bothering my friendly IT staff, I can tell my virtual Windows install to never allow it's domain password to expire. To do that I should just have to update the following registry property to value I have specified. <br />
<br />
Property: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters\DisablePasswordChange<br />
Value: 1<br />
<br />
Hopefully, you are doing this before you run into a domain trust issue with your virtual Windows install. Otherwise, like me, you will have to get re-added to the domain. And after I take care of getting myself re-added to the domain, I'll wait a couple of months to verify that this worked. I'll let you know either way.<br />
<br />
Clayton Longhttp://www.blogger.com/profile/00295047809317392242noreply@blogger.com0tag:blogger.com,1999:blog-7170560926644600862.post-68789750616969803712011-08-22T23:28:00.003-04:002011-08-24T23:24:40.638-04:00Moving iTunes to FreeNAS<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigf2qDHptI5Wf0YHoqP3Mjy6_LfNU3XCic5L0vnUAwnLjBWDHCKkWLwJdmHeSBiFZQDFyNB4MxS7oH4zU-DTix6xLrYGmIVlbqn-eCx-o3zsxIGtOSpIyN4b_HAWgtCYrdJ65t5G03U8jB/s1600/itunes.jpg" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="193" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigf2qDHptI5Wf0YHoqP3Mjy6_LfNU3XCic5L0vnUAwnLjBWDHCKkWLwJdmHeSBiFZQDFyNB4MxS7oH4zU-DTix6xLrYGmIVlbqn-eCx-o3zsxIGtOSpIyN4b_HAWgtCYrdJ65t5G03U8jB/s200/itunes.jpg" width="200" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><span style="font-size: xx-small;">iTunes</span></td></tr>
</tbody></table>Well, I've finally done it. I've filled up my MacBook's hard drive with movies and music. Basically, iTunes has taken over my computer. In fact, if it wasn't for all the stuff I keep in iTunes then I would have a ton more space.<br />
<br />
So after pondering my predicament for about 30 seconds, I decided to move my iTunes media off of my MacBook and onto my NAS (FreeNAS) storage. This will allow me to keep and expand my media library and it will free up some space on my MacBook. This post is all about how to move your iTunes media to FreeNAS.<br />
<br />
<i>If you are new to FreeNAS and need help setting it up then check out my <a href="http://www.claytonstechnobabble.com/2010/01/using-apple-time-machine-with-freenas_03.html">Using Apple Time Machine with FreeNAS</a> post.</i><br />
<br />
<a name='more'></a><br />
<br />
Before we can do anything, we need a place to put iTunes media on FreeNAS. So, SSH into your FreeNAS server and create a directory. I called mine "iTunes."<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEimBZ6HM67yErxXF7Vr07Jc9z6zD33F-jOgAmycl1ajtT3_sY_V04WZ8Z0pWgVvlmN82gx48ZbL1-bR1clCYFMYnQchUtaj_Pq9dx2-2Fe_p49vRyhyphenhyphenHGpy_IyG6SP1w1eDs0uuL4eOTQTt/s1600/Screen+shot+2011-08-22+at+10.39.15+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="60" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEimBZ6HM67yErxXF7Vr07Jc9z6zD33F-jOgAmycl1ajtT3_sY_V04WZ8Z0pWgVvlmN82gx48ZbL1-bR1clCYFMYnQchUtaj_Pq9dx2-2Fe_p49vRyhyphenhyphenHGpy_IyG6SP1w1eDs0uuL4eOTQTt/s640/Screen+shot+2011-08-22+at+10.39.15+PM.png" width="640" /></a></div><br />
Now that we have a folder created for our iTunes media, we need a share. Since I will be connecting with my MacBook, I will create an AFP share. However, for you Windows folks out there, you can create a SMB/Samba share that you can use to map it as a drive on your Windows computer.<br />
<br />
To create an AFP share, just log into FreeNAS using the web interface with the default admin credentials (admin/freenas). Next, select Services->AFP from the FreeNAS drop down menu.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEioXCPLIp5B1DJ2WrlRMbmBivb-uT90gzE0182WGX5SlZ8FI3NcmSXR02EJLjt5SKh9fUQHl7jZ6ya16G6dIOJaWeQpK6a7sAK-DBJ8VMXeHITSByCzsUqWyuMjlYwsJxVnRiiFIpfJ_CD5/s1600/Screen+shot+2011-08-22+at+10.48.18+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="192" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEioXCPLIp5B1DJ2WrlRMbmBivb-uT90gzE0182WGX5SlZ8FI3NcmSXR02EJLjt5SKh9fUQHl7jZ6ya16G6dIOJaWeQpK6a7sAK-DBJ8VMXeHITSByCzsUqWyuMjlYwsJxVnRiiFIpfJ_CD5/s640/Screen+shot+2011-08-22+at+10.48.18+PM.png" width="640" /></a></div><br />
When the AFP admin screen comes up, select the Shares tab and then click the blue cross to create a new AFP share.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiItGm9yfHxJU4ToRInxMERtOlmjKDaAjKz6u-mtBoq25ND6olWrRrcjQ-oRJcHyWmZ-unQ3ggcUPUv3EW2GFqWTa8xOppzLJlqPVSLXZ1fnWm7O0s4AgD59T_v6gveiFL3A7vj3aU3XfLr/s1600/Screen+shot+2011-08-22+at+10.55.43+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="340" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiItGm9yfHxJU4ToRInxMERtOlmjKDaAjKz6u-mtBoq25ND6olWrRrcjQ-oRJcHyWmZ-unQ3ggcUPUv3EW2GFqWTa8xOppzLJlqPVSLXZ1fnWm7O0s4AgD59T_v6gveiFL3A7vj3aU3XfLr/s640/Screen+shot+2011-08-22+at+10.55.43+PM.png" width="640" /></a></div><br />
Select the location of the share (e.g. /mnt/HDD/iTunes) and make sure you give yourself access. In my case, I only specified myself as having access. But you could give access to several users or a group if you are sharing a media library.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEil1ltF0GLPSnnvKAovm9610LhnnRu9BsO6aJBICpAvC_EAMh4WLOwMUgjPFwMPOqhekGs2V-7O0uKPHosWcBllZDKW1mV6WuQv9iHjBOA7QW_6F1ZtJr7qUfmFRXHxTXI_Z-61o3ZjiaoG/s1600/Screen+shot+2011-08-22+at+10.58.23+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="146" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEil1ltF0GLPSnnvKAovm9610LhnnRu9BsO6aJBICpAvC_EAMh4WLOwMUgjPFwMPOqhekGs2V-7O0uKPHosWcBllZDKW1mV6WuQv9iHjBOA7QW_6F1ZtJr7qUfmFRXHxTXI_Z-61o3ZjiaoG/s640/Screen+shot+2011-08-22+at+10.58.23+PM.png" width="640" /></a></div><br />
Once you click Add then you are asked to confirm your changes by clicking the Apply Changes button. So, go ahead and click that button. Now you have an AFP share on FreeNAS that can store your iTunes media files.<br />
<br />
To move your iTunes files to your FreeNAS AFP share, open a Finder window and select Go->Connect to Server. Enter the IP Address for the Server Address. A dialog box will then pop up asking you which share you want to connect to; select the iTunes share.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6UJ4qExzFfzdxzAexmv118UZBxR5_2WsZVd5Ow86Y3FRELyJ7k2-etvzqqjQ91xrtPuitvdPfSr8BM9-wZkAsnF1sftx33SwgGQG2xLoq3gUan7DyUPTXj62lbXA9ntIBvvYgqilOahqi/s1600/Screen+shot+2011-08-22+at+11.13.23+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="212" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6UJ4qExzFfzdxzAexmv118UZBxR5_2WsZVd5Ow86Y3FRELyJ7k2-etvzqqjQ91xrtPuitvdPfSr8BM9-wZkAsnF1sftx33SwgGQG2xLoq3gUan7DyUPTXj62lbXA9ntIBvvYgqilOahqi/s320/Screen+shot+2011-08-22+at+11.13.23+PM.png" width="320" /></a></div><br />
Now, it's simply a matter of copying your iTunes library to your iTunes AFP share on FreeNAS and changing your iTunes preferences. If you're curious about how that works, check out this KB article from Apple: <a href="http://support.apple.com/kb/ht1449">http://support.apple.com/kb/ht1449</a><br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2L86oWkw4Y9-HUpOVHY_d1QvHavmNp8Y9LjG799QXmqsbjEneJdhTXP0QmGhz-ai8EIvlWro-IEYjVXN5u6rCq6i38b7gVzvDspbdBdVDPqqbgxIA9ej60vpmbO7Vx8YTFuxd4hVRU2uu/s1600/Screen+shot+2011-08-22+at+11.21.25+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="315" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2L86oWkw4Y9-HUpOVHY_d1QvHavmNp8Y9LjG799QXmqsbjEneJdhTXP0QmGhz-ai8EIvlWro-IEYjVXN5u6rCq6i38b7gVzvDspbdBdVDPqqbgxIA9ej60vpmbO7Vx8YTFuxd4hVRU2uu/s320/Screen+shot+2011-08-22+at+11.21.25+PM.png" width="320" /></a></div><br />
Clayton Longhttp://www.blogger.com/profile/00295047809317392242noreply@blogger.com0tag:blogger.com,1999:blog-7170560926644600862.post-3188254868028161402011-08-19T22:00:00.009-04:002011-08-24T12:08:57.757-04:00The Very Best of Clayton's Technobabble<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2EdHYydl8BKuvd9SPuxsd0OQy9aEL_LiJWqe-DTNUCP39OKrQuBQmqdrFUXiiqVT3JUf8OWve8kS0_WG9JoJa9LoovSFFp7N-V1Q3tlgufcfzClRRICxnBOgwLT3yoUoYa4XzsgeqRbR_/s1600/IMG_1510.jpg" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="133" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2EdHYydl8BKuvd9SPuxsd0OQy9aEL_LiJWqe-DTNUCP39OKrQuBQmqdrFUXiiqVT3JUf8OWve8kS0_WG9JoJa9LoovSFFp7N-V1Q3tlgufcfzClRRICxnBOgwLT3yoUoYa4XzsgeqRbR_/s200/IMG_1510.jpg" width="200" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Clayton's Technobabble</td></tr>
</tbody></table>Today's post takes a look back at some of the more interesting, most viewed and most thought provoking posts from Clayton's Technobabble's archive. Some of these posts are old and some are more recent. Some were featured in online magazines and some were not. But all of them were good posts and they are all still relevant today.<br />
<br />
I hope you take the time to check out any posts listed below that you may have missed in the past. And feel free to comment on which posts you like the best and the kinds of posts you would like <br />
<a name='more'></a>to see in the future. Enjoy.<br />
<ol style="font-weight: bold;"><li><a href="http://www.claytonstechnobabble.com/2010/01/why-do-you-care-about-64-bit.html">Why do you care about 64-bit?</a> <br />
<span style="font-weight: normal;">What's so special about 64-bit compared to 32-bit computing? Why should I care about 64-bit computing? This post answers those questions and a little more. At the beginning of 2010 this was the most viewed post on the site, thanks in no small part to being featured in <a href="http://www.start64.com/">Start64!</a><br />
<br />
</span></li>
<li><a href="http://www.claytonstechnobabble.com/2010/01/using-apple-time-machine-with-freenas_03.html">Using Apple Time Machine with FreeNAS</a><br />
<span style="font-weight: normal;">Originally posted in January of 2010, this is still one of the most popular posts on this site, and for good reason. It is still relevant today. In fact, I still have my Mac's Time Machine setup on FreeNAS the same way this post describes.<br />
<br />
</span></li>
<li><a href="http://www.claytonstechnobabble.com/2010/01/myth-about-ghz.html">The Myth About GHz</a><br />
<span style="font-weight: normal;">This is another oldie but goodie. This post discusses why clock speed really isn't as important as some people might think. It also discusses what features in a computer are important for performance. It's must read for anyone considering buying a computer who's looking to get a quality machine.<br />
</span><br />
</li>
<li><a href="http://www.claytonstechnobabble.com/2011/07/virtualize-your-desktop.html">Virtualize Your Desktop</a><br />
<span style="font-weight: normal;">Virtualize your Windows computer and run it on Linux? This post shows you how to do just that: take a snapshot of your physical Windows install and turn it into a virtual that you can run inside VirtualBox on Linux. And the best part is all of your programs and settings will be preserved on Windows.<br />
<br />
</span></li>
<li><a href="http://www.claytonstechnobabble.com/2011/07/virtualize-your-desktop.html">The Rise of MultiCore</a><br />
<span style="font-weight: normal;">It wasn't that long ago when computers shifted from single core to multi-core. This post discusses why there is a growing emphasis on multi-core computing and why single core performance growth was slowing down.<br />
<br />
</span></li>
<li><a href="http://www.claytonstechnobabble.com/2011/08/linux-partitions-explained.html">Linux Partitions Explained</a></li>
<span style="font-weight: normal;">Do you ever wonder why Linux typically has multiple partitions when Windows typically only has one? Do you wonder what all those common directories in Linux mean? If you answered 'yes' to either one of those questions then this is the post for you. <br/><br/></span>
<li><a href="http://www.claytonstechnobabble.com/2010/01/tethering-your-mac-to-blackberry-bold_6866.html">Tethering Your Mac to A Backberry (Bold 9700) on T-Mobile</a><br />
<span style="font-weight: normal;">I guess there is still a lot of love out there for the Blackberry. Because this is still one of the most popular posts on Clayton's Technobabble. This post has found it's way to forums all around the world. If you have a Blackberry and you want to tether it to your Mac then this is the post for you.<br />
<br />
</span></li>
<li><a href="http://www.claytonstechnobabble.com/2010/02/good-quality-digital-images.html">Good Quality Digital Prints</a><br />
<span style="font-weight: normal;">What makes one digital print better than another? And what is a photo quality print? This post answers those questions and discusses the varying degree in the quality of digital prints. Suffice to say, more PPI is not always better.<br />
<br />
</span></li>
<li><a href="http://www.claytonstechnobabble.com/2011/08/what-is-ai.html">What is AI?</a><br />
<span style="font-weight: normal;">What makes one digital print better than another? If you've ever watched the Matrix or heard of Deep Blue then you have at least heard the term AI. But what is AI, really? Is it something that can be achieved through sheer brute force computation or is it something else?<br />
<br />
</span></li>
<li><a href="http://www.claytonstechnobabble.com/2011/08/run-any-application-as-windows-service.html">Run any Program as a Windows Service</a><br />
<span style="font-weight: normal;">Windows users rejoice, this post is for you. This post shows you how to run any program as a Windows service, not just those programs designed to be a Windows service. It's something that has come in very useful for me at times and I hope you find this little trick useful for you too.<br />
</span><br />
</li>
</ol><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg80qe_Oygwro_8RoghyYzgoHxbwArTHq7RvhIB-PKMN_9bv7umFHq5GZXEfD5kI8ViL6u7ZICRzqVzazMJpzCdNVHhMbpMkFs9yu18nFdHxwN1U5KKEb0mLa5_B-b4cCvssDFJmZjkBM3N/s1600/electronic-chip.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><br />
</a></div>Clayton Longhttp://www.blogger.com/profile/00295047809317392242noreply@blogger.com0tag:blogger.com,1999:blog-7170560926644600862.post-74969785238029537532011-08-19T00:13:00.001-04:002011-08-23T19:36:06.877-04:00Installing the Java JDK on Linux<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj02RdsHrLZ4Pvp2BaCSTsKuucDbV0j0mAOLBSXDnJNTo_6S1xf4vB8RnkjWReKHmwrKTTCwNRl0SzCPMy2rDggUW8sQ60V7c3H2e8FvKH_wImiDycMo9ss2HtIrLJ0koBLQx7cArxXAcr4/s1600/Free_Cup_of_Coffee_3540+%25287%2529.JPG" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj02RdsHrLZ4Pvp2BaCSTsKuucDbV0j0mAOLBSXDnJNTo_6S1xf4vB8RnkjWReKHmwrKTTCwNRl0SzCPMy2rDggUW8sQ60V7c3H2e8FvKH_wImiDycMo9ss2HtIrLJ0koBLQx7cArxXAcr4/s200/Free_Cup_of_Coffee_3540+%25287%2529.JPG" width="150" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><span style="font-size: xx-small;">Java</span></td></tr>
</tbody></table>If you are a Linux noob or if you are new to Java on Linux then you might have some questions concerning how to install Java on Linux, especially if you run Ubuntu. This post tackles that exact issue. So, read on if you want to know how to install and configure OpenJDK or Sun/Oracle Java on Ubuntu Linux.<br />
<br />
With Ubuntu you get the choice of whether to install OpenJDK or Sun/Oracle Java. OpenJDK is available in the default repositories for Synaptic/apt-get and Sun/Oracle Java is not. So, it might be tempting to just use OpenJDK. And for many applications that would be fine. However, there are some Java extensions that are not included in OpenJDK which are included in the Sun/Oracle Java install.<br />
<br />
<br />
<a name='more'></a>If you still want OpenJDK over Sun/Oracle Java then simply drop to the command line and type <i><span class="st">sudo <i>apt</i>-<i>get</i> install <i>openjdk</i>-6-<i>jdk openjdk</i>-6-jre</span></i> and apt-get will install OpenJDK for you. However, if you want Sun/Oracle Java then you can download the latest version from the website at <a href="http://www.oracle.com/technetwork/java/javase/downloads/jdk-6u27-download-440405.html">http://www.oracle.com/technetwork/java/javase/downloads/jdk-6u27-download-440405.html</a> (I never have much luck finding it in the repositories). Select the self extracting executable for either 32-bit or 64-bit Linux (not the RPM) and download it onto your computer.<br />
<br />
Once you have the self extracting executable on your computer, you can run it by going into the directory where it is located (e.g. ~/Downloads) and in the command line type <i>sudo ./</i><i>jdk-6u27-linux-x64.bin</i> (assuming that's the name of the file you downloaded) and watch it go. Once the install is complete, you'll notice a new java directory located in the directory where you ran the <i>sudo ./</i><i>jdk-6u27-linux-x64.bin</i> command. Move that directory to /usr/lib/jvm by issuing the following command from the /usr/lib/jvm directory <i>sudo mv ~/Downloads/jdk1.6.0_27 ./</i><br />
<br />
If you look at the existing contents of the /usr/lib/jvm directory then you'll probably see some other java directories already in there and likely some symbolic links too. If one of those links is java-6-sun then delete that link by dropping to the command line and typing <i>rm java-6-sun</i>. Then type <i>ln -s ./jdk1.6.0_27 java-6-sun</i>.<br />
<br />
Typically this is the point where you add Java to your path and set JAVA_HOME. You can still set JAVA_HOME by editing the .profile file in your home directory (e.g. ~/.profile) but Ubuntu uses something else to determine the path of Java. Ubuntu uses profiles to determine the pathing for all Java installs available on the system. To set your new Java install as the default in your profile drop to the command line and type <i>sudo update-alternatives --config java</i> and select the number next to your new version of Java to set the Java runtime preferences. Then type s<i>udo update-alternatives --config javac</i> and again select the number next to your new version of Java to set the Java compiler preferences.<br />
<br />
To test out your install of Java, drop to the command line and type <i>java -version</i>. You should see the version of your new Java install returned. Now type <i>javac -version</i> and again you should see the version of your new Java install returned.Clayton Longhttp://www.blogger.com/profile/00295047809317392242noreply@blogger.com0tag:blogger.com,1999:blog-7170560926644600862.post-14115804731155889012011-08-17T23:07:00.002-04:002011-08-23T19:36:32.061-04:00Cool Gadget: Jawbone Era<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyuIZlJ94VumetWLPXUBdqB0_e-5dInC-xM4xbT_7yN9w8wtuyNQZOs376CphXUgk13gAAR7i5NrAqLEsJ42e98kzov-Ubq4OrTdncOXFX-3ixGvDYtowFba2gYR0aRsDIdtXDukn0JjxB/s1600/jawbone_era_midnight_440x330.jpg" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="150" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyuIZlJ94VumetWLPXUBdqB0_e-5dInC-xM4xbT_7yN9w8wtuyNQZOs376CphXUgk13gAAR7i5NrAqLEsJ42e98kzov-Ubq4OrTdncOXFX-3ixGvDYtowFba2gYR0aRsDIdtXDukn0JjxB/s200/jawbone_era_midnight_440x330.jpg" width="200" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><span style="font-size: xx-small;">Jawbone Era</span></td></tr>
</tbody></table>Ever since I purchased this little device, people have been asking me about it. So, I figured it was time to do a review on it. This post is all about the Jawbone Era Bluetooth headset.<br />
<br />
In the past, I owned the Jawbone 2 and the Jawbone Icon. Now I use the Jawbone Era, and honestly it is the best Jawbone headset yet. The call quality and the built in accelerometer (that's right, it has a built in accelerometer) clearly make it stand above any Bluetooth headset I have ever used.<br />
<br />
<span style="font-size: large;"></span><br />
<a name='more'></a><span style="font-size: large;">Pairing</span><br />
Unlike many Bluetooth headsets, it is easy to toggle the Jawbone Era between pairing and non-pairing modes. Thanks to the built in accelerometer, all you have to do in order to put the Era into pairing mode is wave it up and down. Shortly after executing this gesture, the receiver alternates white and red lighting to let you know that the device is in pairing mode. How's that for simple?<br />
<br />
So far, I've successfully paired my Jawbone Era to my iPhone, my iPad, my Macbook Pro and my Ubuntu Linux HP EliteBook. I had no problem pairing the Era with any of those devices. And there was no additional software that I had to install or drivers that I needed to update to make it work. <br />
<br />
<span style="font-size: large;">Call Quality</span><br />
Jawbone is known for its noise reduction technology. And the Era is no exception. Whether I am inside or outside, the Era seems to deliver. And although I haven't tested it, I am told that it does well in windy conditions too.<br />
<br />
When using the Era on calls, I have no complaints from callers on the other end and voices sound very crisp. Volume is also excellent; much better than most single ear headsets that I have used with my iPhone. I never have an issue where I am wanting for more volume. However, the only way I have found to effectively adjust the volume is by actually adjusting it through the phone.<br />
<br />
Making phone calls is easy with the Era thanks to it's support of voice commands. With my iPhone, I just hold the button on the back of the Era and it prompts me for a voice command which I can use to make a call or play music (more about playing music later). To answer a call, I just tap on the outside of the Era twice or push the button on the rear of the Era. Hanging up calls works the same way.<br />
<br />
<span style="font-size: large;">Playing Music</span><br />
The Era supports A2DP for streaming music from your phone (or other A2DP enabled device) to your Jawbone Era. It's a nice feature that I find I don't really use that much. But it is supported and most newer smart phones are enabled with A2DP. Sound quality of music is good for only coming through one ear.<br />
<br />
<span style="font-size: large;">Power </span><br />
Unlike some past Jawbone headsets (e.g. Jawbone 2), the Era charges from a standard micro-USB port on the headset. And powering on the era is as simple as flipping the power switch on the underside of the headset. Normally I wouldn't bother discussing charging and powering on a device. But previous Jawbone devices were somewhat painful to both power on and charge. That is certainly not the case with the Era.<br />
<br />
<span style="font-size: large;">Bottom Line</span><br />
With excellent call quality, A2DP music streaming support, voice command integration and a built in accelerometer, there is a lot to love about the Jawbone Era. The $120.00 price tag is a little hard to swallow at first. But once you start using it, you'll appreciate the quality and the features enough to justify the investment.Clayton Longhttp://www.blogger.com/profile/00295047809317392242noreply@blogger.com1tag:blogger.com,1999:blog-7170560926644600862.post-89558911657377177122011-08-16T23:14:00.012-04:002011-08-23T19:37:06.070-04:00What Does Defrag Really Do?<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1DiUO9TPaLC-wy8ScfBm_x_PXMUq5Fmipki8xa3pCSy82a9P70T7sMgaKifSL0L57gSAiZMK4I2tl41GGApr0EP1aSAxDAa-9s5T8TFQfa5oXXcbQkXAAfTh-LREFgUzMM6PPL44uKb-b/s1600/DSC_4198-2.jpg" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="133" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1DiUO9TPaLC-wy8ScfBm_x_PXMUq5Fmipki8xa3pCSy82a9P70T7sMgaKifSL0L57gSAiZMK4I2tl41GGApr0EP1aSAxDAa-9s5T8TFQfa5oXXcbQkXAAfTh-LREFgUzMM6PPL44uKb-b/s200/DSC_4198-2.jpg" width="200" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><span style="font-size: xx-small;">Hard Disk</span></td></tr>
</tbody></table>We've all heard it from the "IT Guy" at one point in time: "You need to defrag your hard drive!" But what does that really mean and what does it do? This post answers the question of what defragmenting your hard drive really does.<br />
<br />
<span style="font-size: large;">What is Fragmentation?</span><br />
In order to understand what defragmenting does, it's stands to reason that we should first examine what fragmentation is and why it's a bad thing. Fragmentation and the degree of fragmentation <br />
<a name='more'></a>that can exist has a lot to do with the type of file system you have. Generally speaking, there are two types of fragmentation: internal and external. External fragmentation is unused space that exists between files whereas internal fragmentation is unused space that exists within files.<br />
<br />
However, when we are talking about the kind of fragmentation that defragmenting fixes then we are talking about data fragmentation. The file systems that most people are familiar with (FAT, NTFS, ext3, UFS, etc.) do not have external fragmentation. What they have done instead is traded external fragmentation for data fragmentation.<br />
<br />
<span style="font-size: large;">NTFS and FAT</span><br />
NTFS and FAT use central allocation tables that point to file data. Because each file is chopped up into smaller file blocks, any external unused space will not be smaller than one of these blocks. And therefore if a file expands or a new file is created without enough contiguous free space, the file's blocks can be stored non-contiguously. External fragmentation problem solved! But over time files can develop summer blocks: some are here, some are there. :)<br />
<br />
The problem with summer blocks is that they make reads slow because the disk has to look all over the place just to read what logically is a single file. And that's the problem with data fragmentation: it makes reads slow. Both sequential reads and random access reads become slower with increased data fragmentation due to the additional seeks that inevitably have to done to read files.<br />
<br />
FAT, arguably, is the biggest offender of data fragmentation. The reason has to do with how space is allocated to files. In FAT, files are allocated sequentially. So, when files have additional blocks allocated they are unable to allocate those blocks contiguously, so they must fragment. Also, when files are deleted or reduce in size, holes are left behind which can further contribute to the problem of fragmentation by what is known as free space fragmentation. NTFS improves on file allocation by using clusters and allowing for some growth and contraction (for some more background on NTFS, see my post on <a href="http://www.claytonstechnobabble.com/2011/08/fat-ntfs-and-ext-file-systems-whats.html">file systems</a>) , but it is still more susceptible to fragmentation than say, ext3.<br />
<br />
<span style="font-size: large;">Ext3 and OS X(HFS+)</span><br />
Ext3 is commonly used with Linux operating systems. It works differently than NTFS or FAT and is much less susceptible to data fragmentation. Why? It has to do with the positioning of files on the disk. Instead of placing files close together, it scatters them on the disk to allow for growth and contraction. The end result is that data fragmentation is not required because there is ample unallocated space between files. Of course, this changes as the disk fills up. But it does mean that in many cases, data fragmentation is not much of an issue with ext3.<br />
<br />
OS X tries to eliminate file system fragmentation by rewriting fragmented files so that they are contiguous. It is quite effective at reducing data fragmentation. However, it leaves another problem: free space fragmentation. This only becomes a problem in HFS+ when the disk fills up and there is not enough room for contiguous file allocation (similar to how ext3 can become fragmented).<br />
<br />
<span style="font-size: large;">The Bottom Line</span><br />
All of the file systems listed in this post can suffer from (data) fragmentation. Because FAT and NTFS allocate files sequentially on the disk they will suffer the most fragmentation (FAT more so than NTFS). Ext3 and HFS+ file systems manage fragmentation. And although they can still become fragmented, they are less likely to do so.<br />
<br />
So, what does defrag do? It undoes the fragmentation on a drive by rearranging file blocks so that files are allocated contiguously for faster access.Clayton Longhttp://www.blogger.com/profile/00295047809317392242noreply@blogger.com0tag:blogger.com,1999:blog-7170560926644600862.post-68310677530297250022011-08-14T23:02:00.017-04:002011-08-23T20:03:39.851-04:00What is AI?<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEit09-5c_ucvLWYKRItTD84nsIGXSfwVcg3J42JzXATAjp6fvVY8QYRdRnfASL8BfHav1vGlWDQB1a5bzz3ZS-1uvSHkn5GZOb_OgPrJFxsmeuAtQqmGMNIEQ6_lZ-xGDXkLLlK7LtCLAlf/s1600/iRobot.jpg" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="150" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEit09-5c_ucvLWYKRItTD84nsIGXSfwVcg3J42JzXATAjp6fvVY8QYRdRnfASL8BfHav1vGlWDQB1a5bzz3ZS-1uvSHkn5GZOb_OgPrJFxsmeuAtQqmGMNIEQ6_lZ-xGDXkLLlK7LtCLAlf/s200/iRobot.jpg" width="200" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><span style="font-size: xx-small;">From the Movie I,Robot</span></td></tr>
</tbody></table>I recently read an interesting article about Artificial Intelligence(AI) on Ars Technica, titled <span style="font-size: small;"><a href="http://arstechnica.com/gaming/news/2011/08/force-versus-heuristics-the-contentious-rise-of-computer-chess.ars">Brute force or intelligence? The slow rise of computer chess</a>. It posed the question, "What is AI?" Can AI be gained through raw computing power (brute force) or is it something else? You don't have to wait to get to the end of this post to find out: it's something else.</span><br />
<span style="font-size: small;"><br />
</span><br />
<span style="font-size: small;">The most well known test for AI is the Turing Test, originally described by Alan Turing in 1950 as a way of answering the question, "Can machine's think?" The basic idea is that a human </span><br />
<a name='more'></a><span style="font-size: small;">interrogator would ask questions to two players, one being a machine and the other being a human. The interrogator would then have to make the determination as to which player is the human and which is the machine. Turing proposed that a machine could be said to think if that the machine could imitate a human to the point where an interrogator could not reasonably distinguish it from a human based on its responses.</span><br />
<br />
<span style="font-size: small;">Each year the <a href="http://www.loebner.net/Prizef/loebner-prize.html">Loebner Prize</a> competition is held in an attempt to find a machine that can "think" based on the Turing Test standard. To date, no machine has been able to yield results in this annual competition that are "indistinguishable" from a human. In other words, no machine is currently known to "think" based on this standard.</span><br />
<br />
<span style="font-size: small;">Another well known test of computer intelligence is how well they can play chess (the topic referred to in <a href="http://www.arstechnica.com/">Ars Technica</a>'s article). Almost since the inception of the study of AI, chess was thought of as a great test of machine intelligence. The reasoning? Exhaustive search in chess is VERY computationally expensive. It's so expensive in fact that even for a computer to successfully compete in chess, it must have some level of intelligence to make decisions with imperfect information outside of search (although faster processing and increased parallelism does make more search possible - part of the point made in Ars Technica's article); conducting a search on every possible outcome is not a feasible solution.</span><br />
<br />
<span style="font-size: small;">And that really is the root of what intelligence is: the ability to use knowledge and understanding to solve problems without perfect information. Sometimes we call it intuition. Sometimes we call it experience. But whatever you call it, it's the reason why we can understand language even when someone speaks with an unfamiliar accent. It's also the reason why chess players can make good moves even when they don't know (or consider) every outcome. </span><br />
<br />
<span style="font-size: large;"><i>Intelligence Reduces the Need for Search... </i></span><br />
<span style="font-size: small;">Allen Newell and Herbert A. Simon discussed this </span>in <span style="font-size: small;"><a href="http://www.rci.rutgers.edu/%7Ecfs/472_html/AI_SEARCH/PSS/PSSH1.html">Computer Science as Empirical Inquiry: Symbols and Search</a>. They said that intelligence reduces the need for search. And when you think about it, it's true. How often do we perform searches of every possible scenario before making decisions in our lives? For most of us, the answer is rarely. Instead, we try to find solutions to daily problems by relating those problems back to similar experiences. Sometimes that relationship is strong and we are able to make good, informed decisions. Sometimes that relationship is weak and as a result we might be uncertain of our decision or we might seek out advice from another person who had a more closely related experience.</span><br />
<h4 style="font-family: inherit; font-weight: normal;"><span style="font-size: small;">In order for a computer to be intelligent, it must be able to do those things. It must be able to do more than just process. It must be able to make good decisions based on imperfect data and related experiences. It must also be able to acquire knowledge and integrate it with previously acquired knowledge. Intelligence isn't something that be manufactured with brute force computation. No, intelligence is what reduces the need for brute force computation.</span></h4><span style="font-size: small;"></span>Clayton Longhttp://www.blogger.com/profile/00295047809317392242noreply@blogger.com0tag:blogger.com,1999:blog-7170560926644600862.post-74530382464056285612011-08-11T22:01:00.006-04:002011-08-23T20:04:04.153-04:00Amazon EC2: Moving to the Cloud<span style="font-size: x-small;">page <b>1</b> ยท <a href="http://www.claytonstechnobabble.com/2011/08/amazon-ec2-moving-to-cloud-2.html">2</a></span><br />
<br />
<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9kSspV0Ha5cH9whkt4IN_I-wyLsYRLx6piyMBx2LY2U80ITrzPKnjtcZK6hu2gNLW7AACzRrQqPvulL6wHCx1iDlSHMZd2gYOOkSUPbSM6ZQesZW16sUDIxgqvqZ7MOqvrN6VWlzH2y_Q/s1600/AWS_LOGO_RGB.png" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="100" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9kSspV0Ha5cH9whkt4IN_I-wyLsYRLx6piyMBx2LY2U80ITrzPKnjtcZK6hu2gNLW7AACzRrQqPvulL6wHCx1iDlSHMZd2gYOOkSUPbSM6ZQesZW16sUDIxgqvqZ7MOqvrN6VWlzH2y_Q/s200/AWS_LOGO_RGB.png" width="200" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><span style="font-size: xx-small;">Amazon Web Services Logo</span></td></tr>
</tbody></table>Amazon EC2 is arguably the most robust cloud computing server platform available. You can start up a cluster of servers tailored to meet your needs in under a couple of minutes and then discard them just as quickly. This post walks you through how to get started with Amazon EC2.<br />
<br />
Amazon EC2 is Amazon's virtual server cloud offering. When you start up an EC2 server, you are really just starting up a virtual <br />
<a name='more'></a>server complete with the operating system, features and hardware specs that you choose. To start using Amazon's EC2 service, you must first create an account and give them your credit card. That's right, this stuff isn't free (although sometimes they do have intro specials for micro instances and the like). But the good news is that you only pay for what you use when you're using it. And you can start and stop EC2 instances at the drop of a hat. For EC2 pricing info, go to <a href="http://aws.amazon.com/ec2/pricing/">http://aws.amazon.com/ec2/pricing/</a><br />
<br />
If you go to <a href="http://aws.amazon.com/">http://aws.amazon.com/</a> then there is a link at the top to Create an AWS Account. Click on that link, setup an account and let the fun begin. Select the AWS Management Console link to see a view of all your active services in your browser. From here you can navigate to S3 storage, EC2 and other services. For our purposes, we only care about EC2.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvsmXZHhmTjVxboGShYmCoEgNnfkaITC2GUwIN0fbtFLcuitLx92GV8DAv14rDVuErB9_bLdjLfCrbnALK9I8C5VR6jSZIN87PUkop-36n9K-656PIzb7inrYP1rJ9bansFBIEihtn7Sz6/s1600/EC2console.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="284" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvsmXZHhmTjVxboGShYmCoEgNnfkaITC2GUwIN0fbtFLcuitLx92GV8DAv14rDVuErB9_bLdjLfCrbnALK9I8C5VR6jSZIN87PUkop-36n9K-656PIzb7inrYP1rJ9bansFBIEihtn7Sz6/s640/EC2console.png" width="640" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><span style="font-size: xx-small;">AWS Management Console: EC2 Tab</span></td></tr>
</tbody></table><br />
<br />
If you click on the EC2 tab then you can see all the EC2 instances you currently have running (if you had any running) and you also get the option to create a new EC2 instance. We'll get into creating an EC2 instance in a bit. But first we need to do a little setup work.<br />
<br />
Before you can login to any EC2 instance, you need to create some access credentials. To do this, click the link to go into your AWS Account and select Security Credentials. On the Security Credentials Screen, create an Access Key, a X.509 Certificate and an EC2 Key Pair. You will need them all eventually. So, you might as well create them all now.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0Uz-nDZko007FZXl0EmMNODv2CgfGBumDZAz3HmXLlbrMHvBdsfDukTM6gGe0luPjKwzw6hCqJ5Ta6PQqzhml2HiXmulnn9edR84cKW7HJ_hlv8fekfY5aAlSvr284zd3CCbyqK9bthoe/s1600/accesscred.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="181" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0Uz-nDZko007FZXl0EmMNODv2CgfGBumDZAz3HmXLlbrMHvBdsfDukTM6gGe0luPjKwzw6hCqJ5Ta6PQqzhml2HiXmulnn9edR84cKW7HJ_hlv8fekfY5aAlSvr284zd3CCbyqK9bthoe/s640/accesscred.png" width="640" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><span style="font-size: xx-small;">AWS Account Access Credentials</span></td></tr>
</tbody></table><br />
When you create your EC2 Key Pair, download the private key onto your machine and put it somewhere safe where you will remember it. If you lose it, you can't get it again. You will just have to create another one and hope you don't lose it again ;)<br />
<br />
I am working on my Linux machine, so I am going to copy my .pem file to my .ssh directory. You don't have to copy it there. I just do it because I am going to use the .pem file to SSH into my EC2 server, so I figure why not keep it with my other SSH keys.<br />
<br />
<a href="http://www.claytonstechnobabble.com/2011/08/amazon-ec2-moving-to-cloud-2.html"><span style="font-size: x-small;">next page>></span></a>Clayton Longhttp://www.blogger.com/profile/00295047809317392242noreply@blogger.com0tag:blogger.com,1999:blog-7170560926644600862.post-14522958933247373612011-08-11T22:00:00.008-04:002011-08-23T20:04:28.889-04:00Amazon EC2: Moving to the Cloud (2)<span style="font-size: large;"><span style="font-size: x-small;">page <a href="http://www.claytonstechnobabble.com/2011/08/amazon-ec2-moving-to-cloud.html">1</a> ยท <b>2</b> </span><b><br />
</b></span><br />
<span style="font-size: large;"><b>Create an EC2 Instance </b></span><br />
Now, before I actually ssh into an EC2 instance, it would stand to reason that I should have an EC2 instance currently running. To start an EC2 instance, click on the EC2 tab in the AWS Management Console and then click the Launch Instance button. Here you can select the type of instance to run. You can select either a Quick Start instance or a Community Instance. So, to make this easy I am going to select a Quick Start instance: Basic 32-bit Amazon Linux/Micro<br />
<br />
<a name='more'></a><br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiM8Sov52X1Ivg1K6Q4hSmwMCLFM1F5uWeN2YqcXSrGtGIynHd64ttXDFWny9x0QHc0Lf_j6dbdia8lZVRKsGm6TydHoJ2EHvHW1_YfPaXNMiyJoubTMqS4f3us67MQoXtrqM0JavJBylfI/s1600/createec2inst.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="296" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiM8Sov52X1Ivg1K6Q4hSmwMCLFM1F5uWeN2YqcXSrGtGIynHd64ttXDFWny9x0QHc0Lf_j6dbdia8lZVRKsGm6TydHoJ2EHvHW1_YfPaXNMiyJoubTMqS4f3us67MQoXtrqM0JavJBylfI/s640/createec2inst.png" width="640" /></a></div><br />
<i><span style="font-size: x-small;">*When selecting an instance, you are charged for what configuration you choose. Windows costs more than Linux, 64-bit instances typically cost more than 32-bit instances, etc. So, only chose what you need.</span><span style="font-size: x-small;"> Once again, Amazon's EC2 pricing information can be found at <a href="http://www.blogger.com/goog_2034062060">http://aws.amazon.com/ec2/pricing/</a></span></i><a href="http://aws.amazon.com/ec2/pricing/"> </a><br />
<br />
I accept all of the defaults for my EC2 instance and I select the name of the key pair that I created earlier. This is very important because your key pair is how you are going to SSH into that instance once it is started.<br />
<br />
When your EC2 instance is started, click on it to highlight your instance in the AWS Management Console. In the frame at the bottom you will see a lot of properties. The property labeled Public DNS is that address that you will use to SSH into your new EC2 instance.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiKKOWrL9ZcOJnGLX6Js5L1J0EmRTncecVMiZbW2-Z4MS7lVUvao4Xp-_i1KKPjBAuONpFJFgPJ53iCqjz4hLfe38r8u-m_B_A_RPqDpVrf3djLJQ9gHY91b0z2UHSc5-vMQcuPEQP7-K-0/s1600/awsec2props.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="454" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiKKOWrL9ZcOJnGLX6Js5L1J0EmRTncecVMiZbW2-Z4MS7lVUvao4Xp-_i1KKPjBAuONpFJFgPJ53iCqjz4hLfe38r8u-m_B_A_RPqDpVrf3djLJQ9gHY91b0z2UHSc5-vMQcuPEQP7-K-0/s640/awsec2props.png" width="640" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><span style="font-size: xx-small;">Amazon EC2 Properties</span></td></tr>
</tbody></table><br />
<br />
<span style="font-size: large;"><b>Log Into Your EC2 Instance</b></span><br />
Now, we are ready to log into our Amazon EC2 instance. Just open up a command prompt and type <br />
<i>ssh -i ~/.ssh/yourAwsKeyPair.pem ec2-user@AwsEc2PublicDns</i><br />
where yourAwsKeyPair.pem is your private key that you downloaded from AWS and AwsEc2PublicDns is the public DNS address of your EC2 instance. See the example below.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQz2vXiJhN2KnYj9JmPOXTaYMyXjcgz6W2OjdQLs6sr0EB46z3DgY_xJlhj_Bw3ad4vQjZEVXs-EY0re2loK-R-NJcJMq0d-aQAT5yC_39TTzOC0X_E6opkqJ9gFBkxxX280GTv94SUYlC/s1600/awslogin.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="104" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQz2vXiJhN2KnYj9JmPOXTaYMyXjcgz6W2OjdQLs6sr0EB46z3DgY_xJlhj_Bw3ad4vQjZEVXs-EY0re2loK-R-NJcJMq0d-aQAT5yC_39TTzOC0X_E6opkqJ9gFBkxxX280GTv94SUYlC/s640/awslogin.png" width="640" /></a></div><br />
<span style="font-size: x-small;"><i>If you have Windows and you use Putty, follow this link for instructions on how to connect: <a href="http://docs.amazonwebservices.com/AmazonEC2/gsg/2007-01-19/putty.html">http://docs.amazonwebservices.com/AmazonEC2/gsg/2007-01-19/putty.html </a></i></span><br />
<br />
Now that you are logged into AWS, you can do pretty much whatever you want. Some instances even let you login as root instead of ec2-user. However, any changes that you make to your EC2 instance are lost when you shutdown your instance... unless of course you use Elastic Block Storage (EBS). But that is a post for another day.<br />
<br />
<a href="http://www.claytonstechnobabble.com/2011/08/amazon-ec2-moving-to-cloud.html"><span style="font-size: x-small;"><<previous</span></a>Clayton Longhttp://www.blogger.com/profile/00295047809317392242noreply@blogger.com0tag:blogger.com,1999:blog-7170560926644600862.post-8478274053605912322011-08-10T22:00:00.003-04:002011-08-23T20:05:04.389-04:00Linux Partitions Explained<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqE2UjJD1dIYnJT7RMX6K3KbwBbhTddcomXdfEfXgT71_sxW7R4ndrUXCcYP5mO2Zgi0mfbYPf3t9AwUbrZQ9du9K5lO6r7XrbrMMqQpXViNENU7qSzB05a7GqWq7ZUW8TLRfF3wsZSU3G/s1600/tux.jpg" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="148" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqE2UjJD1dIYnJT7RMX6K3KbwBbhTddcomXdfEfXgT71_sxW7R4ndrUXCcYP5mO2Zgi0mfbYPf3t9AwUbrZQ9du9K5lO6r7XrbrMMqQpXViNENU7qSzB05a7GqWq7ZUW8TLRfF3wsZSU3G/s200/tux.jpg" width="200" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><span style="font-size: xx-small;">Linux Penguin</span></td></tr>
</tbody></table>Common Linux file partitions can be confusing, especially if you're used to Windows. In Windows, it's not uncommon to have a single C volume where all of your files are kept in folders under the root of C. In Linux, you have /usr, /opt, /bin, /etc, and other paths. Some of these paths represent directories and some may represent partitions. Once explained, Linux partitions make a lot of sense. This post is all about common Linux partitions and directories, why we have them and what they mean.<br />
<br />
Unlike Windows, in Linux there are multiple partitions mounted to <br />
<a name='more'></a>directories under the root /. Linux partitions and device mounts look just like directories, and that is done on purpose. So, instead of having D or E drives you have things like /media/CDRom, which in my opinion makes a lot more sense than E drive. Even shared directories on a network look like they are just part of the normal directory structure.<br />
<br />
On a home computer install, you may or may not have multiple partitions off of the root /. However, it is very common to have multiple partitions off of the root / on a Linux server in order to isolate those partitions from each other and from the root /. For example, you wouldn't want a ton of logs for some application to eat up all of the disk space and affect the space available in users' home directories. Creating partitions guards against that kind of thing. And even if you have a home Linux install with only a single root / partition, you will still have directories that exist which are named after common Linux partitions.<br />
<br />
Some common Linux partitions are as follows.<br />
<br />
/home - user account directories<br />
/var - FTP, web server, mail, etc.<br />
/tmp - temporary files (e.g. when you open a file in a text editor like vi)<br />
/boot - boot partition, you know, for booting the OS<br />
/usr - applications and utilities<br />
<br />
Some common Linux directories are as follows.<br />
<br />
/etc - configuration files<br />
/bin & /usr/bin - common executables<br />
/sbin & /usr/sbin - admin executables<br />
/opt - third party applications<br />
/var/log - various system logs<br />
<br />
<span style="font-size: large;"><b>The Bottom Line</b></span><br />
Linux partitions help guard against the possibility of problems, such as one partition bleeding over into another. They allow administrators to make certain assurances about the system (e.g. users can't fill up the root / partition). On a home computer, you might not need, want or care about several different partitions. But you should at least know about them and what they are used for.Clayton Longhttp://www.blogger.com/profile/00295047809317392242noreply@blogger.com1tag:blogger.com,1999:blog-7170560926644600862.post-47737635632004904092011-08-09T22:00:00.018-04:002011-08-23T20:05:25.623-04:00Interfaces: The First Step Toward Maintainable Software<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1-mbguQZJPo9KvEJyoQQ-8RIMgWnRzOdoerMxNoiC8sOXS-f0501W_SIrD1sB-VS381XOMVNsisOddAzQS6ZuIPYfWsNTLCx26KAsehUK0sfWFVAi4mb7lrfXOX5jX_Mb9PRLcU7DWOCI/s1600/cohdra_100_2045.JPG" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="149" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1-mbguQZJPo9KvEJyoQQ-8RIMgWnRzOdoerMxNoiC8sOXS-f0501W_SIrD1sB-VS381XOMVNsisOddAzQS6ZuIPYfWsNTLCx26KAsehUK0sfWFVAi4mb7lrfXOX5jX_Mb9PRLcU7DWOCI/s200/cohdra_100_2045.JPG" width="200" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><span style="font-size: xx-small;">Design Tools </span></td></tr>
</tbody></table>Not too long ago I had a junior developer ask me, "What do you use interfaces for?" The answer of course is that there are many reasons to use interfaces. Interfaces specify contracts that classes and their methods must adhere to. Put simply, an interface describes a family of objects that are interchangeable.<br />
<br />
To demonstrate this concept, let's look at an interface commonly used in Java: java.util.Collection<e>. Lists, queues, sets, etc. in Java implement the Collection interface or some extension of that interface. The interface Collection therefore describes the family </e><br />
<a name='more'></a>of objects that are instantiated from some class that implements either the Collection interface or an extension of that interface.<br />
<br />
Take, for example, the following method:<br />
<br />
<div style="font-family: "Courier New",Courier,monospace;">public void printCollection(Collection<String><string> c) {</string></div><div style="font-family: "Courier New",Courier,monospace;"> java.util.Iterator<string> iterator<String> = c.iterator();</string></div><div style="font-family: "Courier New",Courier,monospace;"> while (iterator.hasNext()) {</div><div style="font-family: "Courier New",Courier,monospace;"> System.out.println(iterator.next());</div><div style="font-family: "Courier New",Courier,monospace;"> }</div><div style="font-family: "Courier New",Courier,monospace;">}</div><br />
Let's assume that the above method is part of a class Printer which has a default constructor. Let's further assume that objects a, b, and c exist of class java.util.ArrayList<string>, java.util.HashSet<string>, and java.util.Stack<string>, respectively. The following code will then execute successfully.</string></string></string><br />
<br />
<div style="font-family: "Courier New",Courier,monospace;">Printer p = new Printer(); </div><div style="font-family: "Courier New",Courier,monospace;">p.printCollection(a);</div><div style="font-family: "Courier New",Courier,monospace;">p.printCollection(b);</div><div style="font-family: "Courier New",Courier,monospace;">p.printCollection(c);</div><br />
How do I know the above code will execute successfully? Because java.util.ArrayList<e>, java.util.HashSet<e>, and java.util.Stack<e> all implement the Collection<e> interface. So, even though the method printCollection required the type Collection as an argument, objects defined by of those three classes will work in it's place because they each implement Collection. Therefore, their contract is defined by Collection and guaranteed to have the same method signatures as Collection.</e></e></e></e><br />
<br />
The ability for objects a, b and c to change their form so that they can be used as objects of the type Collection is called polymorphism, which is a concept fundamental to object oriented programming.<br />
<br />
<span style="font-size: large;"><b>How Is This Useful?</b></span><br />
Interfaces allow us to build flexible software because we don't actually have to know the implementation of a class to accept a type as an argument. And because specifying an argument creates a dependency, we can create dependencies on contracts (interfaces) instead of implementations (classes). This allows any class that adheres to the contract defined by the interface to b interchanged with any other class adhering to that same interface. And that is how loosely coupled software and more maintainable software begins.<br />
<span style="background-color: #cccccc; color: black; font-size: xx-small;"><span class="status action" style="background-color: white; font-family: inherit;"><br />
</span></span><span style="color: black;"> </span><br />
<br />
<div style="text-align: left;"><span style="background-color: #cccccc; font-size: xx-small;"><span class="status action" style="background-color: white; font-family: inherit;"><br />
</span> </span></div>Clayton Longhttp://www.blogger.com/profile/00295047809317392242noreply@blogger.com0tag:blogger.com,1999:blog-7170560926644600862.post-69896969986492785082011-08-08T22:54:00.007-04:002011-08-23T20:05:46.380-04:00How Does Google Do It? Meet the Google File System<span style="font-size: x-small;">page <b>1</b> ยท <a href="http://www.claytonstechnobabble.com/2011/08/how-does-google-do-it-meet-google-file_08.html">2</a></span><br />
<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjgqCDdK17Xo47jcsUIrkNUKZsr_tEEM1HcfzDVnmOj0bOMn3pxc3oJqHNzlpQXJ4LN2wo7r52lXkJ2V3AoLdu_JWJu0vKTg8xuzdFumRG3QL1JQNKjDpMrYzKQA6AWh4rX-HCvUBMabJTu/s1600/google.jpg" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="79" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjgqCDdK17Xo47jcsUIrkNUKZsr_tEEM1HcfzDVnmOj0bOMn3pxc3oJqHNzlpQXJ4LN2wo7r52lXkJ2V3AoLdu_JWJu0vKTg8xuzdFumRG3QL1JQNKjDpMrYzKQA6AWh4rX-HCvUBMabJTu/s200/google.jpg" width="200" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><span style="font-size: xx-small;">Google Logo</span></td></tr>
</tbody></table>Google does a lot of things a little different from other software companies. But these differences are also part of the edge that allows them to effectively compete with companies like Microsoft and Apple. They are all part of Google's special sauce and this post looks at one ingredient of that sauce, known as the Google File System (GFS).<br />
<br />
<br />
<a name='more'></a><br />
<br />
The Google File System (<a href="http://labs.google.com/papers/gfs-sosp2003.pdf">labs.google.com/papers/gfs-sosp2003.pdf</a>) is, like the name implies, a file system. And what makes it different from the file systems that are common on our desktops and laptops is that it is optimized, well, for Google. As users, we do a lot of different things with our computers. Sometimes we surf the Internet, sometimes we edit pictures, sometimes we edit music, sometimes we watch movies, etc. And all of us do these and other things at different times and in different combination of ways. Basically, we need computers, operating systems and supporting subsystems (e.g. file systems) that are general purpose. This is not so for Google. Google uses their computers and their data in very specific ways and for those reasons they created a file system that suits them better than any general purpose file system likely would, or could.<br />
<br />
<b><span style="font-size: large;">Why Create a New File System?</span></b><br />
<span style="font-size: small;">It is not uncommon for large organizations to rely on specialized hardware to help ensure uptime, faster processing, etc. Google takes a different approach by using predominantly commodity<span style="font-size: large;"><span style="font-size: small;"> hardware and lots of it. The problem with commodity hardware (not unlike a typical desktop) is that it is not reliable. Let me clarify that statement. An individual desktop computer may almost never fail, but if you had thousands of desktops then the likelihood of any one of them failing at any point in time might be pretty good.</span></span></span><br />
<br />
<span style="font-size: small;"><span style="font-size: large;"><span style="font-size: small;">This idea is something referred Mean Time to Failure (MTTF). MTTF is the average amount of time between failures. So, say that you have a desktop computer that has been running for 5 years before ever having an interruption in service (e.g. blue screen, automatic reboot, power surge, etc.) then we might be inclined to say that it has an MTTF of 5 years. Now, let's say that we have 1,000 of those desktops that makeup some computer system. And in order for that system to deliver the required services then 100% of those computers must be functioning. Our MTTF for that system is 5years/1000, or a little under two days. That means on average for such a system composed of 1,000 5year computers, each with a MTTF of 5years, we should expect a failure more than once every 2 days.</span></span></span><br />
<br />
<span style="font-size: small;"><span style="font-size: large;"><span style="font-size: small;">In order to deliver services like search, Google has a system of computers that is actually composed of well over 1000 computers, mostly composed of commodity hardware. Needless to say, one or more hardware failures are the norm not the exception at Google. Google also relies heavily on data, so an outage of any single computer in say, their computer system that supports search, could not mean a data outage or a service outage. GFS was created to guard against this kind of problem.</span></span></span><br />
<br />
<span style="font-size: small;"><span style="font-size: large;"><span style="font-size: small;">GFS was also created to work with really, really big files. And these aren't just any kind of files, they are the kind of files that Google needs to work with. Allow me to explain. The files that I use on my computer aren't typically larger than a gigabyte. Sure, I have movies and some virtual drives, etc. that can get pretty large. But most of my files are in the megabyte range. I also do a lot of things with my files. I append to them, I update them and I delete them. None of these actions are uncommon for me. But for Google they would be. Google adds a lot more data than they overwrite or delete. In fact, overwriting almost never happens for them. So, the size of the files they use and the way they use those files are very different than most general purpose computing. Therefore, it stands to reason that Google might find some benefit from having a file system that is optimized to work the way they work.</span></span></span><br />
<br />
<span style="font-size: small;"><span style="font-size: large;"><span style="font-size: small;"><span style="font-size: x-small;"><i>Continue to the next page to read how it works... </i></span></span></span></span><br />
<br />
<span style="font-size: small;"><a href="http://www.claytonstechnobabble.com/2011/08/how-does-google-do-it-meet-google-file_08.html"><span style="font-size: x-small;">next page>> </span></a><b><br />
</b></span>Clayton Longhttp://www.blogger.com/profile/00295047809317392242noreply@blogger.com0tag:blogger.com,1999:blog-7170560926644600862.post-42617392594830116222011-08-08T22:52:00.007-04:002011-08-23T20:05:59.637-04:00How Does Google Do It? Meet the Google File System (2)<span style="font-size: x-small;">page <a href="http://www.claytonstechnobabble.com/2011/08/how-does-google-do-it-meet-google-file.html">1</a> ยท <b>2</b></span><br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNTX4cUJJfslQbp1O-gNePKwDiHVi6gve1hhEoMKUuvcb9Pmc2r8ZFh_4znLj6DT9hnfjWJUQkKR9eHCSeTcRwooN6SIQu3889OcnTvm9AxSrKLm62bFZLt6z1m_nBO9Oo3uYGd0AoqSq4/s1600/googlelabs.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="150" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNTX4cUJJfslQbp1O-gNePKwDiHVi6gve1hhEoMKUuvcb9Pmc2r8ZFh_4znLj6DT9hnfjWJUQkKR9eHCSeTcRwooN6SIQu3889OcnTvm9AxSrKLm62bFZLt6z1m_nBO9Oo3uYGd0AoqSq4/s200/googlelabs.png" width="200" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><span style="font-size: xx-small;">Google Labs Logo</span></td></tr>
</tbody></table><span style="font-size: xx-small;"><span style="font-size: small;"><span style="font-size: large;"><b>How It Works</b></span></span></span><br />
<span style="font-size: xx-small;"><span style="font-size: small;"><span style="font-size: large;"><span style="font-size: small;">Unlike a general purpose file system, GFS is meant to work across a cluster instead of a single machine. The basic architecture of a GFS cluster consists of a single <i>master</i> server and multiple <i>chunkservers</i>. The master node is responsible for maintaining all of the file system metadata: access permissions, mappings from files to chunks, locations of chunks in the cluster, etc. Each chunkserver is responsible for storing chunks as files on a local disks. And chunks are fixed size units of storage that make up files in the GFS; they are often replicated across multiple chunkservers </span></span></span></span><br />
<a name='more'></a><span style="font-size: xx-small;"><span style="font-size: small;"><span style="font-size: large;"><span style="font-size: small;">for redundancy.</span></span></span></span><br />
<span style="font-size: xx-small;"><span style="font-size: small;"><span style="font-size: large;"><span style="font-size: small;"><br />
</span></span></span></span><br />
<span style="font-size: xx-small;"><span style="font-size: small;"><span style="font-size: large;"><span style="font-size: small;">As you might have guessed, chunks are large - 64MB. Compare that with a typical 4KB block size for ext3 and you can see that chunks are really big. When you're working with large files like Google does then large chunks allow you to go to fewer locations for related data. Concentrating more data in a single place also reduces network overhead across chunkservers and allows clients to take advantage of a persistent TCP connection more often instead of having to constantly open and close connections when reading files. Put simply, the large chunks mean fewer places to go to read a file.</span></span></span></span><br />
<span style="font-size: xx-small;"><span style="font-size: small;"><span style="font-size: large;"><span style="font-size: small;"><br />
</span></span></span></span><br />
<span style="font-size: xx-small;"><span style="font-size: small;"><span style="font-size: large;"><span style="font-size: small;">Aside from having large chunks, a lot of effort was put into GFS to ensure availability and reliability of data. For instance, chunks are replicated not only across servers, but also across racks. And priority replication is given to chunks that are determined to be poorly replicated in the cluster. </span></span></span></span><br />
<br />
<span style="font-size: xx-small;"><span style="font-size: small;"><span style="font-size: large;"><span style="font-size: small;">Master servers determine the status of chunkservers in the cluster through regular heartbeats. And should a master server fail, it is quickly recoverable from replicated checkpoints and an operational log. Therefore, at any time either a master server or a chunkserver can fail and be quickly recovered.</span></span></span></span><br />
<span style="font-size: xx-small;"><span style="font-size: small;"><span style="font-size: large;"><span style="font-size: small;"><br />
</span></span></span></span><br />
<span style="font-size: xx-small;"><span style="font-size: small;"><span style="font-size: large;"><span style="font-size: small;"><b><span style="font-size: large;">Bottom Line</span></b></span></span></span></span><br />
<span style="font-size: xx-small;"><span style="font-size: small;"><span style="font-size: large;"><span style="font-size: small;"><span style="font-size: large;"><span style="font-size: small;">Google created a filesystem (GFS) that assumes very large files in a large clustered environment where server outages are not only expected, they are common. GFS was born out of a need that Google had to optimize their own applications and ensure the reliability of their data. And to think all of this is just part of what makes my search results pop up when I click the <i>Search</i> button on Google.com.</span></span></span></span></span></span><br />
<span style="font-size: xx-small;"><span style="font-size: xx-small;"><span style="font-size: small;"><span style="font-size: large;"><span style="font-size: small;"></span></span></span></span></span><br />
<span style="font-size: xx-small;"><span style="font-size: xx-small;"><span style="font-size: small;"><span style="font-size: large;"><span style="font-size: small;"><br />
<a href="http://www.claytonstechnobabble.com/2011/08/how-does-google-do-it-meet-google-file.html"><span style="font-size: x-small;"><<previous</span></a></span><b> </b></span></span></span></span>Clayton Longhttp://www.blogger.com/profile/00295047809317392242noreply@blogger.com0tag:blogger.com,1999:blog-7170560926644600862.post-71274254440767536392011-08-07T22:00:00.002-04:002011-08-23T20:06:25.375-04:00Cool Gadget: Motorola S10-HD<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg556nQSdeJMHZJrdzRm_cEFxAw4nxhhSvMxllQ-K5BlNo6-VS9M-LZG77rltXG_mSYvDzVGo6ZhW9D5GxCYc540iqJoVg1_EOnJ6RzRDv77CrEr3JPvcBoBjasaC5MhFQQ5J4otwP956dx/s1600/MotoS10HD.jpg" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="181" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg556nQSdeJMHZJrdzRm_cEFxAw4nxhhSvMxllQ-K5BlNo6-VS9M-LZG77rltXG_mSYvDzVGo6ZhW9D5GxCYc540iqJoVg1_EOnJ6RzRDv77CrEr3JPvcBoBjasaC5MhFQQ5J4otwP956dx/s200/MotoS10HD.jpg" width="200" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><span style="font-size: xx-small;">Motorola S10-HD</span></td></tr>
</tbody></table>I don't, or should I say haven't, really done a ton of consumer gadget reviews. But I just couldn't pass up talking about this cool little device. This post is all about the Motorola S10-HD. <br />
<br />
When the Motorola S10-HD came out, I stayed away because of the reviews. It seemed almost unanimous that the S9-HD was better liked than the new S10-HD. But after some time, I decided to at least try out the S10-HD. And man, was I pleasantly surprised.<br />
<br />
<span style="font-size: large;"><b>What is It?</b></span><br />
<br />
<a name='more'></a>The S10-HD is a Bluetooth stereo headset that also has an embedded microphone which can be used for making voice calls. In my opinion, it is probably the most comfortable Bluetooth headset on the market and it has no shortage of style either. Like it's predecessor, the S9-HD, the S10-HD hangs over the ear and behind the base of the head. Also like the S9-HD, the S10-HD is targeted for active use (jogging, walking, gym, etc.) and it's design reflects that.<br />
<br />
<b><span style="font-size: large;">How it Works</span></b><br />
Turn on the S10-HD by holding the little round button under the base of the headset until a blue light comes on. Initially, the S10-HD will start in pairing mode. Here, it can be easily paired with most Bluetooth capable devices that you might want to use a headset with. I successfully paired it with my iPhone, my HP laptop, my MacBook Pro and my iPad. I didn't have to enter a pairing code for any of them, but if you are prompted to enter a passcode then enter 0000.<br />
<br />
With the S10-HD, I was able to both listen to music and make calls with my iPhone. There are 3 buttons on each side of the S10-HD, positioned on the side of your face near your ear when you are wearing them. On the right, the buttons are: (from top to bottom) next song, play/pause, previous song. On the left, the buttons are: (from top to bottom) volume up, call/hangup/voice, command volume down.<br />
<br />
<span style="font-size: large;"><b>Comfort</b></span><br />
One of the biggest differences I noticed between the S9-HD and the S10-HD is comfort; meaning that the S10-HD has a lot more of it. The S10-HD seems to hang a little lower on the head and it also seems to be more flexible than the S9-HD. A common gripe about the S9-HD is that it can become really uncomfortable really quick if you are sitting in a chair with a head rest. The S10-HD improves on that a little, but it is still not something I would wear reclining in my Lazy Boy.<br />
<br />
However, the S10-HD wasn't meant for couch potatoes. It was meant for more active people. And if you are going to the gym, walking the dog, or jogging then the S10-HD is incredibly comfortable.<br />
<br />
<b><span style="font-size: large;">Sound Quality </span></b><br />
The sound quality of the S10-HD headphones are not going to blow you away. Music sounds good, not great. And they are not 100% noise canceling. However, the lack of noise canceling is by design. Remember, these headphones are meant for someone who is active and possibly outside. Motorola figured if you are jogging or walking around streets outside then you might want to hear something other than your music so you don't get run over by car or get attacked by a rapidly approaching dog.<br />
<br />
Now, back to the sound quality. I honestly did not feel that the sound quality was all that much worse than the S9-HD headphones. Neither the S10-HD nor the S9-HD blow me away with their stomach pounding bass or their glass breaking treble. But both the S9-HD and the S10-HD are pleasant to listen to and they seem to do a great job where I need them (mostly at the gym). There is, however, one big difference that stands out between the S9-HD and the S10-HD in terms of listening enjoyment. The S10-HD does not seem to lose Bluetooth connection with my iPhone walking around outside like my S9-HD sometimes does.<br />
<br />
<b><span style="font-size: large;">Call Quality</span></b><br />
Call quality with the S10-HD, like the S9-HD, is very good. In fact, it is much better than you might expect for a headset with a microphone embedded in the right ear. Calls can be answered or hung-up by using the center button on the left side and clicking that same button when idle or when not listening to music activates your phone's voice commands.<br />
<br />
<span style="font-size: large;"><b>Bottom Line</b></span><br />
I really think the S10-HD headphones are great Bluetooth headphones, especially for the money ($80.00). They seem very comfortable and they have just about every feature that I could want in active-wear headphones. If you are very picky about sound quality and you want amazing sounding headphones then the S10-HD is not for you. But if you are like me and you want to cut the headphone chord from your iPhone while walking, biking or training at the gym then the S10-HD is what you want.Clayton Longhttp://www.blogger.com/profile/00295047809317392242noreply@blogger.com0tag:blogger.com,1999:blog-7170560926644600862.post-39935717408254109772011-08-06T22:00:00.003-04:002011-08-23T20:06:40.185-04:00Restricting Access to Home Networks with DNS<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLe8Zp2zSOTLlUc1AJIagvAqoJdrz3NUYe791qyJKkBIaBphOcorCCCRN-ysqyG_Yi6wIgc6lR9CM8edekbklYlggQCbRrtLWPwevcuQ_rwurUkoVExLl1YVPGpSd2qe8xUflwnMlK6N9Q/s1600/114377146734.jpg" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="150" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLe8Zp2zSOTLlUc1AJIagvAqoJdrz3NUYe791qyJKkBIaBphOcorCCCRN-ysqyG_Yi6wIgc6lR9CM8edekbklYlggQCbRrtLWPwevcuQ_rwurUkoVExLl1YVPGpSd2qe8xUflwnMlK6N9Q/s200/114377146734.jpg" width="200" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><span style="font-size: xx-small;">Home Router</span></td></tr>
</tbody></table>If you want to ensure that only acceptable websites are being browsed on your network then you may want to consider restricting sites using either your own DNS server or OpenDNS.<br />
<br />
Before I go any further, allow me to explain the concept of DNS. DNS stands for Domain Name System and it is basically what takes a name like google.com or facebook.com and translates it into an address like xxx.xxx.xxx.xxx so that a computer connected to the Internet can find websites and other things. The specifics of how DNS works in detail are beyond the scope of this post. But <br />
<a name='more'></a>essentially, DNS determines what you can find on the Internet.<br />
<br />
So, given that DNS is how you find things on the Internet, if you control your DNS then you control what you or other people on your network can find. If you are a technology enthusiast then you might want to setup your own DNS server. But if you want a simpler solution then consider using OpenDNS (<a href="http://www.opendns.com/">http://www.opendns.com</a>).<br />
<br />
OpenDNS is a DNS provider that allows you to you create custom DNS settings based on how much security you want to enforce on your network.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglZe0qXaYZEwF0E1nPCm78z6idqvqnZ3xN4p7RDcok6O_3PBbJx66i36D6V4JVSf9xg-gpA5TxTRyH6qulhMFZC8AyM7qRmjMIAAyp8KjHYHIH-yAzikp60lVMo8HIVeEyFxiWSaJx79Oq/s1600/opendns_config.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglZe0qXaYZEwF0E1nPCm78z6idqvqnZ3xN4p7RDcok6O_3PBbJx66i36D6V4JVSf9xg-gpA5TxTRyH6qulhMFZC8AyM7qRmjMIAAyp8KjHYHIH-yAzikp60lVMo8HIVeEyFxiWSaJx79Oq/s1600/opendns_config.png" /></a></div><br />
To start using OpenDNS, create an account on their site, specify a network (Home, for example). And set up your router. I have a Linksys router, so my configuration is as shown below (use the exact IPs that I have entered below for the DNS settings; they are the same as those listed on OpenDNS).<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgp7Jmwpq4CMcaKfkmiK4xhuDDABBGBN75-RL38iJOOHhjWbE-asEuqePbUBvAw4ndLR_vyXMM7gZPYhNxbqJg1lH9QmNSnelwcD1RvjA-hsJ7al3dt1heauX12hHoX8c2BTYqj6-1B6AFb/s1600/linksys_opendns.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgp7Jmwpq4CMcaKfkmiK4xhuDDABBGBN75-RL38iJOOHhjWbE-asEuqePbUBvAw4ndLR_vyXMM7gZPYhNxbqJg1lH9QmNSnelwcD1RvjA-hsJ7al3dt1heauX12hHoX8c2BTYqj6-1B6AFb/s1600/linksys_opendns.png" /></a></div><br />
Notice that my router is configured for DHCP, that means I get a dynamic IP address. OpenDNS matches up your account settings with your IP address, so if my IP address changes then OpenDNS will not know how to match up my settings. Fortunately, OpenDNS has thought of that too and they allow you to download a client that communicates IP address updates from a computer in your network to OpenDNS. And the client is available on Mac, Windows, Linux and UNIX systems.<br />
<br />
Once you have the client installed and the DNS settings on your home router are configured like the settings above then you are using OpenDNS. To configure the sites available in your home network, you can select from 3 pre-configured settings (High, Medium or Low), select no filter or create a custom filter (see the picture above). You can even block individual websites that my not be included in the specific setting that you selected.<br />
<br />
Another cool feature of OpenDNS is that you can get stats on the websites that people on your network are attempting browse. This feature is disabled by default, but it can be turned on by going into settings, selecting Stats and Logs and then clicking Enable Stats and Logs. Also, if you really want to have fun with it, you can create custom messages that come up in the browser of anyone who tries to access a blocked site. In settings, select Customization and add your own custom blocked message.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjFFPxMN15_FllJUpWbN6re_d7OylD9WIJb-KcuJp_v8M8l68fR-4UrbOgtAFp_0PF4m49IuuMv9XPrkai8x59LHqi187obyw2eRU5jv0V33XDtAYK5yKhnXnp39e_UE3OEnKV6IZ7i-IOa/s1600/blockedmsg.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjFFPxMN15_FllJUpWbN6re_d7OylD9WIJb-KcuJp_v8M8l68fR-4UrbOgtAFp_0PF4m49IuuMv9XPrkai8x59LHqi187obyw2eRU5jv0V33XDtAYK5yKhnXnp39e_UE3OEnKV6IZ7i-IOa/s1600/blockedmsg.png" /></a></div><br />
You can have one network added to OpenDNS for free. There is a charge for additional networks and for more advanced features. But for most people, the basic feature set and the single network restriction will not be major constraints.<br />
<br />
Finally, there is one thing that you should know about site restrictions with DNS: sites are not actually blocked with DNS; only their name resolution is blocked. That is, if if a site is blocked in DNS then it can still be accessed by using the IP address. Less technically savvy people would either (1) not know this or (2) consider it to be too much of a burden to try to circumvent DNS restrictions. But there is another option. If someone REALLY wanted to bypass DNS restrictions then they could configure their computer to use a public DNS server or a DNS server from your Internet Service Provider (ISP) instead of just taking the DNS server assigned by your home network.<br />
<br />
In summary, OpenDNS is a good option for people looking to restrict the websites/domains accessible from their home networks, but it is not infallible. A dedicated tech savvy person could bypass OpenDNS restrictions. But I would say the odds of that happening are pretty minimal... unless, of course, they read this post ;)Clayton Longhttp://www.blogger.com/profile/00295047809317392242noreply@blogger.com0tag:blogger.com,1999:blog-7170560926644600862.post-24993601262956067912011-08-04T22:00:00.006-04:002011-08-23T20:07:05.508-04:00Run Any Program as a Windows Service<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNuFC63Zz-D4k9awFJsgQAj6g63xWlmuO0mzD4GAqopxslTW1kyIEm7r2_RcDHku53kWaCFpk676sY7h682cigoUVE7vgU21ucS42uonP4HrMo-x49vSrPvNvdcytB10tuKTeff6BwD82W/s1600/wind.jpg" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="199" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNuFC63Zz-D4k9awFJsgQAj6g63xWlmuO0mzD4GAqopxslTW1kyIEm7r2_RcDHku53kWaCFpk676sY7h682cigoUVE7vgU21ucS42uonP4HrMo-x49vSrPvNvdcytB10tuKTeff6BwD82W/s200/wind.jpg" width="200" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><span style="font-size: xx-small;">Microsoft Windows Logo</span></td></tr>
</tbody></table>In this post, we are going to do the unthinkable: run a Java program as a Windows service. Of course, to do the unthinkable we are going to need a little help from our old friends at Microsoft. We are going to need the Windows Resource Kit.<br />
<br />
The Windows Resource Kit gives us a few cool Windows tools, but for our purpose we only really need srvany.exe. Srvany.exe is basically just a Windows service that allows us to run any other program as a service. Since java.exe is also a program, we can use srvany.exe to run a Java program as a Windows service. I'll demonstrate this by creating a Windows service that launches Selenium RC 1.<br />
<br />
<br />
<a name='more'></a>To create a service named SeleniumRC1 with srvany.exe, simply drop to the command line (as Administrator if using Vista or Windows 7) and type <i>sc create SeleniumRC1 <service name="">binPath= "C:\Program Files\Windows Resource Kits\Tools<full dir="" path="" srvany.exe="" to="">\srvany.exe"</full></service></i><br />
<i><service name=""><full dir="" path="" srvany.exe="" to=""> </full></service></i><service name=""><full dir="" path="" srvany.exe="" to=""> </full></service><br />
<service name=""><full dir="" path="" srvany.exe="" to="">T</full></service><service name=""><full dir="" path="" srvany.exe="" to="">he above command should create a generic service called SeleniumRC1. If you open up Services under Administrative Tools in the control panel, then you should see an entry for SeleniumRC1. But we're not done yet. We haven't told srvany.exe which program to run as a service and Selenium also takes parameters that we have not yet specified. To do this, open up the registry by executing the command <i>regedit</i>. Go to the path <i>HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SeleniumRC1 </i>and you should see all the configuration information for your service (I am actually using WindowsXP, but I think it's the same path for Windows7).</full></service><br />
<service name=""><full dir="" path="" srvany.exe="" to=""><br />
</full></service><br />
<service name=""><full dir="" path="" srvany.exe="" to="">Under your service's path, create a new registry key called <i>Parameters</i>. Now, create 3 seperate String values under the <i>Parameters</i> key that you just created: <i>AppDirectory</i>, <i>Application</i>, and <i>AppParameters</i>. AppDirectory is the directory that your application will run in (in my case, Selenium RC 1). Application is the full path to the actual executable that you will run (in my case, java.exe). AppParameters are the parameters supplied to your app (in my case, the parameters I supply to java.exe).</full></service><br />
<service name=""><full dir="" path="" srvany.exe="" to=""><br />
</full></service><br />
<service name=""><full dir="" path="" srvany.exe="" to="">When you are done filling in the appropriate values, it should look like the image below.</full></service><br />
<service name=""><full dir="" path="" srvany.exe="" to=""><br />
</full></service><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-GHJgGqXq8drRMXca9e_UgFVTTmhvw-UbdexH_bZgCew_vbG7dYbLwh32ms9yyFdsJZWM77NcmkhA56Ou7nKsXJSF7kfm1_zM6K6vD-93lQudD-_kp-0ZmdhbaE1gldIJ8xHWCyanJa3M/s1600/regedit_sc.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="124" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-GHJgGqXq8drRMXca9e_UgFVTTmhvw-UbdexH_bZgCew_vbG7dYbLwh32ms9yyFdsJZWM77NcmkhA56Ou7nKsXJSF7kfm1_zM6K6vD-93lQudD-_kp-0ZmdhbaE1gldIJ8xHWCyanJa3M/s640/regedit_sc.png" width="640" /></a></div><service name=""><full dir="" path="" srvany.exe="" to=""><br />
</full></service><br />
<service name=""><full dir="" path="" srvany.exe="" to="">Once you are all done, you should be able to start your service under Services and run it just like it was a Windows service.</full></service><br />
<service name=""><full dir="" path="" srvany.exe="" to=""><br />
</full></service><br />
<service name=""><full dir="" path="" srvany.exe="" to="">*Note: if you want to run a program that runs from the command line (like Selenium) make sure under the <i>Log On</i> tab in the service that <i>Allow service to interact with desktop</i> is checked.</full></service><br />
<service name=""><full dir="" path="" srvany.exe="" to=""><br />
</full></service><br />
<service name=""><full dir="" path="" srvany.exe="" to="">There you have it. You can now run any program as a Windows service.</full></service>Clayton Longhttp://www.blogger.com/profile/00295047809317392242noreply@blogger.com3tag:blogger.com,1999:blog-7170560926644600862.post-1403409204516658432011-08-03T22:00:00.008-04:002011-08-23T20:21:40.473-04:00FAT, NTFS, and EXT File Systems... What's the Difference?<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjpl5g9lMeNhDPKxzD9muOBP9dNmL5DOcoaoratMpKxDeW2MGDfpnC7SgFZ0gDhr0P80Ist6WLCONbD6H-sUWShInBx6KedcV1g4v77GudqEWjLwCCH6NM_08je9o3KP1PSSdw5eY9OAA9k/s1600/Hard_Disk_5973.jpg" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="150" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjpl5g9lMeNhDPKxzD9muOBP9dNmL5DOcoaoratMpKxDeW2MGDfpnC7SgFZ0gDhr0P80Ist6WLCONbD6H-sUWShInBx6KedcV1g4v77GudqEWjLwCCH6NM_08je9o3KP1PSSdw5eY9OAA9k/s200/Hard_Disk_5973.jpg" width="200" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><span style="font-size: xx-small;">Hard Drive</span></td></tr>
</tbody></table>OS makers don't talk about it, and most consumers don't know about it, but it's always there. It's your file system. Many consumers go through life never giving a second thought to their file system unless they run multiple OS's in their home. But your file system is important to how files are stored, what systems it's compatible with, and how your system performs in certain situations. In this post we'll talk about some of the more common file systems, their differences, merits and drawbacks.<br />
<br />
Those of you who run Windows either run FAT32 (for older <br />
<a name='more'></a>versions of Windows) or NTFS. FAT stands for File Allocation Table and 32 means 32-bit. The basic idea is that a section of disk is set aside to store a file allocation table that consists of entries for each block. A file or directory entry has the block number of the first block in the file. The entry in the table that corresponds to the first block has a pointer to the next block and so on until the end of the file is reached. With FAT, sequential file reads are typically very slow since there is a lot of back and forth between file blocks and the FAT.<br />
<br />
NTFS came after FAT with the aim to provide security (something that FAT lacks), improve performance (which is sometimes the case), and provide for larger file sizes and volumes. NTFS begins with the Master File Table (MFT) for a volume. Every file in NTFS is described by one or more records in the MFT. Small files might be stored entirely in an MFT record whereas larger files would be located elsewhere in extents (contiguous storage) on the disk where a pointer to those extents would exist in the MFT. NTFS makes several improvements over FAT, but allocation and indexing of files still relies on a central table structure which can be a performance lag. Excessive fragmentation can exacerbate performance problems .<br />
<br />
Ext uses indexed allocation where each file has it's own index block or inode. A file's inode has direct links to disk blocks as well as links to other indirect blocks which in turn may link directly to disk blocks (single indirection) or which may link to other indirect blocks (double indirection). Location of files, associated directories and associated inodes are optimized on the disk to reduce seek time and shorten reads. The indexed allocation approach of ext guards against external fragmentation and it proves to work well for most files.<br />
<br />
While FAT is a simple file system that is supported for read and write on all major operating systems (which is why it's a good choice for external drives), it has no security and it does not perform well with large files. NTFS makes improvements on FAT with security and in many cases contiguous reads, but it still suffers some similar ailments. Ext is generally a good choice for working with most files, however small files would benefit more from contiguous allocation.Clayton Longhttp://www.blogger.com/profile/00295047809317392242noreply@blogger.com0tag:blogger.com,1999:blog-7170560926644600862.post-42141899516069228002011-08-02T22:00:00.006-04:002011-08-23T20:21:24.161-04:00Apple in the Enterprise: Maybe not as Crazy as it Seems?<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh4yaFkMoy33C3ybbFytMqs0SbiW4BpD8SdsArc-BweZ4VdPZb3ZlAiYvwc31VH57sDtqRYajSc-SONjWy5Qcr8V9ppnQTFJ9rKfO65JdKl1A3UMWy_bQIonYOwFjl2fyWklhVsL9028qN7/s1600/apple-logo.jpg" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh4yaFkMoy33C3ybbFytMqs0SbiW4BpD8SdsArc-BweZ4VdPZb3ZlAiYvwc31VH57sDtqRYajSc-SONjWy5Qcr8V9ppnQTFJ9rKfO65JdKl1A3UMWy_bQIonYOwFjl2fyWklhVsL9028qN7/s200/apple-logo.jpg" width="165" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><span style="font-size: xx-small;">Apple Logo</span></td></tr>
</tbody></table>If you work in a Microsoft shop then it's easy to believe that the world runs on Microsoft. But the reality is desktop PC's by majority run on Microsoft. Tablets, smartphones, and servers (especially high performance servers) predominantly do not run on Microsoft. And even Microsoft's majority share on the desktop has been steadily eroding over the past few years due to Apple's emergence as a major computer manufacturer and the public's poor reception of Windows Vista.<br />
<br />
For those of you who dispute my assertions, consider this: of the top 500 supercomputers in the world, less than 2% run Windows HPC, compared to over 80% that run Linux (<a href="http://top500.org/"> http://top500.org</a>). Also, according to StatCounter.com, OS X has over 15% operating system market share (not including iOS devices) in the United States. Compare that to 3 <br />
<a name='more'></a>years ago when OS X had half of that market share. Yes, indeed the technology world is more diverse now than it was just a few years ago.<br />
<br />
So, what does this mean for the enterprise? Organizations that use predominantly Linux or UNIX based servers are now considering Apple workstations for software development. Why? Underneath that nice Aqua desktop is a UNIX operating system, complete with a UNIX shell. When working with Linux or UNIX based servers, it's a much more streamlined environment when your workstation is also UNIX.<br />
<br />
Apple workstations are being considered for front and back office usage too. Part of the reason why has to do with cost. We've all heard that Macs are more expensive than comparable computers made by one of the other large PC manufacturers. I, myself had that same concern prior to purchasing my MacBook Pro a few years ago. So, side by side I configured my desired MacBook Pro with a comparable Dell computer, feature by feature. And to my surprise, I found the MacBook Pro to actually be $50.00 less than a comparable Dell laptop.<br />
<br />
Microsoft, Dell or HP pundits will claim that you don't actually need all of the features that you pay for in a Mac and there is some truth in that. I don't need a high-res LED screen on my MacBook Pro, nor do I need bluetooth or a webcam or a backlit keyboard. But I am going to pay for those items whether I need them or not if I want a Macbook Pro. However, price point aside, TCO (Total Cost of Ownership) is typically less with a Mac, or so claims a 2010 survey by the Enterprise Desktop Alliance (<a href="http://www.enterprisedesktopalliance.com/deliver/files/eda_survey_issues_022310.pdf">http://www.enterprisedesktopalliance.com/deliver/files/eda_survey_issues_022310.pdf</a>). According to the survey, Macs require less troubleshooting time, less configuration time and less training time. And all that less time means a lower TCO for the life of a Mac compared to that of a PC/Windows equivalent.<br />
<br />
There was a time when Windows was not a common sight in the workplace. Who's to say that 5-10 years from now people won't be saying, "I remember when Macs weren't a common sight in the workplace?"Clayton Longhttp://www.blogger.com/profile/00295047809317392242noreply@blogger.com0tag:blogger.com,1999:blog-7170560926644600862.post-21836870873147920972011-07-31T22:00:00.007-04:002011-08-23T20:20:59.821-04:00Running Linux from a Flash Drive<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNwLuWbMlRiGAIAS6CChLxampzUM2Vn_jTcRGkGdH94p2NZK342f4137pazCEaNrUCdKCGuxNdpFAJbu1yoIuyF5GsnIZlB5ibWG8VKtXlXHQzt-TIDLwvBMAm70Llhdg-24WnBFmRfz8J/s1600/usb-drive.jpeg" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNwLuWbMlRiGAIAS6CChLxampzUM2Vn_jTcRGkGdH94p2NZK342f4137pazCEaNrUCdKCGuxNdpFAJbu1yoIuyF5GsnIZlB5ibWG8VKtXlXHQzt-TIDLwvBMAm70Llhdg-24WnBFmRfz8J/s200/usb-drive.jpeg" width="200" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><span style="font-size: xx-small;">USB Flash Drive</span></td></tr>
</tbody></table>One of my friends at work was talking about running Linux from a USB drive and I thought to myself, "Self, I've never done that. I wonder what's involved." As it turns out, creating a bootable USB Flash Drive with Ubuntu Linux is pretty easy. This post shows you how to do it.<br />
<br />
If you already have Ubuntu Linux (v.11.04) installed then simply boot up your computer and from the main menu (of the Classic Desktop) select System -> Administration -> Startup Disk Creator. If you don't have Linux installed, then insert the Ubuntu Linux DVD, restart your computer and run Ubuntu from the DVD (don't install Linux, just "try Linux"). Once Linux has booted then select Startup Disk Creator by clicking on the Ubuntu icon in the <br />
<a name='more'></a>top left (of the Unity Desktop) and typing in "Startup" in the search box to find the application.<br />
<br />
Plug in the USB flash drive that you want to install Linux onto. It should be shown in the Startup Disk Creator dialog box. Click the Erase Disk button to erase the disk. Then, with your Linux install DVD inserted and mounted (this is already done if you booted from the Linux install DVD), click the Make Startup Disk button. In a few minutes, you will have a USB Flash Drive that you can use to boot into a Linux installation. You can even save files back to the USB Flash Drive that you work on in Linux.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgikTV9vz1hb7Ffknh742LLaTqWB74Fk11m8PrXKwUwrgMyfpGEW1IUmyfNc8DNPCy1cXUWrUE1Ax7Kite9QTSOtdR3itBw5-XcZzJFhiVG-FhnT0AZEmSgSA3yvOaxtUmLbjwSxhCen3bu/s1600/MakeStartUp.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgikTV9vz1hb7Ffknh742LLaTqWB74Fk11m8PrXKwUwrgMyfpGEW1IUmyfNc8DNPCy1cXUWrUE1Ax7Kite9QTSOtdR3itBw5-XcZzJFhiVG-FhnT0AZEmSgSA3yvOaxtUmLbjwSxhCen3bu/s320/MakeStartUp.png" width="254" /></a></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQXjaai1MaYTO99X_nyn84HOdTX5ltPMMvsMH36TwpoJKhietO2eX6an3C3iaRbJq_XVX99hWfpmGCImoLzZaHFjlNENMa2csnIyU-2cvStdc9igfk_s60ESgaxca0m9PTLqDpvrbigk2P/s1600/MakeStarup.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><br />
</a></div>To test out your new Linux USB Flash Drive, reboot your computer and in your BIOS change the boot options to boot from USB Flash Drive. You should now be able to boot from the USB Flash Drive, just like you booted from the DVD. And not surprisingly, it looks a lot like the DVD. Basically, you created a USB Flash Drive that functions exactly like the Ubuntu install DVD with one important difference. When you "try" Ubuntu on the USB Flash Drive, you can save files and preferences that will be available to you on subsequent boots.Clayton Longhttp://www.blogger.com/profile/00295047809317392242noreply@blogger.com0