<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	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:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Things My Brain&#039;s Been Thinking About</title>
	<atom:link href="http://grahamwideman.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://grahamwideman.wordpress.com</link>
	<description>Things My Brain&#039;s Been Thinking About</description>
	<lastBuildDate>Thu, 05 Jan 2012 07:23:50 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='grahamwideman.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Things My Brain&#039;s Been Thinking About</title>
		<link>http://grahamwideman.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://grahamwideman.wordpress.com/osd.xml" title="Things My Brain&#039;s Been Thinking About" />
	<atom:link rel='hub' href='http://grahamwideman.wordpress.com/?pushpress=hub'/>
		<item>
		<title>My foray into software analysis tools</title>
		<link>http://grahamwideman.wordpress.com/2009/11/10/my-foray-into-software-analysis-tools/</link>
		<comments>http://grahamwideman.wordpress.com/2009/11/10/my-foray-into-software-analysis-tools/#comments</comments>
		<pubDate>Tue, 10 Nov 2009 10:43:16 +0000</pubDate>
		<dc:creator>Graham</dc:creator>
				<category><![CDATA[Dev [gw]]]></category>
		<category><![CDATA[Knowledge mgt [gw]]]></category>
		<category><![CDATA[Parsing [gw]]]></category>

		<guid isPermaLink="false">http://grahamwideman.wordpress.com/?p=496</guid>
		<description><![CDATA[My interest in online collaboration and collaborative knowledge development has rubbed my nose in the problem that tools for automatically analyzing and summarizing systems are substantially short of what ought to be possible.  This is not a new revelation for sure, but this time around, I&#8217;ve embarked on a foray into the analysis tools arena [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=grahamwideman.wordpress.com&amp;blog=6167096&amp;post=496&amp;subd=grahamwideman&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>My interest in online collaboration and collaborative knowledge development has rubbed my nose in the problem that tools for automatically analyzing and summarizing systems are substantially short of what ought to be possible.  This is not a new revelation for sure, but this time around, I&#8217;ve embarked on a foray into the analysis tools arena to understand it a bit better, and see if some key obstacles can be surmounted. <span id="more-496"></span></p>
<h2>Detour from collaboration to analysis tools</h2>
<p>For effective collaboration (or knowledge production or publishing efforts), relatively elaborate and detailed requirements must be met which can be quite specific to the arrangement of people and the nature of the tasks and the content.  These requirements may well change over time, with limited time window to meet them before collaboration participants (or clients or customers) lose interest.</p>
<p>Of course, there&#8217;s quite a spectrum of online applications or services which attempt to cover different parts of this territory:  wikis, email, forums, IM, task trackers, Google docs/calendar/sites, Basecamp and Confluence and similar, blogs, content management systems (CMSs) and so on.  But inevitably it&#8217;s only practical for these services to offer limited configurability, using which you can only achieve an approximate fit to ideal requirements.</p>
<p>This prompts us to look to open source packages, in hopes that we can achieve a better fit through modification of source code if need be (without writing an app from scratch), and by taking advantage of the customizations and add-ons that other participants often contribute to open-source packages.</p>
<p>Open source increases the necessity to interact with source code, both to understand the product (and add-ons) in the first place, and to implement initial and subsequent customizations of our system, not to mention deal with subsequent versions of the adopted open-source package.</p>
<p>But interacting with source code is <em>hard</em>, and can easily become the bottleneck to progress on the original quest &#8212; the collaboration or publication effort.</p>
<p>So we are quite interested in tools that might digest source code and transform it into summaries or diagrams that we could understand vastly more rapidly than reading reams of text.   By the same token, these kinds of tools might help actual open source contributors to work more effectively, something we&#8217;d like to encourage if we want to enjoy the product of such labors.</p>
<p>This is certainly not the first time I&#8217;ve found myself traveling approximately this same path of reasoning.  This time I&#8217;m persuaded me to take a detour for a closer look at the state of these tools, to identify key obstacles, and consider how these tools could be brought to bear better than they are currently.</p>
<h2>Tools for analyzing and summarizing  a software system</h2>
<p>A very broad-brush breakdown of a software system distinguishes between what the system <em>knows</em>, and what the system <em>does</em>.  In a typical online system, what the system <em>knows </em>(at least for the long term) corresponds to the <em>data </em>it stores in a database, while what it <em>does </em>corresponds to the <em>functionality </em>implemented by the program source code.  Each of these can be examined to gain an understanding of the system as a whole, and each sheds some light on the other.</p>
<p>The tools for examining, digesting and summarizing each of these aspects of a system are at quite a different states of usefulness:</p>
<ul>
<li>Database tools</li>
<li>Source-code analysis and summary tools</li>
</ul>
<h3>Database tools</h3>
<p>(&#8220;Database diagrammer&#8221;, &#8220;Entity-relationship tool&#8221;, &#8220;database modeling tool&#8221;) There are numerous tools in this category, and many do a good job of reading an existing database and summarizing this into diagrams that you can read quickly to learn most of what&#8217;s significant about the database coarse and detail structure &#8212; elucidating what the system knows.</p>
<p>It would be useful to attach additional information to this kind of diagram, but most such tools don&#8217;t provide any facility to merge in and visualize additional information.  I&#8217;ve been helping to encourage richer database diagrams, by contributing to the ModelRight effort, which I describe in more detail here <span style="color:#3366ff;">[link to come]</span>.</p>
<h3>Source-code analysis tools</h3>
<p>Compared to database structure, source code is a much more complex material to analyze, so the tools in this area are in a correspondingly less satisfying state. Though there is a variety of tools which programmers use to help work on the detail level of source code, there is a dearth of tools capable of providing intelligent and rich summaries of the important structure and relationships of source code.</p>
<p>Yet some of the obstacles to advancement in this area appear to be relatively mundane,  raising hopes that progress might be encouraged.  A major obstacle has been the relative awkwardness of just parsing source code (successfully!)  to derive reliable raw data as a basis for analysis. This, I suspect, has been a substantial deterrent to developers creating ad hoc analysis when they need it, which might have snowballed into more elaborate tools.</p>
<p>However, I&#8217;m encouraged that the basic parsing tools are getting more capable and domesticated.  In this vein I&#8217;ve been working to get a better grasp of ANTLR, and making some modest contributions to that effort, as I describe here <span style="color:#3366ff;">[link to come]</span>.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/grahamwideman.wordpress.com/496/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/grahamwideman.wordpress.com/496/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/grahamwideman.wordpress.com/496/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/grahamwideman.wordpress.com/496/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/grahamwideman.wordpress.com/496/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/grahamwideman.wordpress.com/496/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/grahamwideman.wordpress.com/496/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/grahamwideman.wordpress.com/496/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/grahamwideman.wordpress.com/496/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/grahamwideman.wordpress.com/496/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/grahamwideman.wordpress.com/496/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/grahamwideman.wordpress.com/496/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/grahamwideman.wordpress.com/496/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/grahamwideman.wordpress.com/496/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=grahamwideman.wordpress.com&amp;blog=6167096&amp;post=496&amp;subd=grahamwideman&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://grahamwideman.wordpress.com/2009/11/10/my-foray-into-software-analysis-tools/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f8ad5660952c0c68d30a686d78ec31a2?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=R" medium="image">
			<media:title type="html">gwideman</media:title>
		</media:content>
	</item>
		<item>
		<title>What&#8217;s this site all about?</title>
		<link>http://grahamwideman.wordpress.com/2009/11/10/whats-this-site-all-about/</link>
		<comments>http://grahamwideman.wordpress.com/2009/11/10/whats-this-site-all-about/#comments</comments>
		<pubDate>Tue, 10 Nov 2009 10:33:17 +0000</pubDate>
		<dc:creator>Graham</dc:creator>
				<category><![CDATA[sticky]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://grahamwideman.wordpress.com/?p=498</guid>
		<description><![CDATA[This blog follows my pursuit of issues in online collaboration, knowledge development and publication, also software analysis, and perhaps a little neuroscience, diagramming and visualization, with other topics thrown in once in a while. Of these topics, currently the area I&#8217;m most active in is assembling tools for some software analysis capability that I want [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=grahamwideman.wordpress.com&amp;blog=6167096&amp;post=498&amp;subd=grahamwideman&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>This blog follows my pursuit of issues in online collaboration, knowledge development and publication, also software analysis, and perhaps a little neuroscience, diagramming and visualization, with other topics thrown in once in a while. <span id="more-498"></span></p>
<p>Of these topics, currently the area I&#8217;m most active in is assembling tools for some software analysis capability that I want to have at hand.</p>
<p style="padding-left:30px;">I describe what motivated this direction in <a href="http://grahamwideman.wordpress.com/2009/11/10/my-foray-into-software-analysis-tools/">My foray into software analysis tools</a>.</p>
<p style="padding-left:30px;">I made some contributions to database analysis tools, discussed here <span style="color:#3366ff;">[link to come]</span>.</p>
<p style="padding-left:30px;">I am also chewing away on some source-code parsing tasks, and discuss some of that here <span style="color:#3366ff;">[link to come]</span>.</p>
<p>For everything else&#8230; see the sidebar to visit posts by Categories or by date.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/grahamwideman.wordpress.com/498/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/grahamwideman.wordpress.com/498/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/grahamwideman.wordpress.com/498/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/grahamwideman.wordpress.com/498/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/grahamwideman.wordpress.com/498/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/grahamwideman.wordpress.com/498/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/grahamwideman.wordpress.com/498/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/grahamwideman.wordpress.com/498/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/grahamwideman.wordpress.com/498/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/grahamwideman.wordpress.com/498/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/grahamwideman.wordpress.com/498/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/grahamwideman.wordpress.com/498/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/grahamwideman.wordpress.com/498/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/grahamwideman.wordpress.com/498/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=grahamwideman.wordpress.com&amp;blog=6167096&amp;post=498&amp;subd=grahamwideman&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://grahamwideman.wordpress.com/2009/11/10/whats-this-site-all-about/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f8ad5660952c0c68d30a686d78ec31a2?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=R" medium="image">
			<media:title type="html">gwideman</media:title>
		</media:content>
	</item>
		<item>
		<title>Eclipse notes</title>
		<link>http://grahamwideman.wordpress.com/2009/10/02/eclipse-notes/</link>
		<comments>http://grahamwideman.wordpress.com/2009/10/02/eclipse-notes/#comments</comments>
		<pubDate>Fri, 02 Oct 2009 23:42:59 +0000</pubDate>
		<dc:creator>Graham</dc:creator>
				<category><![CDATA[Dev [gw]]]></category>

		<guid isPermaLink="false">http://grahamwideman.wordpress.com/?p=378</guid>
		<description><![CDATA[A page on which to save some notes about the Eclipse developer platform. Printing code from Eclipse Story currently (Eclipse 3.4.1) seems to be that printing in Eclipse is primitive &#8212; no control over fonts or page margins.  That leads to a desire to print via some other tool that does provide that level of [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=grahamwideman.wordpress.com&amp;blog=6167096&amp;post=378&amp;subd=grahamwideman&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>A page on which to save some notes about the Eclipse developer platform.</p>
<p><span id="more-378"></span></p>
<h2>Printing code from Eclipse</h2>
<p>Story currently (Eclipse 3.4.1) seems to be that printing in Eclipse is primitive &#8212; no control over fonts or page margins.  That leads to a desire to print via some other tool that does provide that level of control.  One possibility is MS Word.  Going down that path means one wants to know:</p>
<ul>
<li>How to copy and paste with the syntax highlighting intact</li>
<li>How to fix up any tab/space issues</li>
</ul>
<p>&#8230; which is what the next to blurbs are about</p>
<h2>Copy syntax-highlighted text</h2>
<p>Eclipse (or at least the Java editor) has the capability to copy syntax-highlighted text in RTF format (so the formatting can appear for example in Word).</p>
<p>However, turns out that this feature is disabled if code-folding is enabled.  So you have to disable code folding:</p>
<p>Window &gt; Preferences &gt; Jave &gt; Editor &gt; Folding &gt; uncheck &#8220;Enable Folding&#8221;</p>
<p>References:</p>
<ul>
<li><a href="http://denverdev.blogspot.com/2009/01/developer-syntax-highlighting-for.html">http://denverdev.blogspot.com/2009/01/developer-syntax-highlighting-for.html</a></li>
<li><a href="//dev.eclipse.org/newslists/news.eclipse.platform/msg25833.html">http://dev.eclipse.org/newslists/news.eclipse.platform/msg25833.html</a></li>
<li><a href="//bugs.eclipse.org/bugs/show_bug.cgi?id=64498">https://bugs.eclipse.org/bugs/show_bug.cgi?id=64498</a></li>
</ul>
<h2>Show and fix up tab/spaces:  AnyEdit tools add-on</h2>
<p>Available here:   <a href="http://andrei.gmxhome.de/anyedit/">http://andrei.gmxhome.de/anyedit/</a></p>
<p>Minor note:  Follow all the install instructions including the <a href="http://andrei.gmxhome.de/anyedit/preferences.html">preferences settings</a>, because some of the functionality does not appear in the UI otherwise.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/grahamwideman.wordpress.com/378/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/grahamwideman.wordpress.com/378/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/grahamwideman.wordpress.com/378/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/grahamwideman.wordpress.com/378/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/grahamwideman.wordpress.com/378/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/grahamwideman.wordpress.com/378/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/grahamwideman.wordpress.com/378/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/grahamwideman.wordpress.com/378/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/grahamwideman.wordpress.com/378/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/grahamwideman.wordpress.com/378/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/grahamwideman.wordpress.com/378/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/grahamwideman.wordpress.com/378/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/grahamwideman.wordpress.com/378/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/grahamwideman.wordpress.com/378/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=grahamwideman.wordpress.com&amp;blog=6167096&amp;post=378&amp;subd=grahamwideman&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://grahamwideman.wordpress.com/2009/10/02/eclipse-notes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f8ad5660952c0c68d30a686d78ec31a2?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=R" medium="image">
			<media:title type="html">gwideman</media:title>
		</media:content>
	</item>
		<item>
		<title>Java Miscellaneous Notes</title>
		<link>http://grahamwideman.wordpress.com/2009/08/11/java-miscellaneous-notes/</link>
		<comments>http://grahamwideman.wordpress.com/2009/08/11/java-miscellaneous-notes/#comments</comments>
		<pubDate>Tue, 11 Aug 2009 22:56:30 +0000</pubDate>
		<dc:creator>Graham</dc:creator>
				<category><![CDATA[Java [gw]]]></category>

		<guid isPermaLink="false">http://grahamwideman.wordpress.com/?p=373</guid>
		<description><![CDATA[Just a page on which to capture miscellaneous notes relating to Java. JVM  1.6.0_14, _15 bug causes breakpoints to fail In Eclipse, running one of the recent JVMs causes breakpoints to stop working soon after an app is started in the debugger (though some may work initially). References Eclipse bug report:  Breakpoints fail to hit [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=grahamwideman.wordpress.com&amp;blog=6167096&amp;post=373&amp;subd=grahamwideman&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Just a page on which to capture miscellaneous notes relating to Java.<span id="more-373"></span></p>
<h2>JVM  1.6.0_14, _15 bug causes breakpoints to fail</h2>
<p>In Eclipse, running one of the recent JVMs causes breakpoints to stop working soon after an app is started in the debugger (though some may work initially).</p>
<p>References</p>
<ul>
<li>Eclipse bug report:  <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=279137">Breakpoints fail to hit under JDK 1.6.0_14</a></li>
<li>Sun bug report: <a href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6862295">JDWP threadid changes during debugging session (leading to ignored breakpoints)</a></li>
<li>Ubuntu forum: <a href="http://ubuntuforums.org/showthread.php?t=1147960">Eclipse: Java is not stopping at breakpoints</a></li>
</ul>
<h2>Collection of JVM Options</h2>
<p><a href="http://blogs.sun.com/watt/resource/jvm-options-list.html">http://blogs.sun.com/watt/resource/jvm-options-list.html</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/grahamwideman.wordpress.com/373/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/grahamwideman.wordpress.com/373/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/grahamwideman.wordpress.com/373/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/grahamwideman.wordpress.com/373/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/grahamwideman.wordpress.com/373/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/grahamwideman.wordpress.com/373/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/grahamwideman.wordpress.com/373/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/grahamwideman.wordpress.com/373/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/grahamwideman.wordpress.com/373/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/grahamwideman.wordpress.com/373/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/grahamwideman.wordpress.com/373/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/grahamwideman.wordpress.com/373/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/grahamwideman.wordpress.com/373/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/grahamwideman.wordpress.com/373/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=grahamwideman.wordpress.com&amp;blog=6167096&amp;post=373&amp;subd=grahamwideman&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://grahamwideman.wordpress.com/2009/08/11/java-miscellaneous-notes/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f8ad5660952c0c68d30a686d78ec31a2?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=R" medium="image">
			<media:title type="html">gwideman</media:title>
		</media:content>
	</item>
		<item>
		<title>Programmer&#8217;s editor exploration</title>
		<link>http://grahamwideman.wordpress.com/2009/08/07/programmers-editor-exploration/</link>
		<comments>http://grahamwideman.wordpress.com/2009/08/07/programmers-editor-exploration/#comments</comments>
		<pubDate>Fri, 07 Aug 2009 10:17:34 +0000</pubDate>
		<dc:creator>Graham</dc:creator>
				<category><![CDATA[Dev [gw]]]></category>

		<guid isPermaLink="false">http://grahamwideman.wordpress.com/?p=361</guid>
		<description><![CDATA[I&#8217;m starting to itch for an upgrade/update in my text-editor department, so in this post I&#8217;m accumulating some notes on features I care about, and listing some editors to look at. Desired features Platform(s): Must run on Windows.  If the editor is available for other platforms, that&#8217;s helpful. Speed: Must respond &#8220;immediately&#8221; in almost all [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=grahamwideman.wordpress.com&amp;blog=6167096&amp;post=361&amp;subd=grahamwideman&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m starting to itch for an upgrade/update in my text-editor department, so in this post I&#8217;m accumulating some notes on features I care about, and listing some editors to look at.</p>
<p><span id="more-361"></span></p>
<h2>Desired features</h2>
<ul>
<li><strong>Platform(s): </strong> Must run on Windows.  If the editor is available for other platforms, that&#8217;s helpful.</li>
<li><strong>Speed:</strong> Must respond &#8220;immediately&#8221; in almost all situations.</li>
<li><strong>File Size:</strong> Must not have a problem with large files (say a million lines of text).</li>
<li><strong>Line-length:</strong> Must support long lines (preferably arbitrarily long).</li>
<li><strong>Tab/space handling:</strong> Must be able to have tab key insert spaces (to next tab position), and be able to set the spacing of  tab stops</li>
<li><strong>Auto-indent</strong></li>
<li><strong>Block indent/outdent<br />
</strong></li>
<li><strong>Tab/space/newline visibility:</strong> Should be able to enable visibility of special characters such as these. (And maybe separate schemes for different file types.)</li>
<li><strong>Brace/bracket matching: </strong>Position the cursor on one bracket, editor highlights the matching one<strong>.<br />
</strong></li>
<li><strong>Multi files/windows:</strong> Able to have multiple files open at once in separate tabs OR separate windows and these separate windows should NOT be stuck within a %^$# parent MDI window!</li>
<li><strong>Multi view of same file:</strong> Must be able to allow view/ edit of multiple locations in the same file &#8212; split window layout would be good here.<strong><br />
</strong></li>
<li><strong>Newline handling and conversion:</strong> Able to detect,  retain and optionally convert a file&#8217;s newline convention.</li>
<li><strong>Behavior around end-of-line: </strong>
<ul>
<li>Allow cursor placement beyond end-of line (and auto insert spaces if user types anything there)</li>
<li>Moving the cursor vertically doesn&#8217;t cause cursor to jump around to follow line-end!</li>
<li>Trim trailing spaces on save</li>
</ul>
</li>
<li><strong>Multiple undo</strong></li>
<li><strong>Rectangular block selection:</strong> Essential, and must have convenient key bindings</li>
<li><strong>Unicode handling and conversion: </strong>Not needed yet, but I can see this is coming</li>
<li><strong>Macros: </strong>Need simple ones for ad hoc repetition. Probably don&#8217;t need full-blown macro language, especially if it&#8217;s custom to the editor (VBA or one of the existing scripting languages would be OK.)<strong><br />
</strong></li>
<li><strong>Search/replace:</strong>
<ul>
<li>understand regex, and begin/end line etc</li>
<li>would be nice if search was immediate/live</li>
</ul>
</li>
<li><strong>Bookmarks: </strong>Must be easy to set and jump to multi bookmarks</li>
<li><strong>Quasi-IDE features</strong>
<ul>
<li>Nice, but it seems to be a trade-off between benefit vs how involved they are to set up.  I&#8217;m currently pursuaded that syntax highlighting is feasible for an editor vendor to supply in a low-hassle way. I&#8217;m less pursuaded on intellisense (autocomplete based on libraries of known functions and other identifiers.) This seems more of a job for a real IDE that understands a complete project.</li>
<li><strong>Syntax highlight</strong></li>
<li><strong>Code folding:</strong> Assuming that it understands the syntax</li>
</ul>
<ul>
<li><strong>Able to run external tools:</strong> And maybe understand error line/col so it can position the cursor on return from compile</li>
<li><strong>Version control integration:</strong> Not sure if this is an exciting or even practical feature.</li>
</ul>
</li>
</ul>
<h2>Editors noticed</h2>
<p>&#8230;. and my reactions&#8230;. For anyone dropping in: this is just notes for me &#8212; it&#8217;s not intended to be comprehensive or fair.</p>
<ul>
<li><strong><a href="http://www.editpadpro.com/">EditPad</a>: </strong> EditPad Lite is my current editor, when I&#8217;m not using an IDE.  But I&#8217;m missing the features that at in Pro, so one option is just get the Pro version. Regarding Pro:
<ul>
<li>Only multi-edit capability is tabbed.  No split. Can open new instance, but it&#8217;s not synchronized with the first.</li>
<li>Cannot set my preferred beyond-end-of line cursor movement behavior.  This is probably the feature that most makes this editor uncomfortable to me.</li>
<li>Number gutter is distractingly indistinguishable from the main text.</li>
<li>Search opens non-modally as part of window border (OK), but occupies too much space.</li>
</ul>
</li>
<li><a href="http://www.ultraedit.com/products/ultraedit.html">UltraEdit</a>:  Looking pretty good on most of the feature list
<ul>
<li>Main deficiency: MDI (or tabs).
<ul>
<li>However, does have split,</li>
<li>Minimizing the surrounding parent window clutter, and launching multi instances, could be workable</li>
</ul>
</li>
<li>Can set my preferred cursor behavior, including trim right whitespace on save.</li>
</ul>
</li>
<li><a href="http://zeusedit.com/">Zeus</a>:
<ul>
<li>MDI, no free-floating edit window. Has 2-way split.
<ul>
<li>Can launch more instances. Other instances looking at same file sync on save (not live).</li>
<li>Semi-fatal flaw: In split mode, the left gutter info disappears (line numbers, bookmarks), which is where they are most needed.  This is a known issue, apparently &#8220;will not fix&#8221;.</li>
<li>Can set my preferred cursor behavior, including trim right whitespace on save.</li>
</ul>
</li>
<li>Has active forums.</li>
</ul>
</li>
<li><a href="http://www.editplus.com/">EditPlus</a>:
<ul>
<li>MDI only (but can run multi instances).  No tabbed arrangement of windows. Does have usable 2- or 4-way split.</li>
<li>Mouse can place cursor after end of line. However, cursor keys cannot. On cursor up/down, cursor leaps to existing line ends. (For me, editor disqualified on this feature alone.)</li>
</ul>
</li>
<li><a href="http://www.slickedit.com/">SlickEdit</a> :  Looks feature-packed, cross platform, interface to version control, build system etc. But $299.
<ul>
<li>MDI window. Manual describes various splitting arrangements.</li>
<li>1300 page manual.  Maybe too much of a good thing?</li>
</ul>
</li>
<li><a href="http://www.crisp.com/">Crisp:</a> Skipped trying this one due to $275.  Appears to use MDI, or tabs. Does have split, I think, or maybe it&#8217;s just borderless MDI windows. Seems to expose a little too much complex internals for my liking. (We still need a &#8220;buffers&#8221; paradigm?)</li>
<li><a href="http://www.multiedit.com/">Multi-Edit</a>:
<ul>
<li>Website rather frustrating &#8212; much rhetoric, not much description of features, nor screenshots.</li>
<li>Full and Lite versions</li>
<li>MDI windows, optional tabs. Split = create new window. Window management seems pretty clumsy</li>
<li>Can be config&#8217;ed to my preferred cursor behavior</li>
<li>Within minutes I discovered that undo didn&#8217;t work properly.  Then it allowed files to be closed without saving edits.</li>
<li>Shows edited lines with marker in margin &#8212; that seems desirable!</li>
<li>There seems no way to mark columnar block with mouse</li>
</ul>
</li>
<li><a href="http://notepad-plus.sourceforge.net/uk/site.htm">NotePad++</a>:  A sourceforge-hosted project.</li>
<li>CodeWright: Was a Borland product, but discontinued</li>
<li><a href="http://vedit.com/index.html">VEdit</a>
<ul>
<li>Probably powerful for specific tasks (like editing huge files) but the UI and options philosophy comes across like it&#8217;s a Windows 3.1 app written by a brilliant assembler programmer.  Eg: Starts with crazy looking DOS-esque fonts. Some options must be configured using bit masks that user has to figure out from docs.</li>
<li>Split = make more MDI windows.</li>
<li>Cursor moves with scrollbar! Arrrg! Maybe there&#8217;s an option to disable this, but manual has almost 600 references to &#8220;cursor&#8221;, so I didn&#8217;t find the way forward on this.</li>
</ul>
</li>
<li>Emacs</li>
<li>Textmate:  This is Mac only, but well liked</li>
<li><a href="http://www.e-texteditor.com/">E Text Editor</a>: Claims to have the &#8220;power of TextMate on Windows&#8221;. &#8220;Unix at your fingertips&#8221; (if you have cygwin installed!).  Site has no description of feature set. (But does have a wiki for docs)</li>
<li><a href="http://intype.info/home/index.php">Intype</a>: Something that might be interesting in the future</li>
<li>vi or anything like it:  Not compatible with my brain due to vi&#8217;s reliance on multiple modes and multi-keystroke commands combined with lack of prompts and affordances.</li>
<li>Comparisons
<ul>
<li><a href="http://www.zeusedit.com/forum/viewtopic.php?t=200">Zeus, UltraEdit, EditPadPro</a> circa 2005-2007</li>
</ul>
</li>
<li>Oh great&#8230;.
<ul>
<li><a href="http://en.wikipedia.org/wiki/List_of_text_editors">http://en.wikipedia.org/wiki/List_of_text_editors</a></li>
<li><a href="http://en.wikipedia.org/wiki/Comparison_of_text_editors">http://en.wikipedia.org/wiki/Comparison_of_text_editors</a></li>
</ul>
</li>
</ul>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/grahamwideman.wordpress.com/361/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/grahamwideman.wordpress.com/361/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/grahamwideman.wordpress.com/361/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/grahamwideman.wordpress.com/361/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/grahamwideman.wordpress.com/361/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/grahamwideman.wordpress.com/361/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/grahamwideman.wordpress.com/361/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/grahamwideman.wordpress.com/361/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/grahamwideman.wordpress.com/361/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/grahamwideman.wordpress.com/361/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/grahamwideman.wordpress.com/361/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/grahamwideman.wordpress.com/361/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/grahamwideman.wordpress.com/361/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/grahamwideman.wordpress.com/361/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=grahamwideman.wordpress.com&amp;blog=6167096&amp;post=361&amp;subd=grahamwideman&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://grahamwideman.wordpress.com/2009/08/07/programmers-editor-exploration/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f8ad5660952c0c68d30a686d78ec31a2?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=R" medium="image">
			<media:title type="html">gwideman</media:title>
		</media:content>
	</item>
		<item>
		<title>PHP grammar notes</title>
		<link>http://grahamwideman.wordpress.com/2009/08/05/php-grammar-notes/</link>
		<comments>http://grahamwideman.wordpress.com/2009/08/05/php-grammar-notes/#comments</comments>
		<pubDate>Wed, 05 Aug 2009 09:26:40 +0000</pubDate>
		<dc:creator>Graham</dc:creator>
				<category><![CDATA[Parsing [gw]]]></category>
		<category><![CDATA[PHP [gw]]]></category>
		<category><![CDATA[web dev [gw]]]></category>

		<guid isPermaLink="false">http://grahamwideman.wordpress.com/?p=304</guid>
		<description><![CDATA[I&#8217;m refining an ANTLR grammar to parse PHP, which runs into the issue that (so far as I can determine) there&#8217;s no formal definition of the PHP language, other than just what the Zend PHP engine accepts. There is documentation at php.net, which is a great help, but is often not complete, and sometimes muddles [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=grahamwideman.wordpress.com&amp;blog=6167096&amp;post=304&amp;subd=grahamwideman&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img class="size-full wp-image-347 alignleft" title="php-wtf" src="http://grahamwideman.files.wordpress.com/2009/08/php-wtf.png" alt="php-wtf" width="105" height="57" />I&#8217;m refining an ANTLR grammar to parse PHP, which runs into the issue that (so far as I can determine) there&#8217;s no formal definition of the PHP language, other than just what the Zend PHP engine accepts. There is documentation at <a href="http://php.net">php.net</a>, which is a great help, but is often not complete, and sometimes muddles together discussions about PHP 4 and 5, whose syntax can be substantially different.</p>
<p>So in this post I&#8217;m recording some notes on a number of finer points of PHP syntax which seem to be undocumented.  In particular:</p>
<ul>
<li>Rules for composing a valid variable or function (or object&#8230;member variable/function) identifier &#8220;path&#8221;.</li>
<li>Variable names &#8212; not limited to simple strings</li>
<li>Variable names can be reserved words</li>
<li>The supposed &#8220;reference operator&#8221;</li>
<li>Can some statement keywords (like print) use function syntax?</li>
</ul>
<p><span id="more-304"></span></p>
<h2>Preliminaries</h2>
<ul>
<li>Based on PHP 5.2.x (ie: pre 5.3).  I think 5.3 is mostly (entirely?) a superset of 5.2.x</li>
</ul>
<h2>Accessing variables, functions, objects, methods in PHP</h2>
<p>The following table shows a variety of variable, function and member cases. Blue brackets show the precedence order and association of the parts of the expression.  (See key below for italicized words.)</p>
<table style="border-collapse:collapse;" border="1" cellpadding="4">
<tbody>
<tr>
<td></td>
<td><strong>Global or local</strong></td>
<td><strong>Object member</strong></td>
</tr>
<tr>
<td>Constant [Note 1]</td>
<td><img class="alignnone size-full" title="php-v01" src="http://grahamwideman.files.wordpress.com/2009/08/php-v01.png" alt="php-v01" /></td>
<td>Not applic</td>
</tr>
<tr>
<td>Variable</td>
<td><img class="alignnone size-full" title="php-v02" src="http://grahamwideman.files.wordpress.com/2009/08/php-v02.png" alt="php-v02" /></td>
<td><img class="alignnone size-full" title="php-mv02" src="http://grahamwideman.files.wordpress.com/2009/08/php-mv02.png" alt="php-mv02" /></td>
</tr>
<tr>
<td>Variable; name from expression. [Note 2]</td>
<td><img class="alignnone size-full" title="php-v03" src="http://grahamwideman.files.wordpress.com/2009/08/php-v03.png" alt="php-v03" /></td>
<td><img class="alignnone size-full" title="php-mv03" src="http://grahamwideman.files.wordpress.com/2009/08/php-mv03.png" alt="php-mv03" /></td>
</tr>
<tr>
<td>Variable; name from variable</td>
<td><img class="alignnone size-full" title="php-v04" src="http://grahamwideman.files.wordpress.com/2009/08/php-v04.png" alt="php-v04" /></td>
<td><img class="alignnone size-full" title="php-mv04" src="http://grahamwideman.files.wordpress.com/2009/08/php-mv04.png" alt="php-mv04" /></td>
</tr>
<tr>
<td>(&#8230;equivalent to&#8230;)</td>
<td><img class="alignnone size-full" title="php-v05" src="http://grahamwideman.files.wordpress.com/2009/08/php-v05.png" alt="php-v05" /></td>
<td><img class="alignnone size-full" title="php-mv05" src="http://grahamwideman.files.wordpress.com/2009/08/php-mv05.png" alt="php-mv05" /></td>
</tr>
<tr>
<td>Function</td>
<td><img class="alignnone size-full" title="php-f01" src="http://grahamwideman.files.wordpress.com/2009/08/php-f01.png" alt="php-f01" /></td>
<td><img class="alignnone size-full" title="php-mf01" src="http://grahamwideman.files.wordpress.com/2009/08/php-mf01.png" alt="php-mf01" /></td>
</tr>
<tr>
<td>Function; name from expression</td>
<td><img class="alignnone size-full" title="php-f02" src="http://grahamwideman.files.wordpress.com/2009/08/php-f02.png" alt="php-f02" /><br />
<span style="color:#ff0000;">(Not possible: illegal syntax)</span></td>
<td><img class="alignnone size-full" title="php-mf02" src="http://grahamwideman.files.wordpress.com/2009/08/php-mf02.png" alt="php-mf02" /></td>
</tr>
<tr>
<td>Function; name from variable</td>
<td><img class="alignnone size-full" title="php-f03" src="http://grahamwideman.files.wordpress.com/2009/08/php-f03.png" alt="php-f03" /></td>
<td><img class="alignnone size-full" title="php-mf03" src="http://grahamwideman.files.wordpress.com/2009/08/php-mf03.png" alt="php-mf03" /></td>
</tr>
<tr>
<td>(&#8230;equivalent to&#8230;)</td>
<td><img class="alignnone size-full" title="php-f04" src="http://grahamwideman.files.wordpress.com/2009/08/php-f04.png" alt="php-f04" /><br />
<span style="color:#ff0000;">(Not legal syntax)</span></td>
<td><img class="alignnone size-full" title="php-mf04" src="http://grahamwideman.files.wordpress.com/2009/08/php-mf04.png" alt="php-mf04" /></td>
</tr>
<tr>
<td>Function; name from variable twice</td>
<td><img class="alignnone size-full" title="php-f05" src="http://grahamwideman.files.wordpress.com/2009/08/php-f05.png" alt="php-f05" /></td>
<td><img class="alignnone size-full" title="php-mf05" src="http://grahamwideman.files.wordpress.com/2009/08/php-mf05.png" alt="php-mf05" /></td>
</tr>
<tr>
<td>(&#8230;equivalent to&#8230;)</td>
<td><img class="alignnone size-full" title="php-f06" src="http://grahamwideman.files.wordpress.com/2009/08/php-f06.png" alt="php-f06" /></td>
<td><img class="alignnone size-full" title="php-mf06" src="http://grahamwideman.files.wordpress.com/2009/08/php-mf06.png" alt="php-mf06" /></td>
</tr>
<tr>
<td>Array element  [Note 3]</td>
<td><img class="alignnone size-full wp-image-334" title="php-a01" src="http://grahamwideman.files.wordpress.com/2009/08/php-a01.png" alt="php-a01" width="134" height="56" /></td>
<td><img class="alignnone size-full" title="php-oa01" src="http://grahamwideman.files.wordpress.com/2009/08/php-oa01.png" alt="php-oa01" /></td>
</tr>
<tr>
<td>Variable; name from array element</td>
<td><img class="alignnone size-full" title="php-a02" src="http://grahamwideman.files.wordpress.com/2009/08/php-a02.png" alt="php-a02" /></td>
<td><img class="alignnone size-full" title="php-oa02" src="http://grahamwideman.files.wordpress.com/2009/08/php-oa02.png" alt="php-oa02" /></td>
</tr>
<tr>
<td>Array element; array name from variable</td>
<td><img class="alignnone size-full" title="php-a03" src="http://grahamwideman.files.wordpress.com/2009/08/php-a03.png" alt="php-a03" /></td>
<td><img class="alignnone size-full" title="php-oa03" src="http://grahamwideman.files.wordpress.com/2009/08/php-oa03.png" alt="php-oa03" /></td>
</tr>
<tr>
<td>Function; name from array element</td>
<td><img class="alignnone size-full" title="php-a04" src="http://grahamwideman.files.wordpress.com/2009/08/php-a04.png" alt="php-a04" /></td>
<td><img class="alignnone size-full" title="php-oa04" src="http://grahamwideman.files.wordpress.com/2009/08/php-oa04.png" alt="php-oa04" /><br />
Ordinary function selected by array in object</td>
</tr>
<tr>
<td></td>
<td></td>
<td><img class="alignnone size-full" title="php-oa05" src="http://grahamwideman.files.wordpress.com/2009/08/php-oa05.png" alt="php-oa05" /><br />
Method in object selected by ordinary array</td>
</tr>
<tr>
<td>Element of array returned from function.<br />
(Apparently not available.)</td>
<td><img class="alignnone size-full" title="php-a05" src="http://grahamwideman.files.wordpress.com/2009/08/php-a05.png" alt="php-a05" width="138" height="27" /><br />
<span style="color:#ff0000;">Not legal syntax</span></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
</tr>
</tbody>
</table>
<h3>Key</h3>
<table style="border-collapse:collapse;" border="1" cellpadding="4">
<tbody>
<tr>
<td>Item</td>
<td>Description</td>
</tr>
<tr>
<td>
<code><em>expr</em></code>
</td>
<td>Expression, such as  &#8216;something&#8217;, or a more elaborate calculation, such as:  &#8216;some&#8217; . &#8216;thing&#8217; , or a numeric calculation (for array indexes). (See also Note 1 regarding unquoted strings)</td>
</tr>
<tr>
<td>
<code><em>obj</em></code>
</td>
<td>Any expression returning an object.  Could be simply $someobject, or could be something more elaborate, like a function returning an object: myobjfunc( ).</td>
</tr>
<tr>
<td></td>
<td></td>
</tr>
</tbody>
</table>
<h3>Notes</h3>
<p>1. PHP semi-allows unquoted strings. That is to say, if PHP sees a bare series of characters, it attempts to look up a constant by that name. If not found, PHP will &#8220;assume&#8221; the series of characters into a string (apparently single-quote style). If error_reporting(E_ALL) then PHP issues a warning (&#8220;Notice: Use of undefined constant xxx &#8211; assumed &#8216;xxx&#8217; in [...]&#8220;).</p>
<p>2. Curly braces enclose expression to be evaluated first, with the resulting string then used as part of the identifier. (But see also braces used for subscript, next Note.)</p>
<p>3.  Array index(es):</p>
<ul>
<li>Array index may be enclosed in either square brackets [ ] or braces { }, though the former is more widely used (are braces deprecated?).</li>
<li>Multi-dimensional array access: Use multiple sets of brackets/braces: $multiarray[1][4]  etc</li>
<li>If the variable is a string rather than an array, then the square brackets or braces can be used to access a single character in the string. (Ie: the string is treated in this case as an array of characters).</li>
</ul>
<h3>Possible misunderstanding involving { } and unquoted strings</h3>
<p>The { } braces used to enclose expressions (as shown above) appears to be undocumented on php.net. Consequently there are opportunities for it to be misunderstood. This is especially the case when one experiments and sees that:<br />
<code>$a = $blah-&gt;afunc();<br />
$b = ${blah}-&gt;{afunc}();</code><br />
&#8230; results in $a and $b getting the same result. Perhaps, one might infer, the braces in this context are some sort of grouping mechanism for pieces of an identifier path.  What is missed in this scenario is that in the first statement, PHP sees the identifiers $blah and afunc, while in the second statement PHP sees blah and afunc as unquoted strings, and internally revises it like this:<br />
<code>$b = ${'blah'}-&gt;{'afunc'}();</code><br />
Now we can see that { } perform their function enclosing an expression, in this case a couple of simple strings.  (This revision process is reported as a warning note if error_reporting(E_ALL) is in effect.)</p>
<h3>Additional use of curly braces in string interpolation</h3>
<p>In double-quoted strings PHP is able to &#8220;interpolate&#8221; variables &#8212; recognize a variable and substitute its value in its place in the string. This can be invoked using one of two syntaxes, &#8220;simple&#8221; and &#8220;complex&#8221;, as described here: <a href="http://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.double">http://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.double</a>.  The simple case looks like this:<br />
<code>$a = "This is a string with $b in it";</code><br />
The complex syntax requires curly braces around the section of the string to be interpolated, like this:<br />
<code>$a = "This is a string with {$b} in it";</code><br />
This is useful if placing the variable directly in the string can&#8217;t be parsed properly, for example:<br />
<code>$a = "This is the $nth item";     // $n next to th, won't parse<br />
$a = "This is the {$n}th item";   // better</code><br />
Note that the syntax that PHP recognizes in this case is actually {$ &#8230; }. That is to say, the curly braces are only recognized as interpolation if the opening brace is immediately followed by the dollar sign prefix of a variable.</p>
<p>This gets potentially puzzling if a user sometimes sees something like this:<br />
<code>$a = "This is a string with ${b} in it";</code><br />
In that example PHP sees the curly braces as enclosing an expression (in this case a bare string, which could be a constant, but if not then PHP &#8220;corrects&#8221; it to &#8216;b&#8217; as described above in &#8220;Possible misunderstanding involving { } and unquoted strings&#8221;.</p>
<p>In short, within a double-quoted string, {$b} and ${b} employ curly braces in two quite different ways. The first encloses an expression for interpolation, the second encloses an expression which will form a variable name.  And they could be used together:<br />
<code>$a = "This is a string with {${b}} in it";</code><br />
&#8230; though there&#8217;s not much point in this example.</p>
<h2>Variable names: Not limited to simple strings</h2>
<p>The standard description is here: <a href="http://php.net/manual/en/language.variables.basics.php">http://php.net/manual/en/language.variables.basics.php</a></p>
<blockquote><p>&#8220;Variable names follow the same rules as other labels in PHP. A     valid variable name starts with a letter or underscore, followed     by any number of letters, numbers, or underscores. As a regular     expression, it would be expressed thus:&#8221;</p></blockquote>
<p><code>      [a-zA-Z_\x7f-\xff]   [a-zA-Z0-9_\x7f-\xff]*</code><br />
Ie: first letter must be in [A-Z] , [a-z], underscore or characters 0x7f-0xff , and subsequent characters can be from that same set or digits. Note no spaces or punctuation, for example.  However, this is really just a limitation on what PHP will digest in the form:  $myvarname and related.</p>
<p>If instead you write:<br />
<code>      ${'my evil %^&amp;# varname'}</code><br />
PHP will happily digest pretty much any string as a variable name (or member variable name).  (There may be a way to employ evil function names also, but I&#8217;ve not seen a way to create the evilly-named function in the first place.)</p>
<h2>Variable names: Can be reserved words</h2>
<p>Despite the warning here:  <a href="http://php.net/manual/en/reserved.php">http://php.net/manual/en/reserved.php</a></p>
<blockquote><p>&#8220;None    of the identifiers listed here should be used as identifiers in any of    your scripts. These lists include keywords and predefined variable,    constant, and class names. These lists are neither exhaustive or    complete.&#8221;</p></blockquote>
<p>&#8230; in actuality some (perhaps most or even all) these reserved words can be used as variable names (and member variable names), without PHP objecting.  This seems to be because there is no difficulty distinguishing the reserved usage from the variable name usage (due to the dollar sign etc).  However, the reserved words trigger an error when code uses them to declare or call a <em>function or method</em>.</p>
<h2>References and the reference &#8220;operator&#8221;</h2>
<p>There is much discussion on php.net about PHP &#8220;references&#8221;.  Some of this discussion is quite confusing because the syntax and behavior for references was considerably revised between PHP4 and PHP5, with the latter taking a more straightforward approach.</p>
<p>Manual pages starting here: <a href="http://php.net/manual/en/language.references.php">http://php.net/manual/en/language.references.php</a>, at least as of early 2009-08, are a muddle in this respect.</p>
<h3>In PHP, &#8220;reference&#8221; means what other languages call &#8220;alias&#8221;</h3>
<p>PHP&#8217;s reference idea is not what other languages (C++, Delphi etc) call a reference. Instead, the PHP reference is more like what others call an &#8220;alias&#8221;. It is not a variable that points to another variable, instead it&#8217;s a completely interchangeable second (or subsequent) name for the same variable, or rather for the memory slot where the variable&#8217;s value is stored. (This is described more fully as a &#8220;symbol table alias&#8221;.)</p>
<p>Thus:<br />
<code>$a = 57;<br />
$b =&amp; $a;  // create a reference (alias) to $a<br />
$b = 25;   // the memory slot referred to by $a and $b now contains 25<br />
$c = $b;   // The value of that slot is <em>copied </em>to $c</code><br />
Now both $a and $b have the value 25, because both $a and $b refer to the same memory slot.  At this juncture, $a and $b are completely equivalent, there&#8217;s nothing special about the one introduced first, or last for that matter.</p>
<p>Because this idea is really that of &#8220;alias&#8221;, there&#8217;s no syntax to &#8220;de-reference&#8221; such a variable. In addition, ordinary assignment ($c = $b;) simply copies the value as usual, because there&#8217;s nothing special about $b &#8212; it&#8217;s just a variable.</p>
<h3>Relationship between PHP objects and references</h3>
<p>Somewhat confusingly, it is sometimes said that variables holding PHP objects operate as references. To clarify, in PHP 5, they operate like references in other languages, but not like the PHP references (aka aliases) just discussed. Example:<br />
<code>class G {<br />
    var h$;<br />
    function f( ) {...}<br />
}<br />
$j = new G( );<br />
$k = $j;        // second variable refers to same object<br />
$m = clone $k;  // $m gets a copy of the object</code><br />
In actuality, a variable referring to an object contains a flag to tell that it&#8217;s an object, and its value is an object id, by which PHP can find the object in memory. In the sample code, the new function passes such an object id to $j (with no &#8220;&amp;&#8221; required). Similarly, in ($k = $j) the object id is copied, so that $k now refers to the same object, and the object itself is not duplicated.  To create an actual copy, one can use the clone function.</p>
<p>In PHP 4, matters were more convoluted; PHP 4 objects involved using the &#8220;reference&#8221; idea, and the &#8220;&amp;&#8221; operator was involved in awkward ways. In short, PHP 5 made a substantial improvement, no longer entailing the &#8220;&amp;&#8221; operator.  So one must avoid being thrown off by outdated documentation that harkens back to days of 4.</p>
<h3>Back to the main point: where do references, and &#8220;&amp;&#8221;, occur?</h3>
<p>We can concern ourselves only with how references are involved in ordinary variables (ie: not object variables).  In this realm, references, and the ampersand, appear in three different roles:</p>
<ul>
<li>Create a references (alias) of an existing variable
<ul>
<li>
<code>$a =&amp; $b;</code>
</li>
</ul>
</li>
<li>Declare that a function&#8217;s argument(s) should be passed by reference (and can thus also return a value)
<ul>
<li>
<code>function myfunc(&amp; $anarg, $otherarg) {...}</code><br />
Here $anarg is to be passed by reference, that is to say $anarg is an alias to whatever variable is passed in.</li>
</ul>
</li>
<li>Declare that a function returns a reference (alias) to a value.</li>
<li>
<ul>
<li>
<code>function &amp; myfunc() {...}<br />
$x =&amp; myfunc();</code><br />
Here myfunc() is declared to return a value by reference. If the invocation receives the return value using the reference &#8220;operator&#8221;, then the receiving variable becomes an alias to the value from the function.  (Here $x becomes an alias to the value created within myfunc()).</li>
</ul>
</li>
</ul>
<h3>Is &#8220;&amp;&#8221; an operator?</h3>
<p>Though &#8220;&amp;&#8221; is often referred to as the reference operator, I claim that it is not really an operator.  Where it is used in function declaration, it is simply an additional flag on the function or argument specification, so not an operator there. But is it an operator in the &#8220;=&amp;&#8221; cases?</p>
<p>On the one hand, it is possible to write:<br />
<code>$a =   &amp; $b;</code><br />
The separation of the &amp; with whitespace perhaps gives the impression of it being a separate element. However, if  this:<br />
<code>$a = (&amp; $b);</code><br />
&#8230; results in an error message.  That is to say, there does not appear to be a separately available &#8220;result&#8221; from the application of the &#8220;&amp;&#8221; by itself.  So in my view, the combination &#8220;=&amp;&#8221; is best thought of as a single &#8220;assign alias&#8221; operator, regardless of any whitespace between the two characters.</p>
<h2>Can some statement keywords (like print) use function syntax?</h2>
<p>It may be noted that a that the print statement returns a value and behaves something like a function:<br />
<code>print 'something';        // normal usage<br />
print('something');       // usage that looks like a function<br />
$x = print('something');  // Returns a value ($x = 1, not sure what it means).<br />
$x = print 'something' ;  // Perhaps unexpectedly, does the same thing without "function syntax"</code><br />
Here&#8217;s the doc on php.net: <a href="http://us.php.net/manual/en/function.print.php">http://us.php.net/manual/en/function.print.php</a></p>
<p>However, the line of thinking displayed above and implied by the docs is very misleading. So far as I can tell, there is no version of the print statement that incorporates the brackets in the function syntax.  Instead, if brackets are used they merely act as enclosing brackets around the expression provided as an argument to print &#8212; an entirely different meaning, and misleading to boot.</p>
<p>Here&#8217;s a case where this makes a big difference:<br />
<code>$x = print('something') + 37;</code><br />
If print( ) was a function, then this should print the string &#8216;something&#8217;, and give $x the value 1+37 =38.   Instead, the &#8220;+ 37&#8243; causes PHP to interpret (&#8216;something&#8217;) as a number, having value zero.  So the expression provided to print is 0 + 37, causing print to print the number 37. The result value from print is 1 as usual, assigned to $x.</p>
<p>The example&#8217;s likely intended effect could be achieved with this syntax:<br />
<code>$x = (print 'something') + 37;</code><br />
Now print will print &#8216;something&#8217;, and the result, 1 gets added to 37, giving 38 to $x.</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p>Id for monitoring cherch is GW20090805PHP</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/grahamwideman.wordpress.com/304/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/grahamwideman.wordpress.com/304/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/grahamwideman.wordpress.com/304/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/grahamwideman.wordpress.com/304/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/grahamwideman.wordpress.com/304/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/grahamwideman.wordpress.com/304/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/grahamwideman.wordpress.com/304/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/grahamwideman.wordpress.com/304/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/grahamwideman.wordpress.com/304/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/grahamwideman.wordpress.com/304/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/grahamwideman.wordpress.com/304/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/grahamwideman.wordpress.com/304/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/grahamwideman.wordpress.com/304/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/grahamwideman.wordpress.com/304/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=grahamwideman.wordpress.com&amp;blog=6167096&amp;post=304&amp;subd=grahamwideman&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://grahamwideman.wordpress.com/2009/08/05/php-grammar-notes/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f8ad5660952c0c68d30a686d78ec31a2?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=R" medium="image">
			<media:title type="html">gwideman</media:title>
		</media:content>

		<media:content url="http://grahamwideman.files.wordpress.com/2009/08/php-wtf.png" medium="image">
			<media:title type="html">php-wtf</media:title>
		</media:content>

		<media:content url="http://grahamwideman.files.wordpress.com/2009/08/php-v01.png" medium="image">
			<media:title type="html">php-v01</media:title>
		</media:content>

		<media:content url="http://grahamwideman.files.wordpress.com/2009/08/php-v02.png" medium="image">
			<media:title type="html">php-v02</media:title>
		</media:content>

		<media:content url="http://grahamwideman.files.wordpress.com/2009/08/php-mv02.png" medium="image">
			<media:title type="html">php-mv02</media:title>
		</media:content>

		<media:content url="http://grahamwideman.files.wordpress.com/2009/08/php-v03.png" medium="image">
			<media:title type="html">php-v03</media:title>
		</media:content>

		<media:content url="http://grahamwideman.files.wordpress.com/2009/08/php-mv03.png" medium="image">
			<media:title type="html">php-mv03</media:title>
		</media:content>

		<media:content url="http://grahamwideman.files.wordpress.com/2009/08/php-v04.png" medium="image">
			<media:title type="html">php-v04</media:title>
		</media:content>

		<media:content url="http://grahamwideman.files.wordpress.com/2009/08/php-mv04.png" medium="image">
			<media:title type="html">php-mv04</media:title>
		</media:content>

		<media:content url="http://grahamwideman.files.wordpress.com/2009/08/php-v05.png" medium="image">
			<media:title type="html">php-v05</media:title>
		</media:content>

		<media:content url="http://grahamwideman.files.wordpress.com/2009/08/php-mv05.png" medium="image">
			<media:title type="html">php-mv05</media:title>
		</media:content>

		<media:content url="http://grahamwideman.files.wordpress.com/2009/08/php-f01.png" medium="image">
			<media:title type="html">php-f01</media:title>
		</media:content>

		<media:content url="http://grahamwideman.files.wordpress.com/2009/08/php-mf01.png" medium="image">
			<media:title type="html">php-mf01</media:title>
		</media:content>

		<media:content url="http://grahamwideman.files.wordpress.com/2009/08/php-f02.png" medium="image">
			<media:title type="html">php-f02</media:title>
		</media:content>

		<media:content url="http://grahamwideman.files.wordpress.com/2009/08/php-mf02.png" medium="image">
			<media:title type="html">php-mf02</media:title>
		</media:content>

		<media:content url="http://grahamwideman.files.wordpress.com/2009/08/php-f03.png" medium="image">
			<media:title type="html">php-f03</media:title>
		</media:content>

		<media:content url="http://grahamwideman.files.wordpress.com/2009/08/php-mf03.png" medium="image">
			<media:title type="html">php-mf03</media:title>
		</media:content>

		<media:content url="http://grahamwideman.files.wordpress.com/2009/08/php-f04.png" medium="image">
			<media:title type="html">php-f04</media:title>
		</media:content>

		<media:content url="http://grahamwideman.files.wordpress.com/2009/08/php-mf04.png" medium="image">
			<media:title type="html">php-mf04</media:title>
		</media:content>

		<media:content url="http://grahamwideman.files.wordpress.com/2009/08/php-f05.png" medium="image">
			<media:title type="html">php-f05</media:title>
		</media:content>

		<media:content url="http://grahamwideman.files.wordpress.com/2009/08/php-mf05.png" medium="image">
			<media:title type="html">php-mf05</media:title>
		</media:content>

		<media:content url="http://grahamwideman.files.wordpress.com/2009/08/php-f06.png" medium="image">
			<media:title type="html">php-f06</media:title>
		</media:content>

		<media:content url="http://grahamwideman.files.wordpress.com/2009/08/php-mf06.png" medium="image">
			<media:title type="html">php-mf06</media:title>
		</media:content>

		<media:content url="http://grahamwideman.files.wordpress.com/2009/08/php-a01.png" medium="image">
			<media:title type="html">php-a01</media:title>
		</media:content>

		<media:content url="http://grahamwideman.files.wordpress.com/2009/08/php-oa01.png" medium="image">
			<media:title type="html">php-oa01</media:title>
		</media:content>

		<media:content url="http://grahamwideman.files.wordpress.com/2009/08/php-a02.png" medium="image">
			<media:title type="html">php-a02</media:title>
		</media:content>

		<media:content url="http://grahamwideman.files.wordpress.com/2009/08/php-oa02.png" medium="image">
			<media:title type="html">php-oa02</media:title>
		</media:content>

		<media:content url="http://grahamwideman.files.wordpress.com/2009/08/php-a03.png" medium="image">
			<media:title type="html">php-a03</media:title>
		</media:content>

		<media:content url="http://grahamwideman.files.wordpress.com/2009/08/php-oa03.png" medium="image">
			<media:title type="html">php-oa03</media:title>
		</media:content>

		<media:content url="http://grahamwideman.files.wordpress.com/2009/08/php-a04.png" medium="image">
			<media:title type="html">php-a04</media:title>
		</media:content>

		<media:content url="http://grahamwideman.files.wordpress.com/2009/08/php-oa04.png" medium="image">
			<media:title type="html">php-oa04</media:title>
		</media:content>

		<media:content url="http://grahamwideman.files.wordpress.com/2009/08/php-oa05.png" medium="image">
			<media:title type="html">php-oa05</media:title>
		</media:content>

		<media:content url="http://grahamwideman.files.wordpress.com/2009/08/php-a05.png" medium="image">
			<media:title type="html">php-a05</media:title>
		</media:content>
	</item>
		<item>
		<title>Marks and Meaning notes</title>
		<link>http://grahamwideman.wordpress.com/2009/04/27/marks-and-meaning-notes/</link>
		<comments>http://grahamwideman.wordpress.com/2009/04/27/marks-and-meaning-notes/#comments</comments>
		<pubDate>Tue, 28 Apr 2009 03:14:17 +0000</pubDate>
		<dc:creator>Graham</dc:creator>
				<category><![CDATA[Knowledge mgt [gw]]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://grahamwideman.wordpress.com/?p=296</guid>
		<description><![CDATA[Notes relating to Dave Gray&#8217;s Marks and Meaning &#8220;unbook&#8221; project.  Visual thinking, knowledge management, structure-of-the-universe, how to draw, neuroscience, cognitive science, all in one place! Relevant to the motivation for visualization &#8230; in thinking or communication. The primacy of Objects &#8211; Attributes &#8211; Relationships, and from there Types etc. Semantic networks Entity-Relationship analysis Alfred Korzybski: [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=grahamwideman.wordpress.com&amp;blog=6167096&amp;post=296&amp;subd=grahamwideman&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-301" title="marks_and_meaning" src="http://grahamwideman.files.wordpress.com/2009/04/marks_and_meaning.jpg" alt="marks_and_meaning" width="53" height="80" />Notes relating to Dave Gray&#8217;s <em>Marks and Meaning</em> &#8220;unbook&#8221; project.  Visual thinking, knowledge management, structure-of-the-universe, how to draw, neuroscience, cognitive science, all in one place!</p>
<p><span id="more-296"></span></p>
<h2>Relevant to the motivation for visualization</h2>
<p>&#8230; in thinking or communication.</p>
<h3>The primacy of Objects &#8211; Attributes &#8211; Relationships, and from there Types etc.</h3>
<ul>
<li>Semantic networks</li>
<li>Entity-Relationship analysis</li>
<li><span class="addmd">Alfred Korzybski: Science and Sanity. Not entirely sure this is on topic for the current purpose, but there it is:</span>
<ul>
<li><a href="http://books.google.com/books?id=KN5gvaDwrGcC&amp;dq=Science+and+sanity+:+an+introduction+to+non-Aristotelian+systems+and+general+semantics&amp;printsec=frontcover&amp;source=bl&amp;ots=r--_DB9ta6&amp;sig=uaxe_12W6s8AR_Ur1bHeNiKPiFo&amp;hl=en&amp;ei=8Gb2SfJ2lr4zwLusrg8&amp;sa=X&amp;oi=book_result&amp;ct=result&amp;resnum=5#PPA6,M1">At google books</a></li>
<li>OCR&#8217;ed: <a href="http://www.rodsmith.org.uk/alfred-korzybski/">http://www.rodsmith.org.uk/alfred-korzybski/</a></li>
<li>PDFs: <a href="http://esgs.free.fr/uk/art/sands.htm">http://esgs.free.fr/uk/art/sands.htm</a></li>
<li>Questia: <a href="http://www.questia.com/PM.qst?a=o&amp;d=55309160">http://www.questia.com/PM.qst?a=o&amp;d=55309160</a></li>
</ul>
</li>
</ul>
<h3>Attempts to motivate from neuroscience</h3>
<p>&#8230; which I think it a weak approach, since not enough is known about how knowledge is represented in the brain at a neuroscience level to extrapolate much about how to use the brain better. Most literature in this area seems oriented to speculating on how the brain might be employing neurons based on observed coarse-level behavior. Extrapolating from these speculations thus results in a circular argument.</p>
<ul>
<li>Edward de Bono: The Mechanism of Mind 1969.</li>
</ul>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/grahamwideman.wordpress.com/296/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/grahamwideman.wordpress.com/296/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/grahamwideman.wordpress.com/296/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/grahamwideman.wordpress.com/296/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/grahamwideman.wordpress.com/296/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/grahamwideman.wordpress.com/296/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/grahamwideman.wordpress.com/296/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/grahamwideman.wordpress.com/296/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/grahamwideman.wordpress.com/296/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/grahamwideman.wordpress.com/296/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/grahamwideman.wordpress.com/296/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/grahamwideman.wordpress.com/296/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/grahamwideman.wordpress.com/296/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/grahamwideman.wordpress.com/296/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=grahamwideman.wordpress.com&amp;blog=6167096&amp;post=296&amp;subd=grahamwideman&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://grahamwideman.wordpress.com/2009/04/27/marks-and-meaning-notes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f8ad5660952c0c68d30a686d78ec31a2?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=R" medium="image">
			<media:title type="html">gwideman</media:title>
		</media:content>

		<media:content url="http://grahamwideman.files.wordpress.com/2009/04/marks_and_meaning.jpg" medium="image">
			<media:title type="html">marks_and_meaning</media:title>
		</media:content>
	</item>
		<item>
		<title>Neuroscience ontologies &#8212; notes and links</title>
		<link>http://grahamwideman.wordpress.com/2009/04/27/neuroscience-ontologies-notes-and-links/</link>
		<comments>http://grahamwideman.wordpress.com/2009/04/27/neuroscience-ontologies-notes-and-links/#comments</comments>
		<pubDate>Tue, 28 Apr 2009 02:59:17 +0000</pubDate>
		<dc:creator>Graham</dc:creator>
				<category><![CDATA[Knowledge mgt [gw]]]></category>
		<category><![CDATA[Neuroscience [gw]]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://grahamwideman.wordpress.com/?p=294</guid>
		<description><![CDATA[A place to stash notes and links relating to efforts to muster an ontology for neurosciences or parts thereof. Ontologies per se BIRN Project Ontology effort: http://www.nbirn.net/research/ontology/index.shtm Larry Swanson Larry Swanson home page at USC Frontiers in Neuroinformatics profile:  larry w. swanson Brain Architecture Management System (BAMS) A paper: BAMS neuroanatomical ontology: design and implementation [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=grahamwideman.wordpress.com&amp;blog=6167096&amp;post=294&amp;subd=grahamwideman&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>A place to stash notes and links relating to efforts to muster an ontology for neurosciences or parts thereof.</p>
<p><span id="more-294"></span></p>
<h2>Ontologies per se</h2>
<ul>
<li><strong>BIRN Project </strong>
<ul>
<li>Ontology effort: <a href="http://www.nbirn.net/research/ontology/index.shtm">http://www.nbirn.net/research/ontology/index.shtm</a></li>
</ul>
</li>
<li><strong>Larry Swanson</strong>
<ul>
<li><a href="http://www-bcf.usc.edu/~lswanson/">Larry Swanson home page at USC<br />
</a></li>
<li> Frontiers in Neuroinformatics profile:  <a href="http://frontiersin.org/neuroinformatics/profiles/larryw.%20swanson/">larry w. swanson</a></li>
</ul>
<ul>
<li>Brain Architecture Management System (BAMS)
<ul>
<li>A paper: <a href="//frontiersin.org/neuroinformatics/paper/10.3389/neuro.11/002.2008/">BAMS neuroanatomical ontology: design and implementation</a></li>
</ul>
<ul>
<li>BAMS home: <a href="http://brancusi.usc.edu/bkms/">http://brancusi.usc.edu/bkms/</a></li>
</ul>
</li>
<li></li>
</ul>
</li>
</ul>
<h2>Brain Atlases</h2>
<p>Some key atlases</p>
<p>Mai, Paxinos, Voss: Atlas of the Human Brain (Spiral bound) ISBN: 012373603X</p>
<p>Woolsey, Roberts, Gado, Hanaway: The Brain Atlas: Avisual Guide to the Human Central Nervous System (spiral bound) ISBN: 0471430587</p>
<p>Brodmann&#8217;s Localisation in the Cerebral Cortex.  ISBN: 0387269177</p>
<p>Schmahmann: Fiber Pathways of the Brain. ISBN 0195388267 (Note: for rhesus monkey)</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/grahamwideman.wordpress.com/294/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/grahamwideman.wordpress.com/294/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/grahamwideman.wordpress.com/294/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/grahamwideman.wordpress.com/294/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/grahamwideman.wordpress.com/294/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/grahamwideman.wordpress.com/294/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/grahamwideman.wordpress.com/294/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/grahamwideman.wordpress.com/294/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/grahamwideman.wordpress.com/294/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/grahamwideman.wordpress.com/294/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/grahamwideman.wordpress.com/294/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/grahamwideman.wordpress.com/294/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/grahamwideman.wordpress.com/294/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/grahamwideman.wordpress.com/294/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=grahamwideman.wordpress.com&amp;blog=6167096&amp;post=294&amp;subd=grahamwideman&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://grahamwideman.wordpress.com/2009/04/27/neuroscience-ontologies-notes-and-links/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f8ad5660952c0c68d30a686d78ec31a2?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=R" medium="image">
			<media:title type="html">gwideman</media:title>
		</media:content>
	</item>
		<item>
		<title>Infographics linkage</title>
		<link>http://grahamwideman.wordpress.com/2009/04/11/infographics-linkage/</link>
		<comments>http://grahamwideman.wordpress.com/2009/04/11/infographics-linkage/#comments</comments>
		<pubDate>Sat, 11 Apr 2009 21:19:50 +0000</pubDate>
		<dc:creator>Graham</dc:creator>
				<category><![CDATA[Knowledge mgt [gw]]]></category>

		<guid isPermaLink="false">http://grahamwideman.wordpress.com/?p=284</guid>
		<description><![CDATA[A place to remember links to infographics-related sources. Links Marks and Meaning, Dave Gray and related: http://www.marksandmeaning.com/ blog http://groups.google.com/group/marks-and-meaning/web/tracking-dave-gray-and-m-m Dave Gray venues Don Moyer http://www.thoughtformdesign.com/web/site/ thoughtform http://www.flickr.com/photos/36106576@N05/sets/72157615206414468/ Don Moyer&#8217;s HBR info graphics http://simplecomplexity.net/ An information visualization blog http://innovatechinc.com http://www.wallstats.com/ Wall stats (Jess Bachman) http://www.wallstats.com/deathandtaxes/ US budget poster and others http://www.wallstats.com/blog/interview-with-a-pentagon-graphicsbudget-expert/ DoD Engine Room<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=grahamwideman.wordpress.com&amp;blog=6167096&amp;post=284&amp;subd=grahamwideman&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-283" title="vw_aero" src="http://grahamwideman.files.wordpress.com/2009/04/vw_aero.gif" alt="vw_aero" width="108" height="55" />A place to remember links to infographics-related sources.</p>
<p><span id="more-284"></span></p>
<h2>Links</h2>
<ul>
<li>Marks and Meaning, Dave Gray and related:
<ul>
<li><a href="http://www.marksandmeaning.com/">http://www.marksandmeaning.com/</a> blog</li>
<li><a href="http://groups.google.com/group/marks-and-meaning/web/tracking-dave-gray-and-m-m">http://groups.google.com/group/marks-and-meaning/web/tracking-dave-gray-and-m-m</a> Dave Gray venues</li>
<li>Don Moyer
<ul>
<li><a href="http://www.thoughtformdesign.com/web/site/">http://www.thoughtformdesign.com/web/site/</a> thoughtform</li>
<li><a href="http://www.flickr.com/photos/36106576@N05/sets/72157615206414468/">http://www.flickr.com/photos/36106576@N05/sets/72157615206414468/</a> Don Moyer&#8217;s HBR info graphics</li>
</ul>
</li>
</ul>
</li>
<li><a href="http://simplecomplexity.net/">http://simplecomplexity.net/</a> An information visualization blog
<ul>
<li><a href="http://innovatechinc.com/contact">http://innovatechinc.com</a></li>
</ul>
</li>
<li><a href="http://www.wallstats.com/">http://www.wallstats.com/</a> Wall stats (Jess Bachman)
<ul>
<li><a href="http://www.wallstats.com/deathandtaxes/">http://www.wallstats.com/deathandtaxes/</a> US budget poster and others</li>
<li><a href="http://www.wallstats.com/blog/interview-with-a-pentagon-graphicsbudget-expert/">http://www.wallstats.com/blog/interview-with-a-pentagon-graphicsbudget-expert/</a> DoD Engine Room</li>
</ul>
</li>
</ul>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/grahamwideman.wordpress.com/284/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/grahamwideman.wordpress.com/284/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/grahamwideman.wordpress.com/284/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/grahamwideman.wordpress.com/284/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/grahamwideman.wordpress.com/284/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/grahamwideman.wordpress.com/284/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/grahamwideman.wordpress.com/284/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/grahamwideman.wordpress.com/284/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/grahamwideman.wordpress.com/284/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/grahamwideman.wordpress.com/284/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/grahamwideman.wordpress.com/284/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/grahamwideman.wordpress.com/284/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/grahamwideman.wordpress.com/284/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/grahamwideman.wordpress.com/284/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=grahamwideman.wordpress.com&amp;blog=6167096&amp;post=284&amp;subd=grahamwideman&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://grahamwideman.wordpress.com/2009/04/11/infographics-linkage/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f8ad5660952c0c68d30a686d78ec31a2?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=R" medium="image">
			<media:title type="html">gwideman</media:title>
		</media:content>

		<media:content url="http://grahamwideman.files.wordpress.com/2009/04/vw_aero.gif" medium="image">
			<media:title type="html">vw_aero</media:title>
		</media:content>
	</item>
		<item>
		<title>Useful MRI Explanations</title>
		<link>http://grahamwideman.wordpress.com/2009/03/10/useful-mri-explanations/</link>
		<comments>http://grahamwideman.wordpress.com/2009/03/10/useful-mri-explanations/#comments</comments>
		<pubDate>Wed, 11 Mar 2009 03:01:57 +0000</pubDate>
		<dc:creator>Graham</dc:creator>
				<category><![CDATA[Neuroscience [gw]]]></category>

		<guid isPermaLink="false">http://grahamwideman.wordpress.com/?p=277</guid>
		<description><![CDATA[A place to accumulate notes and links to explanations of Magnetic Resonance Imaging and related topics. MRI Marty Sereno&#8217;s Neuroimaging course (with links to PDF notes):  http://www.cogsci.ucsd.edu/~sereno/276/ Joseph Hornack&#8217;s online book &#8220;The Basics of MRI&#8221;. Very step-by-step explanations, with many illustrations and animations: http://www.cis.rit.edu/htbooks/mri/inside.htm FFT (Fast Fourier Transform) Brainflux (Jason Gallicchio) 2D FFT Java Applet: [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=grahamwideman.wordpress.com&amp;blog=6167096&amp;post=277&amp;subd=grahamwideman&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>A place to accumulate notes and links to explanations of Magnetic Resonance Imaging and related topics. <span id="more-277"></span></p>
<h2>MRI</h2>
<ul>
<li>Marty Sereno&#8217;s Neuroimaging course (with links to PDF notes):  <a href="http://www.cogsci.ucsd.edu/~sereno/276/">http://www.cogsci.ucsd.edu/~sereno/276/</a></li>
<li>Joseph Hornack&#8217;s online book &#8220;The Basics of MRI&#8221;. Very step-by-step explanations, with many illustrations and animations: <a href="http://www.cis.rit.edu/htbooks/mri/inside.htm">http://www.cis.rit.edu/htbooks/mri/inside.htm</a></li>
</ul>
<h2>FFT (Fast Fourier Transform)</h2>
<ul>
<li>Brainflux (Jason Gallicchio) 2D FFT Java Applet: <a href="http://www.brainflux.org/java/classes/FFT2DApplet.html">http://www.brainflux.org/java/classes/FFT2DApplet.html</a></li>
<li>1-D FFT Demo (using audio examples): <a href="http://www.ling.upenn.edu/%7Etklee/Projects/dsp/FFTDemo.html">http://www.ling.upenn.edu/~tklee/Projects/dsp/FFTDemo.html</a></li>
<li>INTRODUCTION TO FOURIER TRANSFORMS FOR IMAGE PROCESSING: <a href="http://www.cs.unm.edu/%7Ebrayer/vision/fourier.html">http://www.cs.unm.edu/~brayer/vision/fourier.html<br />
</a></li>
<li><a href="http://www.developer.com/java/other/article.php/3457251">http://www.developer.com/java/other/article.php/3457251</a></li>
</ul>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/grahamwideman.wordpress.com/277/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/grahamwideman.wordpress.com/277/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/grahamwideman.wordpress.com/277/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/grahamwideman.wordpress.com/277/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/grahamwideman.wordpress.com/277/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/grahamwideman.wordpress.com/277/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/grahamwideman.wordpress.com/277/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/grahamwideman.wordpress.com/277/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/grahamwideman.wordpress.com/277/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/grahamwideman.wordpress.com/277/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/grahamwideman.wordpress.com/277/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/grahamwideman.wordpress.com/277/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/grahamwideman.wordpress.com/277/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/grahamwideman.wordpress.com/277/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=grahamwideman.wordpress.com&amp;blog=6167096&amp;post=277&amp;subd=grahamwideman&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://grahamwideman.wordpress.com/2009/03/10/useful-mri-explanations/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f8ad5660952c0c68d30a686d78ec31a2?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=R" medium="image">
			<media:title type="html">gwideman</media:title>
		</media:content>
	</item>
	</channel>
</rss>
