<?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/"
	>

<channel>
	<title>Olle Jonsson&#039;s blog &#187; Io</title>
	<atom:link href="http://ollehost.dk/blog/category/technology/io/feed/" rel="self" type="application/rss+xml" />
	<link>http://ollehost.dk/blog</link>
	<description>A human weblog about Web technology and other ephemera</description>
	<lastBuildDate>Mon, 06 Feb 2012 09:22:12 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>WideFinder in Io: it&#8217;s now too late</title>
		<link>http://ollehost.dk/blog/2007/11/19/widefinder-in-io-its-now-too-late/</link>
		<comments>http://ollehost.dk/blog/2007/11/19/widefinder-in-io-its-now-too-late/#comments</comments>
		<pubDate>Mon, 19 Nov 2007 09:38:50 +0000</pubDate>
		<dc:creator>olleolleolle</dc:creator>
				<category><![CDATA[Io]]></category>
		<category><![CDATA[iolanguage]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[widefinder]]></category>

		<guid isPermaLink="false">http://ollehost.dk/blog/?p=366</guid>
		<description><![CDATA[A Swede made the first WideFinder implementation in Io: Ragnar Dahlén. The results were informative, but not performant. Io can not compete just there, just yet. Me and Thorbiörn were conspiring last week to implement WideFinder, but we got waylaid &#8230; <a href="http://ollehost.dk/blog/2007/11/19/widefinder-in-io-its-now-too-late/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>A Swede made the first <a href="http://www.tbray.org/ongoing/When/200x/2007/09/20/Wide-Finder">WideFinder</a> implementation in Io: <a href="http://tech.groups.yahoo.com/group/iolanguage/message/10135" title="Ragnar posted to the mailing list">Ragnar Dahlén</a>.</p>
<p>The results were informative, but not performant. Io can not compete just there, just yet.</p>
<p>Me and <a href="http://blogs.sun.com/trurl/" title="Thorbiörn Fritzon's weblog">Thorbiörn</a> were conspiring last week to implement WideFinder, but we got waylaid by&#8230; distractions. The distractions were speculative, lazy, and touched on different OCamls. Like this: &#8220;We need an OCaml-shaped project. To help us learn.&#8221;</p>
<p>The usual get-started project is &#8220;Make an HTTP server than can 200 and 404. At least.&#8221; Hardly qualifies as OCaml-shaped&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://ollehost.dk/blog/2007/11/19/widefinder-in-io-its-now-too-late/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Look, Ma! (linked Io glimpse)</title>
		<link>http://ollehost.dk/blog/2007/04/26/look-ma-linked-io-glimpse/</link>
		<comments>http://ollehost.dk/blog/2007/04/26/look-ma-linked-io-glimpse/#comments</comments>
		<pubDate>Thu, 26 Apr 2007 04:56:21 +0000</pubDate>
		<dc:creator>olleolleolle</dc:creator>
				<category><![CDATA[Io]]></category>
		<category><![CDATA[iolanguage]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://ollehost.dk/blog/?p=340</guid>
		<description><![CDATA[The Io blog points to a ramshackle example Io thing authored by me and quag. If you&#8217;ve heard about Io, and wonder what it looks like, this is a&#8230; very small example. (I didn&#8217;t know they&#8217;d gone and published it, &#8230; <a href="http://ollehost.dk/blog/2007/04/26/look-ma-linked-io-glimpse/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://www.iolanguage.com/blog/blog.cgi?do=item&#038;id=99">Io blog</a> points to a ramshackle example Io thing authored by me and <a href="http://quag.geek.nz">quag</a>.</p>
<p>If you&#8217;ve heard about Io, and wonder what it looks like, this is a&#8230; very small example.</p>
<p>(I didn&#8217;t know they&#8217;d gone and published it, and it turned up in my newsreader. Now I have to improve it. Gosh, the pressure.)</p>
<p>[tags]iolanguage,io,programming[/tags]</p>
]]></content:encoded>
			<wfw:commentRss>http://ollehost.dk/blog/2007/04/26/look-ma-linked-io-glimpse/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Io on OS X: Get a fixed libsgml</title>
		<link>http://ollehost.dk/blog/2006/10/10/io-on-os-x-get-a-fixed-libsgml/</link>
		<comments>http://ollehost.dk/blog/2006/10/10/io-on-os-x-get-a-fixed-libsgml/#comments</comments>
		<pubDate>Mon, 09 Oct 2006 23:16:35 +0000</pubDate>
		<dc:creator>Olle Jonsson</dc:creator>
				<category><![CDATA[Io]]></category>

		<guid isPermaLink="false">http://olle.ter.dk/blog/?p=310</guid>
		<description><![CDATA[libsgml.zip is the libsgml library with a slightly modified build sequence, to accomodate the Mac OS X need for .dylib instead of .so files. I learnt a bit on making Makefile.in and configure.in do my bidding, but don&#8217;t do this &#8230; <a href="http://ollehost.dk/blog/2006/10/10/io-on-os-x-get-a-fixed-libsgml/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://olle.ter.dk/libsgml.zip">libsgml.zip</a> is the libsgml library with a slightly modified build sequence, to accomodate the Mac OS X need for .dylib instead of .so files.</p>
<p>I learnt a bit on making <code>Makefile.in</code> and <code>configure.in</code> do my bidding, but don&#8217;t do this with your spare time. Try and download this file instead.</p>
<ul>
<li>get the fixed libsgml, unpack it</li>
<li><code>make clean &#038;&#038; ./configure &#038;&#038; make</code></li>
<li><code>sudo make install</code></li>
<li>recompile your Io!</li>
<li>start <code>io</code>, and test:</li>
</ul>
<pre>
  SGML; "&lt;foo&gt;bar&lt;/foo&gt;" asXML
</pre>
<p><strong>Update:</strong> I just took a look at this again, now on a newer Intel Mac. Here, there was trouble. There is a newer, better source code chunk at: <a href="http://www.hick.org/code/skape/libsgml/" title="libsgml source code">http://www.hick.org/code/skape/libsgml/</a>. Patch that instead. If and when I have something, I&#8217;ll post it here. It seems to be the LIBBIN line that irks.</p>
<pre>
  LIBBIN="\\${CXX} \\${DEBUG} -Wall -dynamiclib -install_name /usr/local/lib/libsgml.dylib -fPIC -o ../libsgml.dylib \\${OBJS}"
</pre>
<p>That was my blind try. And, it compiles a &#8220;dylib&#8221; alright. The install step is broken, though. I can not figure out how to get the <code>Makefile.in</code> to recreate the <code>Makefile</code>. That should happen on leaving the <code>.configure.in</code>, I think. Gotta learn more about this.</p>
<p><b>Update again:</b> <a href="http://sourceware.org/autobook/" title="Free online book">GNU Autoconf, Automake and Libtool</a> helps understanding what those files are about. Now I have a little working knowledge, but my head&#8217;s spinning with all the things you <em>could</em> do with your Makefiles&#8230;</p>
<p>[tags]Io[/tags]</p>
]]></content:encoded>
			<wfw:commentRss>http://ollehost.dk/blog/2006/10/10/io-on-os-x-get-a-fixed-libsgml/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Method Resolution Order in Io</title>
		<link>http://ollehost.dk/blog/2006/10/10/method-resolution-order-in-io/</link>
		<comments>http://ollehost.dk/blog/2006/10/10/method-resolution-order-in-io/#comments</comments>
		<pubDate>Mon, 09 Oct 2006 23:11:03 +0000</pubDate>
		<dc:creator>Olle Jonsson</dc:creator>
				<category><![CDATA[Io]]></category>

		<guid isPermaLink="false">http://olle.ter.dk/blog/?p=309</guid>
		<description><![CDATA[Prunedtree asked the Io channel at Freenode: &#8220;How does Io avoid diamonds and cycling when finding methods in protos? Is there code to resolve loops?&#8221; Here is the answer. *Jer*: If anything, io&#8217;s protos is more of a graph an &#8230; <a href="http://ollehost.dk/blog/2006/10/10/method-resolution-order-in-io/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Prunedtree asked the Io channel at Freenode: &#8220;How does Io avoid diamonds and cycling when finding methods in <code>protos</code>? Is there code to resolve loops?&#8221; Here is the answer.<br />
<span id="more-309"></span></p>
<p>*Jer*: If anything, io&#8217;s protos is more of a graph an unordered, unrestrained graph of some sort which can have edges connecting wherever.</p>
<p>*prunedtree*: jer : what about if A has proto B and B has C and C has B ? :p</p>
<p>*jer*: prunedtree, what about it?<br />
It won&#8217;t look up in a proto twice in the same lookup sequence. That is, the diamond problem doesn&#8217;t happen in Io.<br />
If a lookup fails in A, it&#8217;ll go to B, if it fails in B, it&#8217;ll go to C, if it fails in C, it&#8217;ll raise an exception<br />
assuming that those are the only protos in play.</p>
<p>*prunedtree*: How does it avoid diamonds? Flags?</p>
<p>*jer*: I forget the proper term for it, but we make sure we don&#8217;t look up in the same object twice within the same lookup sequence. where &#8220;lookup sequence&#8221; is defined as having a lookup fail someplace before, and not resolved yet.</p>
<p>*prunedtree*: So it is setting a flag.</p>
<p>*jer*: Right, which is packed into the IoObject structure. Sets a bit field on it.</p>
<p>*prunedtree*: Yep. Colors the graph to avoid cycles.</p>
<p>*jer*: nod</p>
<p>*prunedtree*: That&#8217;s reassuring ;)</p>
<p>[tags]Io[/tags]</p>
]]></content:encoded>
			<wfw:commentRss>http://ollehost.dk/blog/2006/10/10/method-resolution-order-in-io/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Io gets Ruby-style string interpolation</title>
		<link>http://ollehost.dk/blog/2006/09/21/io-gets-ruby-style-string-interpolation/</link>
		<comments>http://ollehost.dk/blog/2006/09/21/io-gets-ruby-style-string-interpolation/#comments</comments>
		<pubDate>Thu, 21 Sep 2006 14:01:20 +0000</pubDate>
		<dc:creator>olleolleolle</dc:creator>
				<category><![CDATA[Io]]></category>

		<guid isPermaLink="false">http://olle.ter.dk/blog/?p=305</guid>
		<description><![CDATA[This is nice for people who come to Io from Ruby: Io, the language, now has&#8230; a C implementation of interpolate (by trevor with help from jer) Just to give people a heads-up on this point. There is a slight &#8230; <a href="http://ollehost.dk/blog/2006/09/21/io-gets-ruby-style-string-interpolation/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><img src="http://olle.ter.dk/img/logos/io.jpg" alt="Io" style="float:left; padding:0 20px 20px 0;" /></p>
<p>This is nice for people who come to Io from Ruby: <a href="http://www.iolanguage.com/about/">Io, the language</a>, now has&#8230;</p>
<blockquote><p>a C implementation of interpolate (by trevor with help from jer)</p>
<p>Just to give people a heads-up on this point. There is a slight<br />
change in behaviour. Instead of using <code>#io{...}</code> to interpolate your<br />
code, you now use <code>#{...}</code>. As well, instead of the string being<br />
returned being mutable, it is now immutable.</p></blockquote>
<p>Which is in the new <a href="http://www.iolanguage.com/downloads/">tarball release</a>.</p>
<p><b>Update:</b> Whoops! You need to send an <code>interpolate</code> message to get the interpolation. Not like in Ruby, where it&#8217;s automatic. Thanks Jeremy Tregunna, for correcting! And for stopping by.</p>
]]></content:encoded>
			<wfw:commentRss>http://ollehost.dk/blog/2006/09/21/io-gets-ruby-style-string-interpolation/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Io: setting the interactive prompt</title>
		<link>http://ollehost.dk/blog/2006/08/02/io-setting-the-interactive-prompt/</link>
		<comments>http://ollehost.dk/blog/2006/08/02/io-setting-the-interactive-prompt/#comments</comments>
		<pubDate>Wed, 02 Aug 2006 15:46:06 +0000</pubDate>
		<dc:creator>olleolleolle</dc:creator>
				<category><![CDATA[Io]]></category>
		<category><![CDATA[iolanguage]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://olle.ter.dk/blog/?p=286</guid>
		<description><![CDATA[shevegen is it possible to modify the return token '==>' ? I'd like it to bear this instead '# =>' or '# ==>' bolsen maybe look at the CLI object? bolsen CLI outPrompt Look at that! You could edit your &#8230; <a href="http://ollehost.dk/blog/2006/08/02/io-setting-the-interactive-prompt/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<pre>
shevegen	is it possible to modify the return token '==>' ?
            I'd like it to bear this instead '# =>' or '# ==>'
bolsen	maybe look at the CLI object?
bolsen	CLI outPrompt
</pre>
<p>Look at that! You could edit your interactive Io prompt, to make it look like Ruby&#8217;s <code>irb</code>, for instance. </p>
]]></content:encoded>
			<wfw:commentRss>http://ollehost.dk/blog/2006/08/02/io-setting-the-interactive-prompt/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>More Io Learning</title>
		<link>http://ollehost.dk/blog/2006/08/01/more-io-learning/</link>
		<comments>http://ollehost.dk/blog/2006/08/01/more-io-learning/#comments</comments>
		<pubDate>Tue, 01 Aug 2006 12:06:51 +0000</pubDate>
		<dc:creator>Olle Jonsson</dc:creator>
				<category><![CDATA[Io]]></category>
		<category><![CDATA[iolanguage]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://olle.ter.dk/blog/?p=285</guid>
		<description><![CDATA[[Io](http://www.iolanguage.com/)&#8217;s very self-documenting, at least when it comes to &#8220;what parameters does this and that take?&#8221; This is a little walk-through that gets you up and running in the interpreter. Get a binary from the downlaods page, and then come &#8230; <a href="http://ollehost.dk/blog/2006/08/01/more-io-learning/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>[Io](http://www.iolanguage.com/)&#8217;s very self-documenting, at least when it comes to &#8220;what parameters does this and that take?&#8221; This is a little walk-through that gets you up and running in the interpreter. Get a binary from the downlaods page, and then come back here. </p>
<p>There is a <code>docs</code> slot &#8212; with some text about what the method does. First, let&#8217;s list a string (in Io, known as a <code>Sequence</code>, a sequence of characters, you know).</p>
<p>Whip out your Io interpreter, and write a string, and send the <code>docs</code> message to it:</p>
<pre>
Io> "olle" docs

==>  Object_0x6d5020:
  slots            = Object_0x6d5060
</pre>
<p>There we go, a memory address for the docs, and a list of <code>slots</code>. Open that!</p>
<pre>
Io> "olle" docs slots

==>  Object_0x6d5060:
  alignCenter      = Object_0x1120d90
  alignLeft        = Object_0x111fcf0
  alignLeftInPlace = Object_0x111e810
  alignRight       = Object_0x1120530
  findNthSeq       = Object_0x1121870
  interpolate      = Object_0x11222f0
  interpolateInPlace = Object_0x11226f0
  removeSeq        = Object_0x111f2d0
  repeated         = Object_0x6d4880
</pre>
<p>These contain documentation:</p>
<pre>
Io> "olle" docs slots repeated

==>  Object_0x6d4880:
  args             = List_0x6d4e20
  description      = "Returns a new sequence containing the receiver repeated aNumber number of times."
</pre>
<p>That is nice. But, there are many more methods on a Sequence. Where are the rest? Answer: not yet documented like this. Let&#8217;s go find the others.</p>
<pre>
Io> Sequence slotSummary

==>  "":
  ..               = method(arg, ...)
  afterSeq         = Sequence_afterSeq()
  alignCenter      = method(width, padding, ...)
  alignLeft        = method(width, padding, ...)
  alignLeftInPlace = method(width, padding, ...)
  alignRight       = method(width, padding, ...)
  append           = Sequence_append()
  appendPathSeq    = Sequence_appendPathSeq()
  appendSeq        = Sequence_appendSeq()
  asBinaryNumber   = Sequence_asBinaryNumber()
  asBuffer         = Sequence_asBuffer()
  asCapitalized    = Sequence_asCapitalized()
  asLowercase      = Sequence_asLowercase()
  asMessage        = Sequence_asMessage()
  asMutable        = Sequence_asMutable()
  asNumber         = Sequence_asNumber()
  asSimpleString   = method(...)
  asString         = Sequence_asString()
  asSymbol         = Sequence_asSymbol()
  asUppercase      = Sequence_asUppercase()
  at               = Sequence_at()
  atInsertSeq      = Sequence_atInsertSeq()
  atPut            = Sequence_atPut()
--- SNIPPED, FOR HER PLEASURE ---
</pre>
<p>That&#8217;s more like it! Notice the difference in the right-hand listing. </p>
<pre>
asNumber         = Sequence_asNumber()
asSimpleString   = method(...)
</pre>
<p><code>asNumber</code> has a fast C implementation (the function name is a hint there), but <code>asSimpleString</code> is pure Io.</p>
<p>The Io-implemented methods have their argument list with them, like <code>alignRight</code>. The ellipsis (&#8230;) stands for the method body. </p>
<p>It&#8217;s possible to return any Io slot, serialized as a string. That includes all Io-implemented methods! Use the <code>getSlot()</code> method:</p>
<pre>
Io> Sequence alignRight getSlot("serialized")

==> method(b, if(b ==(nil), setSlot("b", Sequence clone));
b appendSeq(self asMutable replaceSeq("\"", "\\\"") asSimpleString))
</pre>
<p>So, Io has some documentation, and you can read much of the code in the interpreter.</p>
<p>The [online reference docs](http://iolanguage.com/docs/reference/browser.cgi) are not to be trusted, but they are helpful at times.</p>
]]></content:encoded>
			<wfw:commentRss>http://ollehost.dk/blog/2006/08/01/more-io-learning/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Programming language of the minute: Io</title>
		<link>http://ollehost.dk/blog/2005/05/26/programming-language-of-the-minute-io/</link>
		<comments>http://ollehost.dk/blog/2005/05/26/programming-language-of-the-minute-io/#comments</comments>
		<pubDate>Thu, 26 May 2005 08:40:26 +0000</pubDate>
		<dc:creator>Olle Jonsson</dc:creator>
				<category><![CDATA[Io]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[olleolleolle]]></category>

		<guid isPermaLink="false">/?p=105</guid>
		<description><![CDATA[Read an article about the language [everyone is]/[someone might be] raving about: Io. Io was written in 2002, and it could be said to be &#8220;even more OO than Smalltalk&#8221;. Finding info on Io was quite hard, and a late-night &#8230; <a href="http://ollehost.dk/blog/2005/05/26/programming-language-of-the-minute-io/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Read an article about the language [everyone is]/[someone might be] raving about: <a href="http://lineman.net/node/499">Io</a>. </p>
<p><span id="more-105"></span></p>
<p>Io was written in 2002, and it could be said to be &#8220;even more OO than Smalltalk&#8221;. Finding info on Io was quite hard, and a late-night talk with Mr. Wrigstad solved my entry into the language. <a href="http://www.tobinharris.com/blog/">Tobin H</a> (.NET &#038; Ruby) and <a href="http://pe.ter.dk/">Peter B</a> (Perl &#038; PHP) got interested after I had gushed about the features of the language.</p>
<p>Recently, I&#8217;ve read a lot of OO text, and have tried to grasp all the comp-sci that I never had in college. (And the reading comes along rather successfully, I might add.)  Things have a way of informing each other, and I enjoy that effect at the moment.</p>
<p>OK, related links at <a href="http://www.sitepoint.com/">SitePoint</a> and elsewhere: </p>
<p>* <a href="http://www.sitepoint.com/article/oriented-programming-1">JavaScript Object-Oriented Programming Part I</a><br />
* <a href="http://www.sitepoint.com/article/oriented-programming-2">JavaScript Object-Oriented Programming Part II</a><br />
* <a href="http://www.gigamonkeys.com/book/">Practical Common LISP</a>, a free book on <a href="http://en.wikipedia.org/wiki/Lisp_programming_language">the functional (applicative) programming language</a> you might have heard about. The book is light in attitude, and comes with killer examples, like a useful little CD database app. This is a relief from math examples (x, y, z := 100) and stuff out of Microsoft&#8217;s ubiquitous Employee examples.</p>
<p>And you can also get the skinny on LISP (together with some nice, loving commentary) in Mark Watson&#8217;s CC-licensed book <em>Loving LISP</em>, which is linked from <a href="http://creativecommons.org/text/watson">this Creative Commons interview</a>.</p>
<p>I just noted that <a href="http://www.whysmalltalk.com/">Smalltalk </a>was <a href="http://en.wikipedia.org/wiki/Smalltalk">noted as an academic programming language on Wikipedia</a>. The nerve of some people! They might not have heard of the very pragmatic successes of <a href="http://seaside.st/">Seaside</a>, the hip, new web framework for Smalltalk. Care to read <a href="http://www.whysmalltalk.com/tutorials/seaside.htm">some tutorials</a> about it?</p>
]]></content:encoded>
			<wfw:commentRss>http://ollehost.dk/blog/2005/05/26/programming-language-of-the-minute-io/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

