<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss'><id>tag:blogger.com,1999:blog-33927904</id><updated>2010-02-26T17:21:42.533-08:00</updated><title type='text'>Software Development and Other Stuff</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://www.robkraft.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33927904/posts/default'/><link rel='alternate' type='text/html' href='http://www.robkraft.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Rob Kraft</name><uri>http://www.blogger.com/profile/10051438505206360186</uri><email>rpkraft@gmail.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>15</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-33927904.post-2910388775352728701</id><published>2010-01-27T08:50:00.000-08:00</published><updated>2010-01-27T09:05:32.218-08:00</updated><title type='text'>Business Primitives in Software Development</title><content type='html'>Great introduction to Business Primitives when designing your applications: &lt;div&gt;&lt;a href="http://codebetter.com/blogs/dru.sellers/archive/2010/01/27/business-primitives-1-2.aspx"&gt;http://codebetter.com/blogs/dru.sellers/archive/2010/01/27/business-primitives-1-2.aspx&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The basic premise is to not only get you speaking the language of the business, but to make your method signatures easier to understand. For example, in a financial application that has a pricing class you might see a method signature similar to the following:&lt;/div&gt;&lt;div&gt;double getPrice(String)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Without diving into the source or docs, it's not immediately clear what the parameter represents. It could be a ticker, it could be a CUSIP. By creating a single value primitive such as Ticker, the method signature becomes:&lt;/div&gt;&lt;div&gt;&lt;div&gt;double getPrice(Ticker)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33927904-2910388775352728701?l=www.robkraft.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.robkraft.com/feeds/2910388775352728701/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=33927904&amp;postID=2910388775352728701' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33927904/posts/default/2910388775352728701'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33927904/posts/default/2910388775352728701'/><link rel='alternate' type='text/html' href='http://www.robkraft.com/2010/01/business-primitives-in-software.html' title='Business Primitives in Software Development'/><author><name>Rob Kraft</name><uri>http://www.blogger.com/profile/10051438505206360186</uri><email>rpkraft@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='00208743701231913838'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-33927904.post-5093779629274546493</id><published>2010-01-13T08:43:00.000-08:00</published><updated>2010-01-13T08:54:25.730-08:00</updated><title type='text'>SQL Server 2008 on Windows 7 - Restart Required</title><content type='html'>An install of SQL Server 2008 on my new Windows 7 64-bit Pro setup was going great until I went to install SP1. The update check failed kept failing with Restart Required even I rebooted several times.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I decided to uninstall the 64-bit version of SQL Server and try the 32-bit version to see if the same issue is present. It may be but I couldn't even uninstall. Same error. Here how to fix: &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Open Regedit. &lt;/div&gt;&lt;div&gt;Navigate to HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager&lt;/div&gt;&lt;div&gt;Rename PendingFileRenameOperations to PendingFileRenameOperations2&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Don't restart. Proceed with the SP1 install or uninstall.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33927904-5093779629274546493?l=www.robkraft.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.robkraft.com/feeds/5093779629274546493/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=33927904&amp;postID=5093779629274546493' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33927904/posts/default/5093779629274546493'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33927904/posts/default/5093779629274546493'/><link rel='alternate' type='text/html' href='http://www.robkraft.com/2010/01/sql-server-2008-on-windows-7-reboot.html' title='SQL Server 2008 on Windows 7 - Restart Required'/><author><name>Rob Kraft</name><uri>http://www.blogger.com/profile/10051438505206360186</uri><email>rpkraft@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='00208743701231913838'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-33927904.post-6643256507382676302</id><published>2010-01-07T13:47:00.000-08:00</published><updated>2010-01-07T14:32:09.665-08:00</updated><title type='text'>Solving Errors with Netbeans Faces 2.0 CRUD Tutorial</title><content type='html'>Finally had some time to sit and go through what's new in Java EE 6. I opted for the latest Netbeans version 6.8 with the bundled Glassfish v3 app server. The quickest way to get started.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;There is a lot of good documentation available on-line as well as several tutorials exploring various feature of the new platform. The first that caught my eye was &lt;a href="http://netbeans.org/kb/docs/web/jsf20-crud.html"&gt;Generating a JavaServer Faces 2.0 CRUD Application from a Database&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The tutorial runs you through how to generate a lot of boilerplate code for a standard crud app in Netbeans that I was really excited to see, having been spoiled from what's available in VS in the .Net world. I came across a few minor issues preventing the sample app from fully working. If these errors look familiar, here's how to fix them.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The first results from trying to create or edit a Client:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="  ;font-family:'Trebuchet MS', Verdana, Arial, sans-serif;font-size:small;"&gt;&lt;h1 style="color: rgb(153, 0, 0); "&gt;An Error Occurred:&lt;/h1&gt;&lt;div id="error" class="grayBox" style="font-family: 'Trebuchet MS', Verdana, Arial, sans-serif; font-size: medium; padding-top: 8px; padding-right: 8px; padding-bottom: 8px; padding-left: 8px; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(153, 0, 0); border-right-color: rgb(153, 0, 0); border-bottom-color: rgb(153, 0, 0); border-left-color: rgb(153, 0, 0); background-color: rgb(249, 249, 249); color: rgb(153, 0, 0); font-weight: bold; "&gt;clientPK.clientName&lt;/div&gt;&lt;h2 style="font-size: large; color: rgb(51, 51, 153); "&gt;&lt;a href="http://localhost:8080/ConsultingAgency/faces/client/List.xhtml#" onclick="faceletstoggle('trace'); return false;" style="text-decoration: none; color: rgb(51, 51, 153); "&gt;&lt;span id="traceOn"   style="  color: rgb(51, 51, 153); display: inline; font-family:'Trebuchet MS', Verdana, Arial, sans-serif;font-size:large;"&gt;-&lt;/span&gt; Stack Trace&lt;/a&gt;&lt;/h2&gt;&lt;div id="trace" class="grayBox" style="font-family: 'Trebuchet MS', Verdana, Arial, sans-serif; font-size: small; padding-top: 8px; padding-right: 8px; padding-bottom: 8px; padding-left: 8px; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(204, 204, 204); border-right-color: rgb(204, 204, 204); border-bottom-color: rgb(204, 204, 204); border-left-color: rgb(204, 204, 204); background-color: rgb(249, 249, 249); display: block; "&gt;&lt;pre style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;code style="font-size: medium; "&gt;java.lang.IllegalArgumentException: clientPK.clientName&lt;/code&gt;&lt;/pre&gt;&lt;pre style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;...&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;This results from the string "clientPK.clientName being used in the id fields if h:inputText&lt;div&gt;&lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"&gt;h:inputtext id="&lt;span class="Apple-style-span"  style="color:#FF0000;"&gt;clientPK.clientName"&lt;/span&gt; value="#{clientController.selected.clientPK.clientName}" title="#{bundle.EditClientTitle_clientPK_clientName}" required="true" requiredMessage="#{bundle.EditClientRequiredMessage_clientPK_clientName}"/&gt;&lt;/p&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Change this id to clientName. Also change it in the line above in the h:outputLabel. Make similar changes for ClientDepartmentNumber in the same file. There is a similiar change required in project/Edit.xhtml and project/Create.xhtml for projectName&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This got me to the client create screen, but when trying to save, I was greeted with&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="  ;font-family:'Trebuchet MS', Verdana, Arial, sans-serif;font-size:small;"&gt;&lt;h1 style="color: rgb(153, 0, 0); "&gt;An Error Occurred:&lt;/h1&gt;&lt;div id="error" class="grayBox" style="font-family: 'Trebuchet MS', Verdana, Arial, sans-serif; font-size: medium; padding-top: 8px; padding-right: 8px; padding-bottom: 8px; padding-left: 8px; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(153, 0, 0); border-right-color: rgb(153, 0, 0); border-bottom-color: rgb(153, 0, 0); border-left-color: rgb(153, 0, 0); background-color: rgb(249, 249, 249); color: rgb(153, 0, 0); font-weight: bold; "&gt;/client/Create.xhtml @19,256 value="#{clientController.selected.clientPK.clientName}": Target Unreachable, 'null' returned null&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;The 'null' here is clientPK within the selected client entity in the client controller. The prepareCreate in the clientController creates a new Client but the contained clientPK remains null. I would typically check for this condition in the accessor and create the object if null, and actually still do. Looking at the generated code I found a constructor that takes a clientPK as a parameter, so simply changing the instantiation in clientController.prepareCreate to: &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;b&gt;current = new Client(new ClientPK());&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;took care of it.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Here is an excellent 3 part overview of what's new in Java EE 6:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;a href="http://java.sun.com/developer/technicalArticles/JavaEE/JavaEE6Overview.html"&gt;http://java.sun.com/developer/technicalArticles/JavaEE/JavaEE6Overview.html&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style=" ;font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33927904-6643256507382676302?l=www.robkraft.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.robkraft.com/feeds/6643256507382676302/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=33927904&amp;postID=6643256507382676302' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33927904/posts/default/6643256507382676302'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33927904/posts/default/6643256507382676302'/><link rel='alternate' type='text/html' href='http://www.robkraft.com/2010/01/solving-errors-with-netbeans-faces-20.html' title='Solving Errors with Netbeans Faces 2.0 CRUD Tutorial'/><author><name>Rob Kraft</name><uri>http://www.blogger.com/profile/10051438505206360186</uri><email>rpkraft@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='00208743701231913838'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-33927904.post-7407140550031025468</id><published>2009-08-15T08:12:00.000-07:00</published><updated>2009-08-15T09:06:40.525-07:00</updated><title type='text'>UI Design Is Not A Spec!</title><content type='html'>Came across another one of your typical articles from the "Design World", on how us developers are so difficult to work with, and just don't "get it"&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;http://www.smashingmagazine.com/2009/08/14/how-to-effectively-communicate-with-developers/&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now I have nothing against the author personally. I'm sure his design are fabulous. But judging from some of the comments, I would say most who call themselves designers are the ones who don't "get it". Project spec through UI design doesn't work. Period. No successful large project I have ever worked started with a designer handing over some pretty mockup while at the same time saying, "Here's what it needs to do." Give me a break. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;A good developer understands the entire project life cycle, including where the UI design fits in. A good developer will also not touch a project in which a designer insists they code to their UI, which is why I imagine the author has so many problems with developers that don't "get it".&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;At the same time, a good designer understands a UI mockup is no substitute for a functional spec. I admire the spirit of the article, but it's just all wrong.&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33927904-7407140550031025468?l=www.robkraft.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.robkraft.com/feeds/7407140550031025468/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=33927904&amp;postID=7407140550031025468' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33927904/posts/default/7407140550031025468'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33927904/posts/default/7407140550031025468'/><link rel='alternate' type='text/html' href='http://www.robkraft.com/2009/08/ui-design-is-not-spec.html' title='UI Design Is Not A Spec!'/><author><name>Rob Kraft</name><uri>http://www.blogger.com/profile/10051438505206360186</uri><email>rpkraft@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='00208743701231913838'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-33927904.post-8473218924029890893</id><published>2009-07-17T18:29:00.000-07:00</published><updated>2009-07-18T10:47:42.744-07:00</updated><title type='text'>Elance Hacked!</title><content type='html'>&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;Just got my copy of the email that's spreading around to eLancers. I'm assuming anyone and everyone out there with an eLance account will get it, because they apparently don't know exactly who was affected, or what was taken.&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;Curious though that they claim in the same email that "&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;This incident did NOT involve any credit card, bank account, social security or tax ID numbers"&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;How can that be eLance? Even if you have identified THIS breach, you security is obviously lacking and it's doubtful this is your only security hole. More likely it's your only known security hole.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style=" ;font-family:Georgia, -webkit-fantasy;"&gt; &lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33927904-8473218924029890893?l=www.robkraft.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.sterlingk.com/services.html' title='Elance Hacked!'/><link rel='replies' type='application/atom+xml' href='http://www.robkraft.com/feeds/8473218924029890893/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=33927904&amp;postID=8473218924029890893' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33927904/posts/default/8473218924029890893'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33927904/posts/default/8473218924029890893'/><link rel='alternate' type='text/html' href='http://www.robkraft.com/2009/07/elance-hacked.html' title='Elance Hacked!'/><author><name>Rob Kraft</name><uri>http://www.blogger.com/profile/10051438505206360186</uri><email>rpkraft@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='00208743701231913838'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-33927904.post-4148384224799313205</id><published>2009-07-09T15:34:00.000-07:00</published><updated>2009-07-09T15:48:12.512-07:00</updated><title type='text'>18M Website Redesign?</title><content type='html'>Your tax dollars hard at work again. $18,000,000 for a website? Check them zeros, yeah that's 18 MILLION!&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Since it appears that the company awarded the contract,  Smartronix, does not even do web development according to their own site, I guess they'll be outsourcing the work. Overseas I presume.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Hey Smartronix, if your looking for help pulling this off you can hire me, and each member of my team for only $18,000.oo per hour. We'll work full time on it for say um, 2 months? You'll still make a nice profit. What do you say?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33927904-4148384224799313205?l=www.robkraft.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://blogs.abcnews.com/thenote/2009/07/18m-being-spent-to-redesign-recoverygov-web-site.html' title='18M Website Redesign?'/><link rel='replies' type='application/atom+xml' href='http://www.robkraft.com/feeds/4148384224799313205/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=33927904&amp;postID=4148384224799313205' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33927904/posts/default/4148384224799313205'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33927904/posts/default/4148384224799313205'/><link rel='alternate' type='text/html' href='http://www.robkraft.com/2009/07/18m-website-redesign.html' title='18M Website Redesign?'/><author><name>Rob Kraft</name><uri>http://www.blogger.com/profile/10051438505206360186</uri><email>rpkraft@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='00208743701231913838'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-33927904.post-5124295565119347374</id><published>2009-07-08T17:55:00.000-07:00</published><updated>2009-07-08T18:05:53.792-07:00</updated><title type='text'>Google's Chrome OS</title><content type='html'>I say it's about time Google. I guess it took the rise of the netbook to finally make this happen. Web apps are and have been the future for how we interact with the world outside of the corporate cube.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It will be nice when that day comes that I don't have to endure a two minute boot of a PC just to get to google and check some stats.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I doubt though this will put Microsoft out of business. Competition will force them to adapt, like they always do when threatened. Look at the stagnation of IE 6 until Firefox threatened, then bam, IE7, IE 8 within what a year?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Maybe we'll finally get that lightweight Windows desktop OS they have been promising for like, ever. Competition is a good thing.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33927904-5124295565119347374?l=www.robkraft.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://googleblog.blogspot.com/2009/07/introducing-google-chrome-os.html' title='Google&apos;s Chrome OS'/><link rel='replies' type='application/atom+xml' href='http://www.robkraft.com/feeds/5124295565119347374/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=33927904&amp;postID=5124295565119347374' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33927904/posts/default/5124295565119347374'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33927904/posts/default/5124295565119347374'/><link rel='alternate' type='text/html' href='http://www.robkraft.com/2009/07/googles-chrome-os.html' title='Google&apos;s Chrome OS'/><author><name>Rob Kraft</name><uri>http://www.blogger.com/profile/10051438505206360186</uri><email>rpkraft@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='00208743701231913838'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-33927904.post-6248283563824245915</id><published>2009-06-06T14:57:00.000-07:00</published><updated>2009-06-06T15:17:41.162-07:00</updated><title type='text'>Spammers All Over Twitter Search</title><content type='html'>Where the web audience goes, so goes the spammers. It wasn't too difficult to see this coming. Spammers are taking advantage of Twitter's unfiltered, real-time search capability to push their wares. You can just imagine the affiliate boards fluttering with comments like these: "Dude, instant traffic, just put a hash tag from trending topics in your post!"&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I hope they do something about it. An annoyance today, twitter search will become useless real quick.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33927904-6248283563824245915?l=www.robkraft.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.robkraft.com/feeds/6248283563824245915/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=33927904&amp;postID=6248283563824245915' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33927904/posts/default/6248283563824245915'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33927904/posts/default/6248283563824245915'/><link rel='alternate' type='text/html' href='http://www.robkraft.com/2009/06/spammers-all-over-twitter-search.html' title='Spammers All Over Twitter Search'/><author><name>Rob Kraft</name><uri>http://www.blogger.com/profile/10051438505206360186</uri><email>rpkraft@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='00208743701231913838'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-33927904.post-3852782019225993181</id><published>2009-06-04T10:50:00.000-07:00</published><updated>2009-06-04T12:28:28.609-07:00</updated><title type='text'>ASP.NET for Java Developers</title><content type='html'>If it's been a while since you've taken a look at what's going on the asp universe, you may be quite surprised, in a good way. Whether your coming out of a corporate position or long term java assignment and looking to expand your marketability, or are currently fielding offers, you should seriously consider adding ASP.NET to your toolkit.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now I understand there will be many Java web devs out there that that will never consider any tools that come out if the evil empire for various reasons. I know, because I was one of them. I'm also NOT trying to convert anyone out there and I don't work for Microsoft so I have nothing to gain here.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;My philosophy has always centered around the best tool for the job, and by extension the best language. Successful developers with a few good size projects in production will tell you that language matters less than sound, software engineering practices do. This brings me to the ALT.NET movement.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Microsoft's early asp offerings have been criticized, and rightly so, for making it extremely difficult to implement the design patters we as Java devs have employed for years in our projects. But that has definitely changed over the past year or so thanks in part to this movement. The &lt;a href="http://altdotnet.org/"&gt;altdotnet.org&lt;/a&gt; website describes it best. "We are a self-organizing, ad-hoc community of developers bound by a desire to improve ourselves, challenge assumptions, and help each other pursue excellence in the practice of software development."&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Microsoft has listened, and I believe they do now "get it". Look no further than the ASP.NET MVC framework. This is huge. I'm in the middle of a good size project with it and it's working very well. Take it for a test drive. You may be surprised too! &lt;/div&gt;&lt;div&gt;&lt;a href="http://www.asp.net/mvc/"&gt;http://www.asp.net/mvc/&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33927904-3852782019225993181?l=www.robkraft.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.sterlingk.com/services.html' title='ASP.NET for Java Developers'/><link rel='replies' type='application/atom+xml' href='http://www.robkraft.com/feeds/3852782019225993181/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=33927904&amp;postID=3852782019225993181' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33927904/posts/default/3852782019225993181'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33927904/posts/default/3852782019225993181'/><link rel='alternate' type='text/html' href='http://www.robkraft.com/2009/06/aspnet-for-java-developers.html' title='ASP.NET for Java Developers'/><author><name>Rob Kraft</name><uri>http://www.blogger.com/profile/10051438505206360186</uri><email>rpkraft@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='00208743701231913838'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-33927904.post-8868578032228201321</id><published>2009-05-29T18:08:00.000-07:00</published><updated>2009-05-29T18:15:18.437-07:00</updated><title type='text'>Technorati</title><content type='html'>Casting my net.&lt;div&gt;&lt;span class="Apple-style-span"   style="  white-space: pre; font-family:'Helvetica Neue';font-size:11px;"&gt;&lt;a href="http://technorati.com/claim/3r3hwwbxhb" rel="me"&gt;Technorati Profile&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33927904-8868578032228201321?l=www.robkraft.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.robkraft.com/feeds/8868578032228201321/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=33927904&amp;postID=8868578032228201321' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33927904/posts/default/8868578032228201321'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33927904/posts/default/8868578032228201321'/><link rel='alternate' type='text/html' href='http://www.robkraft.com/2009/05/casting-my-net.html' title='Technorati'/><author><name>Rob Kraft</name><uri>http://www.blogger.com/profile/10051438505206360186</uri><email>rpkraft@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='00208743701231913838'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-33927904.post-660917080979688556</id><published>2009-05-01T17:25:00.000-07:00</published><updated>2009-05-01T17:47:00.854-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='seo'/><category scheme='http://www.blogger.com/atom/ns#' term='internet marketing keywords'/><title type='text'>SEO Tools</title><content type='html'>Looking to review some of the seo software out there. Most it seems have trial downloads available. Taking a stab at manual optimizing/link building/keyword requires a HUGE investment in ones time. No wonder the Pro's charge so much for their time.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It used to be that well written updated sites gradually climbed in the rankings organically. I'm sure it still happens, but it's near impossible to compete with the internet marketers out there. Relevant content is getting harder and harder to come by. It used to be that you could pretty much find what your looking for in the top 10 results. I now find myself regularly going 3-4 pages deep in search, because page 1 is dominated the internet marketers.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Even if you have a niche site, you will have a hard time competing. The marketers out there are constantly looking for non-competitive keywords, quickly throwing up a site with affiliate links all over it to make a few bucks.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;SEO is mandatory if you want any kind of search traffic at your site. It's no longer an option.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33927904-660917080979688556?l=www.robkraft.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.robkraft.com/feeds/660917080979688556/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=33927904&amp;postID=660917080979688556' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33927904/posts/default/660917080979688556'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33927904/posts/default/660917080979688556'/><link rel='alternate' type='text/html' href='http://www.robkraft.com/2009/05/seo-tools.html' title='SEO Tools'/><author><name>Rob Kraft</name><uri>http://www.blogger.com/profile/10051438505206360186</uri><email>rpkraft@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='00208743701231913838'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-33927904.post-7791684806663789327</id><published>2008-12-08T11:06:00.000-08:00</published><updated>2008-12-08T11:40:54.611-08:00</updated><title type='text'>Nullable object must have a value</title><content type='html'>Ah, another modern classic error message from our friends at Microsoft. This one courtesy of the nullable type in C# 2.0 &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This little gem pops up when you call the value method on a nullable, that has been set to null, which was the whole point of nullable in the first place. I get it, but why not just return null?&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;NullPointerException. As a java developer, the null pointer exception is one that you will see a lot. Sometimes by your own code errors sometimes not. I believe that when the original C# designers looked to make their java clone a better java, they looked to kill off the null pointer exception for good. This is why certain types like int and DateTime could not be set to null. Can't raise the exception if you can't set the value. Not necessarily a bad thing, but sometimes you just need a null. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So in version 2 on, they give in and give us the nullable type, sorta. I say sorta because you can't get a null back out of it (via Value) or get a meaningful exception in return. So why do it at all?&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33927904-7791684806663789327?l=www.robkraft.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.robkraft.com/feeds/7791684806663789327/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=33927904&amp;postID=7791684806663789327' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33927904/posts/default/7791684806663789327'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33927904/posts/default/7791684806663789327'/><link rel='alternate' type='text/html' href='http://www.robkraft.com/2008/12/nullable-object-must-have-value.html' title='Nullable object must have a value'/><author><name>Rob Kraft</name><uri>http://www.blogger.com/profile/10051438505206360186</uri><email>rpkraft@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='00208743701231913838'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-33927904.post-3133785534504646999</id><published>2008-05-21T12:04:00.000-07:00</published><updated>2008-05-21T12:10:36.439-07:00</updated><title type='text'>Virtual Servers</title><content type='html'>I have finally consolidated all development servers onto a single box, running the free VM-Ware Server. Works great but you do need to throw some fairly well specced out hardware at it.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I'm still messing with the individual VM configurations. The server is currently running a Core-2 Quad at 3GHZ, with 4GB Ram. Planning to move to 8GB soon.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33927904-3133785534504646999?l=www.robkraft.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.robkraft.com/feeds/3133785534504646999/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=33927904&amp;postID=3133785534504646999' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33927904/posts/default/3133785534504646999'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33927904/posts/default/3133785534504646999'/><link rel='alternate' type='text/html' href='http://www.robkraft.com/2008/05/virtual-servers.html' title='Virtual Servers'/><author><name>Rob Kraft</name><uri>http://www.blogger.com/profile/10051438505206360186</uri><email>rpkraft@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='00208743701231913838'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-33927904.post-5542872384907071013</id><published>2007-09-13T12:32:00.000-07:00</published><updated>2007-09-13T13:13:02.333-07:00</updated><title type='text'>Data bound Winforms and NULL</title><content type='html'>All I want is a null date ....&lt;br /&gt;&lt;br /&gt;It seems like a rather reasonable request. I have a date column in my database that allows null, and I have a text box bound to that column through a binding source. When my form loads and the date on the current record is null, the control displays nothing. Great, exactly what I expect.&lt;br /&gt;&lt;br /&gt;The problem comes when the the date on the current record is not null, and I want to delete it, or write null back to the database. You can't just blank out the text box, it won't validate. You are forced to enter a validate date, or that &lt;span style="font-weight: bold;"&gt;magic string&lt;/span&gt; that will in fact store your null.&lt;br /&gt;&lt;br /&gt;Where does the magic string come from? It's on the Advanced tab of the data binding properties for the control. So why can't no value for the Null Value field mean null? After all, no value displays when reading null from the db!&lt;br /&gt;&lt;br /&gt;It's these little puzzling things about data bound forms and controls that keeps me going back to my own data handling. Spending time looking for hacks and workarounds usually outweighs the time savings of a fully bound form. So I find myself with a bit of a hybrid approach, but it's messy.&lt;br /&gt;&lt;br /&gt;Alternatives? Not really, .NET is the only game in town for windows desktop apps.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33927904-5542872384907071013?l=www.robkraft.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.robkraft.com/feeds/5542872384907071013/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=33927904&amp;postID=5542872384907071013' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33927904/posts/default/5542872384907071013'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33927904/posts/default/5542872384907071013'/><link rel='alternate' type='text/html' href='http://www.robkraft.com/2007/09/data-bound-winforms-and-null.html' title='Data bound Winforms and NULL'/><author><name>Rob Kraft</name><uri>http://www.blogger.com/profile/10051438505206360186</uri><email>rpkraft@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='00208743701231913838'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-33927904.post-115955120335581899</id><published>2006-09-29T09:26:00.000-07:00</published><updated>2006-09-29T10:33:23.466-07:00</updated><title type='text'>Rob Kraft Who?</title><content type='html'>If you have somehow stumbled accross this little space, by accident or even on purpose, your probably asking yourself, Rob Kraft who?&lt;br /&gt;&lt;br /&gt;There are many Rob Krafts  out there on the web. &lt;span style="font-style: italic;"&gt;This&lt;/span&gt; Rob Kraft is a Software Developer and IT Consultant with &lt;a href="http://sterlingk.com"&gt;Sterling K, Inc.&lt;/a&gt; out of Las Vegas. And no, I don't work for the casinos. Ahh, life in Las Vegas. A topic I will undoubtedly touch on in the future. The good, the bad and the ugly.&lt;br /&gt;&lt;br /&gt;So who am I? Well I don't own the Patriots, I'm not a college professor and don't work in entertainment or the music industry. Just an average Joe trying to scratch a living while spending my time here on earth.&lt;br /&gt;&lt;br /&gt;What's the blog all about? I don't know. Don't really have a plan. We'll see where it goes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33927904-115955120335581899?l=www.robkraft.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.robkraft.com/feeds/115955120335581899/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=33927904&amp;postID=115955120335581899' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33927904/posts/default/115955120335581899'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33927904/posts/default/115955120335581899'/><link rel='alternate' type='text/html' href='http://www.robkraft.com/2006/09/rob-kraft-who.html' title='Rob Kraft Who?'/><author><name>Rob Kraft</name><uri>http://www.blogger.com/profile/10051438505206360186</uri><email>rpkraft@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='00208743701231913838'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry></feed>