<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;DU8HQH04eip7ImA9WhRRFE4.&quot;"><id>tag:blogger.com,1999:blog-9221110907017630260</id><updated>2011-11-27T15:50:31.332-08:00</updated><category term="Code" /><category term="Life" /><category term="Happiness" /><title>Life, Code and the Pursuit of Happiness</title><subtitle type="html" /><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://codehappy.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://codehappy.blogspot.com/" /><author><name>MatthewJ</name><uri>http://www.blogger.com/profile/04872395334936809138</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>17</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/blogspot/codehappy" /><feedburner:info uri="blogspot/codehappy" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;C0UEQ3g_eyp7ImA9Wx5XE0g.&quot;"><id>tag:blogger.com,1999:blog-9221110907017630260.post-2254679270074698566</id><published>2010-09-12T00:11:00.000-07:00</published><updated>2010-09-12T21:13:22.643-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-09-12T21:13:22.643-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Code" /><title>Java and C# =&gt; one in the same?</title><content type="html">Many water cooler chat's have inevitably, at one time or another, posed the notion that Java and C# are a different language or strikingly similar in nature.&lt;br /&gt;&lt;br /&gt;I really had no stance on the issue, up until about a year ago.  One of my colleague's (Tommy), pointed out that if you know C#, then you know Java.  At first, take, if you have not programmed in either, you are taken aback.  Can they really be similar?  &lt;br /&gt;&lt;br /&gt;Naaaah.  No way.  Crazy talk.  But really think about it:  What is so different?  &lt;br /&gt;&lt;br /&gt;What's the same about them?&lt;br /&gt;Both are garbage collected runtimes (JVM, CLR)&lt;br /&gt;Disallow multiple inheritance, and allow multiple contracts to be implmented&lt;br /&gt;Syntactically very similiar&lt;br /&gt;Exceptions anyone?&lt;br /&gt;Boxing&lt;br /&gt;inheritance&lt;br /&gt;&lt;br /&gt;What's different about them?&lt;br /&gt;C# always run natively, java supports just-in-time compiles (interpreted)&lt;br /&gt;Packages vs Namespaces  (packages require a logical directory)&lt;br /&gt;Main v main&lt;br /&gt;c# =&gt; partial classes&lt;br /&gt;c# =&gt; unmanaged code &lt;br /&gt;editors&lt;br /&gt;&lt;br /&gt;The one main difference is that C# is growing at a faster pace at this point.  With the addition of linq &amp; lamdba functions, its clear microsoft is rapidly adding features to c#, where as the java process is way more bureaucratic.  See the following link =&gt; http://jcp.org/en/participation/committee&lt;br /&gt;&lt;br /&gt;So, can java programmers progarm in c# and vice versa?  Yes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9221110907017630260-2254679270074698566?l=codehappy.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/_NmLiHv3m2rJbHWML-2n7oyMKSk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/_NmLiHv3m2rJbHWML-2n7oyMKSk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/_NmLiHv3m2rJbHWML-2n7oyMKSk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/_NmLiHv3m2rJbHWML-2n7oyMKSk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/codehappy/~4/vMRZkMonN7k" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://codehappy.blogspot.com/feeds/2254679270074698566/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9221110907017630260&amp;postID=2254679270074698566" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9221110907017630260/posts/default/2254679270074698566?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9221110907017630260/posts/default/2254679270074698566?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/codehappy/~3/vMRZkMonN7k/java-and-c-one-in-same.html" title="Java and C# =&gt; one in the same?" /><author><name>MatthewJ</name><uri>http://www.blogger.com/profile/04872395334936809138</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><feedburner:origLink>http://codehappy.blogspot.com/2009/02/java-and-c-one-in-same.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0MNR3c_cCp7ImA9WxZaEks.&quot;"><id>tag:blogger.com,1999:blog-9221110907017630260.post-4115141673171245196</id><published>2008-04-26T19:56:00.000-07:00</published><updated>2008-04-26T20:04:56.948-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-04-26T20:04:56.948-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Code" /><title>Updated: Sample Google App Engine Code</title><content type="html">Finished the very minuscule example for entering stocks on a google app engine project.  Leave comments if you have questions.&lt;br /&gt;&lt;br /&gt;Hope this helps!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9221110907017630260-4115141673171245196?l=codehappy.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/sLuDjbFkLLCG1zFBfYt_4pNhhLw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/sLuDjbFkLLCG1zFBfYt_4pNhhLw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/sLuDjbFkLLCG1zFBfYt_4pNhhLw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/sLuDjbFkLLCG1zFBfYt_4pNhhLw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/codehappy/~4/jWvt_QFyw1U" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://codehappy.blogspot.com/feeds/4115141673171245196/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9221110907017630260&amp;postID=4115141673171245196" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9221110907017630260/posts/default/4115141673171245196?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9221110907017630260/posts/default/4115141673171245196?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/codehappy/~3/jWvt_QFyw1U/updated-sample-google-app-engine-code.html" title="Updated: Sample Google App Engine Code" /><author><name>MatthewJ</name><uri>http://www.blogger.com/profile/04872395334936809138</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><feedburner:origLink>http://codehappy.blogspot.com/2008/04/updated-sample-google-app-engine-code.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Dk4MR3k9fyp7ImA9WxZaEks.&quot;"><id>tag:blogger.com,1999:blog-9221110907017630260.post-1061454430386804410</id><published>2008-04-24T19:28:00.000-07:00</published><updated>2008-04-26T19:56:26.767-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-04-26T19:56:26.767-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Code" /><title>Google App Engine: Scalable web sites for the masses</title><content type="html">The first week of April brought the world another gift from Google, or so Google would like us to think.  It is called the Google App Engine, an all inclusive hosted web development package without the user needing to buy any hardware what-so-ever.  Oh, and it scales a tad, petty detail.  The engine uses Python on the app server, and a datastore, that is transactional but not relational.  Seems kind of odd, but the datastore stores and retrieve entities, or python classes, and the data model that google provides in python, called GQL, allows you to create and manipulate these entities that have been created in your program.  If you have seen an ORM (Object Relational Mapper), then you would be more familiar with google's query language in python. For more information check out the following links:&lt;br /&gt;&lt;br /&gt;For more info on:&lt;br /&gt;&lt;a href="http://code.google.com/appengine/docs/datastore/overview.html"&gt;The data store&lt;/a&gt;&lt;br /&gt;&lt;a href="http://code.google.com/appengine/docs/python/"&gt;Python on the app engine&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It all sounds great up until you ask how much does this all cost to the app developers?  Nothing this good grows on trees, and that is definitely the case as shown below here:&lt;br /&gt;&lt;h3&gt;Fixed Quotas&lt;/h3&gt;  &lt;table&gt;&lt;thead&gt; &lt;tr&gt; &lt;td&gt;&lt;b&gt;Quota&lt;/b&gt;&lt;/td&gt; &lt;td&gt;&lt;b&gt;Limit&lt;/b&gt;&lt;/td&gt; &lt;/tr&gt; &lt;/thead&gt; &lt;tbody&gt;&lt;tr&gt; &lt;td&gt;Apps per Developer&lt;/td&gt; &lt;td&gt;3&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;Storage per App&lt;/td&gt; &lt;td&gt;500MB&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Quota&lt;/b&gt;&lt;/td&gt; &lt;td&gt;&lt;b&gt;Limit&lt;/b&gt;&lt;/td&gt; &lt;/tr&gt; &lt;/thead&gt; &lt;tbody&gt;&lt;tr&gt; &lt;td&gt; Emails per Day&lt;/td&gt; &lt;td&gt;2,000&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;Bandwidth In per Day&lt;/td&gt; &lt;td&gt;10,000 MB&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;Bandwidth Out per Day&lt;/td&gt; &lt;td&gt;10,000 MB&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;CPU Megacycles per Day&lt;/td&gt; &lt;td&gt;200,000,000&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;HTTP Requests per Day&lt;/td&gt; &lt;td&gt;650,000&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;Datastore API Calls per Day&lt;/td&gt; &lt;td&gt;2,500,000&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;URLFetch API Calls per Day&lt;/td&gt; &lt;td&gt;160,000&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;Not too bad for a small little site!  The only gripe I seem to have involves getting your data out if you want to leave Google.  How do you do this?!  Well, at the moment you can't, and that means your completely locked in!  The pricing structure goes up...too bad!  Your screwed.  But, it is Beta and I am willing to give them the benefit of the doubt...with dummy applications.&lt;br /&gt;&lt;br /&gt;We've heard all about the overview, and the pricing, but what about the freakin code?!  You develop these applications with &lt;a href="http://code.google.com/appengine/downloads.htmlhttp://code.google.com/appengine/downloads.html"&gt;SDK &lt;/a&gt;Google provides.&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="python"&gt;&lt;br /&gt;class Stock(db.Model):&lt;br /&gt;    ticker = db.StringProperty()&lt;br /&gt;    name = db.StringProperty()&lt;br /&gt;    price = db.FloatProperty()&lt;br /&gt;&lt;br /&gt;class MainPage(webapp.RequestHandler):&lt;br /&gt;  def get(self):&lt;br /&gt;    stocks = Stock.all().order('-name')&lt;br /&gt;&lt;br /&gt;    if users.get_current_user():&lt;br /&gt;      url = users.create_logout_url(self.request.uri)&lt;br /&gt;      url_linktext = 'Logout'&lt;br /&gt;    else:&lt;br /&gt;      url = users.create_login_url(self.request.uri)&lt;br /&gt;      url_linktext = 'Login'&lt;br /&gt;&lt;br /&gt;    template_values = {&lt;br /&gt;      'stocks': stocks,&lt;br /&gt;      'url': url,&lt;br /&gt;      'url_linktext': url_linktext,&lt;br /&gt;      }&lt;br /&gt;    path = os.path.join(os.path.dirname(__file__), 'index.html')&lt;br /&gt;    self.response.out.write(template.render(path, template_values))&lt;br /&gt;&lt;br /&gt;class StockTransaction(webapp.RequestHandler):&lt;br /&gt;  def post(self):&lt;br /&gt;      stock = Stock()&lt;br /&gt;      stock.ticker = self.request.get('ticker')&lt;br /&gt;      stock.name = self.request.get('companyname')&lt;br /&gt;      stock.price = float(self.request.get('price'))&lt;br /&gt;      stock.put()&lt;br /&gt;      self.redirect('/')&lt;br /&gt;&lt;br /&gt;def main():&lt;br /&gt;  application = webapp.WSGIApplication(&lt;br /&gt;                                       [('/', MainPage),&lt;br /&gt;                                        ('/transaction', StockTransaction)],&lt;br /&gt;                                       debug=True)&lt;br /&gt;  wsgiref.handlers.CGIHandler().run(application)&lt;br /&gt;&lt;br /&gt;if __name__ == "__main__":&lt;br /&gt;  main()&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="html"&gt;&lt;br /&gt; &amp;lt;table&amp;gt;&lt;br /&gt;            &amp;lt;thead&amp;gt;&lt;br /&gt;                &amp;lt;tr&amp;gt;&lt;br /&gt;                    &amp;lt;td&gt;Ticker&amp;lt;/td&amp;gt;&lt;br /&gt;                    &amp;lt;td&gt;Name&amp;lt;/td&amp;gt;&lt;br /&gt;                    &amp;lt;td&gt;Price&amp;lt;/td&amp;gt;&lt;br /&gt;                &amp;lt;/tr&amp;gt;&lt;br /&gt;            &amp;lt;/thead&amp;gt;&lt;br /&gt;            &amp;lt;tbody&amp;gt;&lt;br /&gt;                &amp;#123;% for stock in stocks %&amp;#125;&lt;br /&gt;                &amp;lt;tr&gt;&lt;br /&gt;                    &amp;lt;td&gt;{{stock.ticker}}&amp;lt;/td&amp;gt;&lt;br /&gt;                    &amp;lt;td&amp;gt;&amp;#123;&amp;#123;stock.name&amp;#125;&amp;#125;&amp;lt;/td&amp;gt;&lt;br /&gt;                    &amp;lt;td&amp;gt;&amp;#123;&amp;#123;stock.price&amp;#125;&amp;#125;&amp;lt;/td&amp;gt;&lt;br /&gt;                &amp;lt;/tr&amp;gt;&lt;br /&gt;                &amp;#123;% endfor %&amp;#125;&lt;br /&gt;            &amp;lt;/tbody&amp;gt;&lt;br /&gt;        &amp;lt;/table&amp;gt;&lt;br /&gt;        &lt;form action="/transaction" method="post"&gt;&lt;br /&gt;        &lt;p&gt;&lt;br /&gt;            &lt;label for="ticker"&gt;&lt;br /&gt;                Ticker:&lt;br /&gt;            &lt;/label&gt;&lt;br /&gt;            &lt;input type="text" name="ticker"/&gt;&lt;br /&gt;        &lt;/p&gt;&lt;br /&gt;        &lt;p&gt;&lt;br /&gt;            &lt;label for="companyName"&gt;&lt;br /&gt;                Company Name:&lt;br /&gt;            &lt;/label&gt;&lt;br /&gt;            &lt;input type="text" name="companyname" /&gt;&lt;br /&gt;        &lt;/p&gt;&lt;br /&gt;        &lt;p&gt;&lt;br /&gt;            &lt;label for="price"&gt;&lt;br /&gt;                Price:&lt;br /&gt;            &lt;/label&gt;&lt;br /&gt;            &lt;input type="text" name="price" /&gt;&lt;br /&gt;        &lt;/p&gt;&lt;br /&gt;        &lt;div&gt;&lt;br /&gt;            &lt;input type="submit" value="Enter Stock"&gt;&lt;br /&gt;        &lt;/div&gt;&lt;br /&gt;    &lt;/form&gt;&lt;a href="{{ url }}"&gt;{{ url_linktext }}&lt;/a&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9221110907017630260-1061454430386804410?l=codehappy.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/acuzZNPnJknm_BUAnCgh_oLzPos/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/acuzZNPnJknm_BUAnCgh_oLzPos/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/acuzZNPnJknm_BUAnCgh_oLzPos/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/acuzZNPnJknm_BUAnCgh_oLzPos/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/codehappy/~4/uH2Y_nTKW9w" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://codehappy.blogspot.com/feeds/1061454430386804410/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9221110907017630260&amp;postID=1061454430386804410" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9221110907017630260/posts/default/1061454430386804410?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9221110907017630260/posts/default/1061454430386804410?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/codehappy/~3/uH2Y_nTKW9w/google-app-engine-scalable-web-sites.html" title="Google App Engine: Scalable web sites for the masses" /><author><name>MatthewJ</name><uri>http://www.blogger.com/profile/04872395334936809138</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><feedburner:origLink>http://codehappy.blogspot.com/2008/04/google-app-engine-scalable-web-sites.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CE8NQHgzfSp7ImA9WxZTFUk.&quot;"><id>tag:blogger.com,1999:blog-9221110907017630260.post-5571845833303622914</id><published>2008-01-15T23:15:00.000-08:00</published><updated>2008-01-16T20:08:11.685-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-01-16T20:08:11.685-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Happiness" /><title>Mac World 08' -  MacBook Air</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_0cTmN6vBlVQ/R47UHVFxQjI/AAAAAAAAAAM/IhWpoXejHV0/s1600-h/overview_bigair_two20080115.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://3.bp.blogspot.com/_0cTmN6vBlVQ/R47UHVFxQjI/AAAAAAAAAAM/IhWpoXejHV0/s320/overview_bigair_two20080115.png" alt="" id="BLOGGER_PHOTO_ID_5156291845771313714" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Yesterday, Mac World 08' kicked off in spectacular glory.  It was phenomenal as usual. Steve Jobs just has a way about him, that instills with you with the utmost confidence that Apple will never let you down. Every MacWorld I remember has lived up to some sort of hype going all the way back to the iPod.  If you haven't already seen it, you can check it out the keynote &lt;a href="http://events.apple.com.edgesuite.net/f27853y2/event/index.html?internal=fj2l3s9dm"&gt;here&lt;/a&gt;.  He had four agendas to share with the public.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Reveiew of 07' / Lepoard&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Iphone/Ipod&lt;/li&gt;&lt;li&gt;Apple TV&lt;/li&gt;&lt;li&gt;Air&lt;/li&gt;&lt;/ol&gt;The most interesting topic was the MacBook Air.  It is the slimmest notebook in the history of laptops weighing in 3.0 lbs, and less then an inch thick.   It can literally fit in an office envelope.  You would think at this point, what components of the computer did they compromise in order to make this notebook so small?  Nothing.  They didn't compromise anything.  They have a 13.3" screen, 2GB RAM, 80 GB hard disk, full size keyboard, and a full size display.  What about the processor?  It's a 60% smaller core 2 duo!   Intel really pulled a rabbit out of a hat with this remarkable work of engineering.  In fact, the whole electronics of the MacBook is as long as a pencil and as wide as a crayon.  Just incredibly small.&lt;br /&gt;&lt;br /&gt;Good work Apple, you keep finding ways to entice me into buying your products.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9221110907017630260-5571845833303622914?l=codehappy.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/YrPwylARf1DZIZpdwoDLif_QvrU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/YrPwylARf1DZIZpdwoDLif_QvrU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/YrPwylARf1DZIZpdwoDLif_QvrU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/YrPwylARf1DZIZpdwoDLif_QvrU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/codehappy/~4/n8bk8BYS-nc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://codehappy.blogspot.com/feeds/5571845833303622914/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9221110907017630260&amp;postID=5571845833303622914" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9221110907017630260/posts/default/5571845833303622914?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9221110907017630260/posts/default/5571845833303622914?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/codehappy/~3/n8bk8BYS-nc/mac-world-08-macbook-air.html" title="Mac World 08' -  MacBook Air" /><author><name>MatthewJ</name><uri>http://www.blogger.com/profile/04872395334936809138</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><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_0cTmN6vBlVQ/R47UHVFxQjI/AAAAAAAAAAM/IhWpoXejHV0/s72-c/overview_bigair_two20080115.png" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://codehappy.blogspot.com/2008/01/mac-world-08-macbook-air.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ak8CQXw6fCp7ImA9WxZTFkw.&quot;"><id>tag:blogger.com,1999:blog-9221110907017630260.post-1721406599062709901</id><published>2008-01-15T20:21:00.000-08:00</published><updated>2008-01-17T17:14:20.214-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-01-17T17:14:20.214-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Code" /><title>Agile Development Demystified</title><content type="html">If your a software developer, you have undoubtedly come across this term at one point in your career.  You may have heard such things as, this development methodology will help organize software development into more lightweight, manageable development modules.  This, in theory, will increase the time to market for the product that you have just spent a lot of developer coin on.  Is it reasonable to want to spend your developer coin efficiently? Of course it is, especially if you can get to the market with your product in a cyber world that punishes the late comer.  Well, I would like to spend some time with you today giving you my own take on what agile development is, from being immersed in it for the past 40 days, and through one &lt;a href="http://www.pragprog.com/titles/pad"&gt;book&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I have always heard the term agile development, but never had a clear vision of what it was.  These methods were explained in synonymous terms in my software engineering course.  It was described merely as an iterative process.  That really doesn't explain what exactly agile development is.   So what is it?  In simple terms, agile development is a process where you do many of the little things to aid in the efficiency of developing software programs rapidly.&lt;br /&gt;&lt;br /&gt;Kind of a vague definition.  Let me give you some concepts that would be considered &lt;span style="font-weight: bold;"&gt;agile.&lt;br /&gt;&lt;/span&gt;&lt;ol&gt;&lt;li&gt;You work closely with customers&lt;/li&gt;&lt;li&gt;Clear, presentable and maintainable goals&lt;/li&gt;&lt;li&gt;Development happens in iterations or cycles&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Collaborate with members of your team to solve problems&lt;/li&gt;&lt;li&gt;Ability to respond quickly to ever changing requirements and customer demands&lt;/li&gt;&lt;li&gt;Accurate estimates of software completion&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;Now, that is not all what agile is.  That is just the beginning; a taste of what an agile project feels like.   Agile development requires a highly cohesive group of people, committed to coming up with schedules, collaborating with one another for problems and code reviews, and hitting deadlines set for each iteration that has been planned.  If you don't have a highly cohesive atmosphere, you can forget this methodology.&lt;br /&gt;&lt;br /&gt;Here is a small example, that will make what I described more concrete.  Let's say we have  just started an agile project an agile project to create the next greatest social network &lt;span style="font-weight: bold;"&gt;ever&lt;/span&gt;.   It's called, for those of you wondering, Social B-Free, for the hippy inside of you.  Let us assume there are 10 developers on the team with 3 people in QA.  If you were lucky to get that many people on your project, your good and have a great future in sales.  Now that we have the people, the CEO has now set the development iterations for two weeks, since we are a fresh startup, and have a killer idea that will revolutionize the social networking industry.  The only catch is, we need to get it out now, and grab some market share before someone else implements our brilliant idea.  So, how do we accomplish this quickly and efficiently?&lt;br /&gt;&lt;br /&gt;We accomplish this by setting meetings and taking a hard look at what can be accomplished in those two weeks.  We define all of the features we think can be crammed into that two week time line and we stick to it.  From those features, you break them down into even smaller, manageable tasks and denote them on a, list, spreadsheet, word document or some sort of wiki to keep track of it.  As the CEO, he has graciously volunteered to keep track of the development lists  and holds these meetings every week, keeping track of the progress of the application every day through emails, im, or whatever medium the group has decided to use.    By doing this everyday for a month or two, you will become a much better predictor at what will and will not be released during those iterations.   By being a better predictor, you can then start to have confidence in releasing features on a date that you specified, you could hit at the beginning, middle or the end of the iteration.  By making frequent releases on time, your customers will be confident that progress is continuously being made on the application they are using.  It won't become stale to them.&lt;br /&gt;&lt;br /&gt;You may ask, what happens when we don't hit those two weeks with all the features included on the list?  If that is the case, the CEO has the ability to push features to the next iteration if the CEO does not think they will be hit.  There is a lot of power, and flexibility in our methodology.  And by keeping at this methodology, we are getting smarter at prognosticating what the team can accomplish during those two weeks.&lt;br /&gt;&lt;br /&gt;It's important during every iteration, to make sure everyone in the group understands the problem they chose or were assigned, every day.  If there is a problem of understanding, then that problem needs attention as soon as possible.  This is where having a good group dynamic comes in to play, where ideas and questions are not ridiculed and people are not criticized.  Rather, ideas are encouraged, new ways of attacking problems is the norm, and finished iterations are rewarded (pizza party?).  The group becomes a haven for creativity as well as ingenuity.  And all while this happens, you are continuously developing solutions on the current iteration with blazing speed.  The group becomes a gigantic knowledge base where no one is left behind and new people are up to speed in hours, not days.&lt;br /&gt;&lt;br /&gt;The opposite happens when negativity enters the foray.  When this happens it is inevitable that your innovation, the very heart of creating software will perish.  Why?  The people that are receiving negative comments are now hesitant to volunteer any of their ideas, whether it be for fear of ridicule or reprimand.  The cause of not volunteering those ideas does not matter.  What matters is they have now stopped giving you ideas!  What if they had a good idea?!  Being negative has just stifled it, along with your innovation, which is priceless to your business.   Especially our really cool, hip, new social networking startup Social B-Free.  We don't want this puppy to go under.&lt;br /&gt;&lt;br /&gt;I hope I have conveyed a small portion of what agile is.  I will continue the trials and tribulations of Social B-Free, very soon!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9221110907017630260-1721406599062709901?l=codehappy.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/771H3_SXvtNIfCIB0ieW-R5ZlOs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/771H3_SXvtNIfCIB0ieW-R5ZlOs/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/771H3_SXvtNIfCIB0ieW-R5ZlOs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/771H3_SXvtNIfCIB0ieW-R5ZlOs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/codehappy/~4/A1mfdA6cN0w" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://codehappy.blogspot.com/feeds/1721406599062709901/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9221110907017630260&amp;postID=1721406599062709901" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9221110907017630260/posts/default/1721406599062709901?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9221110907017630260/posts/default/1721406599062709901?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/codehappy/~3/A1mfdA6cN0w/agile-development-demystified.html" title="Agile Development Demystified" /><author><name>MatthewJ</name><uri>http://www.blogger.com/profile/04872395334936809138</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><feedburner:origLink>http://codehappy.blogspot.com/2008/01/agile-development-demystified.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkQNRHs4fyp7ImA9WB9aF0o.&quot;"><id>tag:blogger.com,1999:blog-9221110907017630260.post-7169674124965360394</id><published>2008-01-07T20:35:00.000-08:00</published><updated>2008-01-07T21:33:15.537-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-01-07T21:33:15.537-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Code" /><title>The State of Ruby</title><content type="html">Wow.  I just read the mother of all rants from this dude, Zed Shaw.  He's the author of mongrel, a light web server used for ruby on rails, and from the article,  he seems like a fairly competent ruby hacker.  I will have to be honest though, when I read the following paragraph, I almost disregarded the entire article.&lt;br /&gt;&lt;br /&gt;"&lt;span style="font-style: italic;"&gt;I’ll add one more thing to the people reading this:  I mean business when I say I’ll take anyone on who wants to fight me.  You think you can take me, I’ll &lt;/span&gt;&lt;strong style="font-style: italic;"&gt;pay&lt;/strong&gt;&lt;span style="font-style: italic;"&gt; to rent a boxing ring and beat your fucking ass legally.  Remember that I’ve studied enough martial arts to be deadly even though I’m old, &lt;/span&gt;&lt;strong style="font-style: italic;"&gt;and&lt;/strong&gt;&lt;span style="font-style: italic;"&gt; I don’t give a fuck if I kick your mother fucking ass or you kick mine.  You don’t like what I’ve said, then write something in reply but fuck you if you think you’re gonna talk to me like you can hurt me.&lt;/span&gt;"&lt;br /&gt;&lt;br /&gt;Whoa dude, calm down tough guy.  This screams like little man syndrome to me.  You all know the type, they have a fuse shorter then dynamite and will try, in every conceivable way to sound like that big dog at corner of street that is always barking.  Unfortunately, in reality they lack that vicious bite they try so desperately hard to make everyone believe they have.  Hey, I'm not saying I hated it; quite the contrary, it thoroughly entertained me.&lt;br /&gt;&lt;br /&gt;All jokes aside, I was rather shocked about reading some of these rants about how fractured the ruby community is.  Maybe it is just this guy, I don't know.  But when you read comments such as:&lt;br /&gt;&lt;br /&gt;"&lt;span style="font-style: italic;"&gt;Now, &lt;/span&gt;&lt;span style="font-style: italic;" class="caps"&gt;DHH&lt;/span&gt;&lt;span style="font-style: italic;"&gt; tells me that he’s got &lt;/span&gt;&lt;strong style="font-style: italic;"&gt;400 restarts&lt;/strong&gt;&lt;span style="font-style: italic;"&gt; a mother fucking &lt;/span&gt;&lt;strong style="font-style: italic;"&gt;day&lt;/strong&gt;&lt;span style="font-style: italic;"&gt;.  That’s 1 restart about ever 4 minutes bitches.  These restarts went away after I exposed bugs in the GC and Threads which  Mentalguy fixed with fastthread (like a Ninja, Mentalguy is awesome).&lt;/span&gt;"&lt;br /&gt;&lt;br /&gt;That is ridiculous.  400 restarts a day?!  I wouldn't even deal with one a day, let alone 400! Who in their right minds would use rails if it was that gc collector was that inefficient, with out of memory exceptions being thrown left and right?  I might have to take zed on that fact, however, he does know the rails core.   At least he conveys that he does.  I was under the impression that ruby on rails scales?!  37 Signals uses it without any problems, right?&lt;br /&gt;&lt;br /&gt;This next interesting rant is about Michael Koziarski:&lt;br /&gt;&lt;br /&gt;"&lt;span style="font-style: italic;"&gt;That’s right, dude works on Rails in some capacity, apparently writing tons of shitty fucking code with his butt buddy Nicholas Sekar.  Yet, nobody knows him. He’s got more web sites than Elvis and Chuck Noris combined and nobody knows him.  He’s written &lt;/span&gt;&lt;strong style="font-style: italic;"&gt;mountains&lt;/strong&gt;&lt;span style="font-style: italic;"&gt; more open source code than me and no-bo-dy knows him.&lt;/span&gt;"&lt;br /&gt;&lt;br /&gt;Ah Napoleon, how entertaining this is to read.  This is a guy I want to meet in person, dude is intense, and I like that.  But to be fair to Mr. Koziarski, I hadn't known either of these two guys up until today,thanks to Zed.  I mostly stay in the java/C#/spring/javascript/python world, so I never really read anything about Ruby or Rails.  Now I have.  Thanks Zed, you now exist in my world...for better or worse.&lt;br /&gt;&lt;br /&gt;How bout the top 9 tips about thoughtworks processes.  I think this is actually excellent material, and Zed says himself, most consulting outfits work this way.  It is really hard to find a really good consulting company apparently.  On with the list anyhow and take a read for yourself.&lt;br /&gt;&lt;br /&gt;&lt;p&gt;"&lt;span style="font-style: italic;"&gt;Continue the logic further my friends with this little walk through consulting practices:&lt;/span&gt;&lt;/p&gt;    &lt;ol&gt;&lt;li style="font-style: italic;"&gt;TW figures out it can make a mint doing RoR projects for dumb ass MBAs at dumbass companies.&lt;/li&gt;&lt;li style="font-style: italic;"&gt;TW goes for it and gets 60% of its business now all RoR.&lt;/li&gt;&lt;li style="font-style: italic;"&gt;TW realizes that they can’t hire enough Ruby people to do that.  Actually, they didn’t really try too hard since that’d mean paying the new people a fair salary.&lt;/li&gt;&lt;li style="font-style: italic;"&gt;Yet, somehow they put 6-20 people on projects and claim that these people are Rails experts with a high standard of quality.  These people actually had two weeks of training.&lt;/li&gt;&lt;li style="font-style: italic;"&gt;After each person has been on a project for a few months, they mysteriously get  transitioned to another project, become “sick”, or generally leave.&lt;/li&gt;&lt;li style="font-style: italic;"&gt;They are then replaced with someone else who’s training is limited.&lt;/li&gt;&lt;li style="font-style: italic;"&gt;During their operations they seem to focus entirely on the process, but very little on the quality of the code.  Sorry guys, but having a 1:4 code:test ratio is not focusing on code quality.  It’s focusing on &lt;strong&gt;test&lt;/strong&gt; quality.&lt;/li&gt;&lt;li style="font-style: italic;"&gt;Finally, when your project is in the dumps and it takes months to get simple things done you realize that you’ve been paying ThoughtWorks a premium for what is effectively a bunch of total newbies who are only there for a few months before they roll off.&lt;/li&gt;&lt;li&gt;&lt;strong style="font-style: italic;"&gt;You my friend got fucked in the ass.&lt;/strong&gt;&lt;span style="font-style: italic;"&gt;  Congratulations because all the idiots who paid ThoughtWorks 6x times salary for junior ass wipes got taken and simply paid to train ThoughtWorks’ new crew.&lt;/span&gt;"&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;And to prevent yourself from this consulting nightmare, some good tips.  I can't argue with them, they are solid and should probably be used by anyone thinking of hiring a consulting company.  Here they are:&lt;br /&gt;&lt;br /&gt;&lt;p&gt;"&lt;span style="font-style: italic;"&gt;I have a few pieces of advice for people about to hire any company like ThoughtWorks.  There’s just a few simple strategies you can follow to  make sure you get the most out of them and get your money’s worth:&lt;/span&gt;&lt;/p&gt;    &lt;ol&gt;&lt;li style="font-style: italic;"&gt;Make sure you have the right to see every resume and interview each consultant they place.  Treat them like new hires and don’t let anyone who’s not worth the rate you’re paying on the team.&lt;/li&gt;&lt;li style="font-style: italic;"&gt;Demand a variable rate based on the position of the person and their experience.&lt;/li&gt;&lt;li style="font-style: italic;"&gt;Demand that no employees can leave the project to work on another  project.  These placements have to be for the life of the project  or until the employee quits.&lt;/li&gt;&lt;li style="font-style: italic;"&gt;Require that you have the right to have someone replaced if they are not immediately capable.  Part of what you’re paying is that a ThoughtWorker should be able to drop in commando style and just start working.  The reality is they are usually totally lost anyway.&lt;/li&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;Seriously consider recruiting one full time employee as a team lead, another as a project manager, and then staff the rest of your team with independent consultants.  You’ll find that you get more control and better quality at a lower price.&lt;/span&gt;"&lt;/li&gt;&lt;/ol&gt;Having never been a consultant, and been sheltered from dealing with consultants at any job that I have had over the course of my career, I think every single one of those tips can save your company money.  These tips allow you to keep control of the entire project, provided that you have the resources to have a watch dog hound them.   However, I have rosy glasses on and I am not experienced all in this field, so please forgive my ignorance if I think these ideas are pure genius.&lt;br /&gt;&lt;br /&gt;The rest is just more of a loaded diatribe, unless your really into that.   I am not kidding when I tell you this; it's a 20 page rant, 19 of which is about trashing the same people, just in different ways.  I read it, I was entertained but not worth blogging about.  You can go here and check it out, and I encourage you do so.  Zed made some execellent points, and deserve props for those, even though he claims throughout he has no bridges to burn because none existed.  Well, with posts like these, no bridges will ever exist for you my friend, because not everyone likes your abrasiveness as much as you do.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.zedshaw.com/rants/rails_is_a_ghetto.html"&gt;http://www.zedshaw.com/rants/rails_is_a_ghetto.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9221110907017630260-7169674124965360394?l=codehappy.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/r07xa1WlESl5prEWP143ljIusg0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/r07xa1WlESl5prEWP143ljIusg0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/r07xa1WlESl5prEWP143ljIusg0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/r07xa1WlESl5prEWP143ljIusg0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/codehappy/~4/y-9G8ciBmj8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://codehappy.blogspot.com/feeds/7169674124965360394/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9221110907017630260&amp;postID=7169674124965360394" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9221110907017630260/posts/default/7169674124965360394?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9221110907017630260/posts/default/7169674124965360394?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/codehappy/~3/y-9G8ciBmj8/state-of-ruby.html" title="The State of Ruby" /><author><name>MatthewJ</name><uri>http://www.blogger.com/profile/04872395334936809138</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><feedburner:origLink>http://codehappy.blogspot.com/2008/01/state-of-ruby.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUEHSHwzfip7ImA9WB9aGEk.&quot;"><id>tag:blogger.com,1999:blog-9221110907017630260.post-5620701747931575534</id><published>2008-01-03T20:07:00.000-08:00</published><updated>2008-01-08T19:00:39.286-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-01-08T19:00:39.286-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Life" /><title>Just Do It!</title><content type="html">Well it's 2008 and I am finally posting again.  Gee, that took a long time, and the reason I haven't posted in a few days is the whole basis of my article.   If you have something to do, just do it.  Don't let it fester,  just sitting there waiting for the worst thing possible to happen.  You'll end up with a disaster if you do.  &lt;span style="font-weight: bold;"&gt;Just get it done&lt;/span&gt;.  I can't count the number of times that I have seen this end up as a disaster in people's lives as well as at a workplace.  Missing dead lines can get you in a lot of hot water, and I am not trying to be ultra dramatic here, but it's a subject that with most people, is taboo.  You just don't go there.   It will most likely upset the apple cart and then you have got "dramz" and that is ALWAYS fun to deal with. But we're talking about missing a few postings here and there on a blog, so eh...&lt;br /&gt;&lt;br /&gt;Yes, this is just a blog, and who really cares if I miss a day or two, or three, or a week.  Hardy or Andrew might be depressed (Happy New Year's by the way).  That is bad, but not the end of the world.  However, your work ethic should carry over to whatever your doing, so here a few tips that I have come up with that I am sure are in a hundreds of self help books.&lt;br /&gt;&lt;br /&gt;1)  Don't slack.&lt;br /&gt;If you can do it, just get it done.  Not only will you look good, but the salesman will sell more based on your work, and the company will stand to profit from your efforts.&lt;br /&gt;&lt;br /&gt;2) Setup a schedule at the beginning of the day.&lt;br /&gt;This will help keep you on track throughout the day, and let you set some goals for you to achieve throughout the course of the day.&lt;br /&gt;&lt;br /&gt;3) Set realistic deadlines.&lt;br /&gt;Oh I am so guilty of this one.  I try to bite off more then I can chew and I end up looking bad for it because I did not estimate a deadline correctly.&lt;br /&gt;&lt;br /&gt;4) Try not to think of work on the weekends.&lt;br /&gt;You can get a fresh start on Monday with a different perspective on your problem.  It's good to take a break from specific problems that are starting to give you a headache.&lt;br /&gt;&lt;br /&gt;5) Don't waste time thinking about what you could of done.&lt;br /&gt;This will get you know where.  Just focus on what you need to get done at the moment and just do it.  You can worry about having regret later, when the dust settles.&lt;br /&gt;&lt;br /&gt;Those are just some bullet points I was thinking about.  I definitely have to work on all of those.  It's not a bible, just something to try to help organize yourself and your tasks.  Anyway, if you have any other points to add, leave a comment and I will add it to this list.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9221110907017630260-5620701747931575534?l=codehappy.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/UcOzKmfs4FK4Ci46CPd4XSK9Tz0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/UcOzKmfs4FK4Ci46CPd4XSK9Tz0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/UcOzKmfs4FK4Ci46CPd4XSK9Tz0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/UcOzKmfs4FK4Ci46CPd4XSK9Tz0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/codehappy/~4/bb_JWrsWfZo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://codehappy.blogspot.com/feeds/5620701747931575534/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9221110907017630260&amp;postID=5620701747931575534" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9221110907017630260/posts/default/5620701747931575534?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9221110907017630260/posts/default/5620701747931575534?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/codehappy/~3/bb_JWrsWfZo/lazy-lazy-and-being-even-more-lazy.html" title="Just Do It!" /><author><name>MatthewJ</name><uri>http://www.blogger.com/profile/04872395334936809138</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><feedburner:origLink>http://codehappy.blogspot.com/2008/01/lazy-lazy-and-being-even-more-lazy.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0QBQHg6fSp7ImA9WB9bF04.&quot;"><id>tag:blogger.com,1999:blog-9221110907017630260.post-6539671675430517185</id><published>2007-12-26T18:55:00.000-08:00</published><updated>2007-12-26T20:55:51.615-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-12-26T20:55:51.615-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Code" /><title>Merry Belated Xmas:  Take a stroll down Ext Lane</title><content type="html">Took a bit of break from blogging and spent some time bonding with the family, doing some fun coding, watched a sick amount of movies and even did a bit of exercising.   Wow, that seems like a lot to put in one sentence.   Well, now it is time to get back blogging!  It's almost the new year but I have plenty of articles left to write in 2007.  Without further ado, let's take a stroll down Ext lane!&lt;br /&gt;&lt;br /&gt;I spent a fair amount of time tinkering with new technology.  At least new to me.  I didn't really have a term for it, so I have dubbed it &lt;span style="font-weight: bold;"&gt;fun coding&lt;/span&gt;.  Alas, I happened to go to Javascript, its nothing new to me but I haven't really gotten a chance to sit down and play with Ext 2.0 yet.  I am amazed by what you can do with around 65 lines of code.  Makes me want to learn more about what dynamic languages can do for me!   Who wants verbose statically typed java/c# anymore!  Ha, I kid.  But, I could potentially cut my code base by half if I went to dynamic languages such as python, groovy, or ruby.  I am sure there are others but the aforementioned languages came to mind.  Anyway let's check out some ext code that I wrote up:&lt;br /&gt;&lt;br /&gt;&lt;insert ext="" code="" here=""&gt;Ext.onReady(function(){&lt;br /&gt;&lt;/insert&gt;&lt;div style="text-align: center;"&gt;&lt;div style="text-align: left;"&gt;&lt;insert ext="" code="" here=""&gt;    var north = new Ext.Panel(&lt;/insert&gt;&lt;br /&gt;&lt;insert ext="" code="" here=""&gt;        new Ext.BoxComponent({ // raw element&lt;/insert&gt;&lt;br /&gt;&lt;insert ext="" code="" here=""&gt;                region:'north',&lt;/insert&gt;&lt;br /&gt;&lt;insert ext="" code="" here=""&gt;                el: 'north',&lt;/insert&gt;&lt;br /&gt;&lt;insert ext="" code="" here=""&gt;                height:32&lt;/insert&gt;&lt;/div&gt;&lt;insert ext="" code="" here=""&gt;&lt;/insert&gt;&lt;/div&gt;&lt;insert ext="" code="" here=""&gt;            }));&lt;br /&gt;   var west = new Ext.Panel({&lt;br /&gt;       region: 'west',&lt;br /&gt;       contentEl: 'west',&lt;br /&gt;       title: 'Nav',&lt;br /&gt;       width: 200,&lt;br /&gt;       minSize: 175,&lt;br /&gt;       maxSize: 400,&lt;br /&gt;       collapsible: true,&lt;br /&gt;       margins: '0 0 5 5',&lt;br /&gt;       cmargins: '0 5 5 5',&lt;br /&gt;       layout: 'accordion',&lt;br /&gt;       layoutConfig: {&lt;br /&gt;           animate: true&lt;br /&gt;       },&lt;br /&gt;       items: [{&lt;br /&gt;           title: 'Nav1',&lt;br /&gt;           autoScroll: true,&lt;br /&gt;           border: false,&lt;br /&gt;       }, {&lt;br /&gt;           title: 'Nav2',&lt;br /&gt;           border: false,&lt;br /&gt;           autoScroll: true,&lt;br /&gt;       }]&lt;br /&gt;   });&lt;br /&gt;   var center = new Ext.TabPanel({&lt;br /&gt;       region: 'center',&lt;br /&gt;       contentEl: 'center',&lt;br /&gt;       border: false,&lt;br /&gt;       activeTab: 1,&lt;br /&gt;       tabPosition: 'top',&lt;br /&gt;       items: [{&lt;br /&gt;           html: '&lt;/insert&gt;&lt;p&gt;Test Me&lt;/p&gt;',&lt;br /&gt;           title: 'Tabby Tab',&lt;br /&gt;           autoScroll: true&lt;br /&gt;       }]&lt;br /&gt;   });&lt;br /&gt;   var south = new Ext.Panel({&lt;br /&gt;       region: 'south',&lt;br /&gt;       contentEl: 'south',&lt;br /&gt;       split: true,&lt;br /&gt;       height: 100,&lt;br /&gt;       minSize: 100,&lt;br /&gt;       maxSize: 200,&lt;br /&gt;       collapsible: true,&lt;br /&gt;       title: 'South',&lt;br /&gt;       margins: '0 0 0 0'&lt;br /&gt;   });&lt;br /&gt; &lt;br /&gt;   var viewport = new Ext.Viewport({&lt;br /&gt;       layout: 'border',&lt;br /&gt;       items: [north, west, center, south]&lt;br /&gt;   })&lt;br /&gt;});&lt;br /&gt;&lt;br /&gt;This is a basic skeleton that you could work with.  You could refactor these parts to be  extended ext objects, and then add your own custom functionality to these pieces, but I leave that as an exercise for the reader.  This could be another blog post if someone is interested in it.  Just holler!&lt;br /&gt;&lt;br /&gt;Still did a bit of plugging away with GWT.  I find it verbose, but manageable.   I wanted to show you, but it is too much code.  I will make another post specifically on GWT soon.  &lt;insert gwt="" code="" here=""&gt;&lt;br /&gt;&lt;br /&gt;Still striving to make my way to a (close to) perfectly working, usable example of ext with a JEE middle tier, and &lt;pick&gt;, that hopefully you can use as a skeleton for your own projects.   I have my basic interface designed but the database needs to be worked on. I am trying to be careful, because there are many potential features that could go into a workout program and there is only one person to maintain the code! Hence, I want to make the code as brief as possible.&lt;br /&gt;&lt;br /&gt;I do hope you all had a great holiday and I will be posting soon.  I figure I gotta talk about some of the movies I saw.  Oh boy, there are some great ones (Live Free or Die Hard) and some really horrible, I-can't-believe-you-call-this-piece-of-trash-a-movie movie(Lions for Lambs).&lt;br /&gt;&lt;br /&gt;Update:  I need to find a better way to post code.  Please bare with me for the time being!&lt;br /&gt;&lt;/pick&gt;&lt;/insert&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9221110907017630260-6539671675430517185?l=codehappy.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/GAaBqgaUjeQvFf5itUZZoBmTAj4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/GAaBqgaUjeQvFf5itUZZoBmTAj4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/GAaBqgaUjeQvFf5itUZZoBmTAj4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/GAaBqgaUjeQvFf5itUZZoBmTAj4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/codehappy/~4/y7vxXlOJEnE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://codehappy.blogspot.com/feeds/6539671675430517185/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9221110907017630260&amp;postID=6539671675430517185" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9221110907017630260/posts/default/6539671675430517185?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9221110907017630260/posts/default/6539671675430517185?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/codehappy/~3/y7vxXlOJEnE/merry-belated-xmas-take-stroll-down-ext.html" title="Merry Belated Xmas:  Take a stroll down Ext Lane" /><author><name>MatthewJ</name><uri>http://www.blogger.com/profile/04872395334936809138</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><feedburner:origLink>http://codehappy.blogspot.com/2007/12/merry-belated-xmas-take-stroll-down-ext.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkEGQ3Y_eSp7ImA9WB9bEE4.&quot;"><id>tag:blogger.com,1999:blog-9221110907017630260.post-7555649411997597356</id><published>2007-12-18T17:55:00.000-08:00</published><updated>2007-12-18T20:30:22.841-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-12-18T20:30:22.841-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Code" /><title>Lead by example:  spring/hibernate/shards</title><content type="html">&lt;span class="sqq"&gt;When I wrote the posts about using Hibernate and Hibernate shards, I did so offering very little code. I realize that doing so does not provide you, the reader, enough to go out there and actually want to try this technology.  That is my fault.&lt;br /&gt;&lt;br /&gt;I am happy to announce, that I am now working on a simple Spring/Hibernate example that you will be able to download and hack together however you please.  Following that posting, I will dissect the main points of that project.  At least, the main points that I derive from it, but I encourage comments that lead me to be even more clear about topics that I did not discuss.  Some of the main ideas I want to hit on are:&lt;br /&gt;&lt;/span&gt;&lt;ol&gt;&lt;li&gt;Hibernate =&gt; by example'&lt;/li&gt;&lt;ol&gt;&lt;li&gt;Creating your data layer&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Basic ORM management&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Sharding&lt;/li&gt;&lt;/ol&gt;&lt;li&gt;Spring =&gt; Why use it?&lt;/li&gt;&lt;ol&gt;&lt;li&gt;Dependency Injection&lt;/li&gt;&lt;li&gt;Inversion of Control&lt;/li&gt;&lt;li&gt;MVC&lt;/li&gt;&lt;/ol&gt;&lt;/ol&gt;&lt;span class="sqq"&gt;Yea, that's  going to be a few posts.  But I think it will be worth it.   I hope you agree.   I recently  found a quote that lead me down this path that I am about to embark upon:&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;br /&gt;“Tell me and I'll forget; show me and I may remember; involve me and I'll understand.”&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;I think it is perfectly valid.  You won't learn by just reading.  You will learn by me showing you by example,  and by interacting with my example.  Hopefully at that point, you will understand it.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9221110907017630260-7555649411997597356?l=codehappy.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/lspvzuT3GfzWseOjjUmoeqLkfbY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/lspvzuT3GfzWseOjjUmoeqLkfbY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/lspvzuT3GfzWseOjjUmoeqLkfbY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/lspvzuT3GfzWseOjjUmoeqLkfbY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/codehappy/~4/GqVeohwpCn4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://codehappy.blogspot.com/feeds/7555649411997597356/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9221110907017630260&amp;postID=7555649411997597356" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9221110907017630260/posts/default/7555649411997597356?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9221110907017630260/posts/default/7555649411997597356?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/codehappy/~3/GqVeohwpCn4/lead-by-example-springhibernateshards.html" title="Lead by example:  spring/hibernate/shards" /><author><name>MatthewJ</name><uri>http://www.blogger.com/profile/04872395334936809138</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><feedburner:origLink>http://codehappy.blogspot.com/2007/12/lead-by-example-springhibernateshards.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkAAR34_eip7ImA9WB9UGUg.&quot;"><id>tag:blogger.com,1999:blog-9221110907017630260.post-4898769445988597275</id><published>2007-12-17T19:34:00.000-08:00</published><updated>2007-12-17T20:05:46.042-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-12-17T20:05:46.042-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Happiness" /><title>Free movie screenings!</title><content type="html">My buddy John and I were walking around the Irvine spectrum, grabbing a bite to eat and taking in the ambiance of the first week of Xmas shopping.  Yes, it was a mad rush, but they had all the &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_0"&gt;Xmas&lt;/span&gt; classics playing over the outside speakers, like carol of the bells, twas the night before &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_1"&gt;Xmas&lt;/span&gt;, etc.  On our way going through the outdoor mall, we passed by the movie  theatre and were astonished by how many people were in line. &lt;br /&gt;&lt;br /&gt;We looked at each other and said what the hell is going on over here?  What opened?  Moments later a friendly gentlemen approached us and asked us if we wanted to know what all the commotion was about.  We of course said, "YES! What is going on over here!"  The dude, carrying a satchel explains to us that everyone is in line for a free screening of &lt;span style="font-weight: bold;"&gt;Get Smart&lt;/span&gt;, which does not come out until the summer.  He then asked us if we wanted to go to the next show.  We said hell ya!  Free MOVIE!! WOO &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;HOO&lt;/span&gt;! &lt;br /&gt;&lt;br /&gt;We came back not more, then three hours later and stood in line for Get Smart, filling out some annoying questionnaires for the company that put on the screening.  Small price to pay for a free flick in my opinion.  There were lots of friendly people in line.  There was a hardware designer in line asking us if my friend and I would like to work in the defense industry, to be glorified code &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_3"&gt;monkeys&lt;/span&gt;.  No thanks!!!  He was a nice, old chap.  The other people we met in line, were geek central, but they were fun!  Naturally people just coming to the spectrum were interested in all the hub bub like I was and it was fun to play with them.  The geeks and I were having fun telling people all sorts of things.  Yes, we are in line for a free bucket of popcorn!  Oh yes, we are in line for Batman, The Dark Knight!  Pardon me, oh why are we in line, ah yes, we are here to get free movie tickets for a year!  Oh it passed the time, we stood in line for a good ten hours.  HA, just kidding, more like 45 min.  We had fun talking with our new found friends.&lt;br /&gt;&lt;br /&gt;I suppose I should actually talk about the movie.   I had absolutely no expectations about this movie coming into it, so it would be pretty hard to disappoint me.  Needless to say, I did enjoy it, and especially liked Steve &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;Carell's&lt;/span&gt; performance.  It was pretty damn funny too!  Some of the jokes really were pretty adult.  I'm laughing now about a few of them, but I would hate to give it  away so I will stop there.&lt;br /&gt;&lt;br /&gt;At the end of the movie, we had to fill out a form and give our opinion about several aspects of the moving.  For example, we were asked to rate how the movie flowed in the beginning, middle an end.  We had to rate the actor's performance, name five scenes we liked as well as five scenes we did not like.  It was a good two pages of writing that we had to do, which I am sure is far more valuable then the free movie we got to see.  But let's face it.  I wasn't going to see this movie in the theater.  So they made money off off of me, and I got to see a movie that I was pleasantly surprised with, that I would probably not have rented.&lt;br /&gt;&lt;br /&gt;As we walked out of the theater, we were approached by the same guy that gave us the tickets.  He asked us how we liked it, and we told him we did.  He then said, well, how would guys like to see another &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;screener&lt;/span&gt;?!  I am a sucker for a free movie that no one else can see!  Turned out to be Balls Out:  The Gary Houseman Story.  &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;FREAKIN&lt;/span&gt;' HILARIOUS.  You have to see that one, just go to the theater and see it!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9221110907017630260-4898769445988597275?l=codehappy.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/BiClgReGYF_Kx5OzTBmgrUTI0Tc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/BiClgReGYF_Kx5OzTBmgrUTI0Tc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/BiClgReGYF_Kx5OzTBmgrUTI0Tc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/BiClgReGYF_Kx5OzTBmgrUTI0Tc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/codehappy/~4/lPCcTyRg9Kw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://codehappy.blogspot.com/feeds/4898769445988597275/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9221110907017630260&amp;postID=4898769445988597275" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9221110907017630260/posts/default/4898769445988597275?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9221110907017630260/posts/default/4898769445988597275?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/codehappy/~3/lPCcTyRg9Kw/free-movie-screenings.html" title="Free movie screenings!" /><author><name>MatthewJ</name><uri>http://www.blogger.com/profile/04872395334936809138</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><feedburner:origLink>http://codehappy.blogspot.com/2007/12/free-movie-screenings.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUENSXk8fCp7ImA9WB9bEE4.&quot;"><id>tag:blogger.com,1999:blog-9221110907017630260.post-5769127139900581127</id><published>2007-12-13T19:28:00.000-08:00</published><updated>2007-12-18T19:08:18.774-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-12-18T19:08:18.774-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Happiness" /><title>Scare Fest 07':  Knott's Scary Farm Halloween Haunt Map!</title><content type="html">As Promised, the map is here.  Unfortunately it is gray scale and about 5 megs.  But it does do the map justice as you can actually read the letters on the page and get a feel for how Knott's is laid out during this wonderful time of year.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://eagencymatt.googlepages.com/haunt.pdf"&gt;Click here to download!&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Enjoy!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9221110907017630260-5769127139900581127?l=codehappy.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ejltEd0P1-PPIOfF9UyY5H9oKI4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ejltEd0P1-PPIOfF9UyY5H9oKI4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ejltEd0P1-PPIOfF9UyY5H9oKI4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ejltEd0P1-PPIOfF9UyY5H9oKI4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/codehappy/~4/hlq6M9f8E6k" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://codehappy.blogspot.com/feeds/5769127139900581127/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9221110907017630260&amp;postID=5769127139900581127" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9221110907017630260/posts/default/5769127139900581127?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9221110907017630260/posts/default/5769127139900581127?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/codehappy/~3/hlq6M9f8E6k/scare-fest-07-knotts-scary-farm.html" title="Scare Fest 07':  Knott's Scary Farm Halloween Haunt Map!" /><author><name>MatthewJ</name><uri>http://www.blogger.com/profile/04872395334936809138</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><feedburner:origLink>http://codehappy.blogspot.com/2007/12/scare-fest-07-knotts-scary-farm.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUQNQHs9fSp7ImA9WB9UFko.&quot;"><id>tag:blogger.com,1999:blog-9221110907017630260.post-3489812787008602208</id><published>2007-12-12T21:32:00.000-08:00</published><updated>2007-12-14T16:09:51.565-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-12-14T16:09:51.565-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Code" /><title>Hibernate Shards</title><content type="html">I suppose I have been on sort of a hibernate kick, but my buddy John was asking about this tonight.  So I decided to give a short little description of what it is and why is it useful.&lt;br /&gt;&lt;br /&gt;I have explained what Hibernate is, but not demonstrated it through a deployable example.  So I apologize ahead of time, if you have not used Hibernate and are still scratching your head wondering what the hell I am actually talking about.  That is my bad, and I will correct it.&lt;br /&gt;&lt;br /&gt;Moving right along, lets describe what a shard is.  Simply put, a shard is a database that exists in a set of databases that contain the same schema aka shards.  What makes a single shard special is that it does not hold all of the information for the entire application.  It holds a very specific amount of information that pertains to the rule that is given to the Shard Strategy algorithm.  Let me give you an example.  Let us assume you have a database full of users.  Let us also assume that all of those users have contacts. We have a three shard solution.  Now, I can implement a sharding algorithm that says, put all of the users that have a login name of A-J in shard 1, K-T in shard 2, and T-Z in shard 3.&lt;br /&gt;&lt;br /&gt;What is the benefit of doing this?  The obvious benefit is that I have now gone from one pipe of average size, to three pipes of average size.  That is huge!  The strategy I may have implemented is not perfect so I will not always get the benefit from having three pipes, but with a better Sharding Strategy, I can theoretically  get three operations done at once a majority of the time.&lt;br /&gt;&lt;br /&gt;This is basically a solution to provide horizontal scaling of a database.  I can increase to any number of shards I want, as long as I specified at the beginning of the project how many shards I wanted to use at the beginning.  If you did not, you can still do it, but it will be painful, so think long and hard about that.  And I hope you have a nice DBA at that point :).&lt;br /&gt;&lt;br /&gt;There are some drawbacks to this type of thinking.  You cannot implement cross sharding joins.  They are currently not supported.  You can't increase the number of shards easily, from what I have described in the previous paragraph, so you would have to use something called virtual shards to make your process a bit easier.  Distributed transactions are not supported by hibernate shards as well.  Oh yea, and its in beta, so hopefully you won't come across too many bugs.&lt;br /&gt;&lt;br /&gt;With that being said, I think the positives outweigh the negatives and if it worked for YouTube, I am fairly certain it might work with your project as well, if it gets to that size where you need to be concerned about database scaling and replication ( Vertical Database Scaling) is not able to cut the mustard.&lt;br /&gt;&lt;br /&gt;Hopefully I have given you a really fundamental idea of what is going on with hibernate shards.  Feel free to ask questions and I will answer them to the best of my ability.  I will try to create a project to show off what this brilliant technology accomplishes!&lt;br /&gt;&lt;br /&gt;Here is a link to documentation if you are interested:&lt;br /&gt;http://www.hibernate.org/hib_docs/shards/reference/en/html/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9221110907017630260-3489812787008602208?l=codehappy.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/4DP7ia840xJezkdenQAXReK1HBA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/4DP7ia840xJezkdenQAXReK1HBA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/4DP7ia840xJezkdenQAXReK1HBA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/4DP7ia840xJezkdenQAXReK1HBA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/codehappy/~4/DM6jeiwcQxo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://codehappy.blogspot.com/feeds/3489812787008602208/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9221110907017630260&amp;postID=3489812787008602208" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9221110907017630260/posts/default/3489812787008602208?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9221110907017630260/posts/default/3489812787008602208?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/codehappy/~3/DM6jeiwcQxo/hibernate-shards.html" title="Hibernate Shards" /><author><name>MatthewJ</name><uri>http://www.blogger.com/profile/04872395334936809138</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><feedburner:origLink>http://codehappy.blogspot.com/2007/12/hibernate-shards.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CU8NR3o4fyp7ImA9WB9UFU8.&quot;"><id>tag:blogger.com,1999:blog-9221110907017630260.post-7264380034668494442</id><published>2007-12-12T20:36:00.000-08:00</published><updated>2007-12-12T21:31:36.437-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-12-12T21:31:36.437-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Happiness" /><title>Scare Fest 07': Knott's Part 2</title><content type="html">Sorry Folks, didn't get the map in there.  But I will once I find a nice color scanner that can do the Knott's Scary Farm map justice!  But just a few more comments on this past years experience:&lt;br /&gt;&lt;br /&gt;The Hanging was as biting as ever.  It featured Mad Max in a futuristic world, with all the regular ribbing at the celebrities' expense.  They roasted the Pirates of the Carribean, Paris, Britney, Lindsay, and Tom Cruise just to name a few of the celebrities that got RIPPED.  And, as with tradition, a celebrity is hung at the end of the show.  This year however, was truly lame; they hung Sanjaya from American Idol.  Wow, did not expect that one!  In fact, the field was so rich from all the idiot things celebrities have done this year that they most likely said, "Hey lets just choose someone that no one would expect.   That will really  throw them off!"&lt;br /&gt;&lt;br /&gt;I went to see Hacks right after that so I could sit down for a bit.  At this point I was walking around for around five hours and just wanted to rest.  This show had its bright points for being staged.  Some of the jokes were a bit racy, which made them that much funnier.  If I had started this blog in October, I would be able to offer you examples of the funniness, but alas I didn't so you will have to wait for next year to hear them.&lt;br /&gt;&lt;br /&gt;Lost Vegas was pretty good this year.  This maze is set in twisted, twilight zone existence that became of Las Vegas.  At first glance this maze doesn't look as intimidating as the scarier mazes that I went through, such as the log ride or the doll factory.  But it was, they had some well placed black-out monsters.  A black-out monster, if this is not obvious, is just a monster that blends into the background.  The black-out monsters that I experienced were almost indistinguishable from the background and three of them came from all sides of me and made me jump onto the ceiling!  It was terrifying.  That and the hot girl that was on a strippers pole that made maze worthwhile.&lt;br /&gt;&lt;br /&gt;That was it as far as Knott's was concerned, the rest of the mazes were ok, nothing really changed about them if you had gone the previous years.  Until next year, I will not have pleasure of writing another one of these articles about the most storied haunt of them all!&lt;br /&gt;&lt;br /&gt;Next haunted review:  Shiprweck aboard the Queen Mary ship!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9221110907017630260-7264380034668494442?l=codehappy.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/0kDnuGFlK3pe2j15TBULGRXM9Og/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/0kDnuGFlK3pe2j15TBULGRXM9Og/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/0kDnuGFlK3pe2j15TBULGRXM9Og/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/0kDnuGFlK3pe2j15TBULGRXM9Og/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/codehappy/~4/ue4jYmU3IZQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://codehappy.blogspot.com/feeds/7264380034668494442/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9221110907017630260&amp;postID=7264380034668494442" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9221110907017630260/posts/default/7264380034668494442?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9221110907017630260/posts/default/7264380034668494442?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/codehappy/~3/ue4jYmU3IZQ/scare-fest-07-knotts-part-2.html" title="Scare Fest 07': Knott's Part 2" /><author><name>MatthewJ</name><uri>http://www.blogger.com/profile/04872395334936809138</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><feedburner:origLink>http://codehappy.blogspot.com/2007/12/scare-fest-07-knotts-part-2.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DE8MQXg5fCp7ImA9WB9UE0k.&quot;"><id>tag:blogger.com,1999:blog-9221110907017630260.post-5000295809813179251</id><published>2007-12-10T16:55:00.000-08:00</published><updated>2007-12-10T20:21:20.624-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-12-10T20:21:20.624-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Happiness" /><title>Scare Fest 07':  A Year in Review</title><content type="html">Ah, Halloween is such a festive, happy time of year for me.  You get that first hint of briskness in the air.  The leaves start to change color.  It starts to get a little darker at night.  These are the signs to me that Halloween is coming soon.   The time to be scared is upon us!  Unfortunately 2007's season has come and pass leaving me to look forward to the next.   But what makes this season so special?&lt;br /&gt;&lt;br /&gt;Typically, I like to enjoy Halloween by going to several Haunted Houses and to Disneyland.  I prepare myself for this special month by seeing lots of scary movies.  Since I never watched scary films until seven years ago, I have missed quite a lot, and there are plenty for me to digest every year.  I say every year like I have been doing this for a while.  In all honesty, I have only been celebrating Halloween seriously for the last two years.  Those two years have been such a good time, I now consider it a tradition!  And by far, going to Haunts is the most fun tradition to have.&lt;br /&gt;&lt;br /&gt;Going to Haunted Houses is such a great rush.  This year I went to three different haunted houses.  The first Haunted House I went to this season was Knott's Scary Farm.  This particular haunt has been around for 35 years.  They started the haunt business.  For those of you who have not heard of it, it's Knott's Berry Farm dressed up for Halloween.  The nice people at cedar fair haunt the ENTIRE park.  That includes 13 mazes (more like labyrinths) and four scare zones.  Scare zones are areas of the park where monsters like to be sneaky, and try to catch you off guard and scare the pants off you.  They are very good at that.  Tomorrow I will upload a map of the park but for now here is a list of the mazes, scare zones and shows:&lt;br /&gt;&lt;br /&gt;Mazes:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Feary Tales&lt;/li&gt;&lt;li&gt;The Asylum&lt;/li&gt;&lt;li&gt;13 Axe Murder Manor&lt;/li&gt;&lt;li&gt;The Doll Factory&lt;/li&gt;&lt;li&gt;Lost Vegas in 3-D&lt;/li&gt;&lt;li&gt;Black Widow's Cavern&lt;/li&gt;&lt;li&gt;Pyromaniax&lt;/li&gt;&lt;li&gt;Killer Klown Kollege&lt;/li&gt;&lt;li&gt;Dark Realm - Laser Rage&lt;/li&gt;&lt;li&gt;The Grudge II&lt;/li&gt;&lt;li&gt;Lore of the Vampire&lt;/li&gt;&lt;li&gt;Red Beard's Revenge&lt;/li&gt;&lt;li&gt;Labyrinth into Darkness&lt;/li&gt;&lt;/ul&gt;Scare Zones&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Ghost Town&lt;/li&gt;&lt;li&gt;Silver Bullet Mining Town&lt;/li&gt;&lt;li&gt;The Gauntlet&lt;/li&gt;&lt;li&gt;CarnEVIL&lt;/li&gt;&lt;li&gt;Fortune Tellers&lt;/li&gt;&lt;/ul&gt;Shows&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The Rocketz&lt;/li&gt;&lt;li&gt;The Hanging&lt;/li&gt;&lt;li&gt;Death of Dr. Cleaver&lt;/li&gt;&lt;li&gt;Hacks!&lt;/li&gt;&lt;li&gt;Inferno&lt;/li&gt;&lt;li&gt;The Chipper Lowell Experience&lt;/li&gt;&lt;li&gt;Zamora's Side Show of the Bizarre&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Now I'll be the first to tell you that this is almost impossible to do in one night, even on a slow night.  You might be able to do half of the park on a very busy night.  But as you can see, that is a lot of stuff to do.  So where do we start?  Everyone loves a good maze. &lt;br /&gt;&lt;br /&gt;One of my favorite mazes is Red Beards Revenge.  This maze is set aboard a pirate ship...surprised right?!  It was well decked out with a unsteady bridge that you cross with pirates coming down from the ceiling which absolutely terrified me.&lt;br /&gt;&lt;br /&gt;Pyromaniax is terrifying.  Let me try to paint the picture.  Have you ever been on the Matterhorn at Disneyland?  If not picture yourself on a canoe going down a white water river.  Now, imagine yourself going down a white water river where toxic waste has mutated all of the townsfolk.  Monster's pop out of every hidden corner and get right in your face.  This was by far the best maze Knott's had to offer.&lt;br /&gt;&lt;br /&gt;Another maze I liked this year was the doll factory.  Knott's put a lot of detail into this one!  This might have been mimicked from the movie Dead Silence, and that was pretty creepy.  Anything involving dolls is creepy!&lt;br /&gt;&lt;br /&gt;I just realized this post is getting quite long so I am going to break up my review of Knott's Scary Farm into a two part special treat.  I will post the map tomorrow so you can get a general idea of what I am talking about.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9221110907017630260-5000295809813179251?l=codehappy.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ISRVuumoCrLQ3hg4IXnQZ5wYugI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ISRVuumoCrLQ3hg4IXnQZ5wYugI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ISRVuumoCrLQ3hg4IXnQZ5wYugI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ISRVuumoCrLQ3hg4IXnQZ5wYugI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/codehappy/~4/5f_FGSV39sI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://codehappy.blogspot.com/feeds/5000295809813179251/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9221110907017630260&amp;postID=5000295809813179251" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9221110907017630260/posts/default/5000295809813179251?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9221110907017630260/posts/default/5000295809813179251?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/codehappy/~3/5f_FGSV39sI/scare-fest-07-year-in-review.html" title="Scare Fest 07':  A Year in Review" /><author><name>MatthewJ</name><uri>http://www.blogger.com/profile/04872395334936809138</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><feedburner:origLink>http://codehappy.blogspot.com/2007/12/scare-fest-07-year-in-review.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUUFSXYyeSp7ImA9WB9UEEQ.&quot;"><id>tag:blogger.com,1999:blog-9221110907017630260.post-7225169037240655615</id><published>2007-12-07T18:45:00.000-08:00</published><updated>2007-12-07T21:53:38.891-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-12-07T21:53:38.891-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Life" /><title>My Big Move</title><content type="html">Sorry for being incommunicado lately, I am in the process of moving out of sunny, warm California to the freezing, snow covered east coast! I have recently accepted a software engineering &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_0"&gt;position&lt;/span&gt; out here and I can't wait to start. With that being said, I haven't had access to a computer for a couple days, so just wanted you all to know, about a few articles I have been thinking about that I am planning on writing:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Hibernate: A more concrete example that will show off the full capability hibernate offers.&lt;/li&gt;&lt;li&gt;Scare Fest 07', Belated Haunt Reviews!&lt;/li&gt;&lt;li&gt;Spring 101&lt;/li&gt;&lt;li&gt;The &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;MVC&lt;/span&gt; approach&lt;/li&gt;&lt;li&gt;Practical Programming&lt;/li&gt;&lt;li&gt;Free movie screenings!&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;That is coming up!! Not &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_2"&gt;necessarily&lt;/span&gt; in that order, as I am really excited to talk about the Halloween goodness that came and went in October. It was one of the most fun months I have ever had this last year. But we can talk about that later. &lt;/p&gt;&lt;p&gt;Hope you like what I have in store!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9221110907017630260-7225169037240655615?l=codehappy.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/jdCvsysdhEssTWuIjR34JUYsg34/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/jdCvsysdhEssTWuIjR34JUYsg34/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/jdCvsysdhEssTWuIjR34JUYsg34/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/jdCvsysdhEssTWuIjR34JUYsg34/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/codehappy/~4/n6LDtmwC0pc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://codehappy.blogspot.com/feeds/7225169037240655615/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9221110907017630260&amp;postID=7225169037240655615" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9221110907017630260/posts/default/7225169037240655615?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9221110907017630260/posts/default/7225169037240655615?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/codehappy/~3/n6LDtmwC0pc/my-big-move.html" title="My Big Move" /><author><name>MatthewJ</name><uri>http://www.blogger.com/profile/04872395334936809138</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><feedburner:origLink>http://codehappy.blogspot.com/2007/12/my-big-move.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUcEQXs-cSp7ImA9WB9VGEk.&quot;"><id>tag:blogger.com,1999:blog-9221110907017630260.post-877351741927941641</id><published>2007-12-04T22:36:00.001-08:00</published><updated>2007-12-05T00:23:20.559-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-12-05T00:23:20.559-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Code" /><title>Hibernate:  What is it, and why should I use it?</title><content type="html">If you had asked me this question a few years ago, I would not have known how to answer it.  I might have said, "Sure, isn't that what animals do in the winter time to conserve energy?!!!" ERRRRRRR, wrong!  Well, it's partially correct. They do, but that is not what we are talking about here.  It actually is also a great piece of software that I am not sure how prevalent it is inside the developer community.  Hence, I will try to give you a quick intro to describe what hibernate is.  Hibernate is an ORM, also known as an &lt;span style="font-weight: bold;"&gt;Object Relational Mapper&lt;/span&gt;.  It maps database tables to Java or C# objects.  You can use XML to map the elements of the table, or, if your using Java, the advancement of JPA (Java Persistence API) allows you to map the elements of the database table inside the class.  That may be a lot to suck down so let me try to explain all of this with some sample code.&lt;br /&gt;&lt;br /&gt;Here is a sample table from a database:&lt;code&gt;&lt;/code&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;span class="highlight1"&gt;mysql&lt;/span&gt;&gt; CREATE &lt;span class="highlight3"&gt;TABLE&lt;/span&gt; Car(&lt;br /&gt;   id INT,&lt;br /&gt;   &lt;/code&gt;&lt;code&gt;data VARCHAR(100),&lt;br /&gt;color VARCHAR(20),&lt;br /&gt;   engine VARCHAR(20),&lt;br /&gt;type VARCHAR(20)&lt;br /&gt; );&lt;/code&gt; &lt;/pre&gt;So now we have a table named car in a mysql database.  Let's make a pojo using JPA, which makes use of Java annotations:&lt;br /&gt;&lt;br /&gt;@Entity&lt;br /&gt;@Table(name = "Car")&lt;br /&gt;public class Car {&lt;br /&gt;private Integer id;&lt;br /&gt;private String data;&lt;br /&gt;private String color;&lt;br /&gt;private String engine;&lt;br /&gt;private String type;&lt;br /&gt;&lt;br /&gt;public Car () {&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;@Id&lt;br /&gt;@Column(name = "id", unique = true, nullable = false)&lt;br /&gt;@GeneratedValue(strategy = GenerationType.IDENTITY)&lt;br /&gt;public Integer getId(){&lt;br /&gt;  return this.id;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void setId(Integer id){&lt;br /&gt;   this.id = id;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;@Column(name = "data", length = 100)&lt;br /&gt;public String getData() {&lt;br /&gt;   return this.data;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void setData(String data){&lt;br /&gt;   this.data= data&lt;span style="font-weight: bold;"&gt;;&lt;/span&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;@Column(name = "color", length = 20)&lt;br /&gt;public String getColor() {&lt;br /&gt;   return this.color;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void setData(String color){&lt;br /&gt;    this.color= color;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;@Column(name = "engine", length = 20)&lt;br /&gt;public String getEngine() {&lt;br /&gt;    return this.engine;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void setEngine(String engine){&lt;br /&gt;     this.engine= engine;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;@Column(name = "type", length = 20)&lt;br /&gt; public String getType() {&lt;br /&gt;     return this.type;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public void setType(String type){&lt;br /&gt;      this.type= type;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Now we have a pojo that is mapped to a database table.  This is the heart of the matter.  So what good does this do for me?  This leads us to question why should I use it.&lt;br /&gt;&lt;br /&gt;Simply put, this is a very quick way to abstract a data layer for any project that needs access to a database.   If you have a team of programmer's that have a limited knowledge of SQL, and mostly have knowledge of  Java or C#, the results that hibernate will provide in productivity alone are worth it.  Here are a few reasons off the top of my head that I have come up with:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;It is just not worth writing inefficient stored procedure's that your dev team will struggle with, that will ultimately have to be replaced later.  Changes to these SP's could percolate all the way down to the business logic layer of your app.  Definitely not good.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;An even worse solution if your team does not know about sp's would be to use inline SQL in code.  This should be avoided at all cost unless you have only one or two tables and you don't really care about the application you are writing about.  &lt;span style="font-style: italic;"&gt;Inline&lt;/span&gt; &lt;span style="font-style: italic;"&gt;SQL&lt;/span&gt; &lt;span style="font-style: italic;"&gt;IS THAT BAD&lt;/span&gt;.  Please avoid it to make your application easier to support.  Support will love you for this!  Not only that, new features will be easier to add, and database modifications will be easier to make since you have confined all of your logic to one layer.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Hibernate is pretty easy to implement, check out the documentation and in about a day you will have a data layer you did not have to write from scratch.  You can then focus more of your time on other equally important aspects of your application, like the business logic layer and the front end.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;Things get more interesting when you start to relate tables and later on I will give you a more complete example.  Hopefully I have explained what ORM's are and you can start digging in and checking out what these ORM's could offer you and your company in the future!  Leave a comment and I will answer questions to the best of my ability.&lt;br /&gt;&lt;br /&gt;Hope this helps!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9221110907017630260-877351741927941641?l=codehappy.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/2RbgAW33-rGVA70dGvScN4CcrsQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/2RbgAW33-rGVA70dGvScN4CcrsQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/2RbgAW33-rGVA70dGvScN4CcrsQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/2RbgAW33-rGVA70dGvScN4CcrsQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/codehappy/~4/3-YKv-HOaOY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://codehappy.blogspot.com/feeds/877351741927941641/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9221110907017630260&amp;postID=877351741927941641" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9221110907017630260/posts/default/877351741927941641?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9221110907017630260/posts/default/877351741927941641?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/codehappy/~3/3-YKv-HOaOY/hibernate-what-is-it-and-why-should-i.html" title="Hibernate:  What is it, and why should I use it?" /><author><name>MatthewJ</name><uri>http://www.blogger.com/profile/04872395334936809138</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>3</thr:total><feedburner:origLink>http://codehappy.blogspot.com/2007/12/hibernate-what-is-it-and-why-should-i.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0MEQnk4fip7ImA9WB9VF0Q.&quot;"><id>tag:blogger.com,1999:blog-9221110907017630260.post-7883705492439705723</id><published>2007-12-02T22:06:00.000-08:00</published><updated>2007-12-04T11:10:03.736-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-12-04T11:10:03.736-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Life" /><title>(In)Formal Introduction</title><content type="html">Welcome to the &lt;span style="font-weight: bold;"&gt;L&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;ife, Code and the Pursuit of Happiness&lt;/span&gt;.   These are articles conjured up in my head, from situations that arise in my life, most likely stemming from one of the three  principles from the title.  I am hoping to delve into all three of these topics from time to time but mostly focus on my passion in life; code.  I use a lot of different tools, languages, principles to create my projects but primarily, use technology on the following list:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Java (JEE)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;.Net (C#/WFC)&lt;/li&gt;&lt;li&gt;JavaScript (particularly the EXT framework)&lt;/li&gt;&lt;li&gt;Spring&lt;/li&gt;&lt;li&gt;Ruby&lt;/li&gt;&lt;li&gt;SOA&lt;/li&gt;&lt;li&gt;Web Services&lt;/li&gt;&lt;li&gt;IDE's (Eclipse,MSVS)&lt;/li&gt;&lt;/ul&gt;Ok, so code is not all of my life.  Sometimes I play video games.  So, occasionally I will  talk about them.   I do not play world of warcraft, or other mmorpg's(massively multiplayer online role playing games), those are way too fancy.   Well, that and just way too addictive.  But hey, to each their own.&lt;br /&gt;&lt;br /&gt;I might also talk a movie or two, since I love them.  Who doesn't?  Well if you don't, I won't hold it against you.&lt;br /&gt;&lt;br /&gt;Anyway, welcome to my blog!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9221110907017630260-7883705492439705723?l=codehappy.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/-0Pk62X3Vs2wNUaZs57UEn2FFZo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/-0Pk62X3Vs2wNUaZs57UEn2FFZo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/-0Pk62X3Vs2wNUaZs57UEn2FFZo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/-0Pk62X3Vs2wNUaZs57UEn2FFZo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/codehappy/~4/pW3lL7VJy4c" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://codehappy.blogspot.com/feeds/7883705492439705723/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9221110907017630260&amp;postID=7883705492439705723" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9221110907017630260/posts/default/7883705492439705723?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9221110907017630260/posts/default/7883705492439705723?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/codehappy/~3/pW3lL7VJy4c/formal-introduction.html" title="(In)Formal Introduction" /><author><name>MatthewJ</name><uri>http://www.blogger.com/profile/04872395334936809138</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>2</thr:total><feedburner:origLink>http://codehappy.blogspot.com/2007/12/formal-introduction.html</feedburner:origLink></entry></feed>

