<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2548825480627019281</id><updated>2011-04-21T13:05:10.987-07:00</updated><title type='text'>Lori's World</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://lorievans.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2548825480627019281/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://lorievans.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Lori</name><uri>http://www.blogger.com/profile/09105440279973010639</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>9</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2548825480627019281.post-5911189053526643472</id><published>2007-05-24T06:47:00.000-07:00</published><updated>2007-05-24T07:16:52.745-07:00</updated><title type='text'>Practical Design for Developers</title><content type='html'>presented by David Verba&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Resources (book):&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The Non-Designer's Deisgn Book by Robin Williams  (Contrast Repetition Alignment Proximity)&lt;br /&gt;Information Acrhitecture for the World Wide Web  by Rosenfeld and Morville&lt;br /&gt;The Elements of User Experience book by Jesse James Garrett&lt;br /&gt;Observing the User Experience (book)  &lt;br /&gt;About 2.0 - The Essentials of Interaction Design by Alan Cooper (book)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;My Summary:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Looks matter!  Make sure you present an attractive web site that is consistent in presentation of links and actions.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;My Notes:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;what are users context, motivators, challenges?&lt;br /&gt;&lt;br /&gt;The Elements of User Experience book by Jesse James Garrett&lt;br /&gt;&lt;ul&gt;&lt;li&gt;  &lt;span style="font-style: italic;"&gt;surface&lt;/span&gt;&lt;/li&gt;&lt;li&gt;  &lt;span style="font-style: italic;"&gt;skeleton&lt;/span&gt;      - discoverability (make finding things easy), recoverability (actions should be w/o cost), context (sense of time, place and meaning), feedback&lt;/li&gt;&lt;li&gt;  &lt;span style="font-style: italic;"&gt;structure&lt;/span&gt;&lt;/li&gt;&lt;li&gt;  &lt;span style="font-style: italic;"&gt;scope &lt;/span&gt;          - functional spec&lt;/li&gt;&lt;li&gt;  &lt;span style="font-style: italic;"&gt;strategy&lt;/span&gt;      - what are we getting out of the site?  the users?  look for the overlap by first getting to know your stakeholders.  what are the objectives for the site?  get to know the users and determine what their current application usage is.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;think about things in modules&lt;br /&gt;&lt;br /&gt;make sure you have consistency (one phrase for the 'about us' link, for example)&lt;br /&gt;&lt;br /&gt;The Attractiveness Bias (Kennedy/ Nixon debate where radio listeners thought Nixon won and TV viewers thought Kennedy won) - first impressions are made in less than 1 second and have lasting impression on user's opinion of the site&lt;br /&gt;&lt;br /&gt;personality in error messages and design helps&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2548825480627019281-5911189053526643472?l=lorievans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lorievans.blogspot.com/feeds/5911189053526643472/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2548825480627019281&amp;postID=5911189053526643472' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2548825480627019281/posts/default/5911189053526643472'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2548825480627019281/posts/default/5911189053526643472'/><link rel='alternate' type='text/html' href='http://lorievans.blogspot.com/2007/05/practical-design-for-developers.html' title='Practical Design for Developers'/><author><name>Lori</name><uri>http://www.blogger.com/profile/09105440279973010639</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2548825480627019281.post-3889745621165585988</id><published>2007-05-24T06:31:00.000-07:00</published><updated>2007-05-24T07:17:09.806-07:00</updated><title type='text'>Slingshot</title><content type='html'>presented by Scott Burton and Scott Barron&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Resources:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;http://developer.joynet.com&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;My Summary:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Slingshot is potentially a useful tool if you need to be able to have users work on and off-line.  I look forward to seeing some of the issues that are of concern right now (conflict resolution on syncing up, for one) addressed in their first release.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;My Notes:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Connection agnostic Rails apps&lt;br /&gt;works off and on-line - syncs up when you're connected&lt;br /&gt;drag files onto desktop&lt;br /&gt;&lt;br /&gt;Updates to Slingshot -&lt;br /&gt; Downloads app&lt;br /&gt; runs data migrations&lt;br /&gt; all done by itself (not quite there yet)&lt;br /&gt;&lt;br /&gt;How to use:&lt;br /&gt; drop in a rails app (source code is deployed to users)&lt;br /&gt; write activerecord transport layer&lt;br /&gt; deploy&lt;br /&gt;&lt;br /&gt;Options to protect source code - encryption (not a good one if you want to protect IP)&lt;br /&gt;&lt;br /&gt;running on desktop, latency from internet is gone, much more responsive&lt;br /&gt;&lt;br /&gt;recommend at least rail 1.2.1&lt;br /&gt;&lt;br /&gt;synchronization is based on timestamps&lt;br /&gt;&lt;br /&gt;conflict resolution - not addressed&lt;br /&gt;&lt;br /&gt;will be open-sourced in June&lt;br /&gt;&lt;br /&gt;commercial version will have support and possibly other features&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2548825480627019281-3889745621165585988?l=lorievans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lorievans.blogspot.com/feeds/3889745621165585988/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2548825480627019281&amp;postID=3889745621165585988' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2548825480627019281/posts/default/3889745621165585988'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2548825480627019281/posts/default/3889745621165585988'/><link rel='alternate' type='text/html' href='http://lorievans.blogspot.com/2007/05/slingshot.html' title='Slingshot'/><author><name>Lori</name><uri>http://www.blogger.com/profile/09105440279973010639</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2548825480627019281.post-8258186884884493415</id><published>2007-05-24T06:27:00.000-07:00</published><updated>2007-05-24T07:17:29.650-07:00</updated><title type='text'>Rails Support with Custom Daemons</title><content type='html'>presented by Tammer Saleh&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Resources:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;LDAP Server Code is available here:  &lt;br /&gt;http://thoughtbot.com/projects/ldap-ar-gateway  &lt;br /&gt;&lt;br /&gt;svn:  http://svn.thoughtbot.com/ldap-activerecord-gateway&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;My Summary:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Whew!  Don't be afraid to use daemon processes in Rails to do background tasks.  Crib code from Tammer's site to do it!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;My Notes:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Problem:&lt;br /&gt;&lt;br /&gt;Rails app for recruiting company needed client-side integration (mail, address book, outlook)&lt;br /&gt; They built LDAP to ActiveDirectory gateway  (ruby-ldapserver gem)&lt;br /&gt;   returns results from the app db&lt;br /&gt;&lt;br /&gt;daemon - btwn OS kernel and application, usually run in the background disconnected from a terminal&lt;br /&gt;&lt;br /&gt;Logging:&lt;br /&gt;&lt;br /&gt;Testing daemon processes:&lt;br /&gt; use Mocking&lt;br /&gt; set up the Kernel, etc. with a bunch of .expects and then daemonize&lt;br /&gt;   daemon will not actually run&lt;br /&gt;&lt;br /&gt;daemonize as soon as possible in your code - anything you do before daemonizing is lost after daemonizing&lt;br /&gt;rescue anything that could fail as you are cut off from the usual messaging&lt;br /&gt;logger.debug with vigor&lt;br /&gt;&lt;br /&gt;Interface with your data via&lt;br /&gt; WebDAV  file access&lt;br /&gt; SNMP    protocol for monitoring your network equipment&lt;br /&gt; FTP&lt;br /&gt;System Monitoring&lt;br /&gt; ping other sites to see if they're running&lt;br /&gt; long-running tasks (backgroundrb)&lt;br /&gt;Interfacing with other apps through REST&lt;br /&gt; FTP - Highrise&lt;br /&gt; IRC - Campfire proxy&lt;br /&gt;&lt;br /&gt;slides will be available on thoughtbot's main page&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2548825480627019281-8258186884884493415?l=lorievans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lorievans.blogspot.com/feeds/8258186884884493415/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2548825480627019281&amp;postID=8258186884884493415' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2548825480627019281/posts/default/8258186884884493415'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2548825480627019281/posts/default/8258186884884493415'/><link rel='alternate' type='text/html' href='http://lorievans.blogspot.com/2007/05/rails-support-with-custom-daemons.html' title='Rails Support with Custom Daemons'/><author><name>Lori</name><uri>http://www.blogger.com/profile/09105440279973010639</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2548825480627019281.post-6573691707141006442</id><published>2007-05-24T06:24:00.000-07:00</published><updated>2007-05-24T07:17:50.726-07:00</updated><title type='text'>XUL for Rails</title><content type='html'>presented by Max Lansing&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Resources:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;XUL Hello World app at:&lt;br /&gt;http://maxlansing.com/xul_helloworld.zip&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;My Summary:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;XUL gives you a way to have sexy fat-client widgets but, you are restricted to Mozilla&lt;br /&gt;browsers only and you have to hack prototype.js to use it with XUL.  It is pretty simple&lt;br /&gt;to use Rails as a back-end system with XUL since Rails just sends XUL XML documents.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;My Notes:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;pronounced Zool&lt;br /&gt;&lt;br /&gt;Why not just use HTML?&lt;br /&gt; It's nice to have a native-feeling app&lt;br /&gt; and&lt;br /&gt; not have document pages&lt;br /&gt;&lt;br /&gt;Grid-based box model, not document (more trouble)&lt;br /&gt;&lt;br /&gt;good for non-designers&lt;br /&gt;&lt;br /&gt;localization is simple (use XML entities in place of ordinary strings with DTD activated for a particular context)&lt;br /&gt;&lt;br /&gt;can always fallback on XHTML&lt;br /&gt;&lt;br /&gt;thorough documentation, supportive community&lt;br /&gt;&lt;br /&gt;Drawbacks:&lt;br /&gt;&lt;br /&gt;Mozilla Only&lt;br /&gt;slight learning curve&lt;br /&gt;gotta hack prototype.js&lt;br /&gt;builder xml render slow, can use erb instead&lt;br /&gt;some bugs, niche technology means fixes may not get the same attention as other mozilla bugs&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;XBL defines XUL tags, can make your own&lt;br /&gt;looking at XBL is a good way to learn how XUL is implemented&lt;br /&gt;&lt;br /&gt;Deployment a Headache? yes&lt;br /&gt;&lt;br /&gt;To use Rails as back-end:&lt;br /&gt;&lt;br /&gt;Use .rxml or erb&lt;br /&gt;need to specify global chrome skin&lt;br /&gt;XUL response headers right&lt;br /&gt;respond_to, :format, cannot use these (you get a 406)&lt;br /&gt;that's it, rails is sending xml documents and doesn't care about anything else&lt;br /&gt;&lt;br /&gt;Prototype woes:&lt;br /&gt;&lt;br /&gt;Function.prototype.bind() doesn't work as XUL windows are precompiled and don't delegate to Function.prototype.bind()&lt;br /&gt;&lt;br /&gt;Workarounds:&lt;br /&gt;&lt;br /&gt;declare functions using new Function() - huge maintenance headache&lt;br /&gt;or&lt;br /&gt;patch prototype.js, rewriting Function.bind as freestanding function&lt;br /&gt;or&lt;br /&gt;patch prototype and scriptaculous dynamically (he's written one and will give it to us)&lt;br /&gt;&lt;br /&gt;Element.replace() or Element.update() - doesn't work in XUL&lt;br /&gt;&lt;br /&gt;Form.serialize() and Form.Element.serialize() - not available for XUL&lt;br /&gt;&lt;br /&gt;XUL doesn't have forms, window and elements are your form&lt;br /&gt;&lt;br /&gt;except for trickiness with javascript updates, you could write an app that has both a XUL and HTML front-end&lt;br /&gt;XULrunner for offline apps&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2548825480627019281-6573691707141006442?l=lorievans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lorievans.blogspot.com/feeds/6573691707141006442/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2548825480627019281&amp;postID=6573691707141006442' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2548825480627019281/posts/default/6573691707141006442'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2548825480627019281/posts/default/6573691707141006442'/><link rel='alternate' type='text/html' href='http://lorievans.blogspot.com/2007/05/xul-for-rails.html' title='XUL for Rails'/><author><name>Lori</name><uri>http://www.blogger.com/profile/09105440279973010639</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2548825480627019281.post-594988658374796877</id><published>2007-05-24T06:23:00.000-07:00</published><updated>2007-05-24T07:18:11.540-07:00</updated><title type='text'>Standing on the Shoulders of Giants</title><content type='html'>presented by Adam Keys&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Resources:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Web:&lt;br /&gt;http://therealadam.com (personal web site)&lt;br /&gt;&lt;br /&gt;Book:&lt;br /&gt;Code Reading&lt;br /&gt;&lt;br /&gt;Good Code:&lt;br /&gt;xmlrpc4r - first code he found really readable&lt;br /&gt;authenticated_system.rb&lt;br /&gt;Beast (josh goebel and rick olson)  great place to look for best, current idiom&lt;br /&gt;rake (straight-up ruby code)&lt;br /&gt;acts_as_versioned&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;My Summary:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;We spend too much time reading code not to care about improving our code reading skills!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;My Notes:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Control your destiny by reading other's code!&lt;br /&gt;&lt;br /&gt;think of code reading as spelunking, put on a helmet with a light to get ready!&lt;br /&gt;&lt;br /&gt;Navigating the Call Stack&lt;br /&gt;start in routes for rails code&lt;br /&gt;&lt;br /&gt;look at url, x-ref with route.rb&lt;br /&gt;&lt;br /&gt;check out controller or go right to view&lt;br /&gt;&lt;br /&gt;grok any controller filters&lt;br /&gt;&lt;br /&gt;grok the controller action&lt;br /&gt;grok the methods the controller calls&lt;br /&gt;??&lt;br /&gt;&lt;br /&gt;know what's in the lib and plugins folder&lt;br /&gt;check for observers/validations/callbacks, etc. in models&lt;br /&gt;&lt;br /&gt;Ruby Spelunking&lt;br /&gt;-parliament/lib/my_funk&lt;br /&gt;-parliament/lib/my_funk.rb&lt;br /&gt;&lt;br /&gt;the magic page variable, how is it implemented?&lt;br /&gt;&lt;br /&gt;the magic global variable&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2548825480627019281-594988658374796877?l=lorievans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lorievans.blogspot.com/feeds/594988658374796877/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2548825480627019281&amp;postID=594988658374796877' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2548825480627019281/posts/default/594988658374796877'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2548825480627019281/posts/default/594988658374796877'/><link rel='alternate' type='text/html' href='http://lorievans.blogspot.com/2007/05/standing-on-shoulders-of-giants.html' title='Standing on the Shoulders of Giants'/><author><name>Lori</name><uri>http://www.blogger.com/profile/09105440279973010639</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2548825480627019281.post-266385534738582946</id><published>2007-05-18T16:28:00.000-07:00</published><updated>2007-05-24T06:18:44.563-07:00</updated><title type='text'>Renew Your Developer Vows Now!</title><content type='html'>Went to a very motivating talk on the importance of writing 'Clean Code' by Bob Martin today and wanted to get my notes to you guys ASAP.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;"SmallTalk failed because it was too easy to make a mess."&lt;br /&gt;Ward Cunningham&lt;br /&gt;&lt;/blockquote&gt;What can we do about bad code?&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;  The Grand Redesign in the sky?&lt;br /&gt;&lt;/li&gt;&lt;li&gt;  Incremental Improvement  (of course, the right choice)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Check in a module just a little bit better than when you checked it out!&lt;br /&gt;Never let the sun set on bad code.&lt;br /&gt;Test first!&lt;br /&gt;&lt;br /&gt;rspec has better feel and syntax than test unit (we need to start using rspec)&lt;br /&gt;&lt;br /&gt;Open/Close principal - application should be open for extension but closed for modification!&lt;br /&gt;&lt;br /&gt;Refactoring the way to go - the notion you can write the code correctly the first time is just ego.&lt;br /&gt;&lt;br /&gt;Successful refactoring depends on tests.  Make small change, test, and repeat until you're done.&lt;br /&gt;&lt;br /&gt;eclipse refactorings are back with the rad rails replacement?&lt;br /&gt;&lt;br /&gt;separation of concerns, keep things that change at a different rate separate from each other.&lt;br /&gt;&lt;br /&gt;Was this worth it?&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;  bad code gets harder and harder to clean as time goes by&lt;/li&gt;&lt;li&gt;  if you want clean code, you have to clean it as soon as it gets messy&lt;/li&gt;&lt;li&gt;  what about time to market?   (the dinner parable) the fastest way to be done with dinner is to just get up and walk away: preparing the next dinner will take forever however&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;      &lt;br /&gt;Nothing has a more profound and long-term degrading effect than bad code.&lt;br /&gt;&lt;br /&gt;Professional write tests - first.&lt;br /&gt;Professionals clean their code.&lt;br /&gt;Professionals know the only way to go fast is to go well.&lt;br /&gt;&lt;br /&gt;"It's about making things a little bit nicer" (DHH)&lt;br /&gt;&lt;br /&gt;"Clean Code" project&lt;br /&gt;www.objectmentor.com&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2548825480627019281-266385534738582946?l=lorievans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lorievans.blogspot.com/feeds/266385534738582946/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2548825480627019281&amp;postID=266385534738582946' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2548825480627019281/posts/default/266385534738582946'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2548825480627019281/posts/default/266385534738582946'/><link rel='alternate' type='text/html' href='http://lorievans.blogspot.com/2007/05/renew-your-developer-vows-now.html' title='Renew Your Developer Vows Now!'/><author><name>Lori</name><uri>http://www.blogger.com/profile/09105440279973010639</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2548825480627019281.post-7839258337107902645</id><published>2007-05-18T14:14:00.000-07:00</published><updated>2007-05-18T14:35:15.852-07:00</updated><title type='text'>DHH Opens RailsConf2007</title><content type='html'>Hey guys,  hope you are all doing well.  I haven't uploaded any lecture notes recently as we've been real busy and the internet connectivity is dicey at best here.  I did want to update you guys with what DHH said this morning!  The rest of my notes will just have to wait.&lt;br /&gt;&lt;br /&gt;Rails 2.0 was the topic, although much of what DHH showed us is available in Rails now.  These are the things he mentioned that I think we should look into using:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Atom&lt;/li&gt;&lt;li&gt;OpenID&lt;/li&gt;&lt;li&gt;Ruby_debugger (created by someone with the first name of Kent)   Note:  I think we need to look into using this now.  We finally have a step-thru debugging tool!!!!!!!&lt;/li&gt;&lt;li&gt;HTTP Performance enhancements:&lt;/li&gt;&lt;/ul&gt;&lt;ol&gt;&lt;li&gt;query cache (used automatically, caches SQL so db trips are minimized)&lt;/li&gt;&lt;li&gt;asset cache  (we need to look into this one as soon as possible.  By adding ':cache =&gt; true' to the javascript and stylesheet include tags, all .js and .css files get zipped into two files; all.js and all.css when being transmitted to clients.  This may be the help we all need with slow page refreshes but, may most help Michael from feeling like he wants to jump off a bridge while he works on look and feel!)&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;ul&gt;&lt;li&gt;ActiveResource (we need to start using this.  we get active record goodness and, free for nothing, the ability to produce xml, txt, csv, files too)&lt;/li&gt;&lt;li&gt;Config/Initializers - this comes out of environment.rb and into it's own file structure &lt;/li&gt;&lt;li&gt;Sexy Migrations - instead of the redundancy of specifying column name and data type (where the same type is typically specified over and over), you now specify the data type and then a list of all the columns that are that type&lt;/li&gt;&lt;li&gt;HTTP Authentication - for feeds, do we need this for secure data feeds (should we develop any)?&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2548825480627019281-7839258337107902645?l=lorievans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lorievans.blogspot.com/feeds/7839258337107902645/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2548825480627019281&amp;postID=7839258337107902645' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2548825480627019281/posts/default/7839258337107902645'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2548825480627019281/posts/default/7839258337107902645'/><link rel='alternate' type='text/html' href='http://lorievans.blogspot.com/2007/05/dhh-opens-railsconf2007.html' title='DHH Opens RailsConf2007'/><author><name>Lori</name><uri>http://www.blogger.com/profile/09105440279973010639</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2548825480627019281.post-5757521042990660042</id><published>2007-05-17T10:11:00.000-07:00</published><updated>2007-05-17T10:19:51.449-07:00</updated><title type='text'>Javascript Tutorial by Thomas Fuchs</title><content type='html'>Hey guys - Portland's great, wish you were here.&lt;br /&gt;&lt;br /&gt;Here's my notes from the first half of the tutorial.  There's pretty crude, hopefully my style will improve as I go along.&lt;br /&gt;&lt;br /&gt;You'll want to get example files &lt;a href="http://mir.aculo.us/overrated"&gt;here &lt;/a&gt;as they're the most instructive!&lt;br /&gt;&lt;br /&gt;need to use 1.5.1 (prototype) and 1.7.1 (scriptaculous) versions of prototype and scriptaculous together&lt;br /&gt;&lt;br /&gt;dealing with compressed file:&lt;br /&gt;http://www.stevekallestad.com/blog/scriptaculous_17_compressed.html&lt;br /&gt;&lt;br /&gt;enable gzip on server to compress javascript, etc. files&lt;br /&gt;really helps speed up page serving&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Prototype Stuff&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Enumerables - Prototype's core&lt;br /&gt;(lifted from Ruby)&lt;br /&gt;&lt;br /&gt;see enumerables.html for examples&lt;br /&gt;&lt;br /&gt;new in 1.5.1 $("form").request();  simple way to request ajax forms&lt;br /&gt;&lt;br /&gt;Other new stuff:&lt;br /&gt;&lt;br /&gt;Browser Sniffing (javascript engine sniffing really, not browser version sniffing)&lt;br /&gt;  usage format: Prototype.Browser.IE&lt;br /&gt;&lt;br /&gt;$ and $$ (DOM manipulation methods)&lt;br /&gt;  $$('p.hint').invoke('hide');&lt;br /&gt;(see selectors.html)&lt;br /&gt;&lt;br /&gt;New in DOM Traversal:&lt;br /&gt;&lt;br /&gt;Don't need id attr on elements&lt;br /&gt;    just reference wrapping element and go on&lt;br /&gt;    $('blah').down();   goes down to the first child&lt;br /&gt;    $('blah').down(2);  goes down to the 2nd child&lt;br /&gt;   &lt;br /&gt;    .descendantOf       (ignores text nodes)&lt;br /&gt;&lt;br /&gt;Element Methods: &lt;br /&gt;&lt;br /&gt;$('a_div').update('blah').show().setStyle({opacity...)&lt;br /&gt;.serialize()&lt;br /&gt;  $('person-example').serialize();      get key value pairs&lt;br /&gt;  "                  .serialize(true);  get hash of values?&lt;br /&gt;.addMethods(element) {block}&lt;br /&gt;&lt;br /&gt;   use with format attribute (takes regular expression) is checked with onsubmit check for valid,&lt;br /&gt;  &lt;br /&gt;   (see validations.html)&lt;br /&gt;  &lt;br /&gt;.all (takes block)&lt;br /&gt;&lt;br /&gt;much speedier - check it out &lt;a href="http://andrewdupont.net/test/double-dollar/"&gt;here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;CSS 3 Selectors supported (most)&lt;br /&gt;&lt;br /&gt;.include&lt;br /&gt;.startsWith&lt;br /&gt;.toPaddedString&lt;br /&gt;.childElements&lt;br /&gt;.firstDescendant&lt;br /&gt;throw $continue  - use return instead (do we use this?)&lt;br /&gt;&lt;br /&gt;fixed some Safari issues (it doesn't have a good regexp engine)&lt;br /&gt;&lt;br /&gt;JSON Love (what's JSON?, seems like we should look into it!) = .toJSON();, .evalJSON();, .evalJSON(true);&lt;br /&gt;&lt;br /&gt;(don't use offical JSON library (breaks), use development library)&lt;br /&gt;&lt;br /&gt;  (see proto151.html for examples)&lt;br /&gt; &lt;br /&gt;yaml compatible&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Future Features&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;focus areas: DOM, Events, Forms, Position&lt;br /&gt;&lt;br /&gt;.readAttribute&lt;br /&gt;.writeAttribute&lt;br /&gt;&lt;br /&gt;DOM element builder&lt;br /&gt;&lt;br /&gt;.insert(html/object, position) - position defaults to bottom&lt;br /&gt;&lt;br /&gt;.setValue();  - on input/select, etc. elements&lt;br /&gt;&lt;br /&gt;curry()&lt;br /&gt;&lt;br /&gt;wrap()&lt;br /&gt;&lt;br /&gt;defer()   - special case of delay, has 1 ms delay, executes immediately after the block finishes&lt;br /&gt;&lt;br /&gt;delay()  (input # seconds) it's a more natural setTimeout&lt;br /&gt;&lt;br /&gt;(see future.html for examples)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2548825480627019281-5757521042990660042?l=lorievans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lorievans.blogspot.com/feeds/5757521042990660042/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2548825480627019281&amp;postID=5757521042990660042' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2548825480627019281/posts/default/5757521042990660042'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2548825480627019281/posts/default/5757521042990660042'/><link rel='alternate' type='text/html' href='http://lorievans.blogspot.com/2007/05/javascript-tutorial-by-thomas-fuchs.html' title='Javascript Tutorial by Thomas Fuchs'/><author><name>Lori</name><uri>http://www.blogger.com/profile/09105440279973010639</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2548825480627019281.post-2541053394490717347</id><published>2007-05-15T07:10:00.000-07:00</published><updated>2007-05-17T13:37:21.969-07:00</updated><title type='text'>My Notes from RailsConf 2007</title><content type='html'>Hey fellow Dukies, check back here often in the next few days as I intend to use this forum to make notes on the conference sessions I attend.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2548825480627019281-2541053394490717347?l=lorievans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lorievans.blogspot.com/feeds/2541053394490717347/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2548825480627019281&amp;postID=2541053394490717347' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2548825480627019281/posts/default/2541053394490717347'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2548825480627019281/posts/default/2541053394490717347'/><link rel='alternate' type='text/html' href='http://lorievans.blogspot.com/2007/05/my-notes-from-railsconf-2007.html' title='My Notes from RailsConf 2007'/><author><name>Lori</name><uri>http://www.blogger.com/profile/09105440279973010639</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry></feed>
