<?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-22919536</id><updated>2011-04-21T21:00:17.957-07:00</updated><title type='text'>Richard's Home Away From Home</title><subtitle type='html'>Thoughts, Stuff I Want To Remember, Etc.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://richardbaker80.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22919536/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://richardbaker80.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Richard Baker</name><uri>http://www.blogger.com/profile/08844327263887173665</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>11</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-22919536.post-114253758452353157</id><published>2006-03-16T11:20:00.000-08:00</published><updated>2006-03-16T11:37:54.896-08:00</updated><title type='text'>Closures make JavaScript OO</title><content type='html'>&lt;ul&gt;&lt;li&gt;"The &lt;code&gt;new&lt;/code&gt; keyword creates an object that class constructors run inside of, thereby &lt;em&gt;imprinting them&lt;/em&gt;&lt;/li&gt;&lt;li&gt;Functions are always closures (combine w/ previous rule to create OOP)"&lt;/li&gt;&lt;/ul&gt;Has &lt;a href="http://alex.dojotoolkit.org/?p=535"&gt;Alex&lt;/a&gt; lost the plot?  What do closures have to do with Object Oriented Programming (OOP or OO)?&lt;br /&gt;&lt;br /&gt;Objects don't really exist in JavaScript: an object = a constructor function.  So when you say:&lt;br /&gt;var Richard = new Person();&lt;br /&gt;you are creating a new instance of the Person &lt;span style="font-style: italic;"&gt;function&lt;/span&gt;.  Consider the following:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;function Person() {&lt;br /&gt;&lt;/li&gt;&lt;li&gt;    this.name = "Joe";&lt;/li&gt;&lt;li&gt;}&lt;/li&gt;&lt;li&gt;function Employee() {&lt;/li&gt;&lt;li&gt;    Employee.prototype = new Person();&lt;/li&gt;&lt;li&gt;Employee.prototype.constructor = Employee;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;}&lt;/li&gt;&lt;li&gt;var joeEmp = new Employee();&lt;/li&gt;&lt;li&gt;alert (joeEmp.name);            // shows "Joe"&lt;/li&gt;&lt;/ol&gt;JavaScript first looks at the properties of &lt;span style="font-style: italic;"&gt;joeEmp &lt;/span&gt;then if it doesn't find a &lt;span style="font-style: italic;"&gt;name&lt;/span&gt; property it looks at the prototype property of the Employee function.  If the object that the prototype property points to has a name property it will return that.&lt;br /&gt;&lt;br /&gt;This works because Employee is a closure (in line 8) so inherits the environment and variables in which it was called i.e. the name property of the Person class:&lt;br /&gt;&lt;br /&gt;function Employee() -&gt; function Person()&lt;br /&gt;&lt;br /&gt;Note also line 6.  This is important - otherwise Employee forgets what it is!  It starts thinking that it = Person!  Normally we do not have to set the constructor property but when we reassign the prototype property we need explicitly to declare what this function is.  This is done by specifying the constructor property.&lt;br /&gt;&lt;br /&gt;I found &lt;a href="http://www.kevlindev.com/tutorials/javascript/inheritance/"&gt;Kevin Linsey&lt;/a&gt;'s post on inheritance very helpful in writing this and intend to read more about superclassing, something that doesn't normally exist in JavaScript, but for which Kevin has a solution.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22919536-114253758452353157?l=richardbaker80.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://richardbaker80.blogspot.com/feeds/114253758452353157/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22919536&amp;postID=114253758452353157' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22919536/posts/default/114253758452353157'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22919536/posts/default/114253758452353157'/><link rel='alternate' type='text/html' href='http://richardbaker80.blogspot.com/2006/03/closures-make-javascript-oo.html' title='Closures make JavaScript OO'/><author><name>Richard Baker</name><uri>http://www.blogger.com/profile/08844327263887173665</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-22919536.post-114245360257336628</id><published>2006-03-15T11:48:00.000-08:00</published><updated>2006-03-15T12:13:22.603-08:00</updated><title type='text'>Closing my JavaScript not my brain</title><content type='html'>&lt;blockquote&gt;"Functions are always closures"&lt;/blockquote&gt;is &lt;a href="http://alex.dojotoolkit.org/?p=535"&gt;Alex&lt;/a&gt;'s next point.  What is a closure?  Jibbering provides the &lt;a href="http://jibbering.com/faq/faq_notes/closures.html"&gt;long answer&lt;/a&gt;.  The short answer Simon Willison discovered when writing a &lt;a href="http://www.sitepoint.com/blogs/2004/05/26/closures-and-executing-javascript-on-page-load/"&gt;solution to the old problem&lt;/a&gt; "I want to run lots of functions onload but keep forgetting when and where I've assigned them":&lt;br /&gt;&lt;blockquote&gt;A closure is  function that returns a function &lt;span style="font-weight: bold;"&gt;together with the variables from the environment in which the closure was created.&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;OK that didn't sound any clearer.  Simon's post explains this much better than I can but I have run into the problem he is tackling so often that I was interested enough to read the solution in depth.&lt;br /&gt;&lt;br /&gt;His answer is to create a function that piles up a list of the functions that will be executed onload. I'll let him explain how.  Suffice to say it uses a function that is a closure.&lt;br /&gt;&lt;br /&gt;So closures - pretty smart things really.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22919536-114245360257336628?l=richardbaker80.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://richardbaker80.blogspot.com/feeds/114245360257336628/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22919536&amp;postID=114245360257336628' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22919536/posts/default/114245360257336628'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22919536/posts/default/114245360257336628'/><link rel='alternate' type='text/html' href='http://richardbaker80.blogspot.com/2006/03/closing-my-javascript-not-my-brain.html' title='Closing my JavaScript not my brain'/><author><name>Richard Baker</name><uri>http://www.blogger.com/profile/08844327263887173665</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-22919536.post-114133256762906410</id><published>2006-03-02T12:19:00.000-08:00</published><updated>2006-03-02T12:49:27.640-08:00</updated><title type='text'>Constructing my objective</title><content type='html'>&lt;a href="http://alex.dojotoolkit.org/?p=535"&gt;Alex's&lt;/a&gt; next point concerns object creation:&lt;br /&gt;&lt;blockquote&gt;The &lt;code&gt;new&lt;/code&gt; keyword creates an object that class constructors run inside of, thereby &lt;em&gt;imprinting them&lt;/em&gt;&lt;/blockquote&gt;&lt;em&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;/em&gt;Remember that an object is just a function, as in Dion Gillard's &lt;a href="http://www.multitask.com.au/people/dion/archives/000348.html"&gt;car example&lt;/a&gt;:&lt;br /&gt;&lt;blockquote&gt;function Car(make, model, year)&lt;br /&gt;{&lt;br /&gt; this.make = make;&lt;br /&gt; this.model = model;&lt;br /&gt; this.year = year;&lt;br /&gt; this.toString = function() {&lt;br /&gt;   return this.make + " " + this.model + " (" + this.year + ")";&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;var myCar = new Car("Subaru", "Forester", 2003);&lt;br /&gt;alert("My car was made in "+ myCar.year);&lt;/blockquote&gt;What Alex means (as he describes in answer to a comment later) is that when you create a new object based upon a constructor, the object becomes the focus of the &lt;span style="font-style: italic;"&gt;this&lt;/span&gt; property in the constructor.  The effect is to imprint the new object with the properties and methods of the constructor.&lt;br /&gt;&lt;br /&gt;Now, as a bit of background before I tackle the next point I had to do &lt;a href="http://www.multitask.com.au/people/dion/archives/000349.html"&gt;some&lt;/a&gt; &lt;a href="http://www.multitask.com.au/people/dion/archives/000353.html"&gt;more&lt;/a&gt; &lt;a href="http://www.multitask.com.au/people/dion/archives/000350.html"&gt;reading&lt;/a&gt; of Dion's fantastic Better JavaScript guide.  That gave me at least a slim grasp on:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;methods of objects&lt;/li&gt;&lt;li&gt;the prototype property&lt;/li&gt;&lt;li&gt;inheritance and superclassing&lt;/li&gt;&lt;/ul&gt;This gave me enough of a start to be able to understand the idea of functions being declared inside of functions.  More in my next post...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22919536-114133256762906410?l=richardbaker80.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://richardbaker80.blogspot.com/feeds/114133256762906410/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22919536&amp;postID=114133256762906410' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22919536/posts/default/114133256762906410'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22919536/posts/default/114133256762906410'/><link rel='alternate' type='text/html' href='http://richardbaker80.blogspot.com/2006/03/constructing-my-objective.html' title='Constructing my objective'/><author><name>Richard Baker</name><uri>http://www.blogger.com/profile/08844327263887173665</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-22919536.post-114125050177508609</id><published>2006-03-01T13:51:00.000-08:00</published><updated>2006-03-01T14:01:41.786-08:00</updated><title type='text'>Making a hash of accessing properties</title><content type='html'>Continuing my plunge into a deeper knowledge of JavaScript (based upon &lt;a href="http://alex.dojotoolkit.org/?p=535"&gt;Alex's pointers&lt;/a&gt;) today I met:&lt;br /&gt;&lt;blockquote&gt;"The dot operator is equivalent to de-referencing by hash (e.g., &lt;code&gt;foo.bar === foo["bar"]&lt;/code&gt;)"&lt;/blockquote&gt;Eh?  In English please?  OK to de-reference means to retrieve the value from a reference (thank you, &lt;a href="http://en.wikipedia.org/wiki/Dereference"&gt;Wikipedia&lt;/a&gt;).  So what this is saying is: you can access the properties of an object by the "dot" notation or by the "square brackets" notation.&lt;br /&gt;&lt;br /&gt;Jim Ley has a fantastic guide to using the &lt;a href="http://jibbering.com/faq/faq_notes/square_brackets.html"&gt;square brackets notation&lt;/a&gt; which "gets very little coverage in most books on JavaScript and [...] seems to leave novice JavaScript programmers unaware that they even have this option".&lt;br /&gt;&lt;br /&gt;This is a little gem!  I will definitely be using this!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22919536-114125050177508609?l=richardbaker80.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://richardbaker80.blogspot.com/feeds/114125050177508609/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22919536&amp;postID=114125050177508609' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22919536/posts/default/114125050177508609'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22919536/posts/default/114125050177508609'/><link rel='alternate' type='text/html' href='http://richardbaker80.blogspot.com/2006/03/making-hash-of-accessing-properties.html' title='Making a hash of accessing properties'/><author><name>Richard Baker</name><uri>http://www.blogger.com/profile/08844327263887173665</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-22919536.post-114116473084607409</id><published>2006-02-28T14:06:00.000-08:00</published><updated>2006-02-28T14:12:10.853-08:00</updated><title type='text'>Re-learning JavaScript cont.</title><content type='html'>Continuing on Alex's &lt;a href="http://alex.dojotoolkit.org/?p=535"&gt;points about JavaScript&lt;/a&gt;: Number two:&lt;br /&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;blockquote&gt;"Every object is always mutable"&lt;/blockquote&gt;This means that objects, defined as functions or constructors, can be re-written or their properties modified at run-time.&lt;br /&gt;&lt;blockquote&gt;In a class-based language a class is defined in the source code and is absolutely fixed while the code is executing. In JavaScript all objects are mutable. Any property can be added to any object at any time and prototypes can be extended, replaced, swapped and so on. (Richard Cornford, "&lt;a href="http://www.litotes.demon.co.uk/js_info/private_static.html"&gt;Private Static Members in JavaScript&lt;/a&gt;")&lt;br /&gt;&lt;/blockquote&gt;So OO is not implemented as strictly in JavaScript as in other programming languages but equally that makes it flexible.  Nice.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22919536-114116473084607409?l=richardbaker80.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://richardbaker80.blogspot.com/feeds/114116473084607409/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22919536&amp;postID=114116473084607409' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22919536/posts/default/114116473084607409'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22919536/posts/default/114116473084607409'/><link rel='alternate' type='text/html' href='http://richardbaker80.blogspot.com/2006/02/re-learning-javascript-cont.html' title='Re-learning JavaScript cont.'/><author><name>Richard Baker</name><uri>http://www.blogger.com/profile/08844327263887173665</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-22919536.post-114107201324459325</id><published>2006-02-27T11:59:00.000-08:00</published><updated>2006-02-27T12:28:38.663-08:00</updated><title type='text'>Object Disoriented</title><content type='html'>IBM is pushing Server-Oriented Architecture (SOA) in Lotus Notes 7 which seems a natural extension (or generalisation) of web services, the idea behind which seems to be self-contained very targeted programs accessible by a variety of media.&lt;br /&gt;&lt;br /&gt;Before I can get my head around all that, however, I'm trying to understand Object Oriented Programming (OO).  I know a bit about JavaScript and was just starting to learn about OO.  Then I came across &lt;a href="http://alex.dojotoolkit.org/?p=535"&gt;a post&lt;/a&gt; by Alex Russell about JavaScript that left me crying out "eh?!".  However, other posts from &lt;a href="http://www.ajaxian.com"&gt;Ajaxian&lt;/a&gt; were to come to my rescue!  I shall tackle one of Alex's points a day, I think.  Number one:&lt;br /&gt;&lt;blockquote&gt;"Everything in JavaScript is an Object. Even functions"&lt;/blockquote&gt;Dion Gillard has posted a helpful "guide to JavaScript or Java developer", notably: &lt;a href="http://www.multitask.com.au/people/dion/archives/000346.html"&gt;Better JavaScript objects&lt;/a&gt;, which shows how JavaScript objects are formed and that they can have functions as properties.   His next post ("&lt;a href="http://www.multitask.com.au/people/dion/archives/000347.html"&gt;Better JavaScript Functions&lt;/a&gt;") starts to explain scope in the context of OO (and JavaScript) and &lt;a href="http://www.multitask.com.au/people/dion/archives/000348.html"&gt;concludes&lt;/a&gt; by explaining that constructors are used in place of class declarations in JavaScript.&lt;br /&gt;&lt;br /&gt;So now I know: even function are objects.  Now where can I use that?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22919536-114107201324459325?l=richardbaker80.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://richardbaker80.blogspot.com/feeds/114107201324459325/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22919536&amp;postID=114107201324459325' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22919536/posts/default/114107201324459325'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22919536/posts/default/114107201324459325'/><link rel='alternate' type='text/html' href='http://richardbaker80.blogspot.com/2006/02/object-disoriented.html' title='Object Disoriented'/><author><name>Richard Baker</name><uri>http://www.blogger.com/profile/08844327263887173665</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-22919536.post-114099203849774235</id><published>2006-02-26T13:59:00.000-08:00</published><updated>2006-02-26T14:14:18.880-08:00</updated><title type='text'>More on JSON</title><content type='html'>Just read a fantastic &lt;a href="http://hyperthink.net/blog/2005/09/20/On+JSON.aspx"&gt;article&lt;/a&gt; on JSON by &lt;a href="http://hyperthink.net/blog/default.aspx"&gt;Steve Maine&lt;/a&gt;.  It tells you what JSON is, what it looks like, and how it is being used.  It progresses to comparing XML and JSON, as does &lt;a href="http://www.quirksmode.org/blog/archives/2005/12/the_ajax_respon.html"&gt;this article&lt;/a&gt;.  However, Steve's article is obviously written from the perspective of one used to using XML in full-on data exchange.  Commenting on the lack of Namespace support (which would allow me to come to a JSON string and say explicitly that the telephone number property will always be a number, say) he concludes:&lt;br /&gt;&lt;blockquote&gt;"AJAX and JSON are at the point where XML, SOAP, and XML-RPC were about 5 years ago; they just haven't realized that yet"&lt;/blockquote&gt;&lt;blockquote&gt;&lt;/blockquote&gt;Or be it the case the overhead of finding/devising a namespace then developing in line with that is too much for small software houses such as the one for which I work.  JSON offers a quick but adaptable solution to the masses... even if we do come to regret it when asked to make our rich applications work with other applications.&lt;br /&gt;&lt;br /&gt;Clients will always fail to see the need for flexible systems.  It is our responsibility to provide at least some of the flexibility that any system requires during its adoption/growth stages.  This is something for which all the developers at my workplace feel a large burden of responsibility and for which our company is known.  However, there is a limit.  There will always be a trade-off of future-proofing against current budgets.&lt;br /&gt;&lt;br /&gt;For me, at least, the overhead of namespaces and XML is that limit.  I can see myself using JSON in the future but will be most unlikely to progress to full-on XML.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22919536-114099203849774235?l=richardbaker80.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://richardbaker80.blogspot.com/feeds/114099203849774235/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22919536&amp;postID=114099203849774235' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22919536/posts/default/114099203849774235'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22919536/posts/default/114099203849774235'/><link rel='alternate' type='text/html' href='http://richardbaker80.blogspot.com/2006/02/more-on-json.html' title='More on JSON'/><author><name>Richard Baker</name><uri>http://www.blogger.com/profile/08844327263887173665</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-22919536.post-114096689957233921</id><published>2006-02-26T06:56:00.000-08:00</published><updated>2006-02-26T07:16:47.473-08:00</updated><title type='text'>Groups and Individuals</title><content type='html'>When I was at university I read and talked a lot about "Social Capital".  I also took a couple of modules in Organisational Behaviour - sociology plus psychology kind of waffle...&lt;br /&gt;&lt;br /&gt;... or so I thought.  Today I was reflecting on being a member of a group.  As a member of any group we must suppress those elements of our personalities that are at odds with the norms of the group.&lt;br /&gt;&lt;br /&gt;When we are about to move groups we slowly realise those aspects of our personality we had suppressed; those norms of the group with which we never did agree but put up with for the benefits of social capital.  To those in the group we seem increasingly "spiky" as we start not to fit in some aspects.&lt;br /&gt;&lt;br /&gt;Sadly, most groups at this stage will isolate that group member in the hope that the "infection" (or behaviour contrary to the norms of the group) will not spread to other members.  I say sadly since in the period of leaving one group and applying for membership of another we are without - and yet in most need of - social capital i.e. support.&lt;br /&gt;&lt;br /&gt;This is why we are members of multiple groups: work; the swimming club; church, etc.  Yet the years post World War II have seen a diminution of forms of social capital with the virtual abolition of unions, etc.&lt;br /&gt;&lt;br /&gt;I argued it at uni and I maintain it today: the answer has been with us all along: the church.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22919536-114096689957233921?l=richardbaker80.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://richardbaker80.blogspot.com/feeds/114096689957233921/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22919536&amp;postID=114096689957233921' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22919536/posts/default/114096689957233921'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22919536/posts/default/114096689957233921'/><link rel='alternate' type='text/html' href='http://richardbaker80.blogspot.com/2006/02/groups-and-individuals.html' title='Groups and Individuals'/><author><name>Richard Baker</name><uri>http://www.blogger.com/profile/08844327263887173665</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-22919536.post-114088820679360031</id><published>2006-02-25T09:15:00.000-08:00</published><updated>2006-02-25T09:35:37.046-08:00</updated><title type='text'>Gran's funeral</title><content type='html'>Yesterday was the funeral of my mum's mum, my Grandma.  It was a really good day in many ways.&lt;br /&gt;&lt;br /&gt;It was such a time of family: I got acquainted with many family members I'd either never seen or not seen since I was knee-high.&lt;br /&gt;&lt;br /&gt;The funeral service, which took place in the church in which Grandma worshipped and my parents had got married, celebrated her ascension to heaven, secured through her faith by Jesus.&lt;br /&gt;&lt;br /&gt;It was a time to celebrate the remarkable woman my grandma was - both as I knew her and before I arrived on the scene (I never knew she looked after a large class of school children in a manor house in Lancashire to which they were evacuated from London during World War II!).&lt;br /&gt;&lt;br /&gt;Perhaps most memorably it was a time of closeness to my immediate family, something that happens rarely in my family.&lt;br /&gt;&lt;br /&gt;At the crematorium my brother made an astute comment: "We celebrated how Grandma has risen into heaven but now we send her down into the flames!"  For me there is nothing of Grandma in the grounds of the crematorium: she lives on in our memories, her wonderful paintings and with our Lord - during the church service I got a picture of Jesus leading Grandma home i.e. to heaven.  Praise God we have the victory over the grave!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22919536-114088820679360031?l=richardbaker80.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://richardbaker80.blogspot.com/feeds/114088820679360031/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22919536&amp;postID=114088820679360031' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22919536/posts/default/114088820679360031'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22919536/posts/default/114088820679360031'/><link rel='alternate' type='text/html' href='http://richardbaker80.blogspot.com/2006/02/grans-funeral.html' title='Gran&apos;s funeral'/><author><name>Richard Baker</name><uri>http://www.blogger.com/profile/08844327263887173665</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-22919536.post-114073229316484224</id><published>2006-02-23T14:03:00.000-08:00</published><updated>2006-02-26T07:31:42.683-08:00</updated><title type='text'>Useful Software</title><content type='html'>Free stuff essential to any computer!&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.7-zip.org/"&gt;7ZIP: open and create zip files (not needed if you are on Windows XP)&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://free.grisoft.com/"&gt;AVG: anti-virus&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.microsoft.com/athome/security/spyware/software/"&gt;Microsoft Anti-Spyware&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.scintilla.org/SciTE.html"&gt;SciTe: text editor with syntax highlighting&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.provtech.co.uk/download/"&gt;ScreenPrint32: take screenshots&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.mozilla.com/firefox"&gt;Mozilla Firefox: browser&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://sourceforge.net/projects/filezilla/"&gt;FileZilla: FTP software&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.chiark.greenend.org.uk/~sgtatham/putty"&gt;Putty: telnet/ssh client&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.weitz.de/regex-coach/"&gt;The Regex Coach&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.brics.dk/~mis/xpathvisualizer/"&gt;XPath Visualiser&lt;/a&gt;&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/22919536-114073229316484224?l=richardbaker80.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://richardbaker80.blogspot.com/feeds/114073229316484224/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22919536&amp;postID=114073229316484224' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22919536/posts/default/114073229316484224'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22919536/posts/default/114073229316484224'/><link rel='alternate' type='text/html' href='http://richardbaker80.blogspot.com/2006/02/useful-software.html' title='Useful Software'/><author><name>Richard Baker</name><uri>http://www.blogger.com/profile/08844327263887173665</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-22919536.post-114073182218852376</id><published>2006-02-23T13:54:00.000-08:00</published><updated>2006-02-25T09:33:18.500-08:00</updated><title type='text'>AJAX and JavaScript</title><content type='html'>&lt;h3&gt;ProtoType&lt;/h3&gt;&lt;a href="http://dev.rubyonrails.org/browser/spinoffs/prototype?rev=3432"&gt;ProtoType&lt;/a&gt; is a JavaScript file (version 1.5 is 51.5k but smaller in older versions) that provides many functions you always wanted in JavaScript but are not included in most browsers, e.g.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;quick access for form elements, disable the form, focusFirstElement&lt;br /&gt;&lt;/li&gt;&lt;li&gt;quick access to elements by ID&lt;br /&gt;&lt;/li&gt;&lt;li&gt;quick access to elements by CSS selector (v1.5)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;much improved enumerator better to handle arrays&lt;br /&gt;&lt;/li&gt;&lt;li&gt;functions to make AJAX calls quick and easy (NB: the AJAX object can also execute any JavaScripts returned by the XMLHTTP request.  It can also handle &lt;a href="http://www.json.org/"&gt;JSON&lt;/a&gt;)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;functions to make observing events easier&lt;br /&gt;&lt;/li&gt;&lt;li&gt;functions to make periodic (e.g. every 60 seconds) function calls&lt;br /&gt;&lt;/li&gt;&lt;li&gt;get mouse X and Y&lt;br /&gt;&lt;/li&gt;&lt;li&gt;functions to insert and remove content from the DOM (Abstract.Insertion)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;various extra nuggets like escapeHTML, toQueryParams, addClassName, getStyle, getDimensions&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;And the best thing?  It's ALL cross-browser!  No more headaches with "was it attachEvent or addEventListener?".  Who cares?  Just:&lt;br /&gt;&lt;pre&gt;Event.observe(element, name, observer, [useCapture]);&lt;/pre&gt;and you're done!&lt;br /&gt;&lt;h4&gt;Caching&lt;/h4&gt;&lt;p&gt;If you are worried about the overhead of a 51.5k file on every page you could always &lt;a href="http://www.websiteoptimization.com/speed/tweak/cache/"&gt;cache it&lt;/a&gt; - if you're using Apache.  If you're using Domino you'll have to create a &lt;a href="http://www-128.ibm.com/developerworks/lotus/library/ls-resp_head_rules/"&gt;Web Site Rule&lt;/a&gt; and that will still only be browser-side caching.&lt;/p&gt;&lt;p&gt;Another option is to present your website as "rich-media" i.e. one URL that does not change except by using AJAX (XMLHTTP requests) to retrieve additional content, as in the much-overquoted Gmail or Google Page Creator.&lt;/p&gt;&lt;p&gt;This is actually a throw-back to the old days of frames where you held all you application code in a frame at the top then targetted links to the frame at the bottom.  My wife is a teacher and she has use of an &lt;a href="http://www.ccmsoftware.com/eportal/eportal3.htm"&gt;e-portal&lt;/a&gt; provided by the LEA (Local Education Authority).  It's created by &lt;a href="http://www.ccmsoftware.com/"&gt;CCMSoftware&lt;/a&gt; and has three different implementations.  The one that this LEA has gone for involves a DHTML implementation that stores changes made in the very dynamic controls on the front-end in JS variables then on save passes these back to a Servlet.  Again: separate the front-end from the backend by caching the application functionality in separate files.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22919536-114073182218852376?l=richardbaker80.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://richardbaker80.blogspot.com/feeds/114073182218852376/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22919536&amp;postID=114073182218852376' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22919536/posts/default/114073182218852376'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22919536/posts/default/114073182218852376'/><link rel='alternate' type='text/html' href='http://richardbaker80.blogspot.com/2006/02/ajax-and-javascript.html' title='AJAX and JavaScript'/><author><name>Richard Baker</name><uri>http://www.blogger.com/profile/08844327263887173665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
