<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>☕MORGLOG</title>
	
	<link>http://morglog.org</link>
	<description>Varying shades of nerdyness.</description>
	<pubDate>Sat, 03 Jan 2009 22:42:45 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/morglog" /><feedburner:info uri="morglog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Set your Setter and Get your Getter</title>
		<link>http://feedproxy.google.com/~r/morglog/~3/dqNN0vKAxoM/</link>
		<comments>http://morglog.org/?p=56#comments</comments>
		<pubDate>Sat, 03 Jan 2009 22:42:45 +0000</pubDate>
		<dc:creator>Morgan</dc:creator>
		
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://morglog.alleycatracing.com/wordpress/?p=56</guid>
		<description><![CDATA[Getters and Setters are a lot of fun to use. Unfortunately not all browsers implement them. According to John Resig&#8217;s post JavaScript Getters and Setters only two browsers currently support them (Opera 9.5 has since been release so make it three). Even before I was really into Javascript programming I used PHP&#8217;s Magic Methods __set [...]]]></description>
			<content:encoded><![CDATA[<p>Getters and Setters are a lot of fun to use. Unfortunately not all browsers implement them. According to <a href="http://ejohn.org">John Resig&#8217;s</a> post <a href="http://ejohn.org/blog/javascript-getters-and-setters/">JavaScript Getters and Setters</a> only two browsers currently support them (Opera 9.5 has since been release so make it three). Even before I was really into Javascript programming I used <a href="http://us2.php.net/oop5.magic">PHP&#8217;s Magic Methods</a> __set and __get.</p>
<blockquote><p>
It is with much happiness that I think I can finally say, without seeming like a fool, that: &#8220;JavaScript Getters and Setters are now prevalent enough to become of actual interest to JavaScript developers.&#8221; Wow, I&#8217;ve been waiting a long time to be able to say that.<br />
<em><a href="http://ejohn.org/blog/javascript-getters-and-setters/">John Resig - JavaScript Getters and Setters</a></em>
</p></blockquote>
<p>As much as I would love this to be true, I still do not quite think we are there. Rhino adding support was good, because with that John was able to implement window.location in env.js</p>
<p>So now that we have some background on setters and getters in Javascript. Here is my implementation for browsers that do not already support it.</p>
<pre class="syntax-highlight:javascript">
                        (function()
                        {
                                var gettysetty =
                                {
                                        clock: 0,
                                        gets: Array(),
                                        sets: Array()
                                }; 

                                function procVars()
                                {
                                        // run through all the getters, update the var from the function
                                        for(var i = 0; i &lt; gettysetty.gets.length; i++)
                                                gettysetty.gets[i][0][gettysetty.gets[i][1]] = gettysetty.gets[i][2](); 

                                        // same thing here, but instead check that the var has not changed, if it has, run the setter func
                                        for(i = 0; i &lt; gettysetty.sets.length; i++)
                                                if(gettysetty.sets[i][0][gettysetty.sets[i][1]] != gettysetty.sets[i][2][&quot;ogVar&quot;])
                                                {
                                                        gettysetty.sets[i][2].apply(gettysetty.sets[i][0], [ gettysetty.sets[i][0][gettysetty.sets[i][1]] ]);
                                                        gettysetty.sets[i][2][&quot;ogVar&quot;] = gettysetty.sets[i][0][gettysetty.sets[i][1]];
                                                }
                                } 

                                var getterName = (Object.__defineGetter__ != &quot;undefined&quot;) ? &quot;defineGetter&quot; : &quot;__defineGetter__&quot;;
                                Object.prototype[getterName] = function(v, f)
                                {
                                        this[v] = f(); 

                                        gettysetty.gets.push([this, v, f]); 

                                        if(!gettysetty.clock)
                                                setInterval(procVars, 13); 

                                        return this;
                                } 

                                Object.prototype[(Object.__defineSetter__ != &quot;undefined&quot;) ? &quot;defineSetter&quot; : &quot;__defineSetter__&quot;] = function(v, f)
                                {
                                        f[&quot;ogVar&quot;] = this[v];
                                        gettysetty.sets.push([this,v,f]);
                                        if(!gettysetty.clock)
                                                setInterval(procVars, 13);
                                }

                                function lookup(gs, v)
                                {
                                        for(var i = 0; i &lt; gettysetty[gs].length; i++)
                                                if(gettysetty[gs][i][0] == this &amp;&amp; gettysetty[gs][i][1] == v)
                                                        return gettysetty[gs][i][2];
                                                else if(gettysetty[gs][i][0] == this)
                                                        return;
                                        return;
                                }

                                Object.prototype[(Object.__lookupSetter__ != &quot;undefined&quot;) ? &quot;lookupSetter&quot; : &quot;__lookupSetter&quot;] = function(v)
                                {
                                        return lookup.apply(this, [&quot;sets&quot;, v]);
                                };

                                Object.prototype[(Object.__lookupGetter__ != &quot;undefined&quot;) ? &quot;lookupGetter&quot; : &quot;__lookupGetter&quot;] = function(v)
                                {
                                        return lookup.apply(this, [&quot;gets&quot;, v]);
                                };
                        })();

                        var x = {};
                        x.defineGetter(&quot;time&quot;, function()
                        {
                                return (new Date()).valueOf();
                        });

                        x.defineSetter(&quot;x&quot;, function(val)
                        {
                                this[&quot;x&quot;] = val+1;
                                alert(&quot;new value: &quot; + val);
                        });
</pre>
<p>The code here is fairly simple. When the first getter or setter is define a timer is started. It iterates through all the defined getters and executes their function updating the value it is responsible for. Then it iterates the setters, checking if the current value is different from value it had when set. If they are different it runs then setters function and updates the &#8216;old&#8217; variable to reflect the new one.</p>
<p>This only supports adding by the Object methods, so you cannot define them in an object notation. As for the future, v8 supports them, and I looks like Internet Explorer 8 may support some variation in some very Microsoft way. defineProperty anyone? While this solution is far from bullet proof and probably will scale terrible it could possibly work as an absolute fallback.</p>
<img src="http://feeds.feedburner.com/~r/morglog/~4/dqNN0vKAxoM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://morglog.org/?feed=rss2&amp;p=56</wfw:commentRss>
		<feedburner:origLink>http://morglog.org/?p=56</feedburner:origLink></item>
		<item>
		<title>New Cometd client and server demo</title>
		<link>http://feedproxy.google.com/~r/morglog/~3/sLqLoIpruxQ/</link>
		<comments>http://morglog.org/?p=55#comments</comments>
		<pubDate>Fri, 07 Nov 2008 15:47:23 +0000</pubDate>
		<dc:creator>Morgan</dc:creator>
		
		<category><![CDATA[AJAX]]></category>

		<category><![CDATA[Bayeux]]></category>

		<category><![CDATA[Comet]]></category>

		<category><![CDATA[JSON]]></category>

		<category><![CDATA[Java]]></category>

		<category><![CDATA[JavaScript]]></category>

		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://morglog.alleycatracing.com/wordpress/?p=55</guid>
		<description><![CDATA[On and off for the last couple weeks I have really been pushing myself to learn Java better. I constantly find myself unable to do things I want to with the languages I usually use (PHP specifically). As I am getting better I am coming to like it a lot more. As any reader of [...]]]></description>
			<content:encoded><![CDATA[<p>On and off for the last couple weeks I have really been pushing myself to learn Java better. I constantly find myself unable to do things I want to with the languages I usually use (PHP specifically). As I am getting better I am coming to like it a lot more. As any reader of my blog (do I actually have &#8216;readers&#8217;?) know, I am really into Cometd, which the most major implementation of is written in Java. So in order to utilize Cometd Java and push my jQuery plugin further along, I figured it was high time I learn Java. I am really glad I am too. Just in time for my new Android phone too <img src='http://morglog.org/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><strong>CometdMap</strong><br />
Almost every demo of Cometd out there is a chat application, next up is stock tickers. There are one or two more I can think of off hand, none of which could be made into something more useful. I have had an application idea in the back of my head for quick some time. I really like doing work with maps, have been doing professional Google Maps work for a couple years, had to get the (second) dorkiest bike computer with GPS to map my rides. I have wanted for some time to do a real-time map. CometdMap is a proof of concept of that. It has no actually data input at the moment, infact, it is really basic right now. What it really does is show how simply you can build a Cometd Java app. I was really surprised at how easily I built this with my limited knowledge of Java.</p>
<p><strong>What does it do</strong><br />
Right now, if you build and run the application you will get a simple Google Map. Clicking on the map will place a marker. Wowee! Pretty basic yeah, but what is going on here. Clicking the map publishes the point to the server, it is not until the server returns the data to the subscription callback that it is added. That is about all for the client side. On the server side two things are going on. First, when a new client joins they are added to a list, very similar to the way the Cometd Chat demo handles clients for private messages. Second, when points are published they are tracked on another list. So what can we do with these lists? Add a couple points and reload your browser. Since you are now a new client and there are points on the list, the old points are sent back to you. This will work for any new clients joining also. With multiple clients connected markers are updated to each in real-time.</p>
<p><strong>Download &#038; Build</strong><br />
<a href="/misc/CometdMap.tar.gz">Download</a><br />
As I have mentioned before, the Java build environment and I do not exactly get along. In the tarball there is a script call build (partially ripped from the Harmony build script). If you have built the Cometd demo from Jetty with Maven this script <em>should</em> work just fine. Otherwise change the paths in the build (and server) scripts to point to the directories where your Jetty and Comet components are.</p>
<p>Enjoy, hopefully everyone is able to build with few problems. Check back in a couple weeks to see what I have in store next. Cheers, Morgan.</p>
<img src="http://feeds.feedburner.com/~r/morglog/~4/sLqLoIpruxQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://morglog.org/?feed=rss2&amp;p=55</wfw:commentRss>
		<feedburner:origLink>http://morglog.org/?p=55</feedburner:origLink></item>
		<item>
		<title>Progressive Enhacement</title>
		<link>http://feedproxy.google.com/~r/morglog/~3/8O5m-WmAwqk/</link>
		<comments>http://morglog.org/?p=52#comments</comments>
		<pubDate>Wed, 15 Oct 2008 18:00:49 +0000</pubDate>
		<dc:creator>Morgan</dc:creator>
		
		<category><![CDATA[CSS]]></category>

		<category><![CDATA[Developent]]></category>

		<category><![CDATA[HTML]]></category>

		<category><![CDATA[JavaScript]]></category>

		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://morglog.alleycatracing.com/wordpress/?p=52</guid>
		<description><![CDATA[Just read this blog post over at Learning jQuery. It is a tip on how to avoid &#8217;style flashing&#8217; on large and complex pages. Read it. Read it to get the explanation as to why just CSS cannot solve this problem. If you have been unfortunate enough to work with me, especially in a JS/design [...]]]></description>
			<content:encoded><![CDATA[<p>Just read <a href="http://www.learningjquery.com/2008/10/1-awesome-way-to-avoid-the-not-so-excellent-flash-of-amazing-unstyled-content">this</a> blog post over at Learning jQuery. It is a tip on how to avoid &#8217;style flashing&#8217; on large and complex pages. Read it. Read it to get the explanation as to why just CSS cannot solve this problem. If you have been unfortunate enough to work with me, especially in a JS/design roll you will have heard me bitching about CSS in jQuery. I do not like when this is done. CSS is way better at CSS then jQuery. The benefits of apply the style is this global manner are huge.</p>
<ul>
<li>Speed of CSS</li>
<li>&lt;linked&gt; files get cached</li>
<li>Your Javacript will be simpler, smaller, faster</li>
<li>If you are working with a team a designer can work on it without causing conflicts</li>
</ul>
<p>And this does not just apply to jQuery either, any framework or script can (and should) utilize this technique. Keep in mind this is not a cure all for progressive enhancement. You still cannot go all willy nilly AJAX without an already working base system. Thanks for the great tip.</p>
<img src="http://feeds.feedburner.com/~r/morglog/~4/8O5m-WmAwqk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://morglog.org/?feed=rss2&amp;p=52</wfw:commentRss>
		<feedburner:origLink>http://morglog.org/?p=52</feedburner:origLink></item>
		<item>
		<title>more histarray</title>
		<link>http://feedproxy.google.com/~r/morglog/~3/NBU1Pic7ydI/</link>
		<comments>http://morglog.org/?p=49#comments</comments>
		<pubDate>Fri, 19 Sep 2008 18:14:24 +0000</pubDate>
		<dc:creator>Morgan</dc:creator>
		
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://morglog.alleycatracing.com/wordpress/?p=49</guid>
		<description><![CDATA[I am not sure if it is even useful for anything. But I am having fun dorking on it.
New Features.
added pop() method
added splice() method
unified adding and removing for more accurate revision and length
New Home
I have been using hithub for a little now, and have put this up as my first public repo.
*Notes
There is one big, [...]]]></description>
			<content:encoded><![CDATA[<p>I am not sure if it is even useful for anything. But I am having fun dorking on it.<br />
New Features.<br />
added pop() method<br />
added splice() method<br />
unified adding and removing for more accurate revision and length</p>
<p>New Home<br />
I have been using <a href="http://github.com">hithub</a> for a little now, and have put this up as my first <a href="http://github.com/morganrallen/histarray/tree">public repo</a>.</p>
<p>*Notes<br />
There is one big, probably unresolvable issue. You have to push in new elements.</p>
<pre class="syntax-highlight:js">
 var a = Array(&#039;one&#039;, &#039;two&#039;, &#039;three&#039;);
 a[12] = 12;
 // this would result in an array with a length of 13
 // with 3-12 undefined.
</pre>
<p>The way the getters and setters are setup, unless I where to define ervythin&#8217; there would be nothing waiting to assign an element to the internal array.</p>
<p>Next Steps (if any)<br />
Implement standard array features<br />
Decide if push should be like an array push and create a new method for historical pushes.</p>
<p>Last up<br />
I also finally got around to figuring out qunit unit testing. It is really easy to use, not sure why I have not been using it longer. I have 19(?) tests right now, and they are in /test in the repo.</p>
<img src="http://feeds.feedburner.com/~r/morglog/~4/NBU1Pic7ydI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://morglog.org/?feed=rss2&amp;p=49</wfw:commentRss>
		<feedburner:origLink>http://morglog.org/?p=49</feedburner:origLink></item>
		<item>
		<title>histarray - An Experiment with Getters and Setters</title>
		<link>http://feedproxy.google.com/~r/morglog/~3/U_3KurUNhR4/</link>
		<comments>http://morglog.org/?p=48#comments</comments>
		<pubDate>Thu, 18 Sep 2008 12:01:19 +0000</pubDate>
		<dc:creator>Morgan</dc:creator>
		
		<category><![CDATA[Developent]]></category>

		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://morglog.alleycatracing.com/wordpress/?p=48</guid>
		<description><![CDATA[While doing an experiment with Getters and Setters I whipped together a small lib for a versioning array, the histarray. So far tested only in Firefox 3, it utilizes __defineGetter__(someNumber, function(){}) to return an element from an internal array (the history). Its push method will either overwrite the current revision if it is not the [...]]]></description>
			<content:encoded><![CDATA[<p>While doing an experiment with Getters and Setters I whipped together a small lib for a versioning array, the histarray. So far tested only in Firefox 3, it utilizes __defineGetter__(someNumber, function(){}) to return an element from an internal array (the history). Its push method will either overwrite the current revision if it is not the last, or push a new revision into the history. A Setter is also defined, so no matter where in the time line you currently are, that element will be updated.</p>
<pre class="syntax-highlight:js">
function histarray()
{
	for(var i = 0; i &lt; arguments.length; i++)
		this._add(arguments[i], i);

	this.__defineSetter__(&#039;revision&#039;, function(v)
	{
		return (v &gt; this.length) ?
			this.revision :
			this._revision = v;
	});
	this.__defineGetter__(&#039;revision&#039;, function()
	{
		return this._revision;
	});
	this.__defineGetter__(&#039;prev&#039;, function()
	{
		return (this.revision != 0) ?
			(function(self)
			{
				var a = Array();
				for(var i in self._elements)
					a.push(self._elements[i][self.revision - 1]);
				return a;
			})(this) :
			null;
	});
	this.__defineGetter__(&#039;nxt&#039;, function()
	{
		return (this.revision &lt; this.revisions) ?
			(function(self)
			{
				var a = Array();
				for(var i in self._elements)
					a.push(self._elements[i][self.revision + 1]);
				return a;
			})(this) :
			null;
	});
};

histarray.prototype =
{
	length: 0,
	revisions: 0,
	_elements: Array(),
	_revision: 0,
	_add: function(e, i)
	{
		this._elements[i] = (function(e,self)
		{
			var a = Array();
			for(var i = 0; i &lt; self.revisions; i++)
				a.push(null);
			a.push(e);
			return a;
		})(e,this);
		this.__defineGetter__(i, function()
		{
			return this._elements[i][this.revision];
		});

		this.__defineSetter__(i, function(v)
		{
			return this._elements[i][this.revision] = v;
		});
		this.length = i + 1;
	},
	// push csv or a single array
	push: function()
	{
		if(typeof arguments[0] == &#039;object&#039;)
			this.push.apply(this, arguments[0]);
		else
		{
			if(this.revision == this.revisions)
			{
				this.revision++;
				this.revisions++;
			}
			for(var i = 0; i &lt; arguments.length; i++)
			{
				if(arguments[i] == null) continue;

				if(this._elements[i])
					this._elements[i][this.revision] = arguments[i];
				else
					this._add(arguments[i], i);
			}
		}
		return this.length;
	}
};
</pre>
<pre class="syntax-highlight:js">
// creates a new histarray.
var ha = new histarray(&#039;e1&#039;, &#039;e2&#039;, &#039;e3&#039;);
// this is now just like a normal array, ha[0] == &#039;e1&#039;
// now using push does not add a new element, but instead adds a new revision
ha.push(&#039;e1v2&#039;, &#039;e2v2&#039;, &#039;e3v2&#039;)
// now ha[0] == &#039;e1v2&#039; and ha.revision == 1 and ha.prev[0] == &#039;e1&#039;
// if we change the revision back to 0
ha.revision = 0;
// ha[0] == &#039;e1&#039;, ha.nxt[0] == &#039;e1v2&#039;
// with the revision still at 0, we can update an old element
ha[0] = &#039;e1a&#039;;
// this just changes the first revision of the first element.
</pre>
<p>Not certain is will be useful for anything in particular. But I still have a couple ideas to add, and am interested in hear what people have to say about this. </p>
<img src="http://feeds.feedburner.com/~r/morglog/~4/U_3KurUNhR4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://morglog.org/?feed=rss2&amp;p=48</wfw:commentRss>
		<feedburner:origLink>http://morglog.org/?p=48</feedburner:origLink></item>
		<item>
		<title>jQuery Comet update (finally).</title>
		<link>http://feedproxy.google.com/~r/morglog/~3/z0Eo63ccQhg/</link>
		<comments>http://morglog.org/?p=47#comments</comments>
		<pubDate>Tue, 09 Sep 2008 23:53:03 +0000</pubDate>
		<dc:creator>Morgan</dc:creator>
		
		<category><![CDATA[AJAX]]></category>

		<category><![CDATA[Bayeux]]></category>

		<category><![CDATA[Comet]]></category>

		<category><![CDATA[JSON]]></category>

		<category><![CDATA[JavaScript]]></category>

		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://morglog.alleycatracing.com/wordpress/?p=47</guid>
		<description><![CDATA[Now that I am semi-settled in here in Berlin (anyone have a room for rent? (cheap)), I am trying to get caught up on stuff. I finally pushed some fixes suggested by Jörn and got the chat demo reported. Its all in the SVN at Google Code and setup an external item in the jQuery [...]]]></description>
			<content:encoded><![CDATA[<p>Now that I am semi-settled in here in Berlin (anyone have a room for rent? (cheap)), I am trying to get caught up on stuff. I finally pushed some fixes suggested by <a href="http://bassistance.de/">Jörn</a> and got the chat demo reported. Its all in the <a href="http://code.google.com/p/jquerycomet/source/checkout">SVN</a> at <a href="http://code.google.com/p/jquerycomet/">Google Code</a> and setup an external item in the <a href="http://code.google.com/p/jqueryjs/">jQuery</a> <a href="http://code.google.com/p/jqueryjs/source/checkout">SVN</a>. Also sent an email to <a href="http://blogs.webtide.com/gregw">Greg Wilkins</a> today, hopefully I can get this into the <a href="http://cometdproject.dojotoolkit.org/">Cometd</a> <a href="http://svn.cometd.com/">SVN</a> also.<br />
Next release will be a total rewrite, I made a lot of mistakes in the original, and the prefer jQuery plugin style has changed. Getting back to this point will not be too difficult, and well worth it.</p>
<img src="http://feeds.feedburner.com/~r/morglog/~4/z0Eo63ccQhg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://morglog.org/?feed=rss2&amp;p=47</wfw:commentRss>
		<feedburner:origLink>http://morglog.org/?p=47</feedburner:origLink></item>
		<item>
		<title>Euro to USD Ubiquity command</title>
		<link>http://feedproxy.google.com/~r/morglog/~3/nW-TlsMON7o/</link>
		<comments>http://morglog.org/?p=44#comments</comments>
		<pubDate>Fri, 05 Sep 2008 17:39:03 +0000</pubDate>
		<dc:creator>Morgan</dc:creator>
		
		<category><![CDATA[Firefox]]></category>

		<category><![CDATA[JavaScript]]></category>

		<category><![CDATA[Ubiquity]]></category>

		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://morglog.alleycatracing.com/wordpress/?p=44</guid>
		<description><![CDATA[I have been playing quite a bit with Ubiquity lately. So far, I think it is really cool. One thing that has always prevented me from really getting into Firefox extension development is the constant restarting. I am a two or three line and test type of developer and that just does not work. But [...]]]></description>
			<content:encoded><![CDATA[<p>I have been playing quite a bit with <a href="https://wiki.mozilla.org/Labs/Ubiquity">Ubiquity</a> lately. So far, I think it is really cool. One thing that has always prevented me from really getting into Firefox extension development is the constant restarting. I am a two or three line and test type of developer and that just does not work. But Ubiquity reload all the command every time you open it. And its got jQuery. Since I am living in German now but still earning the US Dollar, I am constantly concerned with the exchange rate and find myself visiting xe.com frequently. Perfect chance to make a new command. So far it just does Euro to USD, I hope to add all their options. <a href="http://morglog.alleycatracing.com/wordpress/?page_id=45">Here</a> it is.</p>
<img src="http://feeds.feedburner.com/~r/morglog/~4/nW-TlsMON7o" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://morglog.org/?feed=rss2&amp;p=44</wfw:commentRss>
		<feedburner:origLink>http://morglog.org/?p=44</feedburner:origLink></item>
		<item>
		<title>Updates in the world of Morgan</title>
		<link>http://feedproxy.google.com/~r/morglog/~3/QvlbOzvN_oo/</link>
		<comments>http://morglog.org/?p=43#comments</comments>
		<pubDate>Thu, 04 Sep 2008 01:05:47 +0000</pubDate>
		<dc:creator>Morgan</dc:creator>
		
		<category><![CDATA[JavaScript]]></category>

		<category><![CDATA[Random]]></category>

		<category><![CDATA[Rant]]></category>

		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[Webdork]]></category>

		<guid isPermaLink="false">http://morglog.alleycatracing.com/wordpress/?p=43</guid>
		<description><![CDATA[With the major exception of USPS, Deutsche Post and DHL&#8217;s combined effort to loose my laptop, things are going great. I have been in Berlin for about three weeks now, landed an exciting new programming contract, looking like I found a rather cheap room to rent.
So what have I been up to&#8230;.. Since I do [...]]]></description>
			<content:encoded><![CDATA[<p>With the major exception of USPS, Deutsche Post and DHL&#8217;s combined effort to loose my laptop, things are going great. I have been in Berlin for about three weeks now, landed an exciting new programming contract, looking like I found a rather cheap room to rent.</p>
<p>So what have I been up to&#8230;.. Since I do not have my regular laptop, the programming lad been kinda limited. I am working on my ASUS EEEpc (which I finally fixed) which has been, well, a bit of a pain in the ass. But surprisingly I have gotten used to it. But I have also gotten a new laptop (free too). So tomorrow I will be back to it, getting some really work done on a full sized screen. But I still have been working on some interesting stuff. For the new job, I have spent the last day familiarizing myself with the code already in place and doing a huge amount of cleanup. A lot of redundant code, good practices used in the wrong way, bad practices making things worse. But not too bad all in all. I have also been playing a lot with <a href="http://code.google.com/apis/v8/intro.html">V8</a> which I am super excited about. While I am not the best C++ programmer, I am a terrible Java programmer. So this is a great alternative to Rhino. And that&#8217;s not entirely true, I can guess and stumble through Java as well as C++, but Java&#8217;s build environment leaves me totally befuddled. I have also been playing around with <a href="http://fuse.sourceforge.net/">FUSE</a> again, and decided why not combined the two? So I made JsFS (I&#8217;ll post about this again later), but basically it create a jsin and jsout file, put Javascript into jsin and it is executed by V8 and the results are in jsout. Pretty useless yeah, but it was fun to make. I figure in the end I could make a Javascript interface for FUSE.<br />
Bike News! I rode to Copenhagen two weeks ago. Well most of the way. Weather was not very cooperative and my friend I was riding with got injured to we ended up riding about half of it while hoping on and off trains. I am putting together a better mini-touring setup and will be riding to Geneva in about two weeks to race in the <a href="http://suicmc.ch/">Swiss Bike Messengers Championship</a>.<br />
Also posted some <a href="http://flickr.com/photos/11556241@N06/">pictures</a>. Okay, thats enough out of me.</p>
<img src="http://feeds.feedburner.com/~r/morglog/~4/QvlbOzvN_oo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://morglog.org/?feed=rss2&amp;p=43</wfw:commentRss>
		<feedburner:origLink>http://morglog.org/?p=43</feedburner:origLink></item>
		<item>
		<title>Move along</title>
		<link>http://feedproxy.google.com/~r/morglog/~3/a63GW9JdgGI/</link>
		<comments>http://morglog.org/?p=41#comments</comments>
		<pubDate>Thu, 17 Jul 2008 20:51:18 +0000</pubDate>
		<dc:creator>Morgan</dc:creator>
		
		<category><![CDATA[Rant]]></category>

		<category><![CDATA[Webdork]]></category>

		<guid isPermaLink="false">http://morglog.alleycatracing.com/wordpress/?p=41</guid>
		<description><![CDATA[After about a year and a half, I have decided to leave Snitsig (snappystuff.com). The decision was made mostly due to my excessively long commute, sometime spending as much as 5 hours &#8216;going&#8217; (lots of missed,delayed,slow  trains and standing around) to and from work. But in the last year+ I really learned a lot. [...]]]></description>
			<content:encoded><![CDATA[<p>After about a year and a half, I have decided to leave <a href="http://www.snitsig.com">Snitsig</a> (<a href="http://www.snappystuff.com">snappystuff.com</a>). The decision was made mostly due to my excessively long commute, sometime spending as much as 5 hours &#8216;going&#8217; (lots of missed,delayed,slow  trains and standing around) to and from work. But in the last year+ I really learned a lot. I went from &#8216;Nah, I do not use XML much&#8217; to a near zealot for it (I have not forgotten about you JSON). I am doing things in PHP I did not think possible (Almost there PHP), had the opportunity to do a little more hardware/Interweb interaction and play with RFIDs again. Learned a TON about API writting. Most importantly I learned about working with a team. I am so used to working either along or with just one other person. It is really nice having other people to bounce ideas off of and collaborate with. Cheers to you <a href="http://www.snappystuff.com">SnappStuff</a>, it was a pleasure working with you all, and I look forward to collaborating with you all again.</p>
<p>And for me&#8230;. Meh, I&#8217;m fickle.</p>
<img src="http://feeds.feedburner.com/~r/morglog/~4/a63GW9JdgGI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://morglog.org/?feed=rss2&amp;p=41</wfw:commentRss>
		<feedburner:origLink>http://morglog.org/?p=41</feedburner:origLink></item>
		<item>
		<title>DBXMLAdmin updates</title>
		<link>http://feedproxy.google.com/~r/morglog/~3/EqJmKX7likc/</link>
		<comments>http://morglog.org/?p=37#comments</comments>
		<pubDate>Thu, 29 May 2008 07:44:24 +0000</pubDate>
		<dc:creator>Morgan</dc:creator>
		
		<category><![CDATA[AJAX]]></category>

		<category><![CDATA[DBXML]]></category>

		<category><![CDATA[JavaScript]]></category>

		<category><![CDATA[XML]]></category>

		<category><![CDATA[jQuery]]></category>

		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://morglog.alleycatracing.com/wordpress/?p=37</guid>
		<description><![CDATA[After being completely annoyed by SimpleXML earlier I decided it was time to look at DBXML again. This time I ran across a forum posting saying that DBXML 2.4.11 had a bug in it preventing updating. After upgrading to 2.4.13 I was able to update documents in a container. So I made some update to [...]]]></description>
			<content:encoded><![CDATA[<p>After being completely annoyed by SimpleXML earlier I decided it was time to look at DBXML again. This time I ran across a forum posting saying that DBXML 2.4.11 had a bug in it preventing updating. After upgrading to 2.4.13 I was able to update documents in a container. So I made some update to the <a href="http://code.google.com/p/dbxmladmin/">project</a> but realized that this was more of an out of control experiment than a real project. Already started redoing it, all the PHP is going to be new but I have managed to reuse most of the Javascript.</p>
<p>I also found this site <a href="http://phpdbxml.4641.org/doku.php">DBXML With PHP</a>, it is a small wiki for, as the name says, using DBXML with PHP. It has not been updated in a while (until today) but I will keep adding things as I progress on DBXML. Hopefully other will help out too, right now there are few resources for DBXML in PHP.</p>
<img src="http://feeds.feedburner.com/~r/morglog/~4/EqJmKX7likc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://morglog.org/?feed=rss2&amp;p=37</wfw:commentRss>
		<feedburner:origLink>http://morglog.org/?p=37</feedburner:origLink></item>
	</channel>
</rss>
