<?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' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-1364000209177440505</id><updated>2011-12-01T08:48:23.652-05:00</updated><category term='AJUG'/><category term='clouds'/><category term='grails'/><category term='hibernate'/><category term='return of the ISV'/><category term='groovy'/><category term='AWSome Atlanta'/><category term='hdfs'/><category term='cascading'/><category term='hadoop'/><title type='text'>Chris' Tech</title><subtitle type='html'>My thoughts and opinions on technology and business</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://cmcurtintech.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1364000209177440505/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://cmcurtintech.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Chris Curtin</name><uri>http://www.blogger.com/profile/16829705475186604040</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>23</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1364000209177440505.post-7670911435626423981</id><published>2011-02-28T09:43:00.002-05:00</published><updated>2011-02-28T09:55:43.851-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hdfs'/><category scheme='http://www.blogger.com/atom/ns#' term='hadoop'/><title type='text'>Using the HDFS APIs without the hadoop main</title><content type='html'>I recently spent way too much time trying to run a simple Java application that uses the HDFS APIs to copy files into HDFS.&lt;br /&gt;&lt;br /&gt;While using these APIs works great from within an application launched via the 'hadoop' command line, building one that is called from a Java main() was more challenging. &lt;br /&gt;&lt;br /&gt;Why would I want to do this? Mainly because the process that looks for files, figures out where they should live in HDFS, selects from and updates an external database. Using Hibernate and Spring. But the Cascading application that uses the data in HDFS doesn't need Hibernate or Spring. So building a single Jar that supports both seemed overkill (and had its own issues with dependencies and final size of the jar)&lt;br /&gt;&lt;br /&gt;First challenge was figuring out what parts of the hadoop shell file to duplicate, since not everything was needed or welcome. Turns out the information is in two places &lt;install_dir&gt;/bin/hadoop-config.sh and &lt;install_dir&gt;/conf/hadoop-env.sh&lt;br /&gt;&lt;br /&gt;First try was to set $HADOOP_HOME and try '. $HADOOP_HOME/bin/hadoop-config.sh' in the script that calls my java main().&lt;br /&gt;&lt;br /&gt;Except this stepped on HADOOP_HOME for some reason. Turns out the hadoop-config.sh file is playing some games with the path used to call the script to figure out what to set HADOOP_HOME to. &lt;br /&gt;&lt;br /&gt;So calling '/opt/hadoop/bin/hadoop-config.sh' (note no '.' or shell variable!) set the path correctly.&lt;br /&gt;&lt;br /&gt;then you can use '. $HADOOP_HOME/conf/hadoop-env.sh'&lt;br /&gt;&lt;br /&gt;Finally, in your java classpath you need to set '$HADOOP_HOME/conf' before your classes.&lt;br /&gt;&lt;br /&gt;For example: java -classpath .:$HADOOP_HOME/conf:/mycode ...&lt;br /&gt;&lt;br /&gt;For the record, here is the error I was receiving that helped me find this:&lt;br /&gt;&lt;br /&gt;java.io.IOException: Mkdirs failed to create /my_dir/my_file&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1364000209177440505-7670911435626423981?l=cmcurtintech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cmcurtintech.blogspot.com/feeds/7670911435626423981/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1364000209177440505&amp;postID=7670911435626423981' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1364000209177440505/posts/default/7670911435626423981'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1364000209177440505/posts/default/7670911435626423981'/><link rel='alternate' type='text/html' href='http://cmcurtintech.blogspot.com/2011/02/using-hdfs-apis-without-hadoop-main.html' title='Using the HDFS APIs without the hadoop main'/><author><name>Chris Curtin</name><uri>http://www.blogger.com/profile/16829705475186604040</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1364000209177440505.post-3284751725586906935</id><published>2011-02-10T14:04:00.002-05:00</published><updated>2011-02-10T14:21:17.143-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hibernate'/><title type='text'>Tired of hibernate lazy load errors on collections?</title><content type='html'>I have a love/hate relationship with Hibernate (Spring w/Hibernate to be fair). It makes some things very, very easy and others so difficult or convoluted. &lt;br /&gt;&lt;br /&gt;For example, what should be trivial turns out to be a major pain:&lt;br /&gt;&lt;br /&gt;Have an Entity object that contains two child collections. For example&lt;br /&gt;&lt;br /&gt;@Entity&lt;br /&gt;public class Client implements Serializable {&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;@OneToMany(mappedBy = "client")&lt;br /&gt;private List&lt;User&gt; users;&lt;br /&gt;&lt;br /&gt;@OneToMany(mappedBy = "client")&lt;br /&gt;private List&lt;Sites&gt; sites;&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Where User and Sites are also simple @Entity classes. &lt;br /&gt;&lt;br /&gt;By default the access to these collections are Lazy Loaded. But when you want to access them both you run into problems. Setting both to 'eager' gets an error about too many buckets. Loading one Eager, then passing the object to a JSP for example, with get you the infamous:&lt;br /&gt;&lt;br /&gt;org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: ...Client.organizations, no session or session was closed&lt;br /&gt;&lt;br /&gt;(look on Google or StackOverflow for this error, there are no good solutions.)&lt;br /&gt;&lt;br /&gt;So the hack/workaround? Create a custom Find method on the DAO and EXPLICITLY tell Hibernate to load the collection.&lt;br /&gt;&lt;br /&gt;Note that using the collection directly in 'normal' code doesn't work since Spring/Hibernate/the compiler sees you aren't using the loaded collection and doesn't do the load.&lt;br /&gt;&lt;br /&gt;However this works:&lt;br /&gt;&lt;br /&gt;Hibernate.initialize(rtn.getOrganizations());&lt;br /&gt;&lt;br /&gt;after your default 'find' method returns.&lt;br /&gt;&lt;br /&gt;Details of how/why this works &lt;a href="http://docs.jboss.org/hibernate/stable/core/reference/en/html_single/#performance-fetching-initialization"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Even more bizarre, when debugging this, setting a breakpoint in the 'find' method everything works correctly. No breakpoint and you get the exception.&lt;br /&gt;&lt;br /&gt;(Thanks to Scott Mitchell for his help on pointing me to this solution.)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1364000209177440505-3284751725586906935?l=cmcurtintech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cmcurtintech.blogspot.com/feeds/3284751725586906935/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1364000209177440505&amp;postID=3284751725586906935' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1364000209177440505/posts/default/3284751725586906935'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1364000209177440505/posts/default/3284751725586906935'/><link rel='alternate' type='text/html' href='http://cmcurtintech.blogspot.com/2011/02/tired-of-hibernate-lazy-load-errors-on.html' title='Tired of hibernate lazy load errors on collections?'/><author><name>Chris Curtin</name><uri>http://www.blogger.com/profile/16829705475186604040</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1364000209177440505.post-298259918160567865</id><published>2010-08-24T10:50:00.003-04:00</published><updated>2010-08-24T10:56:55.906-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='groovy'/><title type='text'>Logging in Groovy shouldn't be this hard</title><content type='html'>Spent about 30 minutes this morning doing what should have been easy: logging from within my application.&lt;br /&gt;&lt;br /&gt;Groovy includes/wraps Log4j so I thought it would be easy. All the documentation I found suggested it would be easy.&lt;br /&gt;&lt;br /&gt;However all the examples left off one key thing: Defining the 'root' logger.&lt;br /&gt;&lt;br /&gt;So, in your Config.groovy, find the log4j section and add/uncomment:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-family:trebuchet ms;" &gt;  &lt;/span&gt;&lt;blockquote&gt;&lt;span style="font-style: italic;font-family:trebuchet ms;" &gt;appenders {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-family:trebuchet ms;" &gt;      console name:'stdout', layout:pattern(conversionPattern: '%c{2} %m%n')&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-family:trebuchet ms;" &gt;  }&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Then add below the standard error and warn items:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-family:trebuchet ms;" &gt;  &lt;/span&gt;&lt;blockquote&gt;&lt;span style="font-style: italic;font-family:trebuchet ms;" &gt;root {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-family:trebuchet ms;" &gt;    info 'console'&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-family:trebuchet ms;" &gt;  }&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Now in your code you can add 'log.info 'blah blah' and it will appear on the console. The 'appenders' section is where you can add your rolling file loggers for production.&lt;br /&gt;&lt;br /&gt;Here is what mine looks like:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;// log4j configuration&lt;br /&gt;log4j = {&lt;br /&gt; // Example of changing the log pattern for the default console&lt;br /&gt; // appender:&lt;br /&gt; //&lt;br /&gt; appenders {&lt;br /&gt;     console name:'stdout', layout:pattern(conversionPattern: '%c{2} %m%n')&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; error 'org.codehaus.groovy.grails.web.servlet',  //  controllers&lt;br /&gt;         'org.codehaus.groovy.grails.web.pages', //  GSP&lt;br /&gt;         'org.codehaus.groovy.grails.web.sitemesh', //  layouts&lt;br /&gt;         'org.codehaus.groovy.grails.web.mapping.filter', // URL mapping&lt;br /&gt;         'org.codehaus.groovy.grails.web.mapping', // URL mapping&lt;br /&gt;         'org.codehaus.groovy.grails.commons', // core / classloading&lt;br /&gt;         'org.codehaus.groovy.grails.plugins', // plugins&lt;br /&gt;         'org.codehaus.groovy.grails.orm.hibernate', // hibernate integration&lt;br /&gt;         'org.springframework',&lt;br /&gt;         'org.hibernate',&lt;br /&gt;         'net.sf.ehcache.hibernate'&lt;br /&gt;&lt;br /&gt; warn 'org.mortbay.log'&lt;br /&gt;&lt;br /&gt; root {&lt;br /&gt;   info 'console'&lt;br /&gt; }&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1364000209177440505-298259918160567865?l=cmcurtintech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cmcurtintech.blogspot.com/feeds/298259918160567865/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1364000209177440505&amp;postID=298259918160567865' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1364000209177440505/posts/default/298259918160567865'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1364000209177440505/posts/default/298259918160567865'/><link rel='alternate' type='text/html' href='http://cmcurtintech.blogspot.com/2010/08/logging-in-groovy-shouldnt-be-this-hard.html' title='Logging in Groovy shouldn&apos;t be this hard'/><author><name>Chris Curtin</name><uri>http://www.blogger.com/profile/16829705475186604040</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1364000209177440505.post-5140505270269143276</id><published>2010-06-14T15:32:00.002-04:00</published><updated>2010-06-14T15:39:40.199-04:00</updated><title type='text'>Grails keeps rebuilding classes</title><content type='html'>&lt;blockquote&gt;&lt;/blockquote&gt;I found an interesting problem today after replacing my laptop. My Grails 1.2.2 application that ran fine on Friday wasn't running today on 1.3.1 and the new machine.&lt;br /&gt;&lt;br /&gt;I thought it was a 1.3.1 issue, but it wasn't. Turns out that if you have a file under src/groovy NOT grails-app AND the filename isn't the name of a class within the file, Grails will keep rebuilding the source file and clearing the Tomcat cache.&lt;br /&gt;&lt;br /&gt;basically, I had a file 'GroupByCreator.groovy' which didn't have a class named "GroupByCreator" in it. For some reason IntelliJ doesn't complain and everything compiled correctly.&lt;br /&gt;&lt;br /&gt;Instead at runtime I kept getting:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;[groovyc] Compiling 1 source file to C:\Development\clouds\reportingui\target\classes&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;  [groovyc] Compiling 2 source files to C:\Development\clouds\reportingui\target\classes&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;   [delete] Deleting directory C:\Documents and Settings\ccurtin\.grails\1.3.1\projects\reportingui\tomcat&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;Running Grails application..&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Server running. Browse to http://localhost:8080/reportingui&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;  [groovyc] Compiling 1 source file to C:\Development\clouds\reportingui\target\classes&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;  [groovyc] Compiling 2 source files to C:\Development\clouds\reportingui\target\classes&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;   [delete] Deleting directory C:\Documents and Settings\ccurtin\.grails\1.3.1\projects\reportingui\tomcat&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;Running Grails application..&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Server running. Browse to http://localhost:8080/reportingui&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;To figure this out, I went to the \reportingui\target\classes directory and sorted by last modified time. From that it was obvious which classes were being rebuilt, just not why. Finally after looking at the name of the file and the classes (for a few hours Doh!) I figured it out.&lt;br /&gt;&lt;br /&gt;Arrgh.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1364000209177440505-5140505270269143276?l=cmcurtintech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cmcurtintech.blogspot.com/feeds/5140505270269143276/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1364000209177440505&amp;postID=5140505270269143276' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1364000209177440505/posts/default/5140505270269143276'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1364000209177440505/posts/default/5140505270269143276'/><link rel='alternate' type='text/html' href='http://cmcurtintech.blogspot.com/2010/06/grails-keeps-rebuilding-classes.html' title='Grails keeps rebuilding classes'/><author><name>Chris Curtin</name><uri>http://www.blogger.com/profile/16829705475186604040</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1364000209177440505.post-8032918259340914</id><published>2010-05-18T10:44:00.001-04:00</published><updated>2010-05-18T10:48:42.321-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='grails'/><title type='text'>GORM Criteria using child to parent relationship</title><content type='html'>I was surprised that I couldn’t find an example of this in any of the Grails and GORM docs or online examples.&lt;br /&gt;&lt;br /&gt;I want to find the names and number of occurrences of the CHILD in a 1 to many association based on an attribute in the parent.&lt;br /&gt;&lt;br /&gt;The domain classes are:&lt;br /&gt;&lt;br /&gt;class Parent {&lt;br /&gt;   static hasMany = [children:Child]&lt;br /&gt;   String firstname&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;class Child {&lt;br /&gt;  static belongsTo = [parent:Parent]&lt;br /&gt;  String name&lt;br /&gt;  &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;To find all the children and # of occurrences across ANY Parent where firstname is 'John':&lt;br /&gt;&lt;br /&gt;      def fName = 'John'&lt;br /&gt;      def children = Parent.withCriteria {&lt;br /&gt;        projections {&lt;br /&gt;          groupProperty 'name'&lt;br /&gt;          count 'id'&lt;br /&gt;        }&lt;br /&gt;        parent {&lt;br /&gt;          eq 'firstname', fName&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;      }&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1364000209177440505-8032918259340914?l=cmcurtintech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cmcurtintech.blogspot.com/feeds/8032918259340914/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1364000209177440505&amp;postID=8032918259340914' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1364000209177440505/posts/default/8032918259340914'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1364000209177440505/posts/default/8032918259340914'/><link rel='alternate' type='text/html' href='http://cmcurtintech.blogspot.com/2010/05/gorm-criteria-using-child-to-parent.html' title='GORM Criteria using child to parent relationship'/><author><name>Chris Curtin</name><uri>http://www.blogger.com/profile/16829705475186604040</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1364000209177440505.post-4899467950999093125</id><published>2010-03-10T12:54:00.002-05:00</published><updated>2010-03-10T13:01:31.209-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AWSome Atlanta'/><title type='text'>March 2010 AWSome Meeting - Cloud Security</title><content type='html'>Last night’s&lt;a href="http://www.meetup.com/awsomeatlanta/"&gt; AWSome Atlanta&lt;/a&gt; meeting was about Virtualization and Cloud Security topics. &lt;a href="http://www.taylorbanks.com/"&gt;Taylor Banks&lt;/a&gt; presented about 50 slides on the different things to pay attention to, first in a virtualized environment, then in a Cloud. He correctly pointed out that all the issues with virtualization are also present in a Cloud environment, so make sure you get them right the first time.&lt;br /&gt;&lt;br /&gt;Taylor was a good presenter, though I do wonder when he managed to get a breath in. He talked a lot, but he wasn’t rambling. He was noticeably excited and involved in the materials he was presenting.&lt;br /&gt;&lt;br /&gt;Very early on he presented an new acronym that I think I’ll start using : K.I.S.S.M.Y.A.S.S&lt;br /&gt;&lt;br /&gt;Meaning:&lt;br /&gt;Keep It Simple, Stupid Make Your Architecture Simpler to Secure&lt;br /&gt;&lt;br /&gt;Yes he mentioned it a few more times during the presentation.&lt;br /&gt;&lt;br /&gt;He also said something very profound: &lt;blockquote style="font-weight: bold;"&gt;Cloud Security is often more of a process than technology&lt;/blockquote&gt;Yes securing the servers and services is important, but aren’t you already doing that in your self-hosted environments? So Cloud Security is about making decisions about what data you are sharing, how important the data is, what formats you are protecting it in and who can access it.&lt;br /&gt;&lt;br /&gt;Taylor also took a few shots at the pundits around Cloud Security and did a pretty funny impression of a DBA. He had a comical routine about how giving two different DBAs identical SQL Server instances in a VM, but only telling one that it was a VM. You can guess what he was making fun of ;-)&lt;br /&gt;&lt;br /&gt;The presentation is &lt;a href="http://taylorbanks.com/preso/tday_030910.pdf"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Taylor’s twitter handle is @&lt;a href="http://twitter.com/taylorbanks/"&gt;TaylorBanks&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1364000209177440505-4899467950999093125?l=cmcurtintech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cmcurtintech.blogspot.com/feeds/4899467950999093125/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1364000209177440505&amp;postID=4899467950999093125' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1364000209177440505/posts/default/4899467950999093125'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1364000209177440505/posts/default/4899467950999093125'/><link rel='alternate' type='text/html' href='http://cmcurtintech.blogspot.com/2010/03/march-2010-awsome-meeting-cloud.html' title='March 2010 AWSome Meeting - Cloud Security'/><author><name>Chris Curtin</name><uri>http://www.blogger.com/profile/16829705475186604040</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1364000209177440505.post-3916314982718080714</id><published>2010-02-10T14:19:00.002-05:00</published><updated>2010-02-10T14:26:04.750-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AWSome Atlanta'/><title type='text'>AWSome Atlanta February 2010</title><content type='html'>Last night’s AWSome Atlanta meeting was one of the best attended that I can remember. The main topic was the Chef configuration management tool for computer infrastructures. The crowd was a mix of the ‘usual suspects’ and quite a few new faces.&lt;br /&gt;&lt;br /&gt;During the usual introduction from &lt;a href="http://www.johnmwillis.com/"&gt;John Willis&lt;/a&gt; we learned there were a number of consultants, end users and a few academics in the crowd. Probably half indicated they were starting to learn about Cloud Computing.&lt;br /&gt;&lt;br /&gt;Josh Timberman @jtimberman from &lt;a href="http://www.opscode.com/"&gt;Opscode &lt;/a&gt;presented about Chef, the concepts behind it and ways to use it in your environment. His presentation was good, but it took a few minutes to get a ‘big picture’ view of what he talked about. However once you understood the goal was to standup a new server (or upgrade an existing server) consistently the materials made a lot of sense.&lt;br /&gt;&lt;br /&gt;One of the more interesting things I learned about Chef is they are in beta of a SaaS version where they (Opscode) will host the Chef server which can then be reached via a client within EC2, Rackspace etc. or within your own environment. This is interesting because it removes the need to have a server hosted someplace other than the IaaS provider for the Chef cookbooks and recipes. (Thus no need for IT resources.)&lt;br /&gt;&lt;br /&gt;The 30 second overview of Chef: you create recipes and cookbooks for the applications and configurations you need to standup a server. So you can create an “apache 2, Tomcat 6, JDK 6.10 MySoftware 2.00” recipe that knows how to install and configure an exact copy of the environment you want. And do it repeatedly without any intervention or manual steps. (The full explanation took an hour, so there is a lot more to it though.)&lt;br /&gt;&lt;br /&gt;Very useful when you are in the cloud and spinning up new instances, but also useful in an internal environment when you need to bring up a new server due to hardware failure (or faster boxes!) or when you want to quickly deploy a new version of software.&lt;br /&gt;&lt;br /&gt;Consider building a new Chef recipe for the next release of your software. You create a new server, validate against QA then just change the configuration that defines the production locations/databases etc. No manual check lists, no forgetting about a new service or cron job.&lt;br /&gt;&lt;br /&gt;After Josh’s presentation we had about an hour of open discussion. Lots of topics, including EC2, where the cloud is going to impact business, my views on the &lt;a href="http://cmcurtintech.blogspot.com/2009/08/return-of-small-business-isv.html"&gt;return of the ISV&lt;/a&gt; and a short religious discussion on Ruby ;-) (Sorry Keith)&lt;br /&gt;&lt;br /&gt;I hope the new folks got enough out of the session to keep coming back.&lt;br /&gt;&lt;br /&gt;Opscode can be found &lt;a href="http://www.opscode.com/"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;AWSome Atlanta can be found &lt;a href="http://www.meetup.com/awsomeatlanta/"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1364000209177440505-3916314982718080714?l=cmcurtintech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cmcurtintech.blogspot.com/feeds/3916314982718080714/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1364000209177440505&amp;postID=3916314982718080714' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1364000209177440505/posts/default/3916314982718080714'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1364000209177440505/posts/default/3916314982718080714'/><link rel='alternate' type='text/html' href='http://cmcurtintech.blogspot.com/2010/02/awsome-atlanta-february-2010.html' title='AWSome Atlanta February 2010'/><author><name>Chris Curtin</name><uri>http://www.blogger.com/profile/16829705475186604040</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1364000209177440505.post-7928913863350751413</id><published>2010-01-28T10:03:00.001-05:00</published><updated>2010-01-28T10:07:47.217-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='groovy'/><title type='text'></title><content type='html'>In my last post I commented that sometimes “drinking the Kool Aid” is a bad thing. Here’s an example that bit me for a couple of hours this week.&lt;br /&gt;&lt;br /&gt;Groovy and Grails have done a lot to ‘make things work’ by expanding many of the core Java classes to remove the need for all the ‘work’ needed to get something to work. For example, database connections ‘just work’ and you don’t need tons of exception handling code or thinking about how to release them.&lt;br /&gt;&lt;br /&gt;Groovy also makes interacting with existing Java code trivial.&lt;br /&gt;&lt;br /&gt;However, the combination of the two leads to some problems. Consider my case. I wanted to upload a comma separated value (CSV) file in Grails, split the file apart and build objects from it. Pretty straight forward right? Done it many times in Java with Struts or GWT.&lt;br /&gt;&lt;br /&gt;Searching for examples also showed a number of ways to do it. I took the ‘approved’ version from the &lt;a href="http://www.grails.org/File+Upload"&gt;Grails site&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Searching for ‘groovy csv’ also showed a lot of examples, including the &lt;a href="http://www.coderanch.com/t/474374/Groovy/Groovy-Process-CSV-SQL"&gt;use of CSVReader&lt;/a&gt;, which I’ve used before. &lt;br /&gt;&lt;br /&gt;Putting the two examples together was trivial and took a few minutes to test and everything went perfect. Until I tried to upload the same file a second time to test the ‘update’ logic. I received an exception, because the file was locked on the host I couldn’t replace the ‘working’ copy.&lt;br /&gt;&lt;br /&gt;Turns out that CSVReader is a Java class with very specific lifecycle steps that hadn’t been ‘groovy-fied’ yet. So while Groovy handled all the exception framework, collection logic etc, it didn’t know to close the CSVReader at the end.   I added the explicit close() on CSVReader object and things work now.&lt;br /&gt;&lt;br /&gt;I was (am?) trying to learn the Groovy paradigm, not just the language so I’m deliberately not  writing ‘java in Groovy’. So I didn’t look at exceptions or lifecycle events since for a lot of other ‘common’ thinks Groovy just works. I’ll pay a little more attention to lifecycle from now on.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1364000209177440505-7928913863350751413?l=cmcurtintech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cmcurtintech.blogspot.com/feeds/7928913863350751413/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1364000209177440505&amp;postID=7928913863350751413' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1364000209177440505/posts/default/7928913863350751413'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1364000209177440505/posts/default/7928913863350751413'/><link rel='alternate' type='text/html' href='http://cmcurtintech.blogspot.com/2010/01/in-my-last-post-i-commented-that.html' title=''/><author><name>Chris Curtin</name><uri>http://www.blogger.com/profile/16829705475186604040</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1364000209177440505.post-5258290923897044470</id><published>2010-01-26T10:18:00.002-05:00</published><updated>2010-01-26T10:27:00.773-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='grails'/><category scheme='http://www.blogger.com/atom/ns#' term='groovy'/><title type='text'></title><content type='html'>This is the first of hopefully several posts about my experiences and frustrations learning Groovy and Grails. I’ve been programming for over 20 years and have seen a lot of techniques, technologies and tools that claim to make a developer more productive. Many did make you more productive. Some did until you needed to modify the code a year later, or modify someone else’s code. So I’m pretty skeptical about all the claims from fan boys about any technology.&lt;br /&gt;&lt;br /&gt;So with the hype around dynamic languages including Ruby and Groovy, I started looking into how useful they could be. For the record, when Bruce Tate talked about ruby at &lt;a href="http://www.ajug.org/"&gt;AJUG&lt;/a&gt; in August 2005 I was both skeptical and annoyed with what he was presenting. As a ‘fan boy’ he could see nothing wrong with Ruby or the impact it would have on a production system. In particular we got into a mini-debate about real costs of running a production server vs. benefits of Rails for faster development based on the runtime performance back then. &lt;br /&gt;&lt;br /&gt;In November 2009, Pratik Patel did a Grails and &lt;a href="http://www.nofluffjuststuff.com/blog/pratik_patel/2009/11/grails_was_so_electric_it_brought_down_the_power_grid"&gt;Groovy presentation to AJUG&lt;/a&gt;, which was right after my &lt;a href="http://cmcurtintech.blogspot.com/2010/01/video-of-my-nosql-east-presentation.html"&gt;NOSQL East&lt;/a&gt; presentation where I was asked why I don’t use Groovy instead of Java for my applications. Pratik’s presentation got me thinking more about Groovy and researching the differences and benefits from the Java world I’ve been working in for over 9 years now.&lt;br /&gt;&lt;br /&gt;So, I’ve started my first Goovy/Grails project. I’ve been doing it part time for a couple of weeks and have some initial impressions.&lt;br /&gt;&lt;br /&gt;Pros&lt;br /&gt;&lt;ul&gt;&lt;li&gt;GORM for ORM hides a lot of the data tier and is pretty straightforward, especially if you’ve ever fought with understanding Hibernate. Some of the bizarre things are still there, but for the most part it understandable&lt;/li&gt;&lt;li&gt;Auto creation of the UI and the scaffolding in Grails is impressive. After years of screwing up Struts and Tiles configurations and having no idea why, this is cool&lt;/li&gt;&lt;li&gt;Being able to call down to Java as needed. I have  A LOT of helper code and business logic that I don’t want to rewrite&lt;/li&gt;&lt;li&gt;‘duck typing’ &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Cons&lt;br /&gt;&lt;ul&gt;&lt;li&gt;GORM. It took me most of a week and a lot of trial and error to figure out how to return certain fields from a multiple table query in a reporting interface without dropping into HSQL. (Yes, I plan on writing a post about this soon)&lt;/li&gt;&lt;li&gt;Dynamic language support in tools. I use IntelliJ which is supposed to have the best Groovy/Grails support and it still sucks. I don’t want to wait until runtime to find out that I spelt a parameter name wrong. Or that a variable name is reserved word in Groovy (Category anyone?)&lt;/li&gt;&lt;li&gt;Real examples. The &lt;a href="http://www.ibm.com/developerworks/views/java/libraryview.jsp?site_id=1&amp;amp;contentarea_by=Java&amp;amp;sort_by=Date&amp;amp;sort_order=2&amp;amp;start=1&amp;amp;end=19&amp;amp;topic_by=&amp;amp;product_by=&amp;amp;type_by=All%20Types&amp;amp;show_abstract=true&amp;amp;search_by=mastering%20grails"&gt;IBM series&lt;/a&gt; is pretty good, but I spent a lot of time banging my head on file uploads and GORM beyond the basics.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Are some of the ‘features’ really a step back? Naming parameters on method calls has been available since PL/1 (at least) and has always been a criticized as too verbose. It just 'feels' wrong to be using them&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;The biggest negative so far is drinking too much of the Kool Aid ;-) Grails/Groovy makes some things so simple that when you get outside what they’ve “groovy-fied” you need to think again like a Java programmer. I’ll give an example of this in my next post.&lt;br /&gt;&lt;br /&gt;So far though I’m impressed with the language and the ease of doing things.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1364000209177440505-5258290923897044470?l=cmcurtintech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cmcurtintech.blogspot.com/feeds/5258290923897044470/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1364000209177440505&amp;postID=5258290923897044470' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1364000209177440505/posts/default/5258290923897044470'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1364000209177440505/posts/default/5258290923897044470'/><link rel='alternate' type='text/html' href='http://cmcurtintech.blogspot.com/2010/01/this-is-first-of-hopefully-several.html' title=''/><author><name>Chris Curtin</name><uri>http://www.blogger.com/profile/16829705475186604040</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1364000209177440505.post-5454799109950645078</id><published>2010-01-11T15:45:00.002-05:00</published><updated>2010-01-11T15:48:29.710-05:00</updated><title type='text'>Video of my NoSQL East presentation</title><content type='html'>Here is the &lt;a href="https://nosqleast.com/2009/#speaker/curtin"&gt;video &lt;/a&gt;from my NoSQL East presentation from last fall.&lt;br /&gt;&lt;br /&gt;You can't hear the questions at the end so my answers sound strange ;-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1364000209177440505-5454799109950645078?l=cmcurtintech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cmcurtintech.blogspot.com/feeds/5454799109950645078/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1364000209177440505&amp;postID=5454799109950645078' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1364000209177440505/posts/default/5454799109950645078'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1364000209177440505/posts/default/5454799109950645078'/><link rel='alternate' type='text/html' href='http://cmcurtintech.blogspot.com/2010/01/video-of-my-nosql-east-presentation.html' title='Video of my NoSQL East presentation'/><author><name>Chris Curtin</name><uri>http://www.blogger.com/profile/16829705475186604040</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1364000209177440505.post-1369171190070200379</id><published>2009-11-19T11:42:00.002-05:00</published><updated>2009-11-19T11:47:04.858-05:00</updated><title type='text'>Advice for a college Freshman</title><content type='html'>My post about what you'd t&lt;a href="http://cmcurtintech.blogspot.com/2009/11/what-would-you-teach-15-year-old.html"&gt;each a 15 year old&lt;/a&gt; reminded me of a blog post I have been meaning to write since September. One of the message boards I frequent, &lt;a href="http://www.svtperformance.com/"&gt;SVT Performance&lt;/a&gt; had a thread about advice for engineers. Initially it was targeted at women written by an ME, but turned into some good advice for anyone in college. Sorry I can’t deep link to the posting but it is in 'road side'.&lt;br /&gt;&lt;br /&gt;I added a few comments, but I have thought more about it so here goes:&lt;br /&gt;&lt;br /&gt;Here is my advice to a freshman today in a technical field.&lt;br /&gt;&lt;br /&gt;Ask for help. Join study groups. Don’t be afraid of getting to know your peers. You may have been the smartest person in your high school, but there are going to be people better than you in some subject and you better than others in a different one. Get to know your peers so you can help each other. Figure out who are the good people that help others and who are just leaching from the group because they are in over their heads. The guy who kicks ass in Calculus and helps you may struggle in Fluid Dynamics or Data Algorithms were you shine.&lt;br /&gt;&lt;br /&gt;Get an internship/co-op as soon as possible. Even as a freshman. Here is one of the last times that you can use your parents and family and not be accused of nepotism. Ask everyone you know if they know anyone in the field you are interested in. Talk to them about summer jobs or co-ops. Of course work through your school’s placement and co-op departments, but sometimes a friend of a friend knows about better positions.&lt;br /&gt;&lt;br /&gt;In your internship, make sure the people you work with know who you are. They are going to expect you to ask lots of questions, not know much and even make mistakes. Don’t be the ‘kid’ that no one remembers because you sat in the corner. Here is a chance to introduce yourself to a lot of people in the industry you are interested in. Unlike the rest of the world, these are people you DO have something in common with, so don’t feel awkward about your intelligence or interests. I’ll bet they have felt the same way!&lt;br /&gt;&lt;br /&gt;Get a Linked In profile. Yes, I know Facebook is cool (I have one too), but Linked In is where professional people keep track of their networks. It is very rare to hear of someone removing a professional contact in Linked In. Why? Because the network is valuable for years after you’ve stopped working with someone or at a specific job. Being able to search on ‘who works where I am interviewing’ is powerful, but so is asking (or someone asking about you) ‘this would be a great job for Jill, I wonder what she is up to’ AND being able to find them.&lt;br /&gt;&lt;br /&gt;Now this doesn’t mean you ask everyone you meet in your internship to be a contact. Instead wait until a couple of weeks BEFORE your internship ends for the semester and ask the people you’ve worked best with for contacts. This isn’t Facebook so you don’t ask everyone. &lt;br /&gt;&lt;br /&gt;As you get to know your peers, invite them to Linked In as well. Not the leaches, but the people who genuinely are good at what they do and are people you’d like work with some day. The reason here is the same as above: these are people who are going to be in your industry one day. They are going to be looking for jobs one day or might be able to help you. They may also have the solution to a problem you have (or vice versa). By maintaining the relationship  you have at least one way to find them (or them find you) when the time comes.&lt;br /&gt;&lt;br /&gt;Again, don’t add everyone in your class. Only add the people you think you’d want to work with. A plus to having a medium sized college network with a small to medium sized professional network is when the hiring manager looks at your profile, they see real professionals AND peers, which tells them a lot about you.&lt;br /&gt;&lt;br /&gt;Finally, update your Linked In profile at the beginning and end of each semester at a minimum. As  you get closer to graduation the profile and resume should reflect your internships instead of your classes. Update your status regularly about what you are working on. For example, having a status of ‘taking thermo 313 this quarter’ or ‘loved the lecture on np-completeness’ may get people in your network to think of you and reply. This again keeps you in their thoughts.&lt;br /&gt;&lt;br /&gt;This isn’t one way. By regularly checking your network you can also see where you could offer help to a peer or a contact. You will be surprised by how many people post about job openings. You may not qualify (or be looking), but the guy that helped you with Calculus might be. By putting them together you help all three of you.&lt;br /&gt;&lt;br /&gt;One more thing: don’t cross professional networks and Facebook. While it is tempting to friend someone from your internship, you are in college and you are allowed some stupid things, but don’t let non-friends find out!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1364000209177440505-1369171190070200379?l=cmcurtintech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cmcurtintech.blogspot.com/feeds/1369171190070200379/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1364000209177440505&amp;postID=1369171190070200379' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1364000209177440505/posts/default/1369171190070200379'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1364000209177440505/posts/default/1369171190070200379'/><link rel='alternate' type='text/html' href='http://cmcurtintech.blogspot.com/2009/11/advice-for-college-freshman.html' title='Advice for a college Freshman'/><author><name>Chris Curtin</name><uri>http://www.blogger.com/profile/16829705475186604040</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1364000209177440505.post-2684671491829232404</id><published>2009-11-18T09:28:00.002-05:00</published><updated>2009-11-18T09:35:20.495-05:00</updated><title type='text'>What would you teach a 15 year old interested in technology?</title><content type='html'>At last night’s &lt;a href="http://www.ajug.org"&gt;AJUG &lt;/a&gt;meeting Burr asked the group a couple of questions about technologies needed today to be hired directly onto a team. The question morphed a little into ‘what would you tell a 15 year old to learn’ if they wanted to be in technology. That question got things going in a different direction with a lot of good feedback.&lt;br /&gt;&lt;br /&gt;This post is about my thoughts on this, since I have a 15 year old, although one that isn’t interested in being a programmer.&lt;br /&gt;&lt;br /&gt;First would be to learn how to think. I know that sounds strange, but learn how to take data and ask questions or given a problem think about how to solve it. Even when I was in elementary school 30+ years ago, a lot of what we learned was how to apply the processes and algorithms we were taught to the examples/questions we were given. Not, given this poorly defined problem, figure out how to solve it with your full knowledge, not just what the teacher gave you yesterday. Think of it as the difference between geometry on calculating the angle on a graph and assembling a Lego house without instructions.&lt;br /&gt;&lt;br /&gt;How do you teach someone to think? Unfortunately I don’t really know. With 3 kids I see that each of them learns differently and the processes I use to help each learn something is different. My only advice on learning how to think: has them questions that aren’t what the teacher taught them in the same area, or ask a different set of questions from what the homework asked. For example, Courtney is working on European history during the colonization times. The expected answer about why the Europeans wanted colonies (from the book) didn’t include the greed factor. And the arrogance factor. So I pushed her to think like the King or Queen during that time and see what you’d want. While she was able to give the 'book' answer, she is also learning to think in someone else shoes.&lt;br /&gt;&lt;br /&gt;Back to technology. Thinking about technology, I think learning any language that is ‘backend’ focused isn’t a good place to start. Java, C, Groovy, Ruby, C++, Perl and non-UI languages won’t interest the kids. Instead pair them with something that shows immediate usefulness. So use Grails or Ruby on Rails or even GWT. Get them working on making something they can see and show off.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;When I learned to program, most people didn’t interact with computers each day, so showing a green-screen output from the Fortran or C I was writing to my peers or parents was novel and unique. Today, everyone knows the web and a browser so showing them a text output isn’t going to get the response the programmer needs as encouragement to continue. Show someone a web page you built and I’ll bet most kids will get ‘wow, I wish I could do that’ as a response.&lt;br /&gt;&lt;br /&gt;Once they have a basic language under their belts, look at the Platform as a Service cloud systems like Microsoft’s Azure, Google’s AppEngine or even Force.com. Why? Because I believe these platforms are going to be where a lot of the jobs are will be in the future. Whether it is a startup taking an idea that MAY require greater scale later, but not today, or the IT developer putting together applications for departments to address specific business problems, these platforms are going to make it easy to deploy solutions fast, instead of waiting on hardware purchases. Of course the &lt;a href="http://cmcurtintech.blogspot.com/2009/08/return-of-small-business-isv.html"&gt;whole ISV space is going to make a comeback&lt;/a&gt; because of these technologies.&lt;br /&gt;&lt;br /&gt;Finally, encourage the kids to get out of the house and play. Build things like go-carts and bird houses. Learn to cook, even if using a recipe from a big cook book (Better is a hand written card from Grandma) Encourage them to take things apart to see how they work. The digital world makes this hard, but what about their bike, scooter or &lt;a href="http://84caprirs.blogspot.com/"&gt;old rusted car&lt;/a&gt; sitting in the garage?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1364000209177440505-2684671491829232404?l=cmcurtintech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cmcurtintech.blogspot.com/feeds/2684671491829232404/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1364000209177440505&amp;postID=2684671491829232404' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1364000209177440505/posts/default/2684671491829232404'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1364000209177440505/posts/default/2684671491829232404'/><link rel='alternate' type='text/html' href='http://cmcurtintech.blogspot.com/2009/11/what-would-you-teach-15-year-old.html' title='What would you teach a 15 year old interested in technology?'/><author><name>Chris Curtin</name><uri>http://www.blogger.com/profile/16829705475186604040</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1364000209177440505.post-3784566315690165721</id><published>2009-11-02T14:27:00.003-05:00</published><updated>2009-11-02T14:29:02.339-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AWSome Atlanta'/><title type='text'>ControlTier Presentation At AWSome Atlanta</title><content type='html'>A co-worker of mine presented about how we are using ControlTier at AWSome Atlanta.&lt;br /&gt;&lt;br /&gt;I missed the presentation due to a softball tournament for my daughter, but heard it was great. Watching/Listening to the video I have to agree!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.johnmwillis.com/controltier/controltier-automated-provisioning-and-deployment/"&gt;AWSome Atlanta ControlTier Demo&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1364000209177440505-3784566315690165721?l=cmcurtintech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cmcurtintech.blogspot.com/feeds/3784566315690165721/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1364000209177440505&amp;postID=3784566315690165721' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1364000209177440505/posts/default/3784566315690165721'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1364000209177440505/posts/default/3784566315690165721'/><link rel='alternate' type='text/html' href='http://cmcurtintech.blogspot.com/2009/11/controltier-presentation-at-awsome.html' title='ControlTier Presentation At AWSome Atlanta'/><author><name>Chris Curtin</name><uri>http://www.blogger.com/profile/16829705475186604040</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1364000209177440505.post-5432893797307856954</id><published>2009-08-23T20:46:00.002-04:00</published><updated>2009-08-23T21:08:25.666-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='return of the ISV'/><category scheme='http://www.blogger.com/atom/ns#' term='clouds'/><title type='text'>The return of the small business ISV?</title><content type='html'>I've been doing a lot of research and thinking about Clouds lately. I know, Clouds is an overused and abused term, but the more I thought about the business uses of a cloud and less about the technology, one thing kept sticking in my mind: the ISV is coming back.&lt;br /&gt;&lt;br /&gt;For those around during the rise of the MIS/IT department, business groups used to get what they needed done using computers by hiring a one or few person shop to build software to their exact needed. Ask most 40+ year old developers (and Directors and VPs!) and you'll find that they cut their teeth writing custom code for everything from TRS-80's and HP-1000's to VisiCalc and dBase to sell to small businesses or to larger businesses that didn't have IT yet.&lt;br /&gt;&lt;br /&gt;See, before MIS/IT put a clamp down on all non-'approved' applications, it wasn't unusual for a business person who 'knew a computer guy' to hire him (or her, even in those days!) to do exactly what they wanted. So a dBase application to run HR or the dentist office or to handle commissions. In the 80's and 90's I heard a lot of 'so Bob from my Church group did this for us'.&lt;br /&gt;&lt;br /&gt;As MIS/IT took control, these small ISVs were starved out by bigger consulting agencies that the IT guys had relationships with (there is a lot more to the decline of the ISV, but I won't get into it today.). Today in most organizations it is impossible to get an application build and installed for a department without IT involvement.&lt;br /&gt;&lt;br /&gt;The main reason departments don't do (much) outside work is they don't have any place to run it. With desktops locked down and networks monitored a department couldn't just install an application on a machine bought at Best Buy for their use. I'll talk about all the Access applications that sprung up because of this in a minute.&lt;br /&gt;&lt;br /&gt;Now Software as a Service (SaaS) has started to whittle away at this reliance on IT since the apps aren't deployed locally and pretty much all IT sees is the HTTP traffic.&lt;br /&gt;&lt;br /&gt;Yes, an department head could get a Rackspace account and run their own hardware, but that is really pushing the box even for someone likes sales (just kidding.) It would also mean they need OS help, which wasn't that easy to come by.&lt;br /&gt;&lt;br /&gt;Things are changing though. Take a look at Microsoft's Azure or Google's AppEngine (or the dozen or more similar systems for PHP, Ruby, Java etc.). Here the applications are running inside a container. Containers with well define interfaces with tons of information on the web about how to access them. Containers without any OS access, so you don't need to know Windows, Linux, Tomcat, IIS etc.&lt;br /&gt;&lt;br /&gt;Unlike SaaS which typically requires a contract that involves the legal department, Azure and AppEngine can be paid for with a credit card. It wouldn't be a stretch that soon business people are going to 'know a computer guy' who can build apps in these containers. For very little money. Like the kind of money a department manager or director has signing authority over.&lt;br /&gt;&lt;br /&gt;Remember those Access databases I talked about a minute ago? Well most of them came out because the business people used Access in school or their interns did and Access is a typical part of Office. So tons of simple (and eventually not-so simple) applications are built with Access, under IT's nose.&lt;br /&gt;&lt;br /&gt;What do you think the interns are learning in school now? Not Access so much, but Big Table in AppEngine or SQL Server in Azure. Soon those 'hidden' applications are going to be deployed in the cloud instead of local machines.&lt;br /&gt;&lt;br /&gt;So why do I think the small business ISV is coming back? How many business users have problems that could be solved by a small application. One that they'd pay $2000 or $3000 for? How many would be able to hide that amount from IT and the CFO?&lt;br /&gt;&lt;br /&gt;Who do you think she'd get for $3000 to build a basic app? Not the big consulting companies, probably not even the local ones IT uses. It will be back to individual developers who will do it at night and over the weekend.&lt;br /&gt;&lt;br /&gt;That guy you know from Church.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1364000209177440505-5432893797307856954?l=cmcurtintech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cmcurtintech.blogspot.com/feeds/5432893797307856954/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1364000209177440505&amp;postID=5432893797307856954' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1364000209177440505/posts/default/5432893797307856954'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1364000209177440505/posts/default/5432893797307856954'/><link rel='alternate' type='text/html' href='http://cmcurtintech.blogspot.com/2009/08/return-of-small-business-isv.html' title='The return of the small business ISV?'/><author><name>Chris Curtin</name><uri>http://www.blogger.com/profile/16829705475186604040</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1364000209177440505.post-6139359547159759299</id><published>2009-07-23T21:01:00.003-04:00</published><updated>2009-07-23T21:03:48.870-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AJUG'/><category scheme='http://www.blogger.com/atom/ns#' term='cascading'/><category scheme='http://www.blogger.com/atom/ns#' term='hadoop'/><title type='text'>Hadoop and Cascading presentation for AJUG July 2009</title><content type='html'>This week I presented about &lt;a href="http://hadoop.apache.org/"&gt;Hadoop &lt;/a&gt;and &lt;a href="www.cascading.org"&gt;Cascading &lt;/a&gt;for the &lt;a href="http://www.ajug.org"&gt;Atlanta Java Users Group&lt;/a&gt;. It was the first time I've presented to a group this big, but I think it went well.&lt;br /&gt;&lt;br /&gt;Here is a link to my &lt;a href="http://www.slideshare.com/chriscurtin"&gt;slides&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Here is a link to the &lt;a href="http://www.johnmwillis.com/ec2/hadoop-and-cascading-ajug-072109/"&gt;video&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1364000209177440505-6139359547159759299?l=cmcurtintech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cmcurtintech.blogspot.com/feeds/6139359547159759299/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1364000209177440505&amp;postID=6139359547159759299' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1364000209177440505/posts/default/6139359547159759299'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1364000209177440505/posts/default/6139359547159759299'/><link rel='alternate' type='text/html' href='http://cmcurtintech.blogspot.com/2009/07/hadoop-and-cascading-presentation-for.html' title='Hadoop and Cascading presentation for AJUG July 2009'/><author><name>Chris Curtin</name><uri>http://www.blogger.com/profile/16829705475186604040</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1364000209177440505.post-3001528975131311667</id><published>2008-10-28T11:14:00.001-04:00</published><updated>2008-10-28T11:16:12.664-04:00</updated><title type='text'>Jeff Sutherland at Agile Atlanta</title><content type='html'>Last night I attended the &lt;a href="http://www.agileatlanta.org/"&gt;Agile Atlanta&lt;/a&gt; meeting last night where Jeff Sutherland, co-creator of Scrum, presented his experience with distributed teams and Scrum. He was a really impressive presenter.&lt;br /&gt;&lt;br /&gt;The general idea of his presentation was that distributed teams should be working on integrated Scrum teams instead of isolated. He presented a number of cases where the teams had 'local' resources with the Product Owners and 'remote' resources elsewhere. For example one company built a scrum team of 4 engineers, with 2 in Denmark and 2 in India. Initially they all were together in Denmark for 2 sprints, then they broke them up. Jeff claimed that the velocity and quality of the team from the 2 sprints 'together' was continued when they were separated.&lt;br /&gt;&lt;br /&gt;His reasoning was that because the team had started together, knew (and to some extent trusted) each other and were using the same tools they continued the same velocity when they changed location. He also said that the team had a shared sense of urgency about what they were trying to accomplish and the remote team knew the product owner and what he was trying to accomplish instead of him being a voice on the phone. He showed their velocity over a dozen or so sprints and pointed out a couple of anomalies, including one major one where the velocity took a nose dive. They found that it was the culture of the Indians, where the junior members (they now had 8 total members) were waiting on the senior engineer to tell them what to do. Once the team understood this, the team made the senior engineer the scrum master and told him to fix his velocity problem.&lt;br /&gt;&lt;br /&gt;He also presented a number of cases where non-integrated distributed teams (both outsourcing and different offices) didn't provide anywhere near the same velocity as the co-mingled teams, as he admitted, contradicting all the Agile best practices of putting the teams in the same room. He presented that this was due to the silo building that went on with these teams since they had different priorities and sense of urgency.&lt;br /&gt;&lt;br /&gt;He also had a great comment to someone asking about the lone expert who is the only one who knows how to do something: he advises his teams to not commit to anything where there is only one person who can perform the task. if they find a task that only one person knows how to do (he used the example of a deployment configuration manager at one of his clients), then the sprint should stop and the team immediately begin cross training.&lt;br /&gt;&lt;br /&gt;The main presentation is &lt;a href="http://blog.xebia.com/wp-content/uploads/2008/08/fully-distributed-scrum-sutherlandxebia-agile2008.pdf"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;A posting about one of the teams he worked with is &lt;a href="http://jeffsutherland.com/scrum/2006/06/distributed-scrum-agile-project.html"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;A paper about the findings is &lt;a href="http://jeffsutherland.com/scrum/SutherlandDistributedScrumHICSS2007_v6_7_Jun_2006.pdf"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1364000209177440505-3001528975131311667?l=cmcurtintech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cmcurtintech.blogspot.com/feeds/3001528975131311667/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1364000209177440505&amp;postID=3001528975131311667' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1364000209177440505/posts/default/3001528975131311667'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1364000209177440505/posts/default/3001528975131311667'/><link rel='alternate' type='text/html' href='http://cmcurtintech.blogspot.com/2008/10/jeff-sutherland-at-agile-atlanta.html' title='Jeff Sutherland at Agile Atlanta'/><author><name>Chris Curtin</name><uri>http://www.blogger.com/profile/16829705475186604040</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1364000209177440505.post-6865619663854645085</id><published>2008-08-24T20:32:00.000-04:00</published><updated>2008-08-24T20:33:51.211-04:00</updated><title type='text'>50+ hours and still a full charge</title><content type='html'>I really think the battery problems are related to the devices hunting for a signal. I didn't really go out this weekend, so I used the phone only a few times for a few calls. However, the # and time of calls were definitely less than last week when I didn't have a signal most of the time.&lt;br /&gt;&lt;br /&gt;Anyone else notice poor battery life when the phone is always hunting for a signal?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1364000209177440505-6865619663854645085?l=cmcurtintech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cmcurtintech.blogspot.com/feeds/6865619663854645085/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1364000209177440505&amp;postID=6865619663854645085' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1364000209177440505/posts/default/6865619663854645085'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1364000209177440505/posts/default/6865619663854645085'/><link rel='alternate' type='text/html' href='http://cmcurtintech.blogspot.com/2008/08/50-hours-and-still-full-charge.html' title='50+ hours and still a full charge'/><author><name>Chris Curtin</name><uri>http://www.blogger.com/profile/16829705475186604040</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1364000209177440505.post-1831894871777297255</id><published>2008-08-22T21:49:00.001-04:00</published><updated>2008-08-22T21:53:56.920-04:00</updated><title type='text'>Thoughts on cell phone (and iPhone) batteries</title><content type='html'>I was at an off site meeting most of this week and one very odd thing happened (well, several odd things happened, but I'll only write about this one ;-)&lt;br /&gt;&lt;br /&gt;My AT&amp;amp;T Razor's battery would last less than 24 from the minute we arrived until we left (a little over 3 days). I have never had problems with this phone and batteries. What is odd is when I got home and fully charged it, it is now 11 hours later and I have a full charge.&lt;br /&gt;&lt;br /&gt;One piece of information: I didn't have a signal at all in the buildings were we were staying. No edge or 3g. Is it possible that the reason so many people have bad battery life is that the phones are wasting a lot of power trying to find signals, or switching between edge and 3g?&lt;br /&gt;&lt;br /&gt;If the phone is still fully charged in the morning that I know it has something to do with the lack of a network, since I get a strong 3g signal in the house.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1364000209177440505-1831894871777297255?l=cmcurtintech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cmcurtintech.blogspot.com/feeds/1831894871777297255/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1364000209177440505&amp;postID=1831894871777297255' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1364000209177440505/posts/default/1831894871777297255'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1364000209177440505/posts/default/1831894871777297255'/><link rel='alternate' type='text/html' href='http://cmcurtintech.blogspot.com/2008/08/thoughts-on-cell-phone-and-iphone.html' title='Thoughts on cell phone (and iPhone) batteries'/><author><name>Chris Curtin</name><uri>http://www.blogger.com/profile/16829705475186604040</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1364000209177440505.post-5973510267938384714</id><published>2008-08-14T09:44:00.002-04:00</published><updated>2008-08-14T09:50:54.650-04:00</updated><title type='text'>IASA Atlanta - August 08 Meeting</title><content type='html'>&lt;div&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;span class="634094412-14082008"&gt;Last night's &lt;a href="http://www.iasahome.org/web/atlanta"&gt;IASA  Atlanta&lt;/a&gt; meeting was a good one. The main topic was a panel discussion around  '&lt;a href="http://c2.com/cgi/wiki?DesignPatternsBook"&gt;Design Patterns&lt;/a&gt;'. Unfortunately, I thought the names of the speakers were on  the IASA website, so I didn't write them down (Please comment if you know their  names and I'll update this.)&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;span class="634094412-14082008"&gt;&lt;/span&gt;&lt;/span&gt; &lt;/div&gt; &lt;div&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;span class="634094412-14082008"&gt;The discussion  started with a definition by each of the presenters of what 'Design Patterns'  are. The crowd then got involved with their definitions, where they have seen  abuses of patterns and suggestions for how to present patterns to their work  environments. Having worked almost exclusively with experienced engineers (or  junior engineers who ate up anything new or interesting that they didn't know) I  was surprised by some of the suggestions and challenges those working in bigger  companies had to introduce these concepts. As part of the discussion on how to  introduce patterns into an organization we got into a discussion about how  people learn and how some (like me) have a 'gut' feeling about what parts of a  complex topic can be skipped until later to get the bigger picture. Great  discussion on this with the group as well.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;span class="634094412-14082008"&gt;&lt;/span&gt;&lt;/span&gt; &lt;/div&gt; &lt;div&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;span class="634094412-14082008"&gt;About an hour into  the session the subject changed to hiring questions, including a favorite of  mine: 'what have you read recently?', or how I ask it 'what do you do to keep  current with the changing technologies?'. Several good suggestions for Pod casts  and RSS/email lists. My suggestion was IBM's &lt;a href="http://www.ibm.com/developerworks/"&gt;developerWorks.&lt;/a&gt;  I get both the email and the RSS feeds. A number of people joked about the  answers they received to these questions. My personal favorite is a candidate  who 'reads the internet'. When asked for more details he said he surfs around  looking for articles and posts.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;span class="634094412-14082008"&gt;&lt;/span&gt;&lt;/span&gt; &lt;/div&gt; &lt;div&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;span class="634094412-14082008"&gt;One of the group  asked about certifications and whether they were useful metrics when hiring or  when looking for a job. I personally don't put a lot of weight into them. Some  are non-trivial to obtain, but a lot of them have a lot of &lt;a href="http://veroblog.wordpress.com/2008/06/16/how-microsoft-protects-value-of-certifications-against-cheats-and-braindumps/"&gt;fraud&lt;/a&gt; &lt;a href="http://www.networkworld.com/newsletters/edu/2008/070708ed1.html"&gt;behind&lt;/a&gt; them.  I've (unfortunately) interviewed enough engineers (software, network and  hardware) who were certified MS-this or Novell-that and Cisco-whatever who  couldn't explain the basics of where they used these technologies or answer  non-trivial questions. There was also a lot of fraud during the earlier part of  this decade where people were paying examiners to pass them and some 'training'  companies even &lt;a href="http://www.theregister.co.uk/2003/05/02/it_certification_scam_rumbled/"&gt;advertised they could guarantee you'd pass&lt;/a&gt;. One of the IASA  officers countered with the rigorous testing that you need to reach the more  advanced Java certifications, so I need to look into that some  more.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;span class="634094412-14082008"&gt;&lt;/span&gt;&lt;/span&gt; &lt;/div&gt; &lt;div&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;span class="634094412-14082008"&gt;Bringing the  discussion back on topic (part of the reason I enjoy these meetings is they tend  to be very interactive with the crowd and the speakers/organizers let things get  off topic for a little while if the group wants it to.) we talked about  &lt;a href="http://www.antipatterns.com/"&gt;Anti-patterns&lt;/a&gt;. The general consensus was that 'anti patterns' are mostly about  personnel and management, but have a place in development. One comment was the  the people interested in patterns hate anti-patterns. I personally enjoy reading  about anti-patterns so I can see if I'm doing something others flag as bad, or  my organization is, or to see what things can go wrong as we implement a new  process or technology so we can avoid them.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;span class="634094412-14082008"&gt;&lt;/span&gt;&lt;/span&gt; &lt;/div&gt; &lt;div&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;span class="634094412-14082008"&gt;The last few minutes  were a discussion of patterns again, with Burk asking if this was a topic we  wanted to cover again. I chimed in that I thought it was a good idea, but to  include more advanced/complex patterns since most people with an architect title  or role should know the basics like singleton or command.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;span class="634094412-14082008"&gt;&lt;/span&gt;&lt;/span&gt; &lt;/div&gt; &lt;div&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;span class="634094412-14082008"&gt;There was one  mention of scrum, in passing. One mention of offshoring, again in passing. (Both  of these usually lead to some detailed discussion, but not  tonight.)&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;span class="634094412-14082008"&gt;&lt;/span&gt;&lt;/span&gt; &lt;/div&gt; &lt;div&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;span class="634094412-14082008"&gt;It was also one of  the best attending meetings in a long time. Lots of the same faces, but plenty  of new ones.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;span class="634094412-14082008"&gt;&lt;/span&gt;&lt;/span&gt; &lt;/div&gt; &lt;div&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;span class="634094412-14082008"&gt;At the end I got to  check out the &lt;a href="http://www.amazon.com/gp/product/B000FI73MA/ref=amb_link_6369712_1?pf_rd_m=ATVPDKIKX0DER&amp;amp;pf_rd_s=center-1&amp;amp;pf_rd_r=17CWDPXHKN5DY8A6BV3M&amp;amp;pf_rd_t=101&amp;amp;pf_rd_p=425396901&amp;amp;pf_rd_i=507846"&gt;Kindle &lt;/a&gt;that one of the speakers uses. Pretty impressive device, I  may need to add it to my Christmas list.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1364000209177440505-5973510267938384714?l=cmcurtintech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cmcurtintech.blogspot.com/feeds/5973510267938384714/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1364000209177440505&amp;postID=5973510267938384714' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1364000209177440505/posts/default/5973510267938384714'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1364000209177440505/posts/default/5973510267938384714'/><link rel='alternate' type='text/html' href='http://cmcurtintech.blogspot.com/2008/08/iasa-atlanta-august-08-meeting.html' title='IASA Atlanta - August 08 Meeting'/><author><name>Chris Curtin</name><uri>http://www.blogger.com/profile/16829705475186604040</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1364000209177440505.post-8169659141176106360</id><published>2008-08-10T21:09:00.001-04:00</published><updated>2008-08-10T21:18:41.550-04:00</updated><title type='text'>Norton 360</title><content type='html'>I've been a user of Norton Antivirus for over a decade now (I think I bought it when I joined Earthlink back in 1995?). A couple of the releases have sucked (2006 had to be reinstalled every couple of months after a failed dictionary upgrade for example)&lt;br /&gt;&lt;br /&gt;My subscription was up this weekend so I went an bought an upgrade to Norton 360 this weekend at Best Buy. They had for $10 less than online. Plus I was there getting a WII Fit and Mario Kart ;-)&lt;br /&gt;&lt;br /&gt;First I had trouble uninstalling the old versions on both PCs. Eventually found a tool on the Symantec site to remove ALL products. This tool even found left overs from 2004 versions. With them gone, the install went pretty smooth.&lt;br /&gt;&lt;br /&gt;First thing I noticed was the difference in memory footprint. Easily 150 MB smaller with the new version installed than with 2008. I also noticed that the disk thrashing has stopped. To the point that the disk on my main desktop isn't spinning at all, and sometimes goes into powersaving mode. That NEVER happened with the previous version.&lt;br /&gt;&lt;br /&gt;This version also has an anti-spam gateway, firewall and anti-malware systems. They've also bundled the disk defragmenter from the standalone tools product.&lt;br /&gt;&lt;br /&gt;Odd thing is they added an on-line (Internet) backup tool. I've been using Mozy for a month now (I'll write about it next week after I test restore some files.) I have 20 GB backed up and the Norton tool comes with 2 GB free, but I didn't use it.&lt;br /&gt;&lt;br /&gt;I also kicked off a full system scan, then did email and surfed. I didn't notice any delay. In the past the machine was worthless when it was scanning.&lt;br /&gt;&lt;br /&gt;Only downside: Norton 360 doesn't like Windows Defender. Not sure why, I'll research that some more, but it told me to uninstall it before it could install.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1364000209177440505-8169659141176106360?l=cmcurtintech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cmcurtintech.blogspot.com/feeds/8169659141176106360/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1364000209177440505&amp;postID=8169659141176106360' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1364000209177440505/posts/default/8169659141176106360'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1364000209177440505/posts/default/8169659141176106360'/><link rel='alternate' type='text/html' href='http://cmcurtintech.blogspot.com/2008/08/norton-360.html' title='Norton 360'/><author><name>Chris Curtin</name><uri>http://www.blogger.com/profile/16829705475186604040</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1364000209177440505.post-41080578929592486</id><published>2008-08-09T12:57:00.002-04:00</published><updated>2008-08-09T13:06:47.479-04:00</updated><title type='text'>XP SP3, 512 MB RAM - fun with an OLD PC</title><content type='html'>My home PC is nothing to brag about. Actually it was 5 years ago when it was new, but not today. These days I use it for Quicken, surfing the web and email. Anything 'cool' for work I use my laptop, which is a pretty powerful machine.&lt;br /&gt;&lt;br /&gt;Last week MS decided to force my &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;XP&lt;/span&gt; OS to upgrade to SP3. I looked around quickly for '&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;gotcha's&lt;/span&gt;' and didn't see anything, so I let it install.&lt;br /&gt;&lt;br /&gt;30 minutes later, the PC reboots and hangs. I reboot it again, and it starts, but starts thrashing the disk. I leave it for 30 minutes, but it still hasn't fully started. Turn it off again, this time it wouldn't show the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;login&lt;/span&gt; screen. I gave up and went to bed.&lt;br /&gt;&lt;br /&gt;Next day I found some interesting issues with SP3: first, you need to disable your anti-virus before installing. (Reason is most have a feature that prevents critical system files from being updated. The same ones SP3 wants to change.)&lt;br /&gt;&lt;br /&gt;I got home, used the fallback features to the checkpoint before the install and started over. This time I disabled Norton anti-virus and Windows Defender. Still had to let it sit for 30 minutes while the disk thrashed, but it eventually settled down.&lt;br /&gt;&lt;br /&gt;Frustrated with the PC, I wanted a new one. Of course ;-) Researching found some good Dell's for around $500, but since I had mine working now I couldn't justify a new one. Of course Deb's PC is few months older than mine, so I'd need to get 2 if I wanted any peace in the house.&lt;br /&gt;&lt;br /&gt;So I went and bought another 512 MB of RAM for my PC and wow, what a difference. Since I was only surfing and doing email I didn't think I needed a lot, but with the new ram things are much faster. Looking at Task Manager I see I'm using 614 MB now, which means I was swapping pretty heavily before.&lt;br /&gt;&lt;br /&gt;I still want a new machine, but can't justify it. Maybe we need a good thunderstorm ...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1364000209177440505-41080578929592486?l=cmcurtintech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cmcurtintech.blogspot.com/feeds/41080578929592486/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1364000209177440505&amp;postID=41080578929592486' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1364000209177440505/posts/default/41080578929592486'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1364000209177440505/posts/default/41080578929592486'/><link rel='alternate' type='text/html' href='http://cmcurtintech.blogspot.com/2008/08/xp-sp3-512-mb-ram-fun-with-old-pc.html' title='XP SP3, 512 MB RAM - fun with an OLD PC'/><author><name>Chris Curtin</name><uri>http://www.blogger.com/profile/16829705475186604040</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1364000209177440505.post-4213993737348165728</id><published>2008-07-18T13:51:00.001-04:00</published><updated>2008-07-18T13:54:02.525-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AJUG'/><title type='text'>July 2008 AJUG Meeting</title><content type='html'>&lt;div&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;&lt;span class="934101317-18072008"&gt;I joke that I get  two 'get of out of jail free' cards a month for work-related activities. Twice a  month I go to user group meetings, one for &lt;a href="http://www.ajug.org"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;AJUG&lt;/span&gt;&lt;/a&gt;, the other for &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;IASA&lt;/span&gt; in the  evenings. These really are related to work since we do a lot of Java and I've  always been involved in Architecture of software systems.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;&lt;span class="934101317-18072008"&gt;&lt;/span&gt;&lt;/span&gt; &lt;/div&gt; &lt;div&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;&lt;span class="934101317-18072008"&gt;The July meeting of  &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;AJUG&lt;/span&gt; was about &lt;a href="http://www.terracotta.org/"&gt;Terracotta&lt;/a&gt;, a tool I had heard about, but didn't have a lot of  understanding of what it did and how.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;&lt;span class="934101317-18072008"&gt;&lt;/span&gt;&lt;/span&gt; &lt;/div&gt; &lt;div&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;&lt;span class="934101317-18072008"&gt;The meeting started  as usual with &lt;a href="http://www.nofluffjuststuff.com/speaker_view.jsp?speakerId=526"&gt;Burr &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;Sutter&lt;/span&gt;&lt;/a&gt; asking about what's new in the community and if anyone  had any job openings. Several people described what they were looking to hire  and we started a discussion about why it is hard to find good people in Atlanta  and about expected salary range of most of the open positions ($85 to $105k was  the range thrown around). I relayed a comment a friend at another company made:  'I know the devils here, why would I risk going someplace where I didn't?'. He  was referring to the economy and while tech is supposed to be weathering the  storm fine, it is a concern for most people. This led to a couple of other  comments about losing vacation, negotiating with HR and the reasons why HR wants  things cookie cutter for all employees. Very interesting  discussion.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;&lt;span class="934101317-18072008"&gt;&lt;/span&gt;&lt;/span&gt; &lt;/div&gt; &lt;div&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;&lt;span class="934101317-18072008"&gt;Burr then introduced &lt;a href="http://www.linkedin.com/in/kunalbhasin"&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;Kunil&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;Bhasin&lt;/span&gt;&lt;/a&gt; an engineer from Terracotta. &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;Kunil&lt;/span&gt; had a good presentation and was  willing to take questions from the audience. At first I wasn't sure what  Terracotta was, but as he gave more examples and explained how the system works,  the more sense it made.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;&lt;span class="934101317-18072008"&gt;&lt;/span&gt;&lt;/span&gt; &lt;/div&gt; &lt;div&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;&lt;span class="934101317-18072008"&gt;High level:  Terracotta provides a file-system backed, in memory 'database' of the name/value  pairs available in a network fashion. Very similar to a cache, but with enough  differences to not be just considered a cache. At first I was thinking about a  &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;JBoss&lt;/span&gt; Cache type of solution, but &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;Kunil&lt;/span&gt; showed that what was being cached wasn't  an object (and thus all the issues with &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;marshalling&lt;/span&gt;, changing signatures etc  that caches have) but rather a primitive, like a string or integer. So in  Terracotta there is an object identifier, an attribute (or class member) name  and the current value. Changes in an application are transmitted to the  Terracotta server and available for other servers if necessary.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;&lt;span class="934101317-18072008"&gt;&lt;/span&gt;&lt;/span&gt; &lt;/div&gt; &lt;div&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;&lt;span class="934101317-18072008"&gt;The service is  transparent to the application (once you tell Terracotta which objects to  manage). So I don't need to do things like checking the cache using a cache  specific &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;API&lt;/span&gt;, then loading the object via &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;JDBC&lt;/span&gt; and putting the object into the  cache. Or worse, worrying that the object in the cache is an older version  because I'm doing a rolling deployment and the cache server is shared between  two apps, one updated, one not.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;&lt;span class="934101317-18072008"&gt;&lt;/span&gt;&lt;/span&gt; &lt;/div&gt; &lt;div&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;&lt;span class="934101317-18072008"&gt;For the gory details  on how this works, go to their &lt;a href="http://www.terracotta.org/"&gt;website&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;&lt;span class="934101317-18072008"&gt;&lt;/span&gt;&lt;/span&gt; &lt;/div&gt; &lt;div&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;&lt;span class="934101317-18072008"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;Kunil&lt;/span&gt; was a very  good speaker and handled the crowd very well. I was frustrated though by the  crowd. We had a really good turn out, especially for a summer meeting, but it  was one of the most argumentative crowds I could remember since Bruce Tate told  everyone Ruby solved every problem we've ever had. (Yes, I was one of the ones  arguing with Bruce ;-) It seemed that each time &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;Kunil&lt;/span&gt; introduced a new concept  someone would ask him about performance or why what Terracotta was doing  wouldn't work, usually in an offensive tone. He nicely dodged those questions by  telling us he'd talk about performance later in the presentation (unfortunately  we ran out of time before he could.) He did address a number of questions about  locking and concurrency as the questions were asked. It felt like they  thought &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;Kunil&lt;/span&gt; was attacking their solutions instead of presenting a tool to  consider next time. Very strange.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;&lt;span class="934101317-18072008"&gt;&lt;/span&gt;&lt;/span&gt; &lt;/div&gt; &lt;div&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;&lt;span class="934101317-18072008"&gt;While some of the  questions were argumentative, a lot were good, asking details about how they  addressed problems people who use caches today encounter. He answered my  question about what happens if a new member is added to a class being monitored  (Terracotta knows that the old object doesn't need that member so it doesn't try  to set it if the member is requested. Having had problems with object caches in  this area, this is a nice solution. )&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;&lt;span class="934101317-18072008"&gt;&lt;/span&gt;&lt;/span&gt; &lt;/div&gt; &lt;div&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;&lt;span class="934101317-18072008"&gt;This was also one of  the longer sessions we've had a while. &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;Kunil&lt;/span&gt; ran out of time and had to blow  through several slides about scale and examples of ways to use Terracotta.  &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;&lt;span class="934101317-18072008"&gt;I think we  could have listened to &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;Kunil&lt;/span&gt; for another hour, possibly longer if he got into  the details of how to use Terracotta with Tomcat for session management (the  first thing I thought of when I understood this) or building caches to offload  data from the database. Hopefully he or someone from Terracotta will come back,  possible for Dev Days (Burr, you listening?)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;&lt;span class="934101317-18072008"&gt;&lt;/span&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/1364000209177440505-4213993737348165728?l=cmcurtintech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cmcurtintech.blogspot.com/feeds/4213993737348165728/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1364000209177440505&amp;postID=4213993737348165728' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1364000209177440505/posts/default/4213993737348165728'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1364000209177440505/posts/default/4213993737348165728'/><link rel='alternate' type='text/html' href='http://cmcurtintech.blogspot.com/2008/07/july-2008-ajug-meeting.html' title='July 2008 AJUG Meeting'/><author><name>Chris Curtin</name><uri>http://www.blogger.com/profile/16829705475186604040</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1364000209177440505.post-7439361945761537007</id><published>2008-07-16T11:25:00.000-04:00</published><updated>2008-07-16T11:27:18.187-04:00</updated><title type='text'>Welcome to my Tech Thoughts</title><content type='html'>I've been hesitant to put things related to work or technology on my family blog, so I've decided now to create a tech specific blog.&lt;br /&gt;&lt;br /&gt;While I won't link specifically to my employer or write about work-specific things here, I will write about technology and business things I find interesting.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1364000209177440505-7439361945761537007?l=cmcurtintech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cmcurtintech.blogspot.com/feeds/7439361945761537007/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1364000209177440505&amp;postID=7439361945761537007' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1364000209177440505/posts/default/7439361945761537007'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1364000209177440505/posts/default/7439361945761537007'/><link rel='alternate' type='text/html' href='http://cmcurtintech.blogspot.com/2008/07/welcome-to-my-tech-thoughts.html' title='Welcome to my Tech Thoughts'/><author><name>Chris Curtin</name><uri>http://www.blogger.com/profile/16829705475186604040</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
