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

<channel>
	<title>{Steve!=null}</title>
	<atom:link href="http://blogger.forgottenskies.com/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://blogger.forgottenskies.com</link>
	<description>Developer thoughts and musings</description>
	<lastBuildDate>Mon, 06 Sep 2010 22:56:01 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Cake is Unable to Connect to Database on Snow Leopard &#8211; MySQL</title>
		<link>http://blogger.forgottenskies.com/?p=669</link>
		<comments>http://blogger.forgottenskies.com/?p=669#comments</comments>
		<pubDate>Mon, 06 Sep 2010 22:54:51 +0000</pubDate>
		<dc:creator>Steve Gentile</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blogger.forgottenskies.com/?p=669</guid>
		<description><![CDATA[Playing around with CakePHP today.  Ran into a problem where I know &#8211; absolutely &#8211; that my database.php was correct in Cake.  However, I kept getting this error: Cake is NOT able to connect to the database. Keep in mind, I&#8217;m using the Apache out of the box with Snow Leopard. The fix was easy, [...]]]></description>
			<content:encoded><![CDATA[<p>Playing around with <a href="http://cakephp.org/">CakePHP</a> today.  Ran into a problem where I know &#8211; absolutely &#8211; that my database.php was correct in Cake.  However, I kept getting this error:</p>
<blockquote><p><span style="font-family: Courier, monospace; line-height: 23px; font-size: 17px;">Cake is NOT able to connect to the database.</span></p></blockquote>
<p>Keep in mind, I&#8217;m using the Apache out of the box with Snow Leopard.</p>
<p>The fix was easy, but man, what a pain!</p>
<p>So I&#8217;m writing this to help anyone else that finds this problem&#8230;</p>
<p>1. Goto /private/etc/php.ini  (use TextWrangler or vi)<br />
2. Search for &#8216;mysql.default_socket&#8217; &#8211; should be under the [MySQL] section.  For me it was line 1227<br />
3. Modify to look like the following:</p>
<div id="_mcePaste">;mysql.default_socket = /var/mysql/mysql.sock         &lt;== this is what it was</div>
<div id="_mcePaste">mysql.default_socket = /private/tmp/mysql.sock</div>
<div>Save it &#8211; and restart Apache.</div>
<div>Good luck!</div>
]]></content:encoded>
			<wfw:commentRss>http://blogger.forgottenskies.com/?feed=rss2&amp;p=669</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Phusion Passenger &#8211; Deploying Rails on Mac OS X Apache</title>
		<link>http://blogger.forgottenskies.com/?p=657</link>
		<comments>http://blogger.forgottenskies.com/?p=657#comments</comments>
		<pubDate>Sat, 28 Aug 2010 15:58:29 +0000</pubDate>
		<dc:creator>Steve Gentile</dc:creator>
				<category><![CDATA[Ruby on Rails]]></category>

		<guid isPermaLink="false">http://blogger.forgottenskies.com/?p=657</guid>
		<description><![CDATA[I’ve been working on learning and developing Rails.&#160; One of the features I enjoyed while doing Grails was the ease in which it took to deploy and run my Grails app in Apache. I’m sure there are other ways to do this, most were, quite honest way over my head – but I started to [...]]]></description>
			<content:encoded><![CDATA[<p>I’ve been working on learning and developing Rails.&#160; One of the features I enjoyed while doing Grails was the ease in which it took to deploy and run my Grails app in Apache.</p>
<p>I’m sure there are other ways to do this, most were, quite honest way over my head – but I started to investigate options and ran into ‘<a href="http://www.modrails.com/">Phusion Passenger</a>’, a.k.a. <em>mod_rails</em> or <em>mod_rack.&#160; </em>From the website:</p>
<blockquote><p>Phusion Passenger™ — a.k.a. <em>mod_rails</em> or <em>mod_rack</em> — makes deployment of Ruby web applications, such as those built on the revolutionary <a href="http://www.rubyonrails.org/">Ruby on Rails web framework</a>, a breeze. It follows the usual Ruby on Rails conventions, such as “Don’t-Repeat-Yourself”. </p>
<ul>
<li>Deployment is only a matter of uploading application files. No Ruby (on Rails)-specific server configuration required! </li>
<li>Supports both the industry standard <a href="http://httpd.apache.org/">Apache web server</a> and the fast and lightweight <a href="http://www.nginx.net/">Nginx web server</a>. </li>
<li>Allows Ruby on Rails applications to use about 33% less memory, when used in combination with <a href="http://www.rubyenterpriseedition.com/">Ruby Enterprise Edition</a> (optional). </li>
<li>Zero maintenance. No port management, server process monitoring or stale file cleanup required. Errors are automatically recovered whenever possible. </li>
<li>Designed for performance, stability and security. Phusion Passenger should never crash Apache even in case of crashing Rails applications. </li>
<li>Well-documented, for both system administrators and developers! </li>
</ul>
<ul></ul>
<ul></ul>
</blockquote>
<p>The installation (this is for Mac OS X Snow Leopard) – especially the <a href="http://www.modrails.com/videos/passenger.mov">video</a> is very straightforward.</p>
<p>Let me repeat the steps I went through, because honestly, the Phusion Passenger install was a piece of cake, however, my Apache setup as a Mac OS X user was new to me and so I wanted to share these steps for anyone else like me who might struggle on this part.&#160; I am going to assume you have a Rails app and have made it that far.</p>
<p>Pre-Install Notes:    <br />First, you shouldn’t have to install Apache on Snow Leopard, it comes with the OS.&#160; You can check in your System Preferences.</p>
<p><a href="http://blogger.forgottenskies.com/Images/PhusionPassengerDeployingRailsonMacOSXAp_9D49/Preferences.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Preferences" border="0" alt="Preferences" src="http://blogger.forgottenskies.com/Images/PhusionPassengerDeployingRailsonMacOSXAp_9D49/Preferences_thumb.png" width="244" height="70" /></a> </p>
<p>Select ‘Sharing’:</p>
<p>&#160;<a href="http://blogger.forgottenskies.com/Images/PhusionPassengerDeployingRailsonMacOSXAp_9D49/WebSharing.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="WebSharing" border="0" alt="WebSharing" src="http://blogger.forgottenskies.com/Images/PhusionPassengerDeployingRailsonMacOSXAp_9D49/WebSharing_thumb.png" width="226" height="38" /></a> </p>
<p>&#160;</p>
<p>(note, you can stop and start Apache by checking/unchecking Web Sharing)</p>
<p>The last important piece here to understand is ‘where’ Apache lives on your Snow Leopard install.&#160; I’m assuming it’s the same (at least for most of us) – located here:</p>
<blockquote><p>/private/etc/apache2</p>
</blockquote>
<p>Finally, I’m going to highly recommend <a href="http://www.barebones.com/products/textwrangler/">TextWrangler</a> if you are not a Vi user, TextWrangler is a great (&amp; free!) texteditor for Mac – and it lets you access and alter files that require sudo access, etc…</p>
<p>Ok, let’s get started.&#160; I suggest you fire up the video link and follow along:</p>
<p>1. open up Terminal, enter the following to install passenger:</p>
<blockquote><pre><kbd>sudo gem install passenger</kbd></pre>
</blockquote>
<pre>&#160;</pre>
<p>2. next, install the apache2 module:</p>
<blockquote>
<pre><kbd>sudo passenger-install-apache2-module</kbd></pre>
</blockquote>
<p>At the end of the install, passenger provides some critical information, ie.</p>
<p>&#160;<a href="http://blogger.forgottenskies.com/Images/PhusionPassengerDeployingRailsonMacOSXAp_9D49/PassengerComplete.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="PassengerComplete" border="0" alt="PassengerComplete" src="http://blogger.forgottenskies.com/Images/PhusionPassengerDeployingRailsonMacOSXAp_9D49/PassengerComplete_thumb.png" width="484" height="75" /></a> </p>
<p>The text above might differ for your machine, but you need to copy that text to put in your Apache config.</p>
<p>3. Open up TextWrangler – goto File – Open File by Name (or use terminal for vi):</p>
<blockquote>
<p>/private/etc/apache2/httpd.conf</p>
</blockquote>
<p>4.&#160; Goto the bottom of the file and paste in your contents.&#160; ie.</p>
<blockquote>
<p>LoadModule passenger_module /Library/Ruby/Gems/1.8/gems/passenger-2.2.15/ext/apache2/mod_passenger.so<br />
    <br />&#160;&#160; PassengerRoot /Library/Ruby/Gems/1.8/gems/passenger-2.2.15 </p>
<p>&#160;&#160; PassengerRuby /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby</p>
</blockquote>
<p>5. Now, assuming you have the built in Apache install for Snow Leopard – we need to setup virtual hosts</p>
<p>Goto this line in the httpd.conf and remove the # – it should look like below:</p>
<blockquote>
<p># Virtual hosts<br />
    <br />Include /private/etc/apache2/extra/httpd-vhosts.conf</p>
</blockquote>
<p>Ok, you are done with httpd.conf – save it</p>
<p>6. Now we need to add our Virtual host information, open the conf file in TextWrangler:</p>
<blockquote>
<p>ie. /private/etc/apache2/extra/httpd-vhosts.conf</p>
</blockquote>
<p>Check for the following:</p>
<p>NameVirtualHost *:80&#160; (just validate this is there)<br />
  <br />Comment out the existing &lt;VirtualHost *:80&gt; entries</p>
<p>Add the following:</p>
<p>&lt;VirtualHost *:80&gt;<br />
  <br />&#160;&#160; DocumentRoot &quot;/Library/WebServer/Documents&quot; </p>
<p>&#160;&#160; ServerName localhost </p>
<p>&lt;/VirtualHost&gt; </p>
<p>Then add your app – the example would be: </p>
<p>&lt;VirtualHost *:80&gt;<br />
  <br />&#160;&#160; DocumentRoot &quot;/Users/stevegentile/Sites/book_shelf/public&quot; </p>
<p>&#160;&#160; ServerName book_shelf </p>
<p>&lt;/VirtualHost&gt; </p>
<p><strong>NOTE: above should be the path to your rails app – and the name you want to give the app for it’s URL.&#160; Additionally, it must point to the ‘public’ folder in your rails app!</strong></p>
<p>7. Ok, we are almost there, now we need to tell our machine how to access the app, so we need to open our hosts file and edit it.&#160;&#160;&#160; Back to TextWrangler and open file by name:&#160; /private/etc/hosts</p>
<p>Add a line at the bottom like this example:</p>
<blockquote>
<p>127.0.0.1 book_shelf</p>
</blockquote>
<p>This entry should match the ServerName as set above (ie. book_shelf and book_shelf)</p>
<p>8. Go back to your Web Sharing, uncheck and check to restart Apache (or use the terminal cmd)</p>
<p>9.&#160; You should be able to enter <a href="http://youappname">http://youappname</a> (ie <a href="http://book_shelf">http://book_shelf</a> ) in your browser to view your rails app.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogger.forgottenskies.com/?feed=rss2&amp;p=657</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://www.modrails.com/videos/passenger.mov" length="18988364" type="video/quicktime" />
		</item>
		<item>
		<title>Knockout &#8211; quick asp.net mvc sample</title>
		<link>http://blogger.forgottenskies.com/?p=638</link>
		<comments>http://blogger.forgottenskies.com/?p=638#comments</comments>
		<pubDate>Tue, 06 Jul 2010 01:02:31 +0000</pubDate>
		<dc:creator>Steve Gentile</dc:creator>
				<category><![CDATA[ASP.NET MVC]]></category>
		<category><![CDATA[Ajax]]></category>
		<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://blogger.forgottenskies.com/?p=638</guid>
		<description><![CDATA[Steve Sanderson has released knockout&#160; &#8211; read more here about what knockout is. Knockout is a JavaScript library that makes it easier to create rich, desktop-like user interfaces with JavaScript and HTML, using observers to make your UI automatically stay in sync with an underlying data model. It works particularly well with the MVVM pattern, [...]]]></description>
			<content:encoded><![CDATA[<p>Steve Sanderson has released <a href="http://knockoutjs.com/">knockout</a>&#160; &#8211; read more <a href="http://blog.stevensanderson.com/2010/07/05/introducing-knockout-a-ui-library-for-javascript/">here</a> about what knockout is.</p>
<blockquote><p><strong><a href="http://knockoutjs.com">Knockout</a></strong> is a JavaScript library that makes it easier to create rich, desktop-like user interfaces with JavaScript and HTML, using <em>observers </em>to make your UI automatically stay in sync with an underlying data model. It works particularly well with the MVVM pattern, offering <em>declarative bindings </em>somewhat like Silverlight but without the browser plugin.</p>
</blockquote>
<p>Well, as a fan of his asp.net mvc book (<a href="http://www.amazon.com/Pro-ASP-NET-Framework-Steven-Sanderson/dp/1430210079">Pro ASP.NET MVC Framework</a> (mvc1) and just recent release of <a href="http://blog.stevensanderson.com/2010/06/11/pro-aspnet-mvc-2-framework/">Pro ASP.NET MVC 2</a> &#8211; and please note – knockout isn’t at all associated or tied to asp.net mvc!) – I was quickly wanting to take his editor sample – which was so elegantly put together – and simple show a way to pass json data from a controller action to his sample.</p>
<p>Here is the <a href="http://blogger.forgottenskies.com/Samples/MvcKnockout.zip">sample code</a>.</p>
<p>I’m not going to go too much into knockout – simply because Steve’s post and sample page describe it very well.&#160; I do think this is a good follow up to a post a made regarding jTemplates.&#160; </p>
<p>Enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://blogger.forgottenskies.com/?feed=rss2&amp;p=638</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>ASP.NET MVC &#8211; jQuery &#8211; Json.. Cascading Dropdown</title>
		<link>http://blogger.forgottenskies.com/?p=626</link>
		<comments>http://blogger.forgottenskies.com/?p=626#comments</comments>
		<pubDate>Wed, 30 Jun 2010 21:18:30 +0000</pubDate>
		<dc:creator>Steve Gentile</dc:creator>
				<category><![CDATA[ASP.NET MVC]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://blogger.forgottenskies.com/?p=626</guid>
		<description><![CDATA[I&#8217;m less interested in the &#8216;cascading dropdown&#8217; part of this post , as I am in demonstrating how json and jquery can be your friends in the asp.net mvc world. Let&#8217;s start by a description of the &#8216;problem&#8217;:  On populating a page, we need to query for a set of companies and display those to [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m less interested in the &#8216;cascading dropdown&#8217; part of this post , as I am in demonstrating how json and jquery can be your friends in the asp.net mvc world.</p>
<p>Let&#8217;s start by a description of the &#8216;problem&#8217;:  On populating a page, we need to query for a set of companies and display those to the user.  Upon selection of a company, we need to populate another dropdown of the banks associated to that company.  You can fill in the blanks for &#8216;companies&#8217;with &#8216;banks&#8217; &#8211; basically a one to many.  In my situation, I use lazy loading and do not need to pull all the banks in when the page loads.</p>
<p>First let&#8217;s look at the &#8216;onLoad&#8217; of the page via jQuery:<br />
<code>$(function () {<br />
&nbsp;&nbsp;$("#companies").change(function () {<br />
&nbsp;&nbsp;&nbsp;&nbsp;LoadBanks($("#companies").val());<br />
&nbsp;&nbsp;&nbsp;&nbsp;});<br />
&nbsp;&nbsp;});</code></p>
<div>I&#8217;ve simplified this from the code to show the essentials.  I&#8217;m handling the onChange of the companies drop down list, something like this:</div>
<div>
<div><code>Select Company: &lt;%= Html.DropDownList("companies", new SelectList(Model, "Companyid", "Name"), string.Empty)%&gt;</code></div>
<div>The Model is my list of &#8216;Company&#8217; objects.  The value is the id and the text is the name.</div>
<div>From the above javascript, you&#8217;ll see that when the dropdown item is selected I will be passing the selected value &#8211; which is the id &#8211; to the LoadBanks function:</div>
<p><code> </code></p>
<p><code></p>
<div>
<div>function LoadBanks(companyId) {</div>
<div>&nbsp;$.ajax({</div>
<div>&nbsp;&nbsp;type: "POST",</div>
<div>&nbsp;&nbsp;url: BuildUrl("Company/LoadBanks"),</div>
<div>&nbsp;&nbsp;data: ({ id: companyId }),</div>
<div>&nbsp;&nbsp;dataType: "json",</div>
<div>&nbsp;&nbsp;beforeSend: function () {</div>
<div>$.blockUI({ message: "Retrieving Banks..." });   //this is great plugin - 'blockUI'</div>
<div>},</div>
<div>success: function (positivePayBanks) {</div>
<div>&nbsp;&nbsp;$("#positivePayBanks").find('option').remove();</div>
<div>&nbsp;&nbsp;$banks = $("#positivePayBanks");</div>
<div>&nbsp;&nbsp;$.each(positivePayBanks, function (i, bank) {</div>
<div>&nbsp;&nbsp;if (i == 0) { $("#BankID").val(bank.BankID); }</div>
<div>&nbsp;&nbsp;&nbsp;$banks.append('&lt;option value="' + bank.BankID + '"&gt;' + bank.BankName + '&lt;/option&gt;');</div>
<div>&nbsp;&nbsp;});</div>
<div>$.unblockUI();</div>
<div>},</div>
<div>error: function (XMLHttpRequest, textStatus, errorThrown) {</div>
<div>&nbsp;&nbsp;$.unblockUI();</div>
<div>&nbsp;&nbsp;var errMsg = "&lt;P&gt;Error Loading: " + XMLHttpRequest.responseText + "&lt;br/&gt;";</div>
<div>&nbsp;&nbsp;$("#status").html(errMsg).show("slow");</div>
<div>}</div>
<div>});</div>
<div>}</div>
</div>
<p></code></p>
<div>So, what is going on in this call?</div>
<div>
<p><code></p>
<div>type: "POST"</div>
<div>url: BuildUrl("Company/LoadBanks"),   &lt;-- the BuildUrl is just a helper call - basically this is the REST call to the controller/action</div>
<div>data: ({ id: companyId }),   &lt;-- this is the params being sent to the Action.  I'm passing the selected company id</div>
<div>dataType: "json",   &lt;--  I'm saying that the returning data will be json.</div>
<p></code></p>
<div>Let&#8217;s step out of the javascript/html to just show how easy it is to serialize the list of banks to json in mvc:</div>
<div>This isn&#8217;t too exciting but here is the controller action for &#8216;LoadBanks&#8217;:</div>
<p><code> </code></p>
<p><code></p>
<div>
<div>[HttpPost]    &lt;-- I'm requiring this to be a post here</div>
<div>public ActionResult LoadBanks(string id) &lt;--- this id will pick up the id passed in the ajax call above</div>
<div>{</div>
<div>&nbsp;&nbsp;var positivePayBanks = _companyService.GetBanksByCompanyId(new Guid(id));</div>
<div>&nbsp;&nbsp;return Json(positivePayBanks);</div>
<div>}</div>
</div>
<p></code></p>
<div>Pretty boring isn&#8217;t it?  The simplicity here is appreciate though as mvc includes a JsonResult that will take the list of banks and generate the json!</div>
<div>Here is the select html:</div>
<p><code> </code></p>
<p><code></p>
<div>&lt;select id="positivePayBanks" class="required"&gt;&lt;/select&gt;</div>
<p></code></p>
<div>The meat here of the post is how we can take that resulting json data and &#8216;bind&#8217; it to the bank dropdown:</div>
<p><code> </code></p>
<p><code></p>
<div>
<div>success: function (positivePayBanks) {   &lt;--- 'positivePayBanks' is the returning json data</div>
<div>&nbsp;&nbsp;$("#positivePayBanks").find('option').remove();     &lt;--- this clears it each time, as it will continue to just append if I don't first remove it!</div>
<div>&nbsp;&nbsp;$banks = $("#positivePayBanks");</div>
<div>&nbsp;&nbsp;$.each(positivePayBanks, function (i, bank) {    &lt;--- the beauty of jQuery here is a nice foreach statement</div>
<div>&nbsp;&nbsp;&nbsp;if (i == 0) { $("#BankID").val(bank.BankID); }    &lt;-- I'm actually forced to set the id of the selected bank or the form post doesn't catch it.</div>
<div>&nbsp;&nbsp;&nbsp;$banks.append('&lt;option value="' + bank.BankID + '"&gt;' + bank.BankName + '&lt;/option&gt;');   &lt;-- append the results to the select</div>
<div>&nbsp;&nbsp;});</div>
<div>$.unblockUI(); //unblock the UI</div>
<div>}</div>
</div>
<p></code></p>
<div>I left the blockUI in this sample because I want to remind those using ajax, that there is no control over the latency on the network &#8211; so rather than leave the user wondering what just happened, this gives a visible indicator.</div>
<div>For those new to Json, the part I like the best here is that jQuery will deserialize the json data into the ajax result:</div>
<div>(success: function (positivePayBanks))</div>
<div>Since this is a list of banks, we can use jQuery to loop through each one and it is represented as a bank object, which allows for the &#8216;bank.BankID&#8217; and &#8216;bank.BankName&#8217;</div>
<div>Just as a finishing note, it is possible to just return a partialview with a Html.DropdownList , etc..  - however, by using Json , it greatly decreases the transmission over the wire.  Json is a perfect medium for keeping the data minimal, and as you can see it goes hand in hand with frameworks like jQuery.</div>
<div>One piece of this I do not like, is how I needed to then set the selected bankId to a hidden field.  I was able to get the value passed into the form collection on form post naturally.  If anyone has a trick for that- let me know  :)</div>
</div>
<div>PS.  I&#8217;m still looking for a good WordPress application to run on MacBook</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blogger.forgottenskies.com/?feed=rss2&amp;p=626</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Review of Building a Java Web Application with Netbeans Tutorial</title>
		<link>http://blogger.forgottenskies.com/?p=619</link>
		<comments>http://blogger.forgottenskies.com/?p=619#comments</comments>
		<pubDate>Sun, 27 Jun 2010 01:25:16 +0000</pubDate>
		<dc:creator>Steve Gentile</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[NetBeans]]></category>

		<guid isPermaLink="false">http://blogger.forgottenskies.com/?p=619</guid>
		<description><![CDATA[I deployed for the first time a Grails app into a production Tomcat server last week.  Great experience, very straightforward &#8211; the technology has been wonderful.  I have switched back and forth between IntelliJ (my favorite for Grails, but probably won&#8217;t spend the ~$250 for it), Eclipse (through Springsource Tool Suite), and Netbeans.   I&#8217;m [...]]]></description>
			<content:encoded><![CDATA[<p>I deployed for the first time a Grails app into a production Tomcat server last week.  Great experience, very straightforward &#8211; the technology has been wonderful.  I have switched back and forth between IntelliJ (my favorite for Grails, but probably won&#8217;t spend the ~$250 for it), Eclipse (through Springsource Tool Suite), and Netbeans.   I&#8217;m not really looking for the IDE to do a great deal outside of perhaps some debugging tools, intellisense, and &#8216;goto declaration&#8217; type functionality I&#8217;ve been accustom to with Resharper.  Which is by the way why I think I liked IntelliJ was mostly because I&#8217;ve been a Resharper user for quite some time and I found it closer to my normal IDE experience.</p>
<p>But I digress.  The main reason I bring it up is because I&#8217;ve diverged into several different paths at the same time &#8211; exploring Ruby on Rails, Grails, PHP, and then Java Web applications (each has been a &#8216;taste of the weekend&#8217; experience where I dedicated any development time over the weekend to a new technology).  I will say, Netbeans has build in support for all those technologies and I found it easy to use.  (ie. In the Grails project, we use Subversion, and that was very straightward to setup in Netbeans).  The guys I work with are Eclipse fans, and I understand when you have used an IDE for many years, you tend to find it to be the &#8216;best&#8217;.  So certainly I&#8217;m not going to start an IDE war conversation.  To each their own.   Actually, I bring up Netbeans because I&#8217;ve found their tutorials to be quite good.  For reference, I&#8217;m running this on MacBook Pro version of Netbeans 6.8.</p>
<p>The tutorial I&#8217;m working through is called &#8220;The Netbeans e-commerce tutorial&#8221; found here: <a href="http://netbeans.org/kb/docs/javaee/ecommerce/intro.html" target="_blank">http://netbeans.org/kb/docs/javaee/ecommerce/intro.html</a> What I have really enjoyed with this tutorial is it takes a very holistic approach to building a Java web application.  And the tutorial isn&#8217;t really Netbeans specific, although the screenshots show &#8216;netbeans ide&#8217; (in other words, you could do this in Eclipse without too much of a difference).  There aren&#8217;t too many shortcuts taken in the tutorial, including just building the database using <a href="http://wb.mysql.com/">MySQL Workbench</a> &#8211; which I must say, the tutorial goes quite in depth in showing how to use the Workbench IDE to create a model first approach that forward engineers the creation of the tables in MySQL.  Very nicely done.</p>
<p>One other item to note is the attention to detail to not just &#8216;java&#8217; elements, but the setup of a very well designed &#8216;css&#8217; oriented html web site.  Obviously they want to show off their IDE capability with html and css, and quite honesty I was extremely impressed with the IDE capabilities especially with the CSS intellisense &#8211; which was more than just &#8216;intellisense&#8217; it has great help context build in, as well as a nicely done preview pane to show you what the css class will look like ahead of time!</p>
<p>I&#8217;ve worked my way through the first half  of the tutorial &#8211; and will provide more feedback as I get past the modeling and html aspects.  I wanted to share that so far the experience has been very positive &#8211; and I hope as I continue through the meatier java parts of the tutorial that I can have more good things to say  :)</p>
<p>Until next time, if you get a chance, check out the link provided to the tutorial and give it a whirl and let me know what you thought of the experience.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogger.forgottenskies.com/?feed=rss2&amp;p=619</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ASP.NET MVC with JTemplates &#8211; Part II</title>
		<link>http://blogger.forgottenskies.com/?p=612</link>
		<comments>http://blogger.forgottenskies.com/?p=612#comments</comments>
		<pubDate>Thu, 20 May 2010 19:33:02 +0000</pubDate>
		<dc:creator>Steve Gentile</dc:creator>
				<category><![CDATA[Ajax]]></category>
		<category><![CDATA[Json]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://blogger.forgottenskies.com/?p=612</guid>
		<description><![CDATA[In my first part I of this two part series, I covered using Json, ASP.NET MVC, and jTemplate to bind to a simple html table. The next part of this series is to ‘prettify’ the table using the jQuery plugin  DataTables DataTables supports using the same theme as used by jQuery UI, so I have [...]]]></description>
			<content:encoded><![CDATA[<p>In my <a href="http://blogger.forgottenskies.com/?p=604" target="_blank">first part</a> I of this two part series, I covered using Json, ASP.NET MVC, and jTemplate to bind to a simple html table.</p>
<p>The next part of this series is to ‘prettify’ the table using the <a href="http://www.datatables.net/" target="_blank">jQuery plugin  DataTables</a></p>
<p>DataTables supports using the same theme as used by jQuery UI, so I have decided to include this as well.  Basically in about 4 lines of javascript, we can convert the previous simple table to a nice looking pageable, sortable, searchable grid!</p>
<p><a href="http://blogger.forgottenskies.com/wp-content/uploads/2010/05/image2.png"><img style="display: inline; border-width: 0px;" title="image" src="http://blogger.forgottenskies.com/wp-content/uploads/2010/05/image_thumb2.png" border="0" alt="image" width="629" height="212" /></a></p>
<p>The references are updated (see sample code):</p>
<pre class="code"><span style="color: blue;">    &lt;</span><span style="color: maroon;">link </span><span style="color: red;">href</span><span style="color: blue;">="</span><span style="background: yellow;">&lt;%</span><span style="color: blue;">= </span>Url.Content("~/Content/Site.css") <span style="background: yellow;">%&gt;</span><span style="color: blue;">" </span></pre>
<pre class="code"><span style="color: blue;">      </span><span style="color: red;">rel</span><span style="color: blue;">="stylesheet" </span><span style="color: red;">type</span><span style="color: blue;">="text/css" /&gt;
    &lt;</span><span style="color: maroon;">link </span><span style="color: red;">href</span><span style="color: blue;">="</span><span style="background: yellow;">&lt;%</span><span style="color: blue;">= </span>Url.Content("~/Content/jquery-ui-1.8.1.custom.css") <span style="background: yellow;">%&gt;</span><span style="color: blue;">" </span></pre>
<pre class="code"><span style="color: blue;">      </span><span style="color: red;">rel</span><span style="color: blue;">="stylesheet" </span><span style="color: red;">type</span><span style="color: blue;">="text/css" /&gt;
    &lt;</span><span style="color: maroon;">link </span><span style="color: red;">href</span><span style="color: blue;">="</span><span style="background: yellow;">&lt;%</span><span style="color: blue;">= </span>Url.Content("~/Content/demo_table_jui.css") <span style="background: yellow;">%&gt;</span><span style="color: blue;">" </span></pre>
<pre class="code"><span style="color: blue;">      </span><span style="color: red;">rel</span><span style="color: blue;">="stylesheet"  </span><span style="color: red;">type</span><span style="color: blue;">="text/css" /&gt;
    &lt;</span><span style="color: maroon;">script </span><span style="color: red;">type</span><span style="color: blue;">="text/javascript" </span></pre>
<pre class="code"><span style="color: blue;">      </span><span style="color: red;">src</span><span style="color: blue;">="</span><span style="background: yellow;">&lt;%</span><span style="color: blue;">= </span>Url.Content("~/Scripts/jquery-1.4.1.js") <span style="background: yellow;">%&gt;</span><span style="color: blue;">"&gt;&lt;/</span><span style="color: maroon;">script</span><span style="color: blue;">&gt;
    &lt;</span><span style="color: maroon;">script </span><span style="color: red;">type</span><span style="color: blue;">="text/javascript" </span></pre>
<pre class="code"><span style="color: blue;">      </span><span style="color: red;">src</span><span style="color: blue;">="</span><span style="background: yellow;">&lt;%</span><span style="color: blue;">= </span>Url.Content("~/Scripts/jquery-ui.js") <span style="background: yellow;">%&gt;</span><span style="color: blue;">"&gt;&lt;/</span><span style="color: maroon;">script</span><span style="color: blue;">&gt;
    &lt;</span><span style="color: maroon;">script </span><span style="color: red;">type</span><span style="color: blue;">="text/javascript" </span></pre>
<pre class="code"><span style="color: blue;">      </span><span style="color: red;">src</span><span style="color: blue;">="</span><span style="background: yellow;">&lt;%</span><span style="color: blue;">= </span>Url.Content("~/Scripts/jquery-jtemplates_uncompressed.js") <span style="background: yellow;">%&gt;</span><span style="color: blue;">"&gt;&lt;/</span><span style="color: maroon;">script</span><span style="color: blue;">&gt;
    &lt;</span><span style="color: maroon;">script </span><span style="color: red;">type</span><span style="color: blue;">="text/javascript" </span></pre>
<pre class="code"><span style="color: blue;">      </span><span style="color: red;">src</span><span style="color: blue;">="</span><span style="background: yellow;">&lt;%</span><span style="color: blue;">= </span>Url.Content("~/Scripts/jquery.dataTables.js") <span style="background: yellow;">%&gt;</span><span style="color: blue;">"&gt;&lt;/</span><span style="color: maroon;">script</span><span style="color: blue;">&gt;
</span></pre>
<p>The next step is to apply the DataTables plugin to our table.</p>
<p>(If you had the demo code for part I, you might notice part II I had to make sure to define the thead and tbody tags in the table.)</p>
<pre class="code"><span style="color: blue;">&lt;</span><span style="color: maroon;">script </span><span style="color: red;">type</span><span style="color: blue;">="text/javascript"&gt;
    </span>$(document).ready(<span style="color: blue;">function </span>() {
        $.ajax({
            type:<span style="color: maroon;">"POST"</span>,
            url: <span style="color: maroon;">"</span><span style="background: yellow; color: maroon;">&lt;%</span><span style="color: maroon;">= Url.Action("</span>GetData<span style="color: maroon;">") </span><span style="background: yellow; color: maroon;">%&gt;</span><span style="color: maroon;">"</span>,
            data: <span style="color: maroon;">"{}"</span>,
            contentType: <span style="color: maroon;">"application/json; charset=utf-8"</span>,
            dataType: <span style="color: maroon;">"json"</span>,
            success: <span style="color: blue;">function</span>(data){
                $(<span style="color: maroon;">"#jTemplateDemo"</span>).setTemplate($(<span style="color: maroon;">"#templateHolder"</span>).html());
                $(<span style="color: maroon;">"#jTemplateDemo"</span>).processTemplate(data);

                $(<span style="color: maroon;">'#personTable'</span>).dataTable({
                    <span style="color: maroon;">"bJQueryUI"</span>: <span style="color: blue;">true</span>,
                    <span style="color: maroon;">"sPaginationType"</span>: <span style="color: maroon;">"full_numbers"</span>,
                    <span style="color: maroon;">"aoColumns"</span>: [{ <span style="color: maroon;">"sTitle"</span>: <span style="color: maroon;">"First Name" </span>},
                       { <span style="color: maroon;">"sTitle"</span>: <span style="color: maroon;">"Email" </span>}]
                });
            }
        });
    });
<span style="color: blue;">&lt;/</span><span style="color: maroon;">script</span><span style="color: blue;">&gt;
</span></pre>
<p><a href="http://11011.net/software/vspaste"></a></p>
<p>I have included the previous javascript – the key section is the $(‘#personTable’).dataTable.</p>
<p>There are tons more functionality you can get from the plugin – including grid editing, server pagination, etc…  (ie. saving state – (“bStateSave”:true)</p>
<p>I hope to create a third part of this series that will combine the edit features of the datatable with the ASP.NET MVC + json capability.  This will be valuable to show the posting of json data as well as updating the underlying json data source for the template.</p>
<p>(by the way, there is an unintended “easter egg” in this post.  If you recall the template grid TH was incorrectly labeled ‘Last Name’ instead of ‘Email’. By defining the aoColumns above, it overrides the ‘Last Name’ in the template and applies the ‘Email’ header.  aoColumns is an optional parameter in this case).</p>
<p>I have included this code for your review – <a href="http://blogger.forgottenskies.com/Samples/MVCJson_Part_Two.zip">download here</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blogger.forgottenskies.com/?feed=rss2&amp;p=612</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>ASP.NET MVC with jTemplates &#8211; Part I</title>
		<link>http://blogger.forgottenskies.com/?p=604</link>
		<comments>http://blogger.forgottenskies.com/?p=604#comments</comments>
		<pubDate>Thu, 20 May 2010 13:54:23 +0000</pubDate>
		<dc:creator>Steve Gentile</dc:creator>
				<category><![CDATA[ASP.NET MVC]]></category>
		<category><![CDATA[Ajax]]></category>
		<category><![CDATA[Json]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://blogger.forgottenskies.com/?p=604</guid>
		<description><![CDATA[One of my goals in web development is to continue to look to use json to transmit data vs. using partial views.&#160; Obviously by transmitting json data, the payload is going to be much more efficient. I’m going to break this out into two parts : Part I is going to cover the basics to [...]]]></description>
			<content:encoded><![CDATA[<p>One of my goals in web development is to continue to look to use json to transmit data vs. using partial views.&#160; Obviously by transmitting json data, the payload is going to be much more efficient. </p>
<p>I’m going to break this out into two parts :</p>
<p><strong>Part I</strong> is going to cover the basics to using <a href="http://jtemplates.tpython.com/">jTemplate</a> with jQuery within an asp.net mvc environment.</p>
<p>Part II is going to take this concept and apply it to a nice looking jQuery plugin &#8216;grid control&#8217; called&#160; <a href="http://datatables.net/">DataTables</a></p>
<p>Let’s look at what the final result will be:</p>
<p><a href="http://blogger.forgottenskies.com/wp-content/uploads/2010/05/image.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogger.forgottenskies.com/wp-content/uploads/2010/05/image_thumb.png" width="537" height="330" /></a></p>
<p>Let’s address the server side pieces first:</p>
<p>I’m going to create a new Model class ‘Person’:</p>
<pre class="code"><span style="color: blue">public class </span><span style="color: #2b91af">Person
    </span>{
        <span style="color: blue">public string </span>ID { <span style="color: blue">get</span>; <span style="color: blue">set</span>; }
        <span style="color: blue">public string </span>FirstName { <span style="color: blue">get</span>; <span style="color: blue">set</span>; }
        <span style="color: blue">public string </span>Email { <span style="color: blue">get</span>; <span style="color: blue">set</span>; }
    }</pre>
<p>Using the default asp.net mvc created project type, I’ll just a hook into the the Home controller to display the table in the index page.&#160; To do this, I’ll need to add another action with some sample data that will be called from the page via ajax:</p>
<p>&#160;</p>
<pre class="code"> [<span style="color: #2b91af">HttpPost</span>]
 <span style="color: blue">public </span><span style="color: #2b91af">JsonResult </span>GetData()
 {
      <span style="color: #2b91af">IList</span>&lt;<span style="color: #2b91af">Person</span>&gt; people = <span style="color: blue">new </span><span style="color: #2b91af">List</span>&lt;<span style="color: #2b91af">Person</span>&gt;
        {
          <span style="color: blue">new </span><span style="color: #2b91af">Person </span>{ID = <span style="color: #a31515">&quot;1&quot;</span>, FirstName = <span style="color: #a31515">&quot;Anne&quot;</span>, Email = <span style="color: #a31515">&quot;anne@domain.com&quot;</span>},
          <span style="color: blue">new </span><span style="color: #2b91af">Person </span>{ID = <span style="color: #a31515">&quot;2&quot;</span>, FirstName = <span style="color: #a31515">&quot;Amelie&quot;</span>, Email = <span style="color: #a31515">&quot;amelie@domain.com&quot;</span>},
          <span style="color: blue">new </span><span style="color: #2b91af">Person </span>{ID = <span style="color: #a31515">&quot;3&quot;</span>, FirstName = <span style="color: #a31515">&quot;Polly&quot;</span>, Email = <span style="color: #a31515">&quot;polly@domain.com&quot;</span>},
          <span style="color: blue">new </span><span style="color: #2b91af">Person </span>{ID = <span style="color: #a31515">&quot;4&quot;</span>, FirstName = <span style="color: #a31515">&quot;Alice&quot;</span>, Email = <span style="color: #a31515">&quot;alice@domain.com&quot;</span>},
          <span style="color: blue">new </span><span style="color: #2b91af">Person </span>{ID = <span style="color: #a31515">&quot;5&quot;</span>, FirstName = <span style="color: #a31515">&quot;Martha&quot;</span>, Email = <span style="color: #a31515">&quot;martha@domain.com&quot;</span>}
        };
      <span style="color: blue">return </span>Json(people);
}</pre>
<p>The ‘return Json(people)’ will return the list in json format – which you can see in the above Firebug screenshot ‘response’.&#160; </p>
<p>So that is basically it for the server side.</p>
<p>The first step in the views is to add the references to the javascript files.&#160; Since I’m using the site.master I’ll add it there, so that it’s available to other views as well:</p>
<pre class="code"><a href="http://blogger.forgottenskies.com/wp-content/uploads/2010/05/image1.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogger.forgottenskies.com/wp-content/uploads/2010/05/image_thumb1.png" width="655" height="34" /></a> </pre>
<p>(For production, you will want to use the compressed/min files instead)</p>
<p>I also add a new ContentPlaceHolder in the head of the site.master:</p>
<pre class="code"><span style="color: blue">&lt;</span><span style="color: maroon">asp</span><span style="color: blue">:</span><span style="color: maroon">ContentPlaceHolder </span><span style="color: red">ID</span><span style="color: blue">=&quot;HeadContent&quot; </span><span style="color: red">runat</span><span style="color: blue">=&quot;server&quot; /&gt;
</span></pre>
<p>This way on the views, I can put any scripts in the head tags as well. </p>
<p>In the Index.aspx page we can finish this functionality:</p>
<p>1. add the scripts to the head of the view:</p>
<pre class="code"><span style="color: blue">&lt;</span><span style="color: maroon">asp</span><span style="color: blue">:</span><span style="color: maroon">Content </span><span style="color: red">ID</span><span style="color: blue">=&quot;Content3&quot; </span><span style="color: red">ContentPlaceHolderID</span><span style="color: blue">=&quot;HeadContent&quot; </span><span style="color: red">runat</span><span style="color: blue">=&quot;server&quot;&gt;
    &lt;</span><span style="color: maroon">script </span><span style="color: red">type</span><span style="color: blue">=&quot;text/javascript&quot;&gt;
        </span>$(document).ready(<span style="color: blue">function </span>() {
        $.ajax({
                type:<span style="color: maroon">&quot;POST&quot;</span>,
                url: <span style="color: maroon">&quot;</span><span style="background: yellow; color: maroon">&lt;%</span><span style="color: maroon">= Url.Action(&quot;</span>GetData<span style="color: maroon">&quot;) </span><span style="background: yellow; color: maroon">%&gt;</span><span style="color: maroon">&quot;</span>,
                data: <span style="color: maroon">&quot;{}&quot;</span>,
                contentType: <span style="color: maroon">&quot;application/json; charset=utf-8&quot;</span>,
                dataType: <span style="color: maroon">&quot;json&quot;</span>,
                success: <span style="color: blue">function</span>(data){
                    $(<span style="color: maroon">&quot;#jTemplateDemo&quot;</span>).setTemplate($(<span style="color: maroon">&quot;#templateHolder&quot;</span>).html());
                    $(<span style="color: maroon">&quot;#jTemplateDemo&quot;</span>).processTemplate(data);
                }
            });
        });
    <span style="color: blue">&lt;/</span><span style="color: maroon">script</span><span style="color: blue">&gt;
&lt;/</span><span style="color: maroon">asp</span><span style="color: blue">:</span><span style="color: maroon">Content</span><span style="color: blue">&gt;
</span></pre>
<p>To review this (we could use a $.getJSON as well) – on the page ready function I’m going to make an ajax call back to the ‘GetData’ action.&#160; This is defined in the ‘url:’ parameter.</p>
<p>In this case there are no parameters being passed so the data is left blank (this is best practice to include “{}” when blank).&#160; It is possible to use a REST url as well with parameters.</p>
<p>We define out contentType (using $.getJSON) would do this automatically.</p>
<p>Lastly, we provide an ‘onSuccess’ function – the ‘data’ will contain the returning Json from our action call.&#160; The next two calls use the jTemplate API to merge the Json data to the templated html, as shown below.</p>
<p>2. add the template to the view:</p>
<pre class="code"><span style="color: blue">&lt;</span><span style="color: maroon">script </span><span style="color: red">type</span><span style="color: blue">=&quot;text/html&quot; </span><span style="color: red">id</span><span style="color: blue">=&quot;templateHolder&quot;&gt;
    </span>&lt;table border=&quot;1&quot;&gt;
    &lt;tr&gt;
        &lt;th&gt;
            First Name
        &lt;/th&gt;
        &lt;th&gt;
            Email
        &lt;/th&gt;
    &lt;/tr&gt;
    {#foreach $T as record}
        &lt;tr&gt;
            &lt;td&gt;
                {$T.record.FirstName}
            &lt;/td&gt;
            &lt;td&gt;
                {$T.record.Email}
            &lt;/td&gt;
        &lt;/tr&gt;
    {#/for}
&lt;/table&gt;
<span style="color: blue">&lt;/</span><span style="color: maroon">script</span><span style="color: blue">&gt;

&lt;</span><span style="color: maroon">div </span><span style="color: red">id</span><span style="color: blue">=&quot;jTemplateDemo&quot;&gt;
&lt;/</span><span style="color: maroon">div</span><span style="color: blue">&gt;
</span></pre>
<p><a href="http://11011.net/software/vspaste"></a></p>
<p>&#160;</p>
<p>One thing to keep in mind is to put this html in the script tag.&#160; Alternatively you could load this template from another file as well.</p>
<p>With this approach we have created a very lightweight approach to passing data from the server to the client – the binding to the template occurs on the client.&#160; If we used partial views, the binding process would occur on the server and transmit the payload with the html, increasing it’s size.&#160; The lightweight json approach is critical especially in our ajax calls </p>
<p>Next post we’ll take this table and convert it into a ‘DataTable’.</p>
<p>I have included this code for your review – <a href="http://blogger.forgottenskies.com/Samples/MVCJson_Part_One.zip" target="_blank">download here</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blogger.forgottenskies.com/?feed=rss2&amp;p=604</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>WebHost4Life</title>
		<link>http://blogger.forgottenskies.com/?p=594</link>
		<comments>http://blogger.forgottenskies.com/?p=594#comments</comments>
		<pubDate>Fri, 07 May 2010 20:10:31 +0000</pubDate>
		<dc:creator>Steve Gentile</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blogger.forgottenskies.com/?p=594</guid>
		<description><![CDATA[I&#8217;m a truly dedicated WebHost4Life fan.  Been using them for something like 8 years now ? They were always responsive to any request, and they even allowed me to make some exceptions (I had a program I needed to be able to run on the server). The control panel, although not the prettiest thing, got [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m a truly dedicated WebHost4Life fan.  Been using them for something like 8 years now ? They were always responsive to any request, and they even allowed me to make some exceptions (I had a program I needed to be able to run on the server).</p>
<p>The control panel, although not the prettiest thing, got the job done.</p>
<p>Let me step back one moment and say they were advertising and telling me about how they were upgrading their system and all the improvements and ease of use and performance it would bring. I was looking forward to it.  It was delayed I noticed when I&#8217;d come to the site, but it would say they are &#8216;testing everything&#8217;.  That made me feel better about it all as well.</p>
<p>Well&#8230; I felt that way until 3 weeks ago. 3 weeks ago, without warning they flipped the switch.</p>
<p>Day 1: the forum I used for my community (MYSQL) was practically unusable.  Extremely slow. So badly I couldn&#8217;t even post to the community that there was a problem.  I entered a ticket, it took escalating the ticket 3 times.  5 days later it was working.Â  It&#8217;s still much slower than before.  5 days.</p>
<p>When I would chat or get a ticket I started noticing a trend&#8230; every single correspondance was &#8216;I&#8217;m sorry for the inconvenience this has caused you&#8230;&#8217;.  Like it was the scripted response to everything.</p>
<p>But ok, that was fine until I went to my .net main site that uses MSSQL. Hmmm, I track and store data and noticed the last data entry was a month ago.  One month behind.  All the data for the last month was gone.  What???  Another ticket.  Another 5 days. I never got a response.  They literally never answered.  They had no backup to offer me.  Data was gone, forever.</p>
<p>The best answer I got was &#8216;I&#8217;m sorry for the inconvenience this has caused you&#8217;.</p>
<p>But wait, it gets better. Remember how they were so good to work with on running my program I need ?  Despite everything I said, they flat out refused &#8216;it&#8217;s against our policy&#8217;.  I&#8217;m like &#8216;I&#8217;ve been running this safely for 8 years ???&#8217;.  Didn&#8217;t matter.  I asked to talk to manager.  They said &#8216;ok&#8217;. Ticket sat in the queue for 3 more days.</p>
<p>Three days later, I responded, asking what the status is.  Same response &#8211; &#8216;it&#8217;s against our policy&#8217; &#8211; it wasn&#8217;t from a manager either.</p>
<p>Let&#8217;s talk about the control panel.. it&#8217;s pretty.  Pretty slow.  Pretty useless.  I need to backup my database (since they can&#8217;t migrate it properly), but the tool throws some .net exception on the webpage.  Customer support said &#8216;try Firefox&#8217;. Same error.</p>
<p>This is twice in 3 weeks I had to open a ticket for a buggy control panel that throws exceptions.</p>
<p>Lastly, I have a requirement to upload files.  So I have to set permissions.  They said &#8216;add a new user&#8217;.  I said &#8216;no this is the internet user&#8217; .  The old &#8216;ugly&#8217; control panel handled all this fine and perfectly.Â  The new tool&#8230; timed out.  The final ticket response was &#8216;use your FTP program to change permissions&#8217;.</p>
<p>I should add, I have lost 80% of my community. They were all very disapointed to find out the data was gone.Â  The forum they meet and talk and plan events was unusable.  The program I run can&#8217;t be run so the events can&#8217;t run.  I have to re-code the app now (it was given to me, no source code).</p>
<p>I&#8217;m writing this because as a consumer, I really feel I&#8217;ve been thrown and tossed around by a company that doesn&#8217;t respect a loyal customer.  Who must be too big now to value guys like me.  Back &#8216;in the day&#8217; I suspect they worked well with me because they were a good company.  Something has changed.</p>
<p>I highly suggest &#8211; don&#8217;t use Webhost4life.  You will regret it.</p>
<p>So, needless to say, I&#8217;m looking for a new host.  One of the things I liked about Webhost4life was that I could run my mysql blog and forum as well as my .net site.  It &#8216;was&#8217; easy to manage.  Secondly they don&#8217;t charge for bandwith usage.  I don&#8217;t use too much, but I had confort knowing the bill would always be the same amount.</p>
<p>Quite disapointing to me in a time where companies are susposedly struggling with the economy. I would think a shift would occur where they valued their customers.  Instead, I&#8217;m just another &#8216;policy&#8217; to them that pays a year in advance&#8230;</p>
<p style="color: #008; text-align: right;"><small><em>Powered by</em> <a href="http://www.qumana.com/">Qumana</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://blogger.forgottenskies.com/?feed=rss2&amp;p=594</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>ASP.NET MVC and Rails</title>
		<link>http://blogger.forgottenskies.com/?p=592</link>
		<comments>http://blogger.forgottenskies.com/?p=592#comments</comments>
		<pubDate>Wed, 28 Apr 2010 12:12:41 +0000</pubDate>
		<dc:creator>Steve Gentile</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[asp.net mvc]]></category>
		<category><![CDATA[rails]]></category>

		<guid isPermaLink="false">http://blogger.forgottenskies.com/?p=592</guid>
		<description><![CDATA[Not big post here, just a chance to recommend reading this blog post: http://anders.janmyr.com/2010/04/aspnet-mvc-vs-rails3.html I think he does a great job comparing the two in a positive way.]]></description>
			<content:encoded><![CDATA[<p>Not  big post here, just a chance to recommend reading this blog post:</p>
<p><a title="asp.net mvc and rails" href="http://anders.janmyr.com/2010/04/aspnet-mvc-vs-rails3.html">http://anders.janmyr.com/2010/04/aspnet-mvc-vs-rails3.html </a></p>
<p>I think he does a great job comparing the two in a positive way.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogger.forgottenskies.com/?feed=rss2&amp;p=592</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Windows 7 Series</title>
		<link>http://blogger.forgottenskies.com/?p=589</link>
		<comments>http://blogger.forgottenskies.com/?p=589#comments</comments>
		<pubDate>Wed, 21 Apr 2010 00:37:26 +0000</pubDate>
		<dc:creator>Steve Gentile</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blogger.forgottenskies.com/?p=589</guid>
		<description><![CDATA[I listened to a good podcast today of Petzold discussing Silverlight for the upcoming Windows phone. I must say, after listening to him talk I had some encouragement for the phone and the dev environment. I do think it was a fantastic decision to take the route of managed code with SL as the option. [...]]]></description>
			<content:encoded><![CDATA[<p>I listened to a good podcast today of Petzold discussing Silverlight for the upcoming Windows phone.</p>
<p>I must say, after listening to him talk I had some encouragement for the phone and the dev environment.</p>
<p>I do think it was a fantastic decision to take the route of managed code with SL as the option.</p>
<p>I can see great opportunities for companies to build phone enabled apps for their internal as well as outward facing clients.</p>
<p>I do think the market is saturated with iPhone, blackberry, android, etc phones &#8211; and I&#8217;m (sight unseen here) hoping that it does better than the Zune has.</p>
<p>With the latest iPhone announcements that are blocking devs from using anything outside of objective-c, c++, and c I was a bit discouraged (I want to see Monotouch succeed)</p>
]]></content:encoded>
			<wfw:commentRss>http://blogger.forgottenskies.com/?feed=rss2&amp;p=589</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
