<?xml version="1.0"?>
<rss version="2.0">
  <channel><title>pike</title><link>http://bill.welliver.org/</link><description></description><generator>Fins 0.9.7</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><item><link>http://bill.welliver.org//space/start/2007-02-16/1</link><guid isPermaLink="1">http://bill.welliver.org//space/start/2007-02-16/1</guid><title>Pike and Middleware</title><pubDate>Fri, 16 Feb 2007 22:19:48 -0500</pubDate><description>One of Pike's strong point has always been its asyncronous networking and text handling functionality. These strengths make Pike a natural choice for integrating disparate systems and event processing. In the enterprise space, &lt;a href="http://en.wikipedia.org/wiki/Message_Oriented_Middleware" class="wiki_link_external" &gt;Messaging Oriented Middleware&lt;/a&gt; such as JMS are typically used as the "glue" that holds various systems together. Unfortunately, many JMS providers do not provide non-Java libraries for use with their messaging systems. One could use JNI and the Java module to access JMS libraries, however that approach (which I describe elsewhere on this site) is cumbersome at best. There has to be a better way, right?&lt;p class="paragraph"/&gt;
Enter Stomp&amp;#8230;&lt;p class="paragraph"/&gt;
Stomp is a text based protocol designed to be easy to implement, yet full featured. The protocol supports text and binary messages of arbitrary length and the Pike client supports asynchronous message receipt. I wrote a client for Stomp a year or so ago, and used it a bit, but recently spent some more time working on it. Newly added features to the Stomp client include reconnection and off line message sending for more reliable behavior.&lt;p class="paragraph"/&gt;
Through the use of the Pike &lt;a href="http://modules.gotpike.org/getmodule.pike/Public.Protocols.Stomp" class="wiki_link_external" &gt;Stomp client&lt;/a&gt; and &lt;a href="http://stomp.codehaus.org/StompConnect" class="wiki_link_external" &gt;StompConnect&lt;/a&gt;, you can connect your existing and new applications to enterprise messaging buses such as ActiveMQ or MQSeries. This opens up a whole world of possibilities, ranging from integration to transaction processing.&lt;p class="paragraph"/&gt;
Additionally, I added support for Stomp (and possibly other asynchronous messaging systems as well) to the &lt;a href="/space/pike/Fins"&gt;Fins&lt;/a&gt; framework, making it incredibly easy to write applications in Pike that utilize Messaging. I'll be posting some examples of how to use Stomp with Fins over the next few days, be sure to keep an eye out for them.</description></item><item><link>http://bill.welliver.org//space/start/2007-07-18/1</link><guid isPermaLink="1">http://bill.welliver.org//space/start/2007-07-18/1</guid><title>Pike: An Introduction goes to Press</title><pubDate>Wed, 18 Jul 2007 13:00:43 -0400</pubDate><description>After nearly three years, &lt;i class="ital"&gt;Pike: An Introduction&lt;/i&gt; is finally complete and off to the printers. For those of you not familiar with this little project of mine,  &lt;i class="ital"&gt;Pike: An Introduction&lt;/i&gt; is is intended to be the definitive introduction to the &lt;a href="http://www.gotpike.org" class="wiki_link_external" &gt;Pike&lt;/a&gt; programming language. Weighing in at&#xD;
almost 300 pages, the book contains numerous examples which coincide with&#xD;
topics of discussion, as well as a chapter on the basics of several popular&#xD;
modules.&lt;p class="paragraph"/&gt;
An interesting twist is that Martin (who's been helping with this project for a while now) and I are planning on setting aside proceeds from the sale of the book to fund Pike development and marketing projects. That means that, in addition to getting up to speed on your favorite programming language, you'll also be helping to advance and promote Pike.&lt;p class="paragraph"/&gt;
I expect the book to be available at online outlets such as Amazon or&#xD;
Barnes and Noble in about a month. Until then, you can get your copy from&#xD;
Lulu, our printing vendor for USD 29.95. In addition to getting your book&#xD;
sooner, Lulu's commissions are lower, meaning that a larger percentage of&#xD;
your purchase price will be made available for supporting the Pike&#xD;
community.&lt;p class="paragraph"/&gt;
Learn more about the book, and purchase your copy today by visiting:&lt;p class="paragraph"/&gt;
&lt;span class="nobr"&gt;&lt;img height="9" width="8" src="/static/images/Icon-Extlink.png" alt="&amp;#91;external]"/&gt;&lt;a href="http://book.gotpike.org/"&gt;http://book.gotpike.org/&lt;/a&gt;&lt;/span&gt;&#xD;
</description></item><item><link>http://bill.welliver.org//space/pike/Objective C Bridge/Building an Application Bundle</link><guid isPermaLink="1">http://bill.welliver.org//space/pike/Objective C Bridge/Building an Application Bundle</guid><title>Building an Application Bundle</title><pubDate>Fri, 11 May 2007 00:40:08 -0400</pubDate><description>&lt;ol&gt;
&lt;li&gt;Create a directory called &lt;i class="ital"&gt;appname.app&lt;/i&gt;&lt;/li&gt;
&lt;li&gt;in that directory, create:&lt;/li&gt;
&lt;/ol&gt;   directories &lt;i class="ital"&gt;MacOS&lt;/i&gt; and &lt;i class="ital"&gt;Resources&lt;/i&gt;&#xD;
   files &lt;i class="ital"&gt;PkgInfo&lt;/i&gt; and &lt;i class="ital"&gt;Info.plist&lt;/i&gt;&#xD;
</description></item><item><link>http://bill.welliver.org//space/start/2006-10-08/1</link><guid isPermaLink="1">http://bill.welliver.org//space/start/2006-10-08/1</guid><title>Pike Conference 2006 Update</title><pubDate>Sun, 8 Oct 2006 11:15:28 -0400</pubDate><description>This year's Pike Conference is rapidly approaching, but there's still time to attend or participate! A lot of exciting things have been happening in the Pike world since our last meeting two years ago. We've got some very interesting presentations, discussions and activities on tap, so if you're still deciding whether to attend, consider this a nudge in the direction of Riga. :) A free, in-depth Pike tutorial session will also run concurrently with the conference, so if you're new to Pike, or you'd like to brush up on your Pike coding skills, this is a perfect opportunity.&lt;p class="paragraph"/&gt;
For those of you that may have missed the original announcement, this year's Pike Conference will be held in beautiful Riga, Latvia, from October 18 through the 22nd. Riga's old town was named a UNESCO World Heritage Site, and getting to and from Riga has never been easier. For more information,  send an email to the conference coordinators at conference at gotpike dot org, or visit the conference website at:&lt;p class="paragraph"/&gt;
&lt;span class="nobr"&gt;&lt;img height="9" width="8" src="/static/images/Icon-Extlink.png" alt="&amp;#91;external]"/&gt;&lt;a href="http://conference.gotpike.org"&gt;http://conference.gotpike.org&lt;/a&gt;&lt;/span&gt;&lt;p class="paragraph"/&gt;
If you know you'll attending, but haven't registered yet, please take a moment to do so now, as it allows the conference team to better plan activities to suit your interests and schedule. Also, we still have spaces for participants; so if you'd like to make a presentation, suggest a topic for group discussion or just want to say a few words in person, do let us know, as we'd love to include you in the program.&lt;p class="paragraph"/&gt;
I'm personally very excited about getting to meet everyone (again, even). We always have a good time and a lot of good information is passed around. If you're thinking that maybe you'd like to get more involved with your language of choice, you probably won't find a better chance to chat with like minded folks. Additionally, I've got some very cool things to talk about, so I hope to see you in Riga!&#xD;
</description></item><item><link>http://bill.welliver.org//space/start/2006-07-12/1</link><guid isPermaLink="1">http://bill.welliver.org//space/start/2006-07-12/1</guid><title>Fins and FinScribe update</title><pubDate>Wed, 12 Jul 2006 18:40:01 -0400</pubDate><description>I've been working on &lt;a href="/space/pike/Fins"&gt;Fins&lt;/a&gt; and &lt;a href="/space/pike/FinScribe"&gt;FinScribe&lt;/a&gt; quite a bit lately, and some interesting things have been brewing.&lt;p class="paragraph"/&gt;
First, in the eye-candy department, I started working with &lt;a href="http://www.dojotoolkit.org" class="wiki_link_external" &gt;Dojo&lt;/a&gt; 0.3.1, which has some better widgets than previous releases. It adds some quirks, especially with the DHTML effects, but hopefully we'll be able to work through them. I also added a new widget called RTEditor, which extends the Rich text editor widget to be tabbed: one tab is allows you to edit text in Rich Text format, and the other tab lets you edit the raw text. As you change from tab to tab, the version from the other tab is brought along with you, so you don't lose content. It's pretty neat, and lets users who are more comfortable with HTML tweak their content.&lt;p class="paragraph"/&gt;
Second, on the Fins side of things, I've added some developer admin tools. We're hooking into the &lt;i class="ital"&gt;pike -x&lt;/i&gt; command, and so far, a new application creation tool is available, as well as a replacement for fin_serve, which should make it easier to run your Fins apps.&lt;p class="paragraph"/&gt;
Most significant, though, is automatic configuration of &lt;a href="/space/pike/Fins/Developer/Model"&gt;Model&lt;/a&gt; objects by examination of the database schema. This means that if you write your database to follow the rules that Fins expects, you don't have to write Model code. It's all done for you&amp;#8230; just create a (more or less empty) class for each datatype, and Fins will handle the rest&amp;#8230; it's pretty cool. It's also completely optional. If you've got legacy databases to work with, Fins can also use those, but you'll have to resort to increasingly manual tactics.  </description></item><item><link>http://bill.welliver.org//space/start/2006-06-27/1</link><guid isPermaLink="1">http://bill.welliver.org//space/start/2006-06-27/1</guid><title>New FinScribe release: 0.6</title><pubDate>Tue, 27 Jun 2006 15:25:11 -0400</pubDate><description>I'm pleased to announce the release of a new version of the &lt;a href="/space/pike/FinScribe"&gt;FinScribe&lt;/a&gt;
wiki/blog application. Version 0.6 includes a fair number of new features, most importantly the ability to modify and apply ACLs to documents. The application (especially the administration interface) include some very nifty AJAX widgets made possible by using the Dojo widget framework.&lt;p/&gt;
FinScribe is built on the MVC framework I've been writing, called &lt;a href="/space/pike/Fins"&gt;Fins&lt;/a&gt;, and is written in Pike with support for mysql, sqlite and (hopefully) postgresql. Originally intended as a demonstration application for that framework, FinScribe has taken on a life of its own. </description></item><item><link>http://bill.welliver.org//space/start/2006-04-25/1</link><guid isPermaLink="1">http://bill.welliver.org//space/start/2006-04-25/1</guid><title>New AJAX sample application for Fins</title><pubDate>Tue, 25 Apr 2006 14:27:39 -0400</pubDate><description>I was surfing around the other day and ran across a little screencast&amp;#91;1]&#xD;
on the Ruby on Rails website. The point of the screencast was basically&#xD;
demonstrating how to create an AJAX application in a few minutes using&#xD;
Rails and Prototype (a javascript library). Well, obviously Ruby doesn't&#xD;
have the market cornered on ease of development. We in the Pike world have&#xD;
options, too.&lt;p class="paragraph"/&gt;
So, last night I threw together the Fins&amp;#91;2] equivalent that searches&#xD;
SmugMug&amp;#91;3] for images and returns the results to you. It's functionally&#xD;
equivalent to the Rails demo application that uses Flickr.&lt;p class="paragraph"/&gt;
A running instance of the sample app can be found here:&lt;p class="paragraph"/&gt;
&lt;span class="nobr"&gt;&lt;img height="9" width="8" src="/static/images/Icon-Extlink.png" alt="&amp;#91;external]"/&gt;&lt;a href="http://buoy.riverweb.com:9098/"&gt;http://buoy.riverweb.com:9098/&lt;/a&gt;&lt;/span&gt;&lt;p class="paragraph"/&gt;
The code is available here:&lt;p class="paragraph"/&gt;
&lt;span class="nobr"&gt;&lt;img height="9" width="8" src="/static/images/Icon-Extlink.png" alt="&amp;#91;external]"/&gt;&lt;a href="http://hww3.riverweb.com/dist/Fins/samples"&gt;http://hww3.riverweb.com/dist/Fins/samples&lt;/a&gt;&lt;/span&gt;&lt;p class="paragraph"/&gt;
You'll note that most of the bulk of the download consists of the Dojo&amp;#91;4]&#xD;
javascript library we're using to achieve some of the client side&#xD;
functionality. You'll also need to download Fins, which can be found in&#xD;
the directory immediately above. Simply untar both files, and run&lt;p class="paragraph"/&gt;
&lt;div class="code"&gt;&lt;pre&gt;&lt;pre&gt;&#xD;
./fin_serve.pike -p yourportnumber /path/to/smugmug&#xD;
&lt;/pre&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p class="paragraph"/&gt;
&#xD;
If you don't have the Public.Image.SmugMug and Public.Web.RSS modules,&#xD;
this app won't do much for you, but that's sort of beside the point.&lt;p class="paragraph"/&gt;
The only other difference between the amount of work required to achieve&#xD;
the pike version is that you're responsible for doing a lot of the&#xD;
javascript work yourself. I'm not sure how I feel about the Rails way of&#xD;
doing things, which is to say there's a lot of magic involved. I suppose&#xD;
it might be worthwhile to build some convenience functions that make some&#xD;
of this easier.&lt;p class="paragraph"/&gt;
As always, comments and suggestions are welcome!&lt;p class="paragraph"/&gt;
&amp;#91;1] &lt;span class="nobr"&gt;&lt;img height="9" width="8" src="/static/images/Icon-Extlink.png" alt="&amp;#91;external]"/&gt;&lt;a href="http://media.rubyonrails.org/video/flickr-rails-ajax.mov"&gt;http://media.rubyonrails.org/video/flickr-rails-ajax.mov&lt;/a&gt;&lt;/span&gt; &lt;br class="break"/&gt;
&amp;#91;2] &lt;span class="nobr"&gt;&lt;img height="9" width="8" src="/static/images/Icon-Extlink.png" alt="&amp;#91;external]"/&gt;&lt;a href="http://hww3.riverweb.com/space/pike/Fins"&gt;http://hww3.riverweb.com/space/pike/Fins&lt;/a&gt;&lt;/span&gt; &lt;br class="break"/&gt;
&amp;#91;3] &lt;span class="nobr"&gt;&lt;img height="9" width="8" src="/static/images/Icon-Extlink.png" alt="&amp;#91;external]"/&gt;&lt;a href="http://www.smugmug.com"&gt;http://www.smugmug.com&lt;/a&gt;&lt;/span&gt; &lt;br class="break"/&gt;
&amp;#91;4] &lt;span class="nobr"&gt;&lt;img height="9" width="8" src="/static/images/Icon-Extlink.png" alt="&amp;#91;external]"/&gt;&lt;a href="http://www.dojotoolkit.org"&gt;http://www.dojotoolkit.org&lt;/a&gt;&lt;/span&gt;&lt;p class="paragraph"/&gt;
</description></item><item><link>http://bill.welliver.org//space/start/2006-04-04/1</link><guid isPermaLink="1">http://bill.welliver.org//space/start/2006-04-04/1</guid><title>Themes arrive for FinScribe</title><pubDate>Tue, 4 Apr 2006 17:54:32 -0400</pubDate><description>For a while now, I've been aware of the fact that not everyone likes the look of the out of the box theme for &lt;a href="/space/pike/FinScribe"&gt;FinScribe&lt;/a&gt;. Heck, I don't even like it, but I'm busy with other, more important work. The problem has been that, up until today, it's been pretty difficult to change the look and feel without doing some mucking around in the core code. It's true that there was a certain amount of flexibility by changing the stylesheets (ala &lt;a href="SnipSnap" class="wiki_link_external" &gt;http://snipsnap.org&lt;/a&gt;), but you could only go so far with it.&lt;p/&gt;
Just checked into CVS is a set of changes to FinScribe and the underlying Fins framework that makes all of this a thing of the past. To create a new theme, simply copy create a new directory in the themes directory, and start elements of the default theme (currently located in themes/default and templates/) with files created in the new theme directory.  You only need to change the files you want to be different, so if you really only want to fiddle with the weblog entry layout, you don't have to copy anything else to your theme. Once you've done that, just change the preference "site.theme" to be the name of the theme directory. Currently, that's the hard part, because there isn't a useful preference editor, so you'll have to use fin_serve in hilfe mode, or edit the database directly. But, it's far more doable than before, and you don't have to worry about really messing things up, because you can just revert to the default theme if things go wrong.&lt;p/&gt;
I'll try to get a new release out in the next few days, as this is a big deal. Hopefully some enterprising designers will come up with some new themes that don't look quite as ugly as the default. Well, one can wish, right?</description></item><item><link>http://bill.welliver.org//space/start/2006-01-15/1</link><guid isPermaLink="1">http://bill.welliver.org//space/start/2006-01-15/1</guid><title>Dojo: On the AJAX bandwagon</title><pubDate>Sun, 15 Jan 2006 14:24:36 -0500</pubDate><description>I've been playing around with some of the rapidly appearing &lt;a href="AJAX" class="wiki_link_external" &gt;http://ajaxian.com/archives/nine-tips-for-rich-internet-applications&lt;/a&gt; toolkits, in order to see what all the fuss is about. I'm generally of the opinion that client side Javascript is considerably more frustrating and less efficient for a developer than even the most inefficient server side development environments (like Java Servlets, for instance). It's hard to completely ignore Javascript, because of the "rich client" functionality you can layer on top of your existing web application. Of course, this path is frought with pitfalls like cross browser compatibility and accessibility problems , but in general, I think there are some good tools to be found.&lt;p class="paragraph"/&gt;
In particular, I think the &lt;a href="Dojo Toolkit" class="wiki_link_external" &gt;http://blog.dojotoolkit.org/2005/12/19/dojo-021&lt;/a&gt; has a lot of potential. It seems to be approaching client side Javascript from a more general angle (and possibly lower level) than other frameworks like prototype or Scriptaculous. While Dojo doesn't have all of the prebuilt fancy special effects some of the other toolkits have, it does benefit from having slightly better documentation, and some really cool extra features, like client side crypto functions. It does seem to be a good bit more complex than prototype, but I think that the folks at the Dojo Foundation are aiming for a broader target.&lt;p class="paragraph"/&gt;
As a test of some of the features, I've added some AJAX functionality to FinScribe over the last day or two. You'll notice that the login feature, as well as the blog post and actions butttons are all dynamic and ajax enabled. I've also added an Dojo DatePicker to the blog post form. I'm still thinking about exactly whether and how to include this type of functionality into FinScribe, as well as the Fins framework itself. It may eventually go away if I feel that it's AJAX for the sake of AJAX. Time will tell, and your comments and suggestions are welcome!&#xD;
</description></item><item><link>http://bill.welliver.org//space/start/2006-01-04/1</link><guid isPermaLink="1">http://bill.welliver.org//space/start/2006-01-04/1</guid><title>Pike embedding 101</title><pubDate>Wed, 4 Jan 2006 11:59:09 -0500</pubDate><description>Pike 7.7, currently in development, supports rudimentary embedding of the Pike interpreter in other applications. While this support is currently pretty basic from the standpoint of niceties (such as simple functions for calling code and so forth), it works and is ready for user comment.&lt;p class="paragraph"/&gt;
I put together some simple code that creates an embedded interpreter and calls some code. You can check it out here: &lt;span class="nobr"&gt;&lt;img height="9" width="8" src="/static/images/Icon-Extlink.png" alt="&amp;#91;external]"/&gt;&lt;a href="http://hww3.riverweb.com/dist/pike_embedding"&gt;http://hww3.riverweb.com/dist/pike_embedding&lt;/a&gt;&lt;/span&gt; . Note that you'll need a current check out of Pike 7.7 from CVS. To create the pike shared library, run "make lib" from the root directory. There are some basic compilation commands that you'll need to adjust according to your environment, but it should produce a working embedded interpreter.&lt;p class="paragraph"/&gt;
Check it out, and feel free to mail your comments and suggestions to the pike development list (pike-devel &lt;b class="bold"&gt;at&lt;/b&gt; lists &lt;b class="bold"&gt;dot&lt;/b&gt; lysator &lt;b class="bold"&gt;dot&lt;/b&gt; liu &lt;b class="bold"&gt;dot&lt;/b&gt; se.</description></item></channel>
</rss>
